From 3d7b79156eb94991beadc2cb8db0ca320b50451c Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Mon, 28 Jan 2019 14:18:52 +0100 Subject: [PATCH] Activity mit Objectrelation --- aliasDefinition/Data_alias/Data_alias.aod | 201 +-- .../ActivityLink_entity.aod | 128 -- .../entityfields/date_edit/valueProcess.js | 6 - .../entityfields/date_new/valueProcess.js | 6 - .../entityfields/user_edit/valueProcess.js | 6 - .../entityfields/user_new/valueProcess.js | 6 - .../recordcontainers/db/conditionProcess.js | 11 - entity/Activity_entity/Activity_entity.aod | 109 +- .../children/activityid_param/code.js | 4 - .../children/objectrelatonid_param/code.js | 6 + .../entityfields/objectid/valueProcess.js | 10 - .../entityfields/rowid/valueProcess.js | 10 - .../recordcontainers/db/conditionProcess.js | 10 +- .../recordcontainers/db/fromClauseProcess.js | 7 + .../recordcontainers/db/onDBDelete.js | 8 +- .../recordcontainers/db/onDBInsert.js | 6 +- .../relationsmaincountry_param/code.js | 2 +- .../ObjectRelation_entity.aod | 56 +- .../object1_rowid}/linkedContextProcess.js | 2 +- .../recordcontainers/db/conditionProcess.js | 14 + .../entityfields/info/valueProcess.js | 2 +- .../address_id/displayValueProcess.js | 2 +- .../address_id/displayValueProcess.js | 2 +- .../children/relid_param/code.js | 2 +- .../contentProcess.js | 4 +- .../recordcontainers/jdito/contentProcess.js | 4 +- .../ObjectRelation_context.aod} | 9 +- .../ActivityLinkFilter_view.aod | 27 - .../ActivityPreview_view.aod | 8 + .../ObjectRelationFilter_view.aod | 44 + .../LOBs/subjectText_1050d93f.txt | 6 - .../LOBs/subjectText_661a7b87.txt | 10 + ...e410a35.txt => subjectText_661a7b87_1.txt} | 2 +- .../example_activity/example_activity.xml | 37 - .../example_activity/example_activity_gfk.xml | 101 +- .../example_activity/extendHLink_62330df6.xml | 36 - .../data_alias/data/example_org/ORG_gfk.xml | 374 +++-- .../data/example_pers/PERS_leicht.xml | 8 +- .../data/example_pers/PERS_muller.xml | 6 +- .../data/example_pers/PERS_pfiffig.xml | 242 ++-- .../data/example_pers/PERS_sommer.xml | 246 ++-- .../data_alias/data/example_task/base.xml | 12 +- .../AditoBasic/create_ab_objectrelation.xml | 16 +- .../data_alias/struct/create_activitylink.xml | 30 - others/db_changes/masterChangelog.xml | 1 - .../Birgit_Leicht_Image.xml | 2 +- others/guide/HowToSqlConditionLib.adoc | 10 +- process/Comm_lib/process.js | 2 +- .../ObjectRelation_lib/ObjectRelation_lib.aod | 9 + process/ObjectRelation_lib/process.js | 51 + process/OfferOrder_lib/process.js | 2 +- process/Offer_lib/process.js | 4 +- process/Org_lib/process.js | 12 +- process/PostalAddress_lib/process.js | 16 +- process/Product_lib/process.js | 1290 ++++++++--------- process/Relation_lib/process.js | 4 +- process/Salesproject_lib/process.js | 2 +- process/Sql_lib/process.js | 25 +- 58 files changed, 1523 insertions(+), 1745 deletions(-) delete mode 100644 entity/ActivityLink_entity/ActivityLink_entity.aod delete mode 100644 entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js delete mode 100644 entity/ActivityLink_entity/entityfields/date_new/valueProcess.js delete mode 100644 entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js delete mode 100644 entity/ActivityLink_entity/entityfields/user_new/valueProcess.js delete mode 100644 entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js delete mode 100644 entity/Activity_entity/entityfields/activitylink_dfo/children/activityid_param/code.js create mode 100644 entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/objectrelatonid_param/code.js delete mode 100644 entity/Activity_entity/entityfields/objectid/valueProcess.js delete mode 100644 entity/Activity_entity/entityfields/rowid/valueProcess.js create mode 100644 entity/Activity_entity/recordcontainers/db/fromClauseProcess.js rename entity/{ActivityLink_entity/entityfields/row_id => ObjectRelation_entity/entityfields/object1_rowid}/linkedContextProcess.js (91%) create mode 100644 entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js rename neonContext/{ActivityLink_context/ActivityLink_context.aod => ObjectRelation_context/ObjectRelation_context.aod} (63%) delete mode 100644 neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod create mode 100644 neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod delete mode 100644 others/db_changes/data_alias/data/example_activity/LOBs/subjectText_1050d93f.txt create mode 100644 others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87.txt rename others/db_changes/data_alias/data/example_activity/LOBs/{subjectText_de410a35.txt => subjectText_661a7b87_1.txt} (98%) delete mode 100644 others/db_changes/data_alias/data/example_activity/example_activity.xml delete mode 100644 others/db_changes/data_alias/data/example_activity/extendHLink_62330df6.xml delete mode 100644 others/db_changes/data_alias/struct/create_activitylink.xml create mode 100644 process/ObjectRelation_lib/ObjectRelation_lib.aod create mode 100644 process/ObjectRelation_lib/process.js diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index d272eef7e75..0b734992cbf 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3999,137 +3999,6 @@ </entityFieldDb> </entityFields> </entityDb> - <entityDb> - <name>ACTIVITYLINK</name> - <dbName></dbName> - <idColumn>ACTIVITYLINKID</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>OBJECT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</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>ACTIVITYLINKID</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_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ACTIVITY_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ROW_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> - </entityFields> - </entityDb> <entityDb> <name>ACTIVITY</name> <dbName></dbName> @@ -5103,9 +4972,9 @@ </entityFields> </entityDb> <entityDb> - <name>AB_OBJECTREALTION</name> + <name>AB_OBJECTRELATION</name> <dbName></dbName> - <idColumn>AB_OBJECTREALTIONID</idColumn> + <idColumn>AB_OBJECTRELATIONID</idColumn> <idGeneratorType v="0" /> <idGeneratorInterval v="1" /> <title></title> @@ -5120,41 +4989,27 @@ </auditSyncConfig> <entityFields> <entityFieldDb> - <name>DATE_EDIT</name> + <name>OBJECT2_ROWID</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>AB_OBJECTREALTIONID</name> - <dbName></dbName> - <primaryKey v="true" /> <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="true" /> + <isUnique v="false" /> <index v="false" /> <documentation></documentation> <title></title> <description></description> </entityFieldDb> <entityFieldDb> - <name>DATE_NEW</name> + <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="93" /> <size v="29" /> <scale v="9" /> - <notNull v="true" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -5162,11 +5017,11 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>USER_NEW</name> + <name>OBJECT2_TYPE</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="50" /> + <size v="63" /> <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> @@ -5176,13 +5031,13 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>USER_EDIT</name> + <name>OBJECT1_TYPE</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> <size v="50" /> <scale v="0" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -5190,12 +5045,12 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>OBJECT2_ROWID</name> + <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="1" /> - <size v="63" /> - <scale v="0" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> <notNull v="true" /> <isUnique v="false" /> <index v="false" /> @@ -5204,11 +5059,11 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>OBJECT2_TYPE</name> + <name>USER_NEW</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="63" /> + <size v="50" /> <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> @@ -5218,11 +5073,11 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>OBJECT1_TYPE</name> + <name>OBJECT1_ROWID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> + <columnType v="1" /> + <size v="36" /> <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> @@ -5232,13 +5087,27 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>OBJECT1_ROWID</name> + <name>AB_OBJECTRELATIONID</name> <dbName></dbName> - <primaryKey v="false" /> + <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>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod deleted file mode 100644 index 7f867aa5ff5..00000000000 --- a/entity/ActivityLink_entity/ActivityLink_entity.aod +++ /dev/null @@ -1,128 +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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.1.1"> - <name>ActivityLink_entity</name> - <title>Connections</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <recordContainer>db</recordContainer> - <entityFields> - <entityIncomingField> - <name>#INCOMING</name> - </entityIncomingField> - <entityField> - <name>DATE_EDIT</name> - <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>DATE_NEW</name> - <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>ACTIVITY_ID</name> - </entityField> - <entityField> - <name>ACTIVITYLINKID</name> - </entityField> - <entityField> - <name>OBJECT_ID</name> - <title>Object</title> - </entityField> - <entityField> - <name>ROW_ID</name> - <title>Dataset</title> - <linkedContextProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/row_id/linkedContextProcess.js</linkedContextProcess> - </entityField> - <entityField> - <name>USER_EDIT</name> - <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>USER_NEW</name> - <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js</valueProcess> - </entityField> - <entityParameter> - <name>ActivityId_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <mandatory v="false" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <mandatory v="false" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>RowId_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <mandatory v="false" /> - <description>PARAMETER</description> - </entityParameter> - <entityIncomingField> - <name>ActivityLink_dfi</name> - <fieldType>DEPENDENCY_IN</fieldType> - <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>cfb56235-217f-4b2f-a17a-12798f5adf48</name> - <entityName>Activity_entity</entityName> - <fieldName>ActivityLink_dfo</fieldName> - <isOutgoing v="false" /> - </entityDependency> - </dependencies> - </entityIncomingField> - </entityFields> - <recordContainers> - <dbRecordContainer> - <name>db</name> - <title>Connections</title> - <alias>Data_alias</alias> - <conditionProcess>%aditoprj%/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess> - <linkInformation> - <linkInformation> - <name>83d681de-a162-480a-8fc4-ce67d6be75af</name> - <tableName>ACTIVITYLINK</tableName> - <primaryKey>ACTIVITYLINKID</primaryKey> - <isUIDTable v="false" /> - <readonly v="false" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>DATE_EDIT.value</name> - <recordfield>ACTIVITYLINK.DATE_EDIT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DATE_NEW.value</name> - <recordfield>ACTIVITYLINK.DATE_NEW</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ACTIVITY_ID.value</name> - <recordfield>ACTIVITYLINK.ACTIVITY_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ACTIVITYLINKID.value</name> - <recordfield>ACTIVITYLINK.ACTIVITYLINKID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ID.value</name> - <recordfield>ACTIVITYLINK.OBJECT_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ROW_ID.value</name> - <recordfield>ACTIVITYLINK.ROW_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>USER_EDIT.value</name> - <recordfield>ACTIVITYLINK.USER_EDIT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>USER_NEW.value</name> - <recordfield>ACTIVITYLINK.USER_NEW</recordfield> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> - </recordContainers> -</entity> diff --git a/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js b/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js deleted file mode 100644 index 710ac8a06a9..00000000000 --- a/entity/ActivityLink_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/ActivityLink_entity/entityfields/date_new/valueProcess.js b/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js deleted file mode 100644 index 3a0d59096cd..00000000000 --- a/entity/ActivityLink_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/ActivityLink_entity/entityfields/user_edit/valueProcess.js b/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js deleted file mode 100644 index 1581e18d976..00000000000 --- a/entity/ActivityLink_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/ActivityLink_entity/entityfields/user_new/valueProcess.js b/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js deleted file mode 100644 index 7c566863b49..00000000000 --- a/entity/ActivityLink_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/ActivityLink_entity/recordcontainers/db/conditionProcess.js b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js deleted file mode 100644 index 0555ac1c7d6..00000000000 --- a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.db"); -import("system.result"); -import("Sql_lib"); - -var cond = SqlCondition.begin() - .andPrepareVars("ACTIVITYLINK.ACTIVITY_ID", "$param.ActivityId_param") - .andPrepareVars("ACTIVITYLINK.ROW_ID", "$param.RowId_param") - .andPrepareVars("ACTIVITYLINK.OBJECT_ID", "$param.ObjectId_param"); - -//TODO: use a preparedCondition when available -result.string(db.translateCondition(cond.build("1 = 1"))); \ No newline at end of file diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 4d2a033ab2b..e19f6645d2b 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -148,22 +148,6 @@ <name>USER_EDIT</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/user_edit/valueProcess.js</valueProcess> </entityField> - <entityOutgoingField> - <name>ActivityLink_dfo</name> - <title>Connections</title> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>ActivityLink_entity</entityName> - <fieldName>ActivityLink_dfi</fieldName> - </dependency> - <children> - <entityParameter> - <name>ActivityId_param</name> - <code>%aditoprj%/entity/Activity_entity/entityfields/activitylink_dfo/children/activityid_param/code.js</code> - </entityParameter> - </children> - </entityOutgoingField> <entityParameter> <name>ObjectId_param</name> <expose v="true" /> @@ -171,20 +155,6 @@ <mandatory v="false" /> <documentation>%aditoprj%/entity/Activity_entity/entityfields/objectid_param/documentation.adoc</documentation> </entityParameter> - <entityField> - <name>ObjectId</name> - <title>Object</title> - <description>Only for displaying the param</description> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/objectid/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>RowId</name> - <title>Dataset</title> - <description>Only for displaying the param</description> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/rowid/valueProcess.js</valueProcess> - </entityField> <entityOutgoingField> <name>ActivityDocument_dfo</name> <title>Documents</title> @@ -248,23 +218,86 @@ <element>PROCESS</element> </onValueChangeTypes> </entityField> + <entityOutgoingField> + <name>ActivityObjectRelation_dfo</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>ObjectRelation_entity</entityName> + <fieldName>ObjectRelationById_dfi</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectRelatonId_param</name> + <code>%aditoprj%/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/objectrelatonid_param/code.js</code> + <triggerRecalculation v="true" /> + </entityParameter> + </children> + </entityOutgoingField> + <entityField> + <name>AB_OBJECTRELATION_AB_OBJECTRELATIONID</name> + </entityField> + <entityIncomingField> + <name>ActivityById_dfi</name> + <fieldType>DEPENDENCY_IN</fieldType> + <children> + <entityParameter> + <name>ObjectId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>OnlyInnate_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ActivityId_param</name> + <triggerRecalculation v="true" /> + </entityParameter> + </children> + </entityIncomingField> + <entityParameter> + <name>ActivityId_param</name> + <expose v="true" /> + <mandatory v="false" /> + <description>PARAMETER</description> + </entityParameter> + <entityField> + <name>AB_OBJECTRELATION_OBJECT2_TYPE</name> + <title>Object type</title> + </entityField> + <entityField> + <name>AB_OBJECTRELATION_OBJECT2_ROWID</name> + <title>Object</title> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <fromClauseProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBInsert>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <onDBDelete>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>a25c4017-1cda-4614-a2f2-d6645e4dafb9</name> + <name>f28ac44d-9586-4d5d-881a-d7a850fb85e7</name> <tableName>ACTIVITY</tableName> <primaryKey>ACTIVITYID</primaryKey> - <isUIDTable v="false" /> + <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> + <linkInformation> + <name>b9f755e6-c68e-4562-a602-4d45101c2b0c</name> + <tableName>AB_OBJECTRELATION</tableName> + <primaryKey>AB_OBJECTRELATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -299,6 +332,18 @@ <name>CATEGORY.value</name> <recordfield>ACTIVITY.CATEGORY</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_OBJECTRELATION_AB_OBJECTRELATIONID.value</name> + <recordfield>AB_OBJECTRELATION.AB_OBJECTRELATIONID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_OBJECTRELATION_OBJECT2_ROWID.value</name> + <recordfield>AB_OBJECTRELATION.OBJECT2_ROWID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_OBJECTRELATION_OBJECT2_TYPE.value</name> + <recordfield>AB_OBJECTRELATION.OBJECT2_TYPE</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Activity_entity/entityfields/activitylink_dfo/children/activityid_param/code.js b/entity/Activity_entity/entityfields/activitylink_dfo/children/activityid_param/code.js deleted file mode 100644 index a8267b62060..00000000000 --- a/entity/Activity_entity/entityfields/activitylink_dfo/children/activityid_param/code.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.ACTIVITYID")); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/objectrelatonid_param/code.js b/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/objectrelatonid_param/code.js new file mode 100644 index 00000000000..4e20be99f02 --- /dev/null +++ b/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/objectrelatonid_param/code.js @@ -0,0 +1,6 @@ +import("system.logging"); +import("system.vars"); +import("system.result"); + +logging.log("set " + vars.get("$field.AB_OBJECTRELATION_AB_OBJECTRELATIONID")) +result.string(vars.get("$field.AB_OBJECTRELATION_AB_OBJECTRELATIONID")); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/objectid/valueProcess.js b/entity/Activity_entity/entityfields/objectid/valueProcess.js deleted file mode 100644 index d158186750f..00000000000 --- a/entity/Activity_entity/entityfields/objectid/valueProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.result"); -import("system.vars"); -if (vars.exists("$param.ObjectId_param")) -{ - result.string(vars.get("$param.ObjectId_param")); -} -else -{ - result.string(""); -} \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/rowid/valueProcess.js b/entity/Activity_entity/entityfields/rowid/valueProcess.js deleted file mode 100644 index ac57c2420cd..00000000000 --- a/entity/Activity_entity/entityfields/rowid/valueProcess.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.result"); -import("system.vars"); -if (vars.exists("$param.ObjectId_param")) -{ - result.string(vars.get("$param.RowId_param")); -} -else -{ - result.string(""); -} \ No newline at end of file diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js index 11f6ef533fc..fbaa41996f8 100644 --- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js @@ -2,13 +2,15 @@ import("system.vars"); import("system.db"); import("system.result"); import("Sql_lib"); +import("ObjectRelation_lib"); var cond = new SqlCondition(); -cond.andPrepareVars("ACTIVITYLINK.ROW_ID", "$param.RowId_param", "ACTIVITY.ACTIVITYID in (select ACTIVITYLINK.ACTIVITY_ID from ACTIVITYLINK where # = ?)"); -if(vars.exists("$param.OnlyInnate_param") && vars.get("$param.OnlyInnate_param")) { - cond.andPrepare("ACTIVITY.USER_NEW", vars.get("$sys.user")); -} +cond.andPrepareVars("AB_OBJECTRELATION.OBJECT2_ROWID", "$param.RowId_param"); + +cond.andPrepareVars("ACTIVITY.ACTIVITYID", "$param.ActivityId_param"); +if(vars.exists("$param.OnlyInnate_param") && vars.get("$param.OnlyInnate_param")) + cond.andPrepareVars("ACTIVITY.USER_NEW", "$sys.user"); //TODO: use a preparedCondition when available var resCond = db.translateCondition(cond.build("1 = 1")); diff --git a/entity/Activity_entity/recordcontainers/db/fromClauseProcess.js b/entity/Activity_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 00000000000..7a771ce99e4 --- /dev/null +++ b/entity/Activity_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.db"); +import("ObjectRelation_lib"); + +var objectId = (vars.exists("$param.ObjectId_param") ? vars.get("$param.ObjectId_param") : undefined); +result.string("ACTIVITY " + db.translateStatement(ObjectRelationUtils.getJoin("ACTIVITY.ACTIVITYID", objectId))); \ No newline at end of file diff --git a/entity/Activity_entity/recordcontainers/db/onDBDelete.js b/entity/Activity_entity/recordcontainers/db/onDBDelete.js index dde70c0c24e..787c4614c14 100644 --- a/entity/Activity_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Activity_entity/recordcontainers/db/onDBDelete.js @@ -1,5 +1,11 @@ import("system.vars"); import("system.db"); +import("Sql_lib"); +import("Context_lib"); -db.deleteData("ACTIVITYLINK", "ACTIVITYLINK.ACTIVITY_ID = '" + vars.getString("$field.ACTIVITYID") + "'"); +var activityObjectsCondition = SqlCondition.begin() + .andPrepare("AB_OBJECTRELATION.OBJECT1_TYPE", ContextUtils.getCurrentContextId()) + .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$field.ACTIVITYID"); + +db.deleteData("AB_OBJECTRELATION", activityObjectsCondition.build("1=2")); diff --git a/entity/Activity_entity/recordcontainers/db/onDBInsert.js b/entity/Activity_entity/recordcontainers/db/onDBInsert.js index e280977c743..b2d5b7fa9d8 100644 --- a/entity/Activity_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Activity_entity/recordcontainers/db/onDBInsert.js @@ -8,8 +8,8 @@ if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param")) { db.insertData( - "ACTIVITYLINK", - ["ACTIVITYLINKID", "OBJECT_ID", "ROW_ID", "ACTIVITY_ID", "USER_NEW", "DATE_NEW"], + "AB_OBJECTRELATION", + ["AB_OBJECTRELATIONID", "OBJECT1_TYPE", "OBJECT1_ROWID", "OBJECT2_TYPE", "OBJECT2_ROWID", "USER_NEW", "DATE_NEW"], null, - [util.getNewUUID(), vars.get("$param.ObjectId_param"), vars.get("$param.RowId_param"), vars.getString("$field.ACTIVITYID"), vars.getString("$sys.user"), vars.getString("$sys.date")]); + [util.getNewUUID(), ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID"), vars.get("$param.ObjectId_param"), vars.get("$param.RowId_param"), vars.getString("$sys.user"), vars.getString("$sys.date")]); } \ No newline at end of file diff --git a/entity/Comm_entity/entityfields/relationsmaincountry_param/code.js b/entity/Comm_entity/entityfields/relationsmaincountry_param/code.js index 7a2a8594ddc..caa4f4f5ca4 100644 --- a/entity/Comm_entity/entityfields/relationsmaincountry_param/code.js +++ b/entity/Comm_entity/entityfields/relationsmaincountry_param/code.js @@ -7,7 +7,7 @@ cond = new SqlCondition(); cond.andPrepareVars("RELATION.RELATIONID", "$param.RelId_param"); //TODO: this should happen by 1:1 links instead of manually requesting the data by a select -country = db.cell(cond.buildSelect("select ADDRESS.COUNTRY from ADDRESS " +country = db.cell(cond.buildSql("select ADDRESS.COUNTRY from ADDRESS " + "join RELATION on RELATION.ADDRESS_ID = ADDRESS.ADDRESSID ", "1 = 1")); if (country != "") result.string(country); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod index a51e370c886..ea3788afa51 100644 --- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod +++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod @@ -3,15 +3,20 @@ <name>ObjectRelation_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/ObjectRelation_entity/documentation.adoc</documentation> + <recordContainer>db</recordContainer> <entityFields> <entityIncomingField> <name>#INCOMING</name> + <recordContainer>db</recordContainer> </entityIncomingField> <entityField> <name>OBJECT1_TYPE</name> + <title>Type 1</title> </entityField> <entityField> <name>OBJECT1_ROWID</name> + <title>Object 1</title> + <linkedContextProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/linkedContextProcess.js</linkedContextProcess> </entityField> <entityField> <name>AB_OBJECTRELATIONID</name> @@ -40,20 +45,45 @@ </entityField> <entityField> <name>OBJECT2_ROWID</name> + <title>Object 2</title> </entityField> <entityField> <name>OBJECT2_TYPE</name> + <title>Type 2</title> </entityField> + <entityParameter> + <name>ObjectRelatonId_param</name> + <expose v="true" /> + <triggerRecalculation v="true" /> + <mandatory v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityIncomingField> + <name>ObjectRelationById_dfi</name> + <fieldType>DEPENDENCY_IN</fieldType> + <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>59707c94-621c-427d-a465-2a08ae268bbb</name> + <entityName>Activity_entity</entityName> + <fieldName>ActivityObjectRelation_dfo</fieldName> + <isOutgoing v="false" /> + </entityDependency> + </dependencies> + </entityIncomingField> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> + <title></title> + <description>&lt;null value&gt;</description> <alias>Data_alias</alias> + <conditionProcess>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <linkInformation> <linkInformation> - <name>a654da8b-bb3f-4a8c-b4c3-4916c04b7a17</name> - <tableName>AB_OBJECTREALTION</tableName> - <primaryKey>AB_OBJECTREALTIONID</primaryKey> + <name>5c101805-5643-466c-b1b8-0462cd90c400</name> + <tableName>AB_OBJECTRELATION</tableName> + <primaryKey>AB_OBJECTRELATIONID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> @@ -61,39 +91,35 @@ <recordFieldMappings> <dbRecordFieldMapping> <name>AB_OBJECTRELATIONID.value</name> - <recordfield>AB_OBJECTREALTION.AB_OBJECTREALTIONID</recordfield> + <recordfield>AB_OBJECTRELATION.AB_OBJECTRELATIONID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT1_ROWID.value</name> - <recordfield>AB_OBJECTREALTION.OBJECT1_ROWID</recordfield> + <recordfield>AB_OBJECTRELATION.OBJECT1_ROWID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT1_TYPE.value</name> - <recordfield>AB_OBJECTREALTION.OBJECT1_TYPE</recordfield> + <recordfield>AB_OBJECTRELATION.OBJECT1_TYPE</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT2_ROWID.value</name> - <recordfield>AB_OBJECTREALTION.OBJECT2_ROWID</recordfield> + <recordfield>AB_OBJECTRELATION.OBJECT2_ROWID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT2_TYPE.value</name> - <recordfield>AB_OBJECTREALTION.OBJECT2_TYPE</recordfield> + <recordfield>AB_OBJECTRELATION.OBJECT2_TYPE</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DATE_EDIT.value</name> - <recordfield>AB_OBJECTREALTION.DATE_EDIT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DATE_NEW.value</name> - <recordfield>AB_OBJECTREALTION.DATE_NEW</recordfield> + <recordfield>AB_OBJECTRELATION.AB_OBJECTRELATIONID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>USER_EDIT.value</name> - <recordfield>AB_OBJECTREALTION.USER_EDIT</recordfield> + <recordfield>AB_OBJECTRELATION.USER_EDIT</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>USER_NEW.value</name> - <recordfield>AB_OBJECTREALTION.USER_NEW</recordfield> + <recordfield>AB_OBJECTRELATION.USER_NEW</recordfield> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/ActivityLink_entity/entityfields/row_id/linkedContextProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/linkedContextProcess.js similarity index 91% rename from entity/ActivityLink_entity/entityfields/row_id/linkedContextProcess.js rename to entity/ObjectRelation_entity/entityfields/object1_rowid/linkedContextProcess.js index 0053823c5b2..32aa4d5cf10 100644 --- a/entity/ActivityLink_entity/entityfields/row_id/linkedContextProcess.js +++ b/entity/ObjectRelation_entity/entityfields/object1_rowid/linkedContextProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.result"); import("Context_lib"); -result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_ID"))) \ No newline at end of file +result.string(ContextUtils.getContextName(vars.get("$field.OBJECT1_TYPE"))); \ No newline at end of file diff --git a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 00000000000..fb7e7cc1c02 --- /dev/null +++ b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,14 @@ +import("system.vars"); +import("system.logging"); +import("system.result"); +import("system.db"); +import("Sql_lib"); + +logging.log("objectid: " + vars.get("$param.ObjectRelatonId_param")) +logging.log(SqlCondition.begin() + .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONID", "$param.ObjectRelatonId_param") + .build("1=2").toSource()) + +result.string(db.translateCondition(SqlCondition.begin() + .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONID", "$param.ObjectRelatonId_param") + .build("1=2"))); \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/info/valueProcess.js b/entity/Offeritem_entity/entityfields/info/valueProcess.js index 28760b4a57c..522166c5f78 100644 --- a/entity/Offeritem_entity/entityfields/info/valueProcess.js +++ b/entity/Offeritem_entity/entityfields/info/valueProcess.js @@ -8,5 +8,5 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { // TODO: loading from db until loading from dfo is possible. var productId = vars.get("$field.PRODUCT_ID"); - result.string(db.cell(SqlCondition.begin().andPrepareVars("PRODUCT.PRODUCTID", "$field.PRODUCT_ID").buildSelect("select INFO from PRODUCT", "1=2"))); + result.string(db.cell(SqlCondition.begin().andPrepareVars("PRODUCT.PRODUCTID", "$field.PRODUCT_ID").buildSql("select INFO from PRODUCT", "1=2"))); } \ No newline at end of file diff --git a/entity/Org_entity/entityfields/address_id/displayValueProcess.js b/entity/Org_entity/entityfields/address_id/displayValueProcess.js index 0b423e8828f..ad0d57c1054 100644 --- a/entity/Org_entity/entityfields/address_id/displayValueProcess.js +++ b/entity/Org_entity/entityfields/address_id/displayValueProcess.js @@ -12,7 +12,7 @@ if (addrId) var addrData = db.array(db.ROW, SqlCondition.begin() .andPrepare("ADDRESS.ADDRESSID", addrId) - .buildSelect(select)); + .buildSql(select)); addr = AddressUtils.formatOneline.apply(this, addrData); } diff --git a/entity/Pers_entity/entityfields/address_id/displayValueProcess.js b/entity/Pers_entity/entityfields/address_id/displayValueProcess.js index 0b423e8828f..ad0d57c1054 100644 --- a/entity/Pers_entity/entityfields/address_id/displayValueProcess.js +++ b/entity/Pers_entity/entityfields/address_id/displayValueProcess.js @@ -12,7 +12,7 @@ if (addrId) var addrData = db.array(db.ROW, SqlCondition.begin() .andPrepare("ADDRESS.ADDRESSID", addrId) - .buildSelect(select)); + .buildSql(select)); addr = AddressUtils.formatOneline.apply(this, addrData); } diff --git a/entity/Pers_entity/entityfields/persorgsaddresses_dfo/children/relid_param/code.js b/entity/Pers_entity/entityfields/persorgsaddresses_dfo/children/relid_param/code.js index 30f588988c8..f981cc391d7 100644 --- a/entity/Pers_entity/entityfields/persorgsaddresses_dfo/children/relid_param/code.js +++ b/entity/Pers_entity/entityfields/persorgsaddresses_dfo/children/relid_param/code.js @@ -7,6 +7,6 @@ var orgId = vars.get("$field.ORG_ID"); if (orgId) { var cond = SqlCondition.begin().and("RELATION.PERS_ID is null").andPrepare("RELATION.ORG_ID", orgId); - var orgRelId = db.cell(cond.buildSelect("select RELATION.RELATIONID from RELATION", "1 = 1")); + var orgRelId = db.cell(cond.buildSql("select RELATION.RELATIONID from RELATION", "1 = 1")); result.string(orgRelId); } \ No newline at end of file diff --git a/entity/SalesprojectClassificationEntry_entity/contentProcess.js b/entity/SalesprojectClassificationEntry_entity/contentProcess.js index f6522f780e8..0681d65b8ab 100644 --- a/entity/SalesprojectClassificationEntry_entity/contentProcess.js +++ b/entity/SalesprojectClassificationEntry_entity/contentProcess.js @@ -21,7 +21,7 @@ if (vars.exists("$param.ClassId_param") && vars.exists("$param.SalesprojectId_pa if (entryKeywords && classId && salesprojectId) { // correct db if kewords changed allOldTypesCondition = _getClassificationCondition(false); - allOldTypes = db.array(db.COLUMN, allOldTypesCondition.buildSelect("select TYPE from SALESPROJECT_CLASSIFICATION", "1 = 0", "group by TYPE")); + allOldTypes = db.array(db.COLUMN, allOldTypesCondition.buildSql("select TYPE from SALESPROJECT_CLASSIFICATION", "1 = 0", "group by TYPE")); if (allOldTypes.length > 0) { // TODO maybe ask user????!!!!! @@ -30,7 +30,7 @@ if (vars.exists("$param.ClassId_param") && vars.exists("$param.SalesprojectId_pa // load classifications for the class classificationsCondition = _getClassificationCondition(true); - classifications = db.table(classificationsCondition.buildSelect("select SALESPROJECT_CLASSIFICATIONID, TYPE, VALUE from SALESPROJECT_CLASSIFICATION", "1 = 0")); + classifications = db.table(classificationsCondition.buildSql("select SALESPROJECT_CLASSIFICATIONID, TYPE, VALUE from SALESPROJECT_CLASSIFICATION", "1 = 0")); classifications = entryKeywords.map(function(entryKeyword) { // return saved value diff --git a/entity/SalesprojectClassificationEntry_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectClassificationEntry_entity/recordcontainers/jdito/contentProcess.js index f6522f780e8..0681d65b8ab 100644 --- a/entity/SalesprojectClassificationEntry_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectClassificationEntry_entity/recordcontainers/jdito/contentProcess.js @@ -21,7 +21,7 @@ if (vars.exists("$param.ClassId_param") && vars.exists("$param.SalesprojectId_pa if (entryKeywords && classId && salesprojectId) { // correct db if kewords changed allOldTypesCondition = _getClassificationCondition(false); - allOldTypes = db.array(db.COLUMN, allOldTypesCondition.buildSelect("select TYPE from SALESPROJECT_CLASSIFICATION", "1 = 0", "group by TYPE")); + allOldTypes = db.array(db.COLUMN, allOldTypesCondition.buildSql("select TYPE from SALESPROJECT_CLASSIFICATION", "1 = 0", "group by TYPE")); if (allOldTypes.length > 0) { // TODO maybe ask user????!!!!! @@ -30,7 +30,7 @@ if (vars.exists("$param.ClassId_param") && vars.exists("$param.SalesprojectId_pa // load classifications for the class classificationsCondition = _getClassificationCondition(true); - classifications = db.table(classificationsCondition.buildSelect("select SALESPROJECT_CLASSIFICATIONID, TYPE, VALUE from SALESPROJECT_CLASSIFICATION", "1 = 0")); + classifications = db.table(classificationsCondition.buildSql("select SALESPROJECT_CLASSIFICATIONID, TYPE, VALUE from SALESPROJECT_CLASSIFICATION", "1 = 0")); classifications = entryKeywords.map(function(entryKeyword) { // return saved value diff --git a/neonContext/ActivityLink_context/ActivityLink_context.aod b/neonContext/ObjectRelation_context/ObjectRelation_context.aod similarity index 63% rename from neonContext/ActivityLink_context/ActivityLink_context.aod rename to neonContext/ObjectRelation_context/ObjectRelation_context.aod index 3606a9f2def..90149360d0c 100644 --- a/neonContext/ActivityLink_context/ActivityLink_context.aod +++ b/neonContext/ObjectRelation_context/ObjectRelation_context.aod @@ -1,13 +1,12 @@ <?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.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0"> - <name>ActivityLink_context</name> + <name>ObjectRelation_context</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterview>ActivityLinkFilter_view</filterview> - <entity>ActivityLink_entity</entity> + <entity>ObjectRelation_entity</entity> <references> <neonViewReference> - <name>9fe94a17-0d0f-4d43-b233-7fde1c408b34</name> - <view>ActivityLinkFilter_view</view> + <name>f6b27aa2-d0a7-479c-812e-8b16400b564b</name> + <view>ObjectRelationFilter_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod deleted file mode 100644 index b36092508ad..00000000000 --- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> - <name>ActivityLinkFilter_view</name> - <title>Connections</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <tableViewTemplate> - <name>ActivityLinkFilter_template</name> - <entityField>#ENTITY</entityField> - <columns> - <neonTableColumn> - <name>a529b696-f7e2-4890-8455-a5754035c830</name> - <entityField>OBJECT_ID</entityField> - </neonTableColumn> - <neonTableColumn> - <name>048fde66-f67e-423d-90ba-400b7f79fcef</name> - <entityField>ROW_ID</entityField> - </neonTableColumn> - </columns> - </tableViewTemplate> - </children> -</neonView> diff --git a/neonView/ActivityPreview_view/ActivityPreview_view.aod b/neonView/ActivityPreview_view/ActivityPreview_view.aod index eaa45e929fc..09ac0660648 100644 --- a/neonView/ActivityPreview_view/ActivityPreview_view.aod +++ b/neonView/ActivityPreview_view/ActivityPreview_view.aod @@ -32,6 +32,14 @@ <name>b0673d1d-af3d-4daa-b6ec-511f18367e7f</name> <entityField>INFO</entityField> </entityFieldLink> + <entityFieldLink> + <name>d57cbf7c-f590-4166-a232-60a43affb9d0</name> + <entityField>AB_OBJECTRELATION_OBJECT2_TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>1347066e-16d1-47ba-92e9-8f4aa30326b2</name> + <entityField>AB_OBJECTRELATION_OBJECT2_ROWID</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <neonViewReference> diff --git a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod new file mode 100644 index 00000000000..3f488897799 --- /dev/null +++ b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod @@ -0,0 +1,44 @@ +<?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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> + <name>ObjectRelationFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>ObjectRelations</name> + <autoNewRow v="true" /> + <entityField>#ENTITY</entityField> + <title>Object Relation</title> + <columns> + <neonTableColumn> + <name>4fb01378-e6c6-4fb5-8b3b-8a90b3550105</name> + <entityField>OBJECT1_ROWID</entityField> + <width v="75" /> + <expandRatio v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>c5eb8814-31f0-437d-aea8-c72301b00deb</name> + <entityField>OBJECT1_TYPE</entityField> + <width v="75" /> + <expandRatio v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>4495cf75-82d1-4ad3-9a48-86ad44eadc37</name> + <entityField>OBJECT2_ROWID</entityField> + <width v="75" /> + <expandRatio v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>99e92d98-81b4-4e68-927e-a77771b31ed7</name> + <entityField>OBJECT2_TYPE</entityField> + <width v="75" /> + <expandRatio v="100" /> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_1050d93f.txt b/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_1050d93f.txt deleted file mode 100644 index 2959d68f962..00000000000 --- a/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_1050d93f.txt +++ /dev/null @@ -1,6 +0,0 @@ -<html> - <body> - <h1>Headertest</h1> - <p>Paragraphtest</p> - </body> -</html> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87.txt b/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87.txt new file mode 100644 index 00000000000..ed03740997f --- /dev/null +++ b/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87.txt @@ -0,0 +1,10 @@ +<html> + <body> + <h1>Headertest</h1> + <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </p> + </body> +</html> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_de410a35.txt b/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87_1.txt similarity index 98% rename from others/db_changes/data_alias/data/example_activity/LOBs/subjectText_de410a35.txt rename to others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87_1.txt index 2f2b1ad6882..96486e079fe 100644 --- a/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_de410a35.txt +++ b/others/db_changes/data_alias/data/example_activity/LOBs/subjectText_661a7b87_1.txt @@ -2,4 +2,4 @@ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. -Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. \ No newline at end of file +Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. </p> diff --git a/others/db_changes/data_alias/data/example_activity/example_activity.xml b/others/db_changes/data_alias/data/example_activity/example_activity.xml deleted file mode 100644 index 9144846b72b..00000000000 --- a/others/db_changes/data_alias/data/example_activity/example_activity.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?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.goderbauer" id="075bdfd7-3c6c-41e0-8267-ceac3e41c555"> - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="de410a35-bcab-407e-9d60-7a65f028159b"/> - <column name="USER_NEW" value="Gwendoline"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="SUBJECT" value="call from Haråld"/> - <column name="INFO" valueClobFile="/data/example_activity/LOBs/subjectText_de410a35.txt"/> - <column name="CATEGORY" valueNumeric="2"/> - <column name="DIRECTION" value="i"/> - <column name="ENTRYDATE" valueDate="2018-08-03T12:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="b435a1da-39f2-48ae-93a5-bad704e5ae48"/> - <column name="ACTIVITY_ID" value="de410a35-bcab-407e-9d60-7a65f028159b"/> - <column name="ROW_ID" value="a589b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="Gwendoline"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="OBJECT_ID" value="Org_context"/> - </insert> - <rollback> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="b435a1da-39f2-48ae-93a5-bad704e5ae48" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="de410a35-bcab-407e-9d60-7a65f028159b" /> - </whereParams> - </delete> - </rollback> - </changeSet> -</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/example_activity/example_activity_gfk.xml b/others/db_changes/data_alias/data/example_activity/example_activity_gfk.xml index 5fcb5adf4cf..e0e2a2846e2 100644 --- a/others/db_changes/data_alias/data/example_activity/example_activity_gfk.xml +++ b/others/db_changes/data_alias/data/example_activity/example_activity_gfk.xml @@ -4,18 +4,19 @@ <insert tableName="ACTIVITY"> <column name="ACTIVITYID" value="661a7b87-68ae-4d52-bc22-6bf96184e6fe"/> <column name="SUBJECT" value="Webinar: Transparentes Kampagnen- und Veranstaltungsmanagement"/> - <column name="INFO" value="Hat teilgenommen und Feedback gegeben: begeistert von den neuen Möglichkeiten und der Webinar-Qualität"/> + <column name="INFO" valueClobFile="LOBs/subjectText_661a7b87.txt"/> <column name="CATEGORY" valueNumeric="1"/> <column name="DIRECTION" value="o"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-03T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="5a4d249a-e3e4-48e5-80a5-2fd1567a82b8"/> - <column name="ACTIVITY_ID" value="661a7b87-68ae-4d52-bc22-6bf96184e6fe"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="5a4d249a-e3e4-48e5-80a5-2fd1567a82b8"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="661a7b87-68ae-4d52-bc22-6bf96184e6fe"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> </insert> @@ -29,11 +30,12 @@ <column name="DATE_NEW" valueDate="2018-07-31T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-07-31T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="b0fae79b-0b1e-4650-8d94-853d17cca7bd"/> - <column name="ACTIVITY_ID" value="9dda39bf-966c-4560-be03-5ddbbc1da84a"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="b0fae79b-0b1e-4650-8d94-853d17cca7bd"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="9dda39bf-966c-4560-be03-5ddbbc1da84a"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-07-31T12:02:52"/> </insert> @@ -47,11 +49,12 @@ <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-03T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="01ff4193-d5b4-41eb-b2db-ea31e5ed7df4"/> - <column name="ACTIVITY_ID" value="94365b81-cddd-4f56-8379-7ba0a98840a4"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="01ff4193-d5b4-41eb-b2db-ea31e5ed7df4"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="94365b81-cddd-4f56-8379-7ba0a98840a4"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> </insert> @@ -65,11 +68,12 @@ <column name="DATE_NEW" valueDate="2018-08-06T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-06T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="80d3de8f-fd86-401b-aeae-63b389b9310c"/> - <column name="ACTIVITY_ID" value="6397161c-afed-40cf-a1bd-12e657054ce4"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="80d3de8f-fd86-401b-aeae-63b389b9310c"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="6397161c-afed-40cf-a1bd-12e657054ce4"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-06T12:02:52"/> </insert> @@ -83,11 +87,12 @@ <column name="DATE_NEW" valueDate="2018-08-04T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-04T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="5ad45b3e-72a0-419e-a183-17aaead38158"/> - <column name="ACTIVITY_ID" value="b378876d-dba5-4e41-865f-9ac056bffa60"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="5ad45b3e-72a0-419e-a183-17aaead38158"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="b378876d-dba5-4e41-865f-9ac056bffa60"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-04T12:02:52"/> </insert> @@ -101,11 +106,12 @@ <column name="DATE_NEW" valueDate="2018-08-09T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-09T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="6c212e64-a9db-4395-a118-5279dbc6761d"/> - <column name="ACTIVITY_ID" value="beda92e0-bbd6-423a-8b49-78da30064e84"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="6c212e64-a9db-4395-a118-5279dbc6761d"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="beda92e0-bbd6-423a-8b49-78da30064e84"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-09T12:02:52"/> </insert> @@ -119,11 +125,12 @@ <column name="DATE_NEW" valueDate="2018-08-04T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-04T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="8d384436-9989-4571-a193-cc3061249f97"/> - <column name="ACTIVITY_ID" value="56c78f3d-e126-4e36-8031-d5eef9877243"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="8d384436-9989-4571-a193-cc3061249f97"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="56c78f3d-e126-4e36-8031-d5eef9877243"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-04T12:02:52"/> </insert> @@ -137,11 +144,12 @@ <column name="DATE_NEW" valueDate="2018-08-12T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-12T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="20a50d5d-fe87-4ed2-8f94-b2571b6b34e7"/> - <column name="ACTIVITY_ID" value="9f498736-c523-4c63-8c53-28e49324b52b"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="20a50d5d-fe87-4ed2-8f94-b2571b6b34e7"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="9f498736-c523-4c63-8c53-28e49324b52b"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-12T12:02:52"/> </insert> @@ -155,11 +163,12 @@ <column name="DATE_NEW" valueDate="2018-08-11T12:02:52"/> <column name="ENTRYDATE" valueDate="2018-08-11T12:02:52"/> </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="46d9d317-1b7d-4046-8278-9a4957cc1dfe"/> - <column name="ACTIVITY_ID" value="1c711078-8324-4fcf-93ec-2c8aa29c0cc6"/> - <column name="OBJECT_ID" value="Org_context"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="46d9d317-1b7d-4046-8278-9a4957cc1dfe"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="1c711078-8324-4fcf-93ec-2c8aa29c0cc6"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="USER_NEW" value="Admin"/> <column name="DATE_NEW" valueDate="2018-08-11T12:02:52"/> </insert> diff --git a/others/db_changes/data_alias/data/example_activity/extendHLink_62330df6.xml b/others/db_changes/data_alias/data/example_activity/extendHLink_62330df6.xml deleted file mode 100644 index 78cfa9a7b7f..00000000000 --- a/others/db_changes/data_alias/data/example_activity/extendHLink_62330df6.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?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.goderbauer" id="62330df6-3edd-469d-893e-bd936677e8ff"> - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="1050d93f-535a-4d01-a835-3ff0272c6af0"/> - <column name="USER_NEW" value="Gwendoline"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:12:52"/> - <column name="SUBJECT" value="interesting information from the customer visit"/> - <column name="INFO" valueClobFile="/data/example_activity/LOBs/subjectText_1050d93f.txt"/> - <column name="CATEGORY" valueNumeric="2"/> - <column name="DIRECTION" value="o"/> - <column name="ENTRYDATE" valueDate="2018-08-03T14:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="850139a8-93b9-452c-8e02-e32b7c00e265"/> - <column name="ACTIVITY_ID" value="1050d93f-535a-4d01-a835-3ff0272c6af0"/> - <column name="ROW_ID" value="a8e084e2-d68a-4f1e-a7bb-f8d46ad6293d"/> - <column name="USER_NEW" value="Lisa Sommer"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:12:52"/> - <column name="OBJECT_ID" value="3"/> - </insert> - <rollback> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="850139a8-93b9-452c-8e02-e32b7c00e265" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="1050d93f-535a-4d01-a835-3ff0272c6af0" /> - </whereParams> - </delete> - </rollback> - </changeSet> -</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/example_org/ORG_gfk.xml b/others/db_changes/data_alias/data/example_org/ORG_gfk.xml index daa007f9993..6090a887fa8 100644 --- a/others/db_changes/data_alias/data/example_org/ORG_gfk.xml +++ b/others/db_changes/data_alias/data/example_org/ORG_gfk.xml @@ -1,201 +1,181 @@ <?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="t.feldmann" id="efc66d2-a20d-49e0-a24c-afab6095d1cb"> - <insert tableName="ORG"> - <column name="ORGID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/> - <column name="NAME" value="Gfk AG"/> - <column name="CUSTOMERCODE" value="00000001"/> - <column name="TYPE" valueNumeric="0"/> - <column name="PRICE_POLITICS" valueNumeric="1"/> - <column name="STRENGTH" valueNumeric="1"/> - <column name="WEAKNESS" valueNumeric="1"/> - </insert> - <insert tableName="RELATION"> - <column name="RELATIONID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/> - <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="LANGUAGE" value="de-DE"/> - <column name="STATUS" valueNumeric="1"/> - <column name="ADDRESS_ID" value="14d03432-985b-4efe-a634-da71ae482907"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="14a01219-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="MEDIUM_ID" valueNumeric="1"/> - <column name="ADDR" value="gfk@domain.local"/> - <column name="STANDARD" valueNumeric="1"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="22d07819-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="MEDIUM_ID" valueNumeric="2"/> - <column name="ADDR" value="098713332"/> - <column name="STANDARD" valueNumeric="0"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="00d07819-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="MEDIUM_ID" valueNumeric="3"/> - <column name="ADDR" value="www.gfk.de"/> - <column name="STANDARD" valueNumeric="0"/> - </insert> - <insert tableName="ADDRESS"> - <column name="STATE" value="Bayern"/> - <column name="ADDR_TYPE" valueNumeric="1"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="CITY" value="München"/> - <column name="COUNTRY" value="DE"/> - <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="admin"/> - <column name="ADDRIDENTIFIER" value="Tor 1"/> - <column name="REGION" value=""/> - <column name="ADDRESSID" value="14d03432-985b-4efe-a634-da71ae482907"/> - <column name="BUILDINGNO" value="2"/> - <column name="ADDRESSADDITION"/> - <column name="ZIP" value="80807"/> - <column name="ADDRESS" value="Wilhelm-Straße"/> - <column name="DISTRICT" value="Oberbayern"/> - </insert> - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="de410a35-bcab-407e-9d60-7a65f028159b"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="SUBJECT" value="Produktpalette"/> - <column name="INFO" value="seit November neuer Einkäufer bei Schulz. Herr Traum wird unsere Spezifikation aber in jedem Fall auch 1997 festschreiben. Dennoch Vorsicht: Besuch"/> - <column name="CATEGORY" valueNumeric="2"/> - <column name="DIRECTION" value="i"/> - <column name="ENTRYDATE" valueDate="2018-08-03T12:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="b435a1da-39f2-48ae-93a5-bad704e5ae48"/> - <column name="ACTIVITY_ID" value="de410a35-bcab-407e-9d60-7a65f028159b"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="OBJECT_ID" value="Org_context"/> - </insert> + <changeSet author="t.feldmann" id="efc66d2-a20d-49e0-a24c-afab6095d1cb"> + <insert tableName="ORG"> + <column name="ORGID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/> + <column name="NAME" value="Gfk AG"/> + <column name="CUSTOMERCODE" value="00000001"/> + <column name="TYPE" valueNumeric="0"/> + <column name="PRICE_POLITICS" valueNumeric="1"/> + <column name="STRENGTH" valueNumeric="1"/> + <column name="WEAKNESS" valueNumeric="1"/> + </insert> + <insert tableName="RELATION"> + <column name="RELATIONID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/> + <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="LANGUAGE" value="de-DE"/> + <column name="STATUS" valueNumeric="1"/> + <column name="ADDRESS_ID" value="14d03432-985b-4efe-a634-da71ae482907"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="14a01219-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="MEDIUM_ID" valueNumeric="1"/> + <column name="ADDR" value="gfk@domain.local"/> + <column name="STANDARD" valueNumeric="1"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="22d07819-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="MEDIUM_ID" valueNumeric="2"/> + <column name="ADDR" value="098713332"/> + <column name="STANDARD" valueNumeric="0"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="00d07819-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="MEDIUM_ID" valueNumeric="3"/> + <column name="ADDR" value="www.gfk.de"/> + <column name="STANDARD" valueNumeric="0"/> + </insert> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" valueNumeric="1"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="CITY" value="München"/> + <column name="COUNTRY" value="DE"/> + <column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="USER_NEW" value="admin"/> + <column name="ADDRIDENTIFIER" value="Tor 1"/> + <column name="REGION" value=""/> + <column name="ADDRESSID" value="14d03432-985b-4efe-a634-da71ae482907"/> + <column name="BUILDINGNO" value="2"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="80807"/> + <column name="ADDRESS" value="Wilhelm-Straße"/> + <column name="DISTRICT" value="Oberbayern"/> + </insert> + <insert tableName="ACTIVITY"> + <column name="ACTIVITYID" value="de410a35-bcab-407e-9d60-7a65f028159b"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> + <column name="SUBJECT" value="Produktpalette"/> + <column name="INFO" value="seit November neuer Einkäufer bei Schulz. Herr Traum wird unsere Spezifikation aber in jedem Fall auch 1997 festschreiben. Dennoch Vorsicht: Besuch"/> + <column name="CATEGORY" valueNumeric="2"/> + <column name="DIRECTION" value="i"/> + <column name="ENTRYDATE" valueDate="2018-08-03T12:41:22"/> + </insert> + <insert tableName="ACTIVITY"> + <column name="ACTIVITYID" value="de110a33-bcab-407e-9d60-7a65f028159b"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> + <column name="SUBJECT" value="Nachfassen"/> + <column name="INFO" value="Informationen sind zu seiner Zufriedenheit gewesen, sendet eine Email mit einer konkreten Anfrage."/> + <column name="CATEGORY" valueNumeric="3"/> + <column name="DIRECTION" value="o"/> + <column name="ENTRYDATE" valueDate="2017-04-13T12:41:22"/> + </insert> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="baa5a1da-39f2-48ae-93a5-bad704e5ae48"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="de110a33-bcab-407e-9d60-7a65f028159b"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-08-03T17:33:52"/> + </insert> + <insert tableName="ACTIVITY"> + <column name="ACTIVITYID" value="de110a35-aaab-407e-9d60-7a65f028159b"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> + <column name="SUBJECT" value="Kauf der Maschine von KUKA, Augsburg"/> + <column name="INFO" value="erworben von Roboterabteilung"/> + <column name="CATEGORY" valueNumeric="1"/> + <column name="DIRECTION" value="i"/> + <column name="ENTRYDATE" valueDate="2018-02-22T14:41:22"/> + </insert> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="caa5a1da-39f2-48ae-93a5-bad704e5ae48"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="de110a35-aaab-407e-9d60-7a65f028159b"/> + <column name="OBJECT2_TYPE" value="Org_context"/> + <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> + </insert> - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="de110a33-bcab-407e-9d60-7a65f028159b"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="SUBJECT" value="Nachfassen"/> - <column name="INFO" value="Informationen sind zu seiner Zufriedenheit gewesen, sendet eine Email mit einer konkreten Anfrage."/> - <column name="CATEGORY" valueNumeric="3"/> - <column name="DIRECTION" value="o"/> - <column name="ENTRYDATE" valueDate="2017-04-13T12:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="baa5a1da-39f2-48ae-93a5-bad704e5ae48"/> - <column name="ACTIVITY_ID" value="de110a33-bcab-407e-9d60-7a65f028159b"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T17:33:52"/> - <column name="OBJECT_ID" value="Org_context"/> - </insert> - - - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="de110a35-aaab-407e-9d60-7a65f028159b"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="SUBJECT" value="Kauf der Maschine von KUKA, Augsburg"/> - <column name="INFO" value="erworben von Roboterabteilung"/> - <column name="CATEGORY" valueNumeric="1"/> - <column name="DIRECTION" value="i"/> - <column name="ENTRYDATE" valueDate="2018-02-22T14:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="caa5a1da-39f2-48ae-93a5-bad704e5ae48"/> - <column name="ACTIVITY_ID" value="de110a35-aaab-407e-9d60-7a65f028159b"/> - <column name="ROW_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="OBJECT_ID" value="Org_context"/> - </insert> - - <rollback> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="caa5a1da-39f2-48ae-93a5-bad704e5ae48" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="de110a35-aaab-407e-9d60-7a65f028159b" /> - </whereParams> - </delete> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="baa5a1da-39f2-48ae-93a5-bad704e5ae48" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="de110a33-bcab-407e-9d60-7a65f028159b" /> - </whereParams> - </delete> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="b435a1da-39f2-48ae-93a5-bad704e5ae48" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="de410a35-bcab-407e-9d60-7a65f028159b" /> - </whereParams> - </delete> - <delete tableName="ADDRESS"> - <where>ADDRESSID = ?</where> - <whereParams> - <param value="14d03432-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="00d07819-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="22d07819-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="14a01219-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="RELATION"> - <where>RELATIONID = ?</where> - <whereParams> - <param value="b219b58a-f120-42d8-9a64-0b176501eac7" /> - </whereParams> - </delete> - <delete tableName="ORG"> - <where>ORGID = ?</where> - <whereParams> - <param value="b219b58a-f120-42d8-9a64-0b176501eac7" /> - </whereParams> - </delete> - </rollback> -</changeSet> + <rollback> + <delete tableName="AB_OBJECTRELATION"> + <where>OBJECT1_TYPE = ? and OBJECT1_ROWID = ?</where> + <whereParams> + <param value="Activity_context" /> + <param value="de110a35-aaab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ACTIVITY"> + <where>ACTIVITYID = ?</where> + <whereParams> + <param value="de110a35-aaab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ACTIVITY"> + <where>ACTIVITYID = ?</where> + <whereParams> + <param value="de110a33-bcab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ACTIVITY"> + <where>ACTIVITYID = ?</where> + <whereParams> + <param value="de410a35-bcab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ADDRESS"> + <where>ADDRESSID = ?</where> + <whereParams> + <param value="14d03432-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="00d07819-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="22d07819-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="14a01219-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="RELATION"> + <where>RELATIONID = ?</where> + <whereParams> + <param value="b219b58a-f120-42d8-9a64-0b176501eac7" /> + </whereParams> + </delete> + <delete tableName="ORG"> + <where>ORGID = ?</where> + <whereParams> + <param value="b219b58a-f120-42d8-9a64-0b176501eac7" /> + </whereParams> + </delete> + </rollback> + </changeSet> </databaseChangeLog> diff --git a/others/db_changes/data_alias/data/example_pers/PERS_leicht.xml b/others/db_changes/data_alias/data/example_pers/PERS_leicht.xml index eaf9517e31f..12f128c9121 100644 --- a/others/db_changes/data_alias/data/example_pers/PERS_leicht.xml +++ b/others/db_changes/data_alias/data/example_pers/PERS_leicht.xml @@ -2,7 +2,7 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="m.escher" id="efc45d2-a40d-49e0-a24c-afab6095d1cb"> <insert tableName="PERS"> - <column name="PERSID" value="73d72bf8-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="FIRSTNAME" value="Birgit"/> <column name="MIDDLENAME"/> <column name="LASTNAME" value="Leicht"/> @@ -15,7 +15,7 @@ <insert tableName="RELATION"> <column name="RELATIONSHIP" valueNumeric="1"/> <column name="LANGUAGE" value="de-DE"/> - <column name="PERS_ID" value="73d72bf8-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERS_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="RELATIONID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> @@ -66,13 +66,13 @@ <delete tableName="PERS"> <where>PERSID = ?</where> <whereParams> - <param value="73d72bf8-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" /> </whereParams> </delete> <delete tableName="ADDRESS"> <where>RELATION_ID = ?</where> <whereParams> - <param value="73d72bf8-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" /> </whereParams> </delete> </rollback> diff --git a/others/db_changes/data_alias/data/example_pers/PERS_muller.xml b/others/db_changes/data_alias/data/example_pers/PERS_muller.xml index 43eb63ace53..6c6098dd93d 100644 --- a/others/db_changes/data_alias/data/example_pers/PERS_muller.xml +++ b/others/db_changes/data_alias/data/example_pers/PERS_muller.xml @@ -2,7 +2,7 @@ <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="m.escher" id="efc45d2-a40d-49e0-a24c-afab6095d1cb"> <insert tableName="PERS"> - <column name="PERSID" value="73d72202-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="FIRSTNAME" value="Franz"/> <column name="MIDDLENAME"/> <column name="LASTNAME" value="Müller"/> @@ -16,7 +16,7 @@ <column name="RELATIONSHIP" valueNumeric="1"/> <column name="LANGUAGE" value="de-DE"/> <column name="RELATIONID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="PERS_ID" value="73d72202-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERS_ID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> <column name="USER_NEW" value="admin"/> @@ -32,7 +32,7 @@ <delete tableName="PERS"> <where>PERSID = ?</where> <whereParams> - <param value="73d72202-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1" /> </whereParams> </delete> </rollback> diff --git a/others/db_changes/data_alias/data/example_pers/PERS_pfiffig.xml b/others/db_changes/data_alias/data/example_pers/PERS_pfiffig.xml index 6103a84c510..adb03c30376 100644 --- a/others/db_changes/data_alias/data/example_pers/PERS_pfiffig.xml +++ b/others/db_changes/data_alias/data/example_pers/PERS_pfiffig.xml @@ -1,125 +1,127 @@ <?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="t.feldmann" id="efc45d2-a40d-49e0-a24c-afab6095d1cb"> - <insert tableName="PERS"> - <column name="PERSID" value="efc45d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="DATEOFBIRTH" valueDate="1991-02-01"/> - <column name="USER_NEW" value="admin"/> - <column name="FIRSTNAME" value="Peter"/> - <column name="MIDDLENAME" value=""/> - <column name="LASTNAME" value="Pfiffig"/> - <column name="GENDER" value="m"/> - <column name="SALUTATION" value="Herr"/> - </insert> - <insert tableName="RELATION"> - <column name="RELATIONSHIP" valueNumeric="1"/> - <column name="LANGUAGE" value="de-DE"/> - <column name="RELATIONID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="PERS_ID" value="efc45d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="STATUS" valueNumeric="1"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="14d01219-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="MEDIUM_ID" valueNumeric="1"/> - <column name="ADDR" value="pfiffig@web.de"/> - <column name="STANDARD" valueNumeric="1"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="22d01219-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="MEDIUM_ID" valueNumeric="2"/> - <column name="ADDR" value="08871333"/> - <column name="STANDARD" valueNumeric="0"/> - </insert> - <insert tableName="ADDRESS"> - <column name="STATE" value="Bayern"/> - <column name="ADDR_TYPE" valueNumeric="2"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="CITY" value="Nürnberg"/> - <column name="COUNTRY" value="DE"/> - <column name="RELATION_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="USER_NEW" value="admin"/> - <column name="ADDRIDENTIFIER" value="Tor 1"/> - <column name="REGION" value="Mittelfranken"/> - <column name="ADDRESSID" value="14d01332-985b-4efe-a634-da71ae482907"/> - <column name="BUILDINGNO" value="25"/> - <column name="ADDRESSADDITION"/> - <column name="ZIP" value="90419"/> - <column name="ADDRESS" value="Laufertorgraben"/> - <column name="DISTRICT" value="Nürnberg"/> - </insert> - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="de110a35-bcab-407e-9d60-7a65f028159b"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> - <column name="SUBJECT" value="Muster"/> - <column name="INFO" value="Spezifikation ausgefüllt und abgeschickt"/> - <column name="CATEGORY" valueNumeric="1"/> - <column name="DIRECTION" value="o"/> - <column name="ENTRYDATE" valueDate="2018-06-03T12:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="b111a1da-39f2-48ae-93a5-bad704e5ae48"/> - <column name="ACTIVITY_ID" value="de110a35-bcab-407e-9d60-7a65f028159b"/> - <column name="ROW_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-06-03T14:02:52"/> - <column name="OBJECT_ID" value="Pers_context"/> - </insert> - <rollback> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="b111a1da-39f2-48ae-93a5-bad704e5ae48" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="de110a35-bcab-407e-9d60-7a65f028159b" /> - </whereParams> - </delete> - <delete tableName="ADDRESS"> - <where>ADDRESSID = ?</where> - <whereParams> - <param value="14d01332-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="22d01219-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="14d01219-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="RELATION"> - <where>RELATIONID = ?</where> - <whereParams> - <param value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> - </whereParams> - </delete> - <delete tableName="PERS"> - <where>PERSID = ?</where> - <whereParams> - <param value="efc45d11-a40d-59e0-a24c-afcb6095d2cb" /> - </whereParams> - </delete> - </rollback> -</changeSet> + <changeSet author="t.feldmann" id="efc45d2-a40d-49e0-a24c-afab6095d1cb"> + <insert tableName="PERS"> + <column name="PERSID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="DATEOFBIRTH" valueDate="1991-02-01"/> + <column name="USER_NEW" value="admin"/> + <column name="FIRSTNAME" value="Peter"/> + <column name="MIDDLENAME" value=""/> + <column name="LASTNAME" value="Pfiffig"/> + <column name="GENDER" value="m"/> + <column name="SALUTATION" value="Herr"/> + </insert> + <insert tableName="RELATION"> + <column name="RELATIONSHIP" valueNumeric="1"/> + <column name="LANGUAGE" value="de-DE"/> + <column name="RELATIONID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="PERS_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="STATUS" valueNumeric="1"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="14d01219-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="MEDIUM_ID" valueNumeric="1"/> + <column name="ADDR" value="pfiffig@web.de"/> + <column name="STANDARD" valueNumeric="1"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="22d01219-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="MEDIUM_ID" valueNumeric="2"/> + <column name="ADDR" value="08871333"/> + <column name="STANDARD" valueNumeric="0"/> + </insert> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" valueNumeric="2"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="CITY" value="Nürnberg"/> + <column name="COUNTRY" value="DE"/> + <column name="RELATION_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="USER_NEW" value="admin"/> + <column name="ADDRIDENTIFIER" value="Tor 1"/> + <column name="REGION" value="Mittelfranken"/> + <column name="ADDRESSID" value="14d01332-985b-4efe-a634-da71ae482907"/> + <column name="BUILDINGNO" value="25"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="90419"/> + <column name="ADDRESS" value="Laufertorgraben"/> + <column name="DISTRICT" value="Nürnberg"/> + </insert> + <insert tableName="ACTIVITY"> + <column name="ACTIVITYID" value="de110a35-bcab-407e-9d60-7a65f028159b"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-08-03T12:02:52"/> + <column name="SUBJECT" value="Muster"/> + <column name="INFO" value="Spezifikation ausgefüllt und abgeschickt"/> + <column name="CATEGORY" valueNumeric="1"/> + <column name="DIRECTION" value="o"/> + <column name="ENTRYDATE" valueDate="2018-06-03T12:41:22"/> + </insert> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="b111a1da-39f2-48ae-93a5-bad704e5ae48"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="de110a35-bcab-407e-9d60-7a65f028159b"/> + <column name="OBJECT2_TYPE" value="Pers_context"/> + <column name="OBJECT2_ROWID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-06-03T14:02:52"/> + </insert> + <rollback> + <delete tableName="AB_OBJECTRELATION"> + <where>OBJECT1_TYPE = ? and OBJECT1_ROWID = ?</where> + <whereParams> + <param value="Activity_context" /> + <param value="de110a35-bcab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ACTIVITY"> + <where>ACTIVITYID = ?</where> + <whereParams> + <param value="de110a35-bcab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ADDRESS"> + <where>ADDRESSID = ?</where> + <whereParams> + <param value="14d01332-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="22d01219-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="14d01219-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="RELATION"> + <where>RELATIONID = ?</where> + <whereParams> + <param value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> + </whereParams> + </delete> + <delete tableName="PERS"> + <where>PERSID = ?</where> + <whereParams> + <param value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> + </whereParams> + </delete> + </rollback> + </changeSet> </databaseChangeLog> diff --git a/others/db_changes/data_alias/data/example_pers/PERS_sommer.xml b/others/db_changes/data_alias/data/example_pers/PERS_sommer.xml index fc858c5e7dc..66fcd61d469 100644 --- a/others/db_changes/data_alias/data/example_pers/PERS_sommer.xml +++ b/others/db_changes/data_alias/data/example_pers/PERS_sommer.xml @@ -1,125 +1,125 @@ <?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="t.feldmann" id="efc45d2-a40d-49e0-a24c-afab6095d1cb"> - <insert tableName="PERS"> - <column name="PERSID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="DATEOFBIRTH" valueDate="1988-13-01"/> - <column name="USER_NEW" value="admin"/> - <column name="FIRSTNAME" value="Lisa"/> - <column name="MIDDLENAME" value=""/> - <column name="LASTNAME" value="Sommer"/> - <column name="GENDER" value="f"/> - <column name="SALUTATION" value="Frau"/> - </insert> - <insert tableName="RELATION"> - <column name="RELATIONSHIP" valueNumeric="1"/> - <column name="LANGUAGE" value="de-DE"/> - <column name="RELATIONID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="PERS_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="STATUS" valueNumeric="1"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="14d05619-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="MEDIUM_ID" valueNumeric="1"/> - <column name="ADDR" value="sommer@gfk.de"/> - <column name="STANDARD" valueNumeric="1"/> - </insert> - <insert tableName="COMM"> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="USER_NEW" value="admin"/> - <column name="COMMID" value="58d01219-985b-4efe-a634-da71ae482907"/> - <column name="RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="MEDIUM_ID" valueNumeric="2"/> - <column name="ADDR" value="087631333"/> - <column name="STANDARD" valueNumeric="0"/> - </insert> - <insert tableName="ADDRESS"> - <column name="STATE" value="Bayern"/> - <column name="ADDR_TYPE" valueNumeric="2"/> - <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> - <column name="CITY" value="Landshut"/> - <column name="COUNTRY" value="DE"/> - <column name="RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="USER_NEW" value="admin"/> - <column name="ADDRIDENTIFIER" value=""/> - <column name="REGION" value="Niederbayern"/> - <column name="ADDRESSID" value="11d01332-985b-4efe-a634-da71ae482907"/> - <column name="BUILDINGNO" value="12"/> - <column name="ADDRESSADDITION"/> - <column name="ZIP" value="84034"/> - <column name="ADDRESS" value="Neustadt"/> - <column name="DISTRICT" value="Niederbayern"/> - </insert> - <insert tableName="ACTIVITY"> - <column name="ACTIVITYID" value="aa110a35-bcab-407e-9d60-7a65f028159b"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-02-12T12:02:52"/> - <column name="SUBJECT" value="Angebot nachfassen"/> - <column name="INFO" value="Angebot nachfassen, wir liegen vor Wettbewerb"/> - <column name="CATEGORY" valueNumeric="1"/> - <column name="DIRECTION" value="o"/> - <column name="ENTRYDATE" valueDate="2018-06-03T12:41:22"/> - </insert> - <insert tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" value="a331a1da-39f2-48ae-93a5-bad704e5ae48"/> - <column name="ACTIVITY_ID" value="aa110a35-bcab-407e-9d60-7a65f028159b"/> - <column name="ROW_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="USER_NEW" value="admin"/> - <column name="DATE_NEW" valueDate="2018-02-12T14:02:52"/> - <column name="OBJECT_ID" value="Pers_context"/> - </insert> - <rollback> - <delete tableName="ACTIVITYLINK"> - <where>ACTIVITYLINKID = ?</where> - <whereParams> - <param value="a331a1da-39f2-48ae-93a5-bad704e5ae48" /> - </whereParams> - </delete> - <delete tableName="ACTIVITY"> - <where>ACTIVITYID = ?</where> - <whereParams> - <param value="aa110a35-bcab-407e-9d60-7a65f028159b" /> - </whereParams> - </delete> - <delete tableName="ADDRESS"> - <where>ADDRESSID = ?</where> - <whereParams> - <param value="11d01332-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="58d01219-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="COMM"> - <where>COMMID = ?</where> - <whereParams> - <param value="14d05619-985b-4efe-a634-da71ae482907" /> - </whereParams> - </delete> - <delete tableName="RELATION"> - <where>RELATIONID = ?</where> - <whereParams> - <param value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d" /> - </whereParams> - </delete> - <delete tableName="PERS"> - <where>PERSID = ?</where> - <whereParams> - <param value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> - </whereParams> - </delete> - </rollback> -</changeSet> - - -</databaseChangeLog> + <changeSet author="t.feldmann" id="efc45d2-a40d-49e0-a24c-afab6095d1cb"> + <insert tableName="PERS"> + <column name="PERSID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="DATEOFBIRTH" valueDate="1988-13-01"/> + <column name="USER_NEW" value="admin"/> + <column name="FIRSTNAME" value="Lisa"/> + <column name="MIDDLENAME" value=""/> + <column name="LASTNAME" value="Sommer"/> + <column name="GENDER" value="f"/> + <column name="SALUTATION" value="Frau"/> + </insert> + <insert tableName="RELATION"> + <column name="RELATIONSHIP" valueNumeric="1"/> + <column name="LANGUAGE" value="de-DE"/> + <column name="RELATIONID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="PERS_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="ORG_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="STATUS" valueNumeric="1"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="14d05619-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="MEDIUM_ID" valueNumeric="1"/> + <column name="ADDR" value="sommer@gfk.de"/> + <column name="STANDARD" valueNumeric="1"/> + </insert> + <insert tableName="COMM"> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="USER_NEW" value="admin"/> + <column name="COMMID" value="58d01219-985b-4efe-a634-da71ae482907"/> + <column name="RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="MEDIUM_ID" valueNumeric="2"/> + <column name="ADDR" value="087631333"/> + <column name="STANDARD" valueNumeric="0"/> + </insert> + <insert tableName="ADDRESS"> + <column name="STATE" value="Bayern"/> + <column name="ADDR_TYPE" valueNumeric="2"/> + <column name="DATE_NEW" valueDate="2018-07-02T00:00:00"/> + <column name="CITY" value="Landshut"/> + <column name="COUNTRY" value="DE"/> + <column name="RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="USER_NEW" value="admin"/> + <column name="ADDRIDENTIFIER" value=""/> + <column name="REGION" value="Niederbayern"/> + <column name="ADDRESSID" value="11d01332-985b-4efe-a634-da71ae482907"/> + <column name="BUILDINGNO" value="12"/> + <column name="ADDRESSADDITION"/> + <column name="ZIP" value="84034"/> + <column name="ADDRESS" value="Neustadt"/> + <column name="DISTRICT" value="Niederbayern"/> + </insert> + <insert tableName="ACTIVITY"> + <column name="ACTIVITYID" value="aa110a35-bcab-407e-9d60-7a65f028159b"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-02-12T12:02:52"/> + <column name="SUBJECT" value="Angebot nachfassen"/> + <column name="INFO" value="Angebot nachfassen, wir liegen vor Wettbewerb"/> + <column name="CATEGORY" valueNumeric="1"/> + <column name="DIRECTION" value="o"/> + <column name="ENTRYDATE" valueDate="2018-06-03T12:41:22"/> + </insert> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="a331a1da-39f2-48ae-93a5-bad704e5ae48"/> + <column name="OBJECT1_TYPE" value="Activity_context"/> + <column name="OBJECT1_ROWID" value="aa110a35-bcab-407e-9d60-7a65f028159b"/> + <column name="OBJECT2_TYPE" value="Pers_context"/> + <column name="OBJECT2_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-02-12T14:02:52"/> + </insert> + <rollback> + <delete tableName="AB_OBJECTRELATION"> + <where>OBJECT1_TYPE = ? and OBJECT1_ROWID = ?</where> + <whereParams> + <param value="Activity_context" /> + <param value="de110a35-bcab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ACTIVITY"> + <where>ACTIVITYID = ?</where> + <whereParams> + <param value="aa110a35-bcab-407e-9d60-7a65f028159b" /> + </whereParams> + </delete> + <delete tableName="ADDRESS"> + <where>ADDRESSID = ?</where> + <whereParams> + <param value="11d01332-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="58d01219-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="COMM"> + <where>COMMID = ?</where> + <whereParams> + <param value="14d05619-985b-4efe-a634-da71ae482907" /> + </whereParams> + </delete> + <delete tableName="RELATION"> + <where>RELATIONID = ?</where> + <whereParams> + <param value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + </whereParams> + </delete> + <delete tableName="PERS"> + <where>PERSID = ?</where> + <whereParams> + <param value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" /> + </whereParams> + </delete> + </rollback> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/example_task/base.xml b/others/db_changes/data_alias/data/example_task/base.xml index 2f992f96495..c252eace75e 100644 --- a/others/db_changes/data_alias/data/example_task/base.xml +++ b/others/db_changes/data_alias/data/example_task/base.xml @@ -11,8 +11,8 @@ <column name="USER_NEW" value="admin"> <constraints nullable="false"/> </column> - <column name="REQUESTOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="EDITOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="REQUESTOR_RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="EDITOR_RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> <column name="CODE" valueNumeric="10000"/> <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren"/> @@ -38,8 +38,8 @@ <column name="USER_NEW" value="admin"> <constraints nullable="false"/> </column> - <column name="REQUESTOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="EDITOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="REQUESTOR_RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="EDITOR_RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> <column name="CODE" valueNumeric="10001"/> <column name="SUBJECT" value="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."/> @@ -65,8 +65,8 @@ <column name="USER_NEW" value="admin"> <constraints nullable="false"/> </column> - <column name="REQUESTOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> - <column name="EDITOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="REQUESTOR_RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> + <column name="EDITOR_RELATION_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> <column name="CODE" valueNumeric="10002"/> <column name="SUBJECT" value="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris"/> diff --git a/others/db_changes/data_alias/struct/AditoBasic/create_ab_objectrelation.xml b/others/db_changes/data_alias/struct/AditoBasic/create_ab_objectrelation.xml index f57da00c892..1025daf6219 100644 --- a/others/db_changes/data_alias/struct/AditoBasic/create_ab_objectrelation.xml +++ b/others/db_changes/data_alias/struct/AditoBasic/create_ab_objectrelation.xml @@ -1,9 +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="4940acf4-7436-406b-9893-a1f1441ece37"> - <createTable tableName="AB_OBJECTREALTION"> - <column name="AB_OBJECTREALTIONID" type="CHAR(36)"> - <constraints primaryKey="true" primaryKeyName="PK_AB_OBJECTREALTION_AB_OBJECTREALTIONID"/> + <createTable tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_AB_OBJECTRELATION_AB_OBJECTRELATIONID"/> </column> <column name="OBJECT1_TYPE" type="NVARCHAR(50)"> <constraints nullable="false"/> @@ -14,7 +14,7 @@ <column name="OBJECT2_TYPE" type="NVARCHAR(63)"> <constraints nullable="false"/> </column> - <column name="OBJECT2_ROWID" type="CHAR(63)"> + <column name="OBJECT2_ROWID" type="CHAR(36)"> <constraints nullable="false"/> </column> <column name="USER_NEW" type="NVARCHAR(50)"> @@ -26,5 +26,13 @@ </column> <column name="DATE_EDIT" type="TIMESTAMP"/> </createTable> + <createIndex indexName="IDX_AB_OBJECTRELATION_OBJECT1" tableName="AB_OBJECTRELATION"> + <column name="OBJECT1_TYPE"/> + <column name="OBJECT1_ROWID"/> + </createIndex> + <createIndex indexName="IDX_AB_OBJECTRELATION_OBJECT2" tableName="AB_OBJECTRELATION"> + <column name="OBJECT2_TYPE"/> + <column name="OBJECT2_ROWID"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/struct/create_activitylink.xml b/others/db_changes/data_alias/struct/create_activitylink.xml deleted file mode 100644 index 07ef524462c..00000000000 --- a/others/db_changes/data_alias/struct/create_activitylink.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?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.goderbauer" id="2434effa-6a42-490c-b9c3-d99608f23067"> - <createTable tableName="ACTIVITYLINK"> - <column name="ACTIVITYLINKID" type="CHAR(36)"> - <constraints primaryKey="true" primaryKeyName="PK_ACTIVITY_ACTIVITYLINKID"/> - </column> - <column name="USER_NEW" type="NVARCHAR(50)"> - <constraints nullable="false"/> - </column> - <column name="USER_EDIT" type="NVARCHAR(50)"/> - <column name="DATE_NEW" type="TIMESTAMP"> - <constraints nullable="false"/> - </column> - <column name="DATE_EDIT" type="TIMESTAMP"/> - <column name="ROW_ID" type="CHAR(36)"> - <constraints nullable="false"/><!--no FK here because this column can be connected to every other table--> - </column> - <column name="ACTIVITY_ID" type="CHAR(36)"> - <constraints nullable="false" foreignKeyName="FK_ACTIVITYLINK_ACTIVITY_ID" references="ACTIVITY(ACTIVITYID)"/> - </column> - <column name="OBJECT_ID" type="NVARCHAR(36)"/> - </createTable> - <createIndex indexName="ACTIVITYLINK_ROW_OBJECT" - tableName="ACTIVITYLINK"> - <column name="ROW_ID"/> - <column name="OBJECT_ID"/> - </createIndex> - </changeSet> -</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/masterChangelog.xml b/others/db_changes/masterChangelog.xml index 4b7365bb064..844fde71a10 100644 --- a/others/db_changes/masterChangelog.xml +++ b/others/db_changes/masterChangelog.xml @@ -6,7 +6,6 @@ <include file="data_alias/struct/create_org.xml"/> <include file="data_alias/struct/create_relation.xml"/> <include file="data_alias/struct/create_activity.xml"/> - <include file="data_alias/struct/create_activitylink.xml"/> <include file="data_alias/struct/create_address.xml"/> <include file="data_alias/struct/create_comm.xml"/> <include file="data_alias/struct/create_contract.xml"/> diff --git a/others/db_changes/system_alias/data/example_asys_binaries/Birgit_Leicht_Image.xml b/others/db_changes/system_alias/data/example_asys_binaries/Birgit_Leicht_Image.xml index 857745312f7..80f2fcff3a4 100644 --- a/others/db_changes/system_alias/data/example_asys_binaries/Birgit_Leicht_Image.xml +++ b/others/db_changes/system_alias/data/example_asys_binaries/Birgit_Leicht_Image.xml @@ -11,7 +11,7 @@ <column name="FILENAME" value="ProfileImage"/> <column name="ID" value="ca8d0195-db3f-4b04-98be-9c46e060e67b"/> <column name="MIMETYPE" value="image/png"/> - <column name="ROW_ID" value="73d72bf8-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="ROW_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="TABLENAME" value="PERS"/> <column name="USER_EDIT" value="Admin"/> <column name="USER_NEW" value="Admin"/> diff --git a/others/guide/HowToSqlConditionLib.adoc b/others/guide/HowToSqlConditionLib.adoc index cf6e88901a7..5e4bc6394dc 100644 --- a/others/guide/HowToSqlConditionLib.adoc +++ b/others/guide/HowToSqlConditionLib.adoc @@ -44,7 +44,7 @@ myDescriptiveNameOfTheCondition.orPrepare(["PERS", "FIRSTNAME", "bob"], "Bob") * build sql [source,javascript] ---- -var myPreparedSelect = myDescriptiveNameOfTheCondition.buildSelect("select PERSID from PERS", "1 = 2", "order by FIRSTNAME"); +var myPreparedSelect = myDescriptiveNameOfTheCondition.buildSql("select PERSID from PERS", "1 = 2", "order by FIRSTNAME"); ---- * use the select [source,javascript] @@ -58,7 +58,7 @@ You can do everything in one command also: var bobsId = db.cell(SqlCondition.begin(alias) .orPrepare("PERS.FIRSTNAME", "Bob") .orPrepare("PERS.LASTNAME", "Meier"); - .buildSelect("select PERSID from PERS")); + .buildSql("select PERSID from PERS")); ---- == available methods == @@ -142,12 +142,12 @@ Combines toString with the prepared values just like Adito needs it. var myPreparedStatementArray = myDescriptiveNameOfTheCondition.build("1=0"); ---- -=== buildSelect === +=== buildSql === Same as build and adds a string before and after the condition. [source,javascript] ---- -var myPreparedStatementArray = myDescriptiveNameOfTheCondition.buildSelect("select * from PERS", "1=0", "order by FIRSTNAME"); +var myPreparedStatementArray = myDescriptiveNameOfTheCondition.buildSql("select * from PERS", "1=0", "order by FIRSTNAME"); ---- == real world example == @@ -162,7 +162,7 @@ var productPriceData = (db.ROW, db.array(SqlCondition.begin() .andSqlCondition(SqlCondition.begin() .orPrepare("PRODUCTPRICE.VALID_TO", today, "# >= ?") .or("PRODUCTPRICE.VALID_TO is null"), "1 = 2"); - .buildSelect("select PRICE, CURRENCY from PRODUCTPRICE", "1 = 2", "order by VALID_FROM desc"))); + .buildSql("select PRICE, CURRENCY from PRODUCTPRICE", "1 = 2", "order by VALID_FROM desc"))); ---- With a loop: diff --git a/process/Comm_lib/process.js b/process/Comm_lib/process.js index 74f599da928..af8efce3923 100644 --- a/process/Comm_lib/process.js +++ b/process/Comm_lib/process.js @@ -135,7 +135,7 @@ CommUtil.getStandardSubSqlForCategory = function(pCategory, pRelationField) cond.and("COMM.STANDARD = 1"); - var res = db.translateStatement(cond.buildSelect("select max(COMM.ADDR) from COMM", "1=0")); + var res = db.translateStatement(cond.buildSql("select max(COMM.ADDR) from COMM", "1=0")); return res; }; diff --git a/process/ObjectRelation_lib/ObjectRelation_lib.aod b/process/ObjectRelation_lib/ObjectRelation_lib.aod new file mode 100644 index 00000000000..77cc2f184e4 --- /dev/null +++ b/process/ObjectRelation_lib/ObjectRelation_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7"> + <name>ObjectRelation_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/ObjectRelation_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/ObjectRelation_lib/process.js b/process/ObjectRelation_lib/process.js new file mode 100644 index 00000000000..a86e5e08c98 --- /dev/null +++ b/process/ObjectRelation_lib/process.js @@ -0,0 +1,51 @@ +import("system.vars"); +import("Context_lib"); +import("Sql_lib"); + +/** + * This class provides functions for managing object relations + * + * Do not create an instance of this + * + * @class + */ +function ObjectRelationUtils() {} + +/** + * Returns a join as prepared sql for joining something with the Objectrelation table. + * (Note that the pObjectType2 comes before pObjectType1 because pObjectType1 is the default value most times. -> less needed undefined in method call -> cleaner code) + * + * @param {String} pDbRowIdField1 the DB-Field of the rowid to join with. Provide it as: "TABLENAME.COLNAME"<br>Be carefull! No SQL will be escaped. Do not pass strings which can be altered by an user! (SQL-injection) + * @param {String} [pObjectType2=undefined] the SECOND object type. + * @param {String} [pObjectType1=ContextUtils.getCurrentContextId()] The FIRST object type. if not provided the current context will be used + * + * @return {Array} prepared adito-sql statement ["SQL", [[param, type], [param, type], ...] + * + * @example + * var objectId = (vars.exists("$param.ObjectId_param") ? vars.get("$param.ObjectId_param") : undefined);<br> + * result.string("ACTIVITY " + db.translateStatement(ObjectRelationUtils.getJoin("ACTIVITY.ACTIVITYID", objectId))); + */ +ObjectRelationUtils.getJoin = function(pDbRowIdField1, pObjectType2, pObjectType1) +{ + // use current context as first context, if not defined + if (pObjectType1 == undefined) + pObjectType1 = ContextUtils.getCurrentContextId(); + + var joinCondition = SqlCondition.begin().andPrepare("AB_OBJECTRELATION.OBJECT1_TYPE", pObjectType1); + + if (pDbRowIdField1 != undefined && pDbRowIdField1) + { + joinCondition.and("AB_OBJECTRELATION.OBJECT1_ROWID = " + pDbRowIdField1); + } + else + { + throw new Error("ObjectRelationUtils.getRecordJoin: No pDbIdField1 given.") + } + + if (pObjectType2 != undefined && pObjectType2) + { + joinCondition.andPrepare("AB_OBJECTRELATION.OBJECT2_TYPE", pObjectType2); + } + + return joinCondition.buildSql(" join AB_OBJECTRELATION on " , "1=2", undefined, false); +} diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js index c75347a393f..78375a40824 100644 --- a/process/OfferOrder_lib/process.js +++ b/process/OfferOrder_lib/process.js @@ -171,7 +171,7 @@ ItemUtils.prototype.getNetAndVat = function(itemIds) { }); } - var orderItems = db.table(condition.buildSelect("select QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL from " + this.tableName + "ITEM", "1 = 0")); + var orderItems = db.table(condition.buildSql("select QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL from " + this.tableName + "ITEM", "1 = 0")); for (var i = 0; i < orderItems.length; i++) { diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index 8dfc0cc10ee..99dcb921db2 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -106,7 +106,7 @@ OfferUtils.openOfferReport = function(pOfferID) + " inner join OFFER on (OFFERITEM.OFFER_ID = OFFER.OFFERID)"; var offerCondition = SqlCondition.begin().andPrepare("OFFER.OFFERID", pOfferID); - var rptdata = db.table(offerCondition.buildSelect("select " + fields.join(", ") + offerFromSql, "1 = 0")); + var rptdata = db.table(offerCondition.buildSql("select " + fields.join(", ") + offerFromSql, "1 = 0")); var language = KeywordUtils.get("LANGUAGE", rptdata[0][2])[1]; var relid = rptdata[0][1]; @@ -129,7 +129,7 @@ OfferUtils.openOfferReport = function(pOfferID) var countDiscounts = db.cell(SqlCondition.begin() .andPrepare("OFFER.OFFERID", pOfferID) - .buildSelect("select count(OFFERITEM.DISCOUNT)" + offerFromSql, "1 = 0")); + .buildSql("select count(OFFERITEM.DISCOUNT)" + offerFromSql, "1 = 0")); for(var i = 0; i < rptdata.length; i++) diff --git a/process/Org_lib/process.js b/process/Org_lib/process.js index b9c5d9e734b..4f8ac77408e 100644 --- a/process/Org_lib/process.js +++ b/process/Org_lib/process.js @@ -62,14 +62,14 @@ OrgUtils.openOrgReport = function(pOrgId) //org info var info = db.cell(SqlCondition.begin() .andPrepare("ORG.ORGID", pOrgId) - .buildSelect("select ORG.INFO from ORG")); + .buildSql("select ORG.INFO from ORG")); //communication data of the organization var commSql = "select MEDIUM_ID, ADDR from COMM"; commSql = SqlCondition.begin() .andPrepare("COMM.RELATION_ID", relationId) .and("STANDARD = 1") - .buildSelect(commSql); + .buildSql(commSql); var commData = db.table(commSql); //resolve keyword @@ -86,7 +86,7 @@ OrgUtils.openOrgReport = function(pOrgId) persSql = SqlCondition.begin() .andPrepare("RELATION.ORG_ID", pOrgId) .and("RELATION.STATUS = 1") - .buildSelect(persSql, "", " order by PERS.LASTNAME asc"); + .buildSql(persSql, "", " order by PERS.LASTNAME asc"); var persData = db.table(persSql); //TODO: get the keywords in another way when keywords are entitys @@ -107,7 +107,7 @@ OrgUtils.openOrgReport = function(pOrgId) .andPrepare("COMM.RELATION_ID", persData[i][5]) .and("MEDIUM_ID in (" + mediumIds + ")") .and("STANDARD = 1") - .buildSelect(persCommSql); + .buildSql(persCommSql); var persDataComm = db.table(persCommSql); //resolve keyword @@ -125,7 +125,7 @@ OrgUtils.openOrgReport = function(pOrgId) + " left join PERS on RELATION.PERS_ID = PERSID"; histSql = SqlCondition.begin() .andPrepare("RELATION.ORG_ID", pOrgId) //= all activities linked to the organization or an employee - .buildSelect(histSql, "", "order by ENTRYDATE desc"); + .buildSql(histSql, "", "order by ENTRYDATE desc"); var histData = db.table(histSql); var dateFormat = translate.text("dd.MM.yyyy"); @@ -146,7 +146,7 @@ OrgUtils.openOrgReport = function(pOrgId) + " left join PERS on RELATION.PERS_ID = PERSID"; taskSql = SqlCondition.begin() .andPrepare("RELATION.ORG_ID", pOrgId) - .buildSelect(taskSql); + .buildSql(taskSql); var taskData = db.table(taskSql); taskData.forEach(function (row) diff --git a/process/PostalAddress_lib/process.js b/process/PostalAddress_lib/process.js index 394f05bac8a..978385e1c18 100644 --- a/process/PostalAddress_lib/process.js +++ b/process/PostalAddress_lib/process.js @@ -46,11 +46,11 @@ AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZip * @return {String} */ AddressUtils.getAddress = function(pRelationId) { - var address = db.array(db.ROW, SqlCondition.begin().andPrepare("RELATION.RELATIONID", pRelationId).buildSelect('select RELATIONID, ADDRESS, BUILDINGNO, ZIP, CITY, "NAME", FIRSTNAME, LASTNAME, TITLE from' + RelationUtils.getFullRelationFromString(), "1=0")); + var address = db.array(db.ROW, SqlCondition.begin().andPrepare("RELATION.RELATIONID", pRelationId).buildSql('select RELATIONID, ADDRESS, BUILDINGNO, ZIP, CITY, "NAME", FIRSTNAME, LASTNAME, TITLE from' + RelationUtils.getFullRelationFromString(), "1=0")); // TODO: currently there are some relations without standard address. Use Hardcoded one. if (!address[1]) { - var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSelect('select ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0")); + var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSql('select ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0")); address[1] = dummyAddress[0]; address[2] = dummyAddress[1]; address[3] = dummyAddress[2]; @@ -72,12 +72,12 @@ AddressUtils.getAddress = function(pRelationId) { AddressUtils.getAddressById = function(pAddressId) { var address = db.array(db.ROW, SqlCondition.begin() .andPrepare("ADDRESS.ADDRESSID", pAddressId) - .buildSelect("select RELATION_ID, ADDRESS, BUILDINGNO, ZIP, CITY from " + .buildSql("select RELATION_ID, ADDRESS, BUILDINGNO, ZIP, CITY from " + "ADDRESS", "1=0")); // TODO: currently there are some relations without standard address. Use Hardcoded one. if (!address[1]) { - var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSelect('select RELATION_ID, ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0")); + var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSql('select RELATION_ID, ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0")); address[0] = dummyAddress[0]; address[1] = dummyAddress[1]; address[2] = dummyAddress[2]; @@ -89,7 +89,7 @@ AddressUtils.getAddressById = function(pAddressId) { var names = db.array(db.ROW, SqlCondition.begin() .andPrepare("RELATION.RELATIONID", address[0]) - .buildSelect("select ORG.NAME, FIRSTNAME, LASTNAME, TITLE from RELATION left join PERS on PERSID = PERS_ID left join ORG on ORGID = ORG_ID" + .buildSql("select ORG.NAME, FIRSTNAME, LASTNAME, TITLE from RELATION left join PERS on PERSID = PERS_ID left join ORG on ORGID = ORG_ID" , "1=0")); return AddressUtils.formatAddress(type, address[1], address[2], address[3], address[4], names[0], names[1], names[2], names[3]); } @@ -134,7 +134,7 @@ AddressUtils.formatAddress = function(pAddrType, pAddress, pBuildingno, pZip, pC */ AddressUtils.getAllPossibleAddresses = function(pRelationId) { var addresses = db.table(SqlCondition.begin().andPrepare("RELATION.RELATIONID", pRelationId) - .buildSelect("select ADDRESSID, ADDR_TYPE, ADDRIDENTIFIER from ADDRESS join RELATION on RELATIONID = RELATION_ID or RELATION_ID = ORG_ID", "1=0")); + .buildSql("select ADDRESSID, ADDR_TYPE, ADDRIDENTIFIER from ADDRESS join RELATION on RELATIONID = RELATION_ID or RELATION_ID = ORG_ID", "1=0")); return addresses.map(function(pAddress) { return [pAddress[0], KeywordUtils.get("ADDRESS.TYPE", pAddress[1])[1] + " " + pAddress[2]] @@ -175,7 +175,7 @@ AddressValidationUtils._getRequiredFields = function(countryCode) if (!countryCode) return ""; var requiredFields = db.cell(SqlCondition.begin().andPrepare("COUNTRYINFO.ISO2", countryCode) - .buildSelect("select COUNTRYINFO.REQUIRED_FIELDS from COUNTRYINFO")); + .buildSql("select COUNTRYINFO.REQUIRED_FIELDS from COUNTRYINFO")); return requiredFields; }; @@ -206,7 +206,7 @@ AddressValidationUtils._getZipValidationRegEx = function(countryCode) return ""; var cond = new SqlCondition(); cond.andPrepare("COUNTRYINFO.ISO2", countryCode ); - var stmt = cond.buildSelect("select COUNTRYINFO.ZIP_REGEX from COUNTRYINFO"); + var stmt = cond.buildSql("select COUNTRYINFO.ZIP_REGEX from COUNTRYINFO"); return db.cell(stmt); }; diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js index 52b718a5683..ceb0f67234b 100644 --- a/process/Product_lib/process.js +++ b/process/Product_lib/process.js @@ -1,646 +1,646 @@ -import("system.util"); -import("system.SQLTYPES"); -import("system.datetime"); -import("system.db"); -import("system.vars"); -import("system.translate"); -import("Util_lib"); -import("Binary_lib"); -import("Sql_lib"); -import("Keyword_lib"); -import("Data_lib"); - -/** - * utility functions for products - * Do not create an instance of this! - * - * @class - */ -function ProductUtils() {} - -/** - * Delivers the currently valid product price - * - * @param {String} pid ProductID - * @param {String} buySell possible values: PP, SP - * - * @example productUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP") - * - * @return {String} currently valid product price - */ -ProductUtils.getCurrentProductPrice = function(pid, buySell) { - if (pid != undefined && pid != "" && buySell != undefined && buySell != "") - { - var today = datetime.clearTime(vars.get("sys.date"), "utc"); - var actualPriceCondition = SqlCondition.begin() - .andPrepare("PRODUCTPRICE.BUYSELL", buySell) - .andPrepare("PRODUCTPRICE.PRODUCT_ID", pid) - .andPrepare("PRODUCTPRICE.CURRENCY", 1) // TODO: warum ist Currency hardgecoded auf 1?? - .andPrepare("PRODUCTPRICE.VALID_FROM", today, "# <= ?") - .andSqlCondition(SqlCondition.begin() - .orPrepare("PRODUCTPRICE.VALID_TO", today, "# >= ?") - .or("PRODUCTPRICE.VALID_TO is null"), "1 = 2"); - - var productPriceData = db.array(db.ROW, actualPriceCondition.buildSelect("select PRICE, CURRENCY from PRODUCTPRICE", "1 = 2", "order by VALID_FROM desc")); - - if (productPriceData[0] && productPriceData[1]) - return productPriceData[0] + " " + KeywordUtils.get("CURRENCY", productPriceData[1])[1]; - else - return ""; - } else { - throw new Error(); // TODO: add message - } -} - -/** - * Delivers the stock - * - * @param {String} pid ProductID - * - * @example productUtils.getStockCount(vars.get("$field.PRODUCTID")) - * - * @return {String} stock count - */ -ProductUtils.getStockCount = function(pid) { - if (pid != undefined && pid != "") - { - var sum = db.cell(SqlCondition.begin() - .andPrepare("STOCK.PRODUCT_ID", pid) - .buildSelect("select sum(QUANTITY * case IN_OUT when 0 then -1 else 1)" - + " from STOCK")); - - if (sum == "") - sum = "0"; - - return sum; - } - else - { - throw new Error();//TODO: add message - } -} - -/** - * Delivers metadata and price lists of the passed product. - * If parameter "priceListFilter" is passed valid price lists and the - * current price list to use for offer/order are delivered. - * - * @param {String} pid req ProductID - * @param {Object} priceListFilter opt { currency: "currencyValue", quantity: "quantityValue", relationId: "relationIdValue (for custom price lists)" } - * @param {String[]} additionalProductInfoFields additional fields from Product - * They are added to the result with the Fieldname as key. e.g. if the array is ["INFO"] the result will contain the key "INFO" - * - * @example //Product_entity, Field: PRODUCT_ID, Process: onValueChange - * var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID")); - * var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; - * var relid = vars.exists("$param.RelationId_param") ? vars.get("$param.RelationId_param") : ""; - * var pUtils = new ProductUtils(); - * var PriceListFilter = { currency: curr, quantity: vars.get("$field.QUANTITY"), relationId: relid }; - * var ProductDetails = pUtils.getProductDetails(pid, PriceListFilter, ["INFO"]); - * - * @return {Object} { <br> - * productId: "productid" <br> - * , productName: "product name" <br> - * , groupCode: "keyvalue of keyword 'GROUPCODE'" <br> - * , unit: "keyvalue of keyword 'UNIT'" <br> - * , PriceLists: {$pricelistid$ { <br> - * priceListId: "pricelistid" <br> - * , relationId: "relationid" when filled -> custom price list <br> - * , priceList: "keyvalue of keyword 'PRICELIST'" <br> - * , price: "price" <br> - * , vat: "vat" <br> - * , validFrom: TIMESTAMP <br> - * , validTo: TIMESTAMP <br> - * , buySell: "SP" / "PP" <br> - * , fromQuantity: "fromquantity" <br> - * , currency: "keyvalue of keyword 'CURRENCY'" <br> - * } } <br> - * , CurrentValidPriceLists: {$pricelistid$ { <br> - * priceListId: "pricelistid" <br> - * , relationId: "relationid" when filled -> custom price list <br> - * , priceList: "keyvalue of keyword 'PRICELIST'" <br> - * , price: "price" <br> - * , vat: "vat" <br> - * , validFrom: TIMESTAMP <br> - * , validTo: TIMESTAMP <br> - * , buySell: "SP" / "PP" <br> - * , fromQuantity: "fromquantity" <br> - * , currency: "keyvalue of keyword 'CURRENCY'" <br> - * } } <br> - * , PriceListToUse: {$pricelistid$ { <br> - * priceListId: "pricelistid" <br> - * , relationId: "relationid" when filled -> custom price list <br> - * , priceList: "keyvalue of keyword 'PRICELIST'" <br> - * , price: "price" <br> - * , vat: "vat" <br> - * , validFrom: TIMESTAMP <br> - * , validTo: TIMESTAMP <br> - * , buySell: "SP" / "PP" <br> - * , fromQuantity: "fromquantity" <br> - * , currency: "keyvalue of keyword 'CURRENCY'" <br> - * } }, <br> - * INFO: "the productinfo" - * } - */ -ProductUtils.getProductDetails = function(pid, priceListFilter, additionalProductInfoFields) -{ - if (additionalProductInfoFields == undefined) {additionalProductInfoFields = []} - var ProductDetails = {}; - - var cols = []; - var colsProduct = ["PRODUCT.PRODUCTID", "PRODUCT.PRODUCTNAME", "PRODUCT.GROUPCODEID", "PRODUCT.UNIT"]; - var defaultProductFieldCount = colsProduct.length; - colsProduct = colsProduct.concat(additionalProductInfoFields.map(function(item) {return "PRODUCT." + item})); - - cols = cols.concat(colsProduct); - - var joins = []; - var orderby = ["PRODUCTID"]; - - //PriceList (all) - var colsPricelistAll = ["allPP.PRODUCTPRICEID", "allPP.RELATION_ID", "allPP.PRICELIST", "allPP.PRICE", "allPP.VAT" - , "allPP.VALID_FROM", "allPP.VALID_TO", "allPP.BUYSELL", "allPP.FROMQUANTITY", "allPP.CURRENCY"]; - - cols = cols.concat(colsPricelistAll); - joins.push(" left join PRODUCTPRICE allPP on allPP.PRODUCT_ID = PRODUCTID "); - - //PriceList (currently valid) - var validPriceLists = false; - if (priceListFilter != undefined - && priceListFilter.currency != undefined && priceListFilter.currency != "" - && priceListFilter.quantity != undefined && priceListFilter.quantity != "") - { - validPriceLists = true; - var colsPricelistValid = ["validPP.PRODUCTPRICEID", "validPP.RELATION_ID", "validPP.PRICELIST", "validPP.PRICE", "validPP.VAT" - , "validPP.VALID_FROM", "validPP.VALID_TO", "validPP.BUYSELL", "validPP.FROMQUANTITY", "validPP.CURRENCY"]; - - cols = cols.concat(colsPricelistValid); - joins.push("left join PRODUCTPRICE validPP on " - + db.translateCondition(SqlCondition.begin() - .and("validPP.PRODUCT_ID = PRODUCTID") - .andPrepare(["PRODUCTPRICE", "CURRENCY", "validPP"], priceListFilter.currency) - .andPrepare(["PRODUCTPRICE", "VALID_FROM", "validPP"], datetime.date().toString(), "# <= ?") - .andPrepare(["PRODUCTPRICE", "FROMQUANTITY", "validPP"], priceListFilter.quantity, "# <= ?") - .andSqlCondition(SqlCondition.begin() - .orPrepare(["PRODUCTPRICE", "RELATION_ID", "validPP"], priceListFilter.relationId, "# <= ?") - .orSqlCondition(SqlCondition.begin() - .and("validPP.RELATION_ID is null") - .andPrepare(["PRODUCTPRICE", "BUYSELL", "validPP"], 'SP'), - "1 = 2"), - "1 = 2") - .build("1 = 2"))) - } - - var ProductDataSql = SqlCondition.begin() - .andPrepare("PRODUCT.PRODUCTID", pid) - .buildSelect("select " + cols.join(", ") + " from PRODUCT " + joins.join(" "), - "1 = 2", - "order by " + orderby.join(", ")) - - var ProductData = db.table(ProductDataSql); - - for (var i = 0; i < ProductData.length; i++) - { - //Product - if (ProductDetails.productId == undefined) - { - ProductDetails = { - productId: ProductData[i][0] - , productName: ProductData[i][1] - , groupCode: ProductData[i][2] - , unit: ProductData[i][3] - , PriceLists: {} - , CurrentValidPriceLists: {} - , PriceListToUse: null - }; - - // add additional fields to the details - var countPos = defaultProductFieldCount; - additionalProductInfoFields.forEach(function(productField) - { - this[productField] = ProductData[i][countPos]; - countPos++; - }, ProductDetails); - } - //Pricelist (all) - var colIdx = colsProduct.length; - if (ProductData[i][colIdx] != "" && ProductDetails.PriceLists[ProductData[i][colIdx]] == undefined) //Pricelist found - { - ProductDetails.PriceLists[ProductData[i][colIdx]] = _getPriceListObject(); - } - - //Pricelist (currently valid) - colIdx = colsProduct.length + colsPricelistAll.length; - if (validPriceLists) - { - if (ProductData[i][colIdx] != "" && ProductDetails.CurrentValidPriceLists[ProductData[i][colIdx]] == undefined) //Pricelist found - { - ProductDetails.CurrentValidPriceLists[ProductData[i][colIdx]] = _getPriceListObject(); - } - } - } - - if (validPriceLists) - ProductDetails.PriceListToUse = _getPriceListToUse(ProductDetails.CurrentValidPriceLists, priceListFilter); - - return ProductDetails; - - function _getPriceListObject() { - return { - priceListId: ProductData[i][colIdx++] - , relationId: ProductData[i][colIdx++] - , priceList: ProductData[i][colIdx++] - , price: ProductData[i][colIdx++] - , vat: ProductData[i][colIdx++] - , validFrom: ProductData[i][colIdx++] - , validTo: ProductData[i][colIdx++] - , buySell: ProductData[i][colIdx++] - , fromQuantity: ProductData[i][colIdx++] - , currency: ProductData[i][colIdx++] - }; - } - - //price list to use for offer/order - function _getPriceListToUse(priceLists, priceListFilter) { - for (var list in priceLists) { - //custom price (defined in Org -> Conditions) - if (priceListFilter.relationId != "" && priceListFilter.relationId == priceLists[list].relationId) { - return priceLists[list]; - } - //customer deposited price list (defined by Attribute) - if (priceListFilter.priceList != "" && priceListFilter.priceList == priceLists[list].priceList) { - return priceLists[list]; - } - //default price list - if (priceLists[list].priceList == "1") { - return priceLists[list]; - } - } - - //no valid price list found - return null; - } -} - -/** - * Checks if there is already an existing price list identical to the passed price list - * - * @param {String} pid ProductID - * @param {Object} priceList { <br> - * priceList: "keyvalue of keyword 'PRICELIST'" <br> - * , validFrom: TIMESTAMP <br> - * , validTo: TIMESTAMP <br> - * , buySell: "SP" / "PP" <br> - * , fromQuantity: "fromquantity" <br> - * , currency: "keyvalue of keyword 'CURRENCY'" <br> - * } - * - * @example //Productprice_entity, Field: PRICELIST, Process: onValidation - * var pUtils = new ProductUtils(); - * var priceList = { - * priceList: ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRICELIST")) - * , fromQuantity: vars.get("$field.FROMQUANTITY") - * , buySell: vars.get("$field.BUYSELL") - * , currency: vars.get("$field.CURRENCY") - * , validFrom: vars.get("$field.VALID_FROM") - * , validTo: vars.get("$field.VALID_TO") - * }; - * - * var identicalPriceList = pUtils.checkForIndenticalPriceLists(vars.get("$field.PRODUCT_ID"), priceList); - * if (identicalPriceList != null) - * { - * result.string(translate.text("Identical price list found!")); - * } - * - * @return {Object | null} null if no identical price list was found, otherwise the found price list - */ -ProductUtils.checkForIndenticalPriceLists = function(pid, priceList) { - var PriceLists = this.getProductDetails(pid).PriceLists; - - for (var pricelist in PriceLists) { - //equal price list - //equal fromquantity - //equal currency - //equal pp/sp - if (priceList.priceList == PriceLists[pricelist].priceList - && priceList.fromQuantity == PriceLists[pricelist].fromQuantity - && priceList.buySell == PriceLists[pricelist].buySell - && priceList.currency == PriceLists[pricelist].currency) { - - //identical validFrom & validTo - // OR NOT [ validFrom_new <= validFrom & validTo_new <= validTo - // OR validFrom_new >= validFrom & validTo_new >= validTo - // OR validFrom_new < validFrom & validTo_new > validTo - // ] - if (priceList.validFrom == PriceLists[pricelist].validFrom && priceList.validTo == PriceLists[pricelist].validTo - || ! (priceList.validFrom <= PriceLists[pricelist].validFrom && priceList.validTo <= PriceLists[pricelist].validTo - || priceList.validFrom >= PriceLists[pricelist].validFrom && priceList.validTo >= PriceLists[pricelist].validTo - || priceList.validFrom < PriceLists[pricelist].validFrom && priceList.validTo > PriceLists[pricelist].validTo)) { - //identical price list found - return PriceLists[pricelist]; - } - } - } - - //no identical price list found - return null; -} - -/** - * returns the image for a product - * - * @param {String} pProductId the id of the product. - * @param {String} pDefaultText the text, to use for default image generation. - * @return {String} base64 coded String of the image. If none existed, the given String is used to create an image. - */ -ProductUtils.getImage = function(pProductId, pDefaultText) -{ - return ImageUtils.get("PRODUCT", "IMAGE", pProductId, pDefaultText); -} - -/** - * sets the image of a product - * - * @param {String} pProductId the id of the product. - * @param {String} pImageDateBase64 base64 coded String of the image. - * @return {Boolean} if image could be set - */ -ProductUtils.setImage = function(pProductId, pImageDateBase64) -{ - return ImageUtils.set("PRODUCT", "IMAGE", pProductId, pImageDateBase64, "ProductImage", "Image of the product"); -} - -/** - * deletes the image of a product - * - * @param {String} pProductId the id of the product. - * @return {Boolean} if image could be removed - */ -ProductUtils.removeImage = function(pProductId) -{ - return ImageUtils.remove("PRODUCT", "IMAGE", pProductId); -} - -/** - * Class containing utility functions for Prod2Prod (Parts list) - * - * @param {String} productId req ProductID - * - * @class - * - */ -function Prod2ProdUtils(productId) { - this.productId = productId; - this.data = undefined; -} - -/** - * Delivers an Object containing parts list structure for passed product "productId" (Constructor parameter) - * - * @return {Object} { $prod2prodid$ { <br> - * ids: [ Array containing child Prod2ProdIds for passed product "pProductId" (Constructor parameter) ] <br> - * , rowdata: [ "PROD2PRODID", "DEST_ID", "SOURCE_ID", "QUANTITY", "OPTIONAL", "TAKEPRICE" ] from DB-Table PROD2PROD <br> - * , destid: "Parent ProductID" <br> - * , sourceid: "Child ProductID" <br> - * , quantity: "Quantity" <br> - * , optional: "0" = not optional, "1" = optional <br> - * , takeprice: "0" = no price, "1" = price <br> - * } } - */ -Prod2ProdUtils.prototype.getPartsListObject = function() { - return this._relateChilds().getTreeObject(); -} - -/** - * Delivers a 2D-Array for RecordContainer of Entity "Prod2prod_entity" - * containing parts list for passed product "productId" (Constructor parameter). - * - * It is necessary to generate a specifically UID for the RecordContainer because - * the same data record can be listed several times. Therefore the primary key "PROD2PRODID" - * can not be used for UID because this must be unique. - * - * @return {String[][]} [ ["UID" - * , "PARENTID" (equals "DEST_ID") - * , "PROD2PRODID" - * , "DEST_ID" - * , "SOURCE_ID" - * , "QUANTITY" - * , "OPTIONAL" - * , "TAKEPRICE" - * , "PRODUCTCODE"] ] - */ -Prod2ProdUtils.prototype.getPartsListForRecordContainer = function() { - var tree = this._relateChilds(); - return tree.toArray(7); -// var ret = []; -// var childs = this._relateChilds(); -// -// // map internal, (uids used in this function) concatenated ids to new random generated uuids. -// // Without this every depth would make the uid significantly longer. -// var uidMap = {}; -// -// __push("", childs.root, 0); -// -// -// -// -// function __push(parent, obj) { -// logging.log(obj.toSource()) -// // -// -// for (var i = 0; i < obj.ids.length; i++) { -// logging.log(childs[obj.ids[i]].toSource()) -// var nextUid = parent + obj.ids[i]; -// __addRow(nextUid, parent, childs[obj.ids[i]].rowdata) -// -// __push(nextUid, childs[obj.ids[i]]) -// } -// } -// -// function __addRow(uid, parentId, rowdata) -// { -// uidMap[uid] = util.getNewUUID(); -// if (uidMap[parentId] == undefined) { -// uidMap[parentId] = util.getNewUUID(); -// } -// -// ret.push([uidMap[uid], uidMap[parentId]].concat(rowdata)); -// } -// -// return ret; -} - -/** -* Delivers an Array containing productids of the parts list -* for passed product "productId" (Constructor parameter). -* -* -* @return {String[]} [ "SOURCE_ID" ] -*/ -Prod2ProdUtils.prototype.getPartsListProdIds = function() { - var ret = []; - var childs = this._relateChilds().getTreeObject(); - - __push(childs.root); - - return ret; - - function __push(pObj) { - for (var i = 0; i < pObj.ids.length; i++) { - ret.push(childs[pObj.ids[i]].sourceid); - __push(childs[pObj.ids[i]]); - } - } -} - -/** -* Delivers an Array containing productids of the parent list -* for passed product "productId" (Constructor parameter). -* -* -* @return {String[]} [ "DEST_ID" ] -*/ -Prod2ProdUtils.prototype.getParentProdIds = function() { - var ret = []; - var parents = this._relateParents(); - - __push(parents.root); - - return ret; - - function __push(pObj) { - for (var i = 0; i < pObj.ids.length; i++) { - ret.push(parents[pObj.ids[i]].destid); - __push(parents[pObj.ids[i]]); - } - } -} - -/** -* Function to initalize class variable "data" containing complete Prod2Prod-Data.<br> -* It guarantees a unique load of data per instance. -* -* @ignore -*/ -Prod2ProdUtils.prototype._initProd2ProdData = function() { - if (this.data == undefined) { - this.data = db.table("select SOURCE_ID, DEST_ID, PROD2PRODID, QUANTITY, OPTIONAL, TAKEPRICE, PRODUCTCODE, SOURCE_ID, DEST_ID " - + "from PROD2PROD join PRODUCT on PROD2PROD.SOURCE_ID = PRODUCTID " - + "order by PRODUCTCODE "); - } -} - -/* object tree to relate products by DEST_ID / SOURCE_ID. - * - **/ -Prod2ProdUtils.prototype._buildTree = function(supervised) { - this._initProd2ProdData(); - var productId = this.productId; - - var tree = DataTree.begin(this.productId).addArray(this.data, - function(pUid, pNode) - { - if (pUid == productId) - { - pNode["sourceid"] = productId; - if (supervised) - { - pNode["destid"] = productId; - } - } - else - { - pNode["destid"] = pNode.parent; - pNode["sourceid"] = pUid; - - if (pNode.data != undefined) { - pNode["quantity"] = pNode.data[1]; - pNode["optional"] = pNode.data[2]; - pNode["takeprice"] = pNode.data[3]; - pNode["productcode"] = pNode.data[4]; - } - } - } - ); - /* - - var tree = { root: {ids: [], sourceid: this.productId } }; - - if (supervised) - tree = { root: {ids: [], destid: this.productId } }; - - for (var i = 0; i < this.data.length; i++) { - var prod2prodid = this.data[i][0]; - if (tree[prod2prodid] == undefined) { - tree[prod2prodid] = { - ids: [] - , rowdata: this.data[i].slice(0)//copy to get NativeArray for concatenation - , destid: this.data[i][1] - , sourceid: this.data[i][2] - , quantity: this.data[i][3] - , optional: this.data[i][4] - , takeprice: this.data[i][5] - , productcode: this.data[i][6] - }; - } - } -*/ - return tree; -} - -Prod2ProdUtils.prototype._relateChilds = function() { - var tree = this._buildTree(false); - __relate(this.productId); - - return tree; - - function __relate(id) { - var treeObject = tree.getTreeObject(); - for (var treeId in treeObject) { - if (treeObject[treeId].destid == treeObject[id].sourceid && treeObject[id].ids.indexOf(treeId) == -1) { - treeObject[id].ids.push(treeId); - __relate(treeId); - } - } - } -} -/* -Prod2ProdUtils.prototype._relateChilds = function() { - var tree = this._buildTree(false); - logging.log(tree.toSource()) - - __relate("root"); - - logging.log(tree.toSource()) - - return tree; - - - function __relate(id) { - for (var treeId in tree) { - if (tree[treeId].destid == tree[id].sourceid && tree[id].ids.indexOf(treeId) == -1) { - tree[id].ids.push(treeId); - __relate(treeId); - } - } - } -} -*/ -Prod2ProdUtils.prototype._relateParents = function() { - var tree = this._buildTree(true); - - __relate(this.productId); - - return tree; - - - function __relate(id) { - var treeObject = tree.getTreeObject(); - for (var treeId in treeObject) { - if (treeObject[treeId].sourceid == treeObject[id].destid && treeObject[id].ids.indexOf(treeId) == -1) { - treeObject[id].ids.push(treeId); - __relate(treeId); - } - } - } +import("system.util"); +import("system.SQLTYPES"); +import("system.datetime"); +import("system.db"); +import("system.vars"); +import("system.translate"); +import("Util_lib"); +import("Binary_lib"); +import("Sql_lib"); +import("Keyword_lib"); +import("Data_lib"); + +/** + * utility functions for products + * Do not create an instance of this! + * + * @class + */ +function ProductUtils() {} + +/** + * Delivers the currently valid product price + * + * @param {String} pid ProductID + * @param {String} buySell possible values: PP, SP + * + * @example productUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP") + * + * @return {String} currently valid product price + */ +ProductUtils.getCurrentProductPrice = function(pid, buySell) { + if (pid != undefined && pid != "" && buySell != undefined && buySell != "") + { + var today = datetime.clearTime(vars.get("sys.date"), "utc"); + var actualPriceCondition = SqlCondition.begin() + .andPrepare("PRODUCTPRICE.BUYSELL", buySell) + .andPrepare("PRODUCTPRICE.PRODUCT_ID", pid) + .andPrepare("PRODUCTPRICE.CURRENCY", 1) // TODO: warum ist Currency hardgecoded auf 1?? + .andPrepare("PRODUCTPRICE.VALID_FROM", today, "# <= ?") + .andSqlCondition(SqlCondition.begin() + .orPrepare("PRODUCTPRICE.VALID_TO", today, "# >= ?") + .or("PRODUCTPRICE.VALID_TO is null"), "1 = 2"); + + var productPriceData = db.array(db.ROW, actualPriceCondition.buildSql("select PRICE, CURRENCY from PRODUCTPRICE", "1 = 2", "order by VALID_FROM desc")); + + if (productPriceData[0] && productPriceData[1]) + return productPriceData[0] + " " + KeywordUtils.get("CURRENCY", productPriceData[1])[1]; + else + return ""; + } else { + throw new Error(); // TODO: add message + } +} + +/** + * Delivers the stock + * + * @param {String} pid ProductID + * + * @example productUtils.getStockCount(vars.get("$field.PRODUCTID")) + * + * @return {String} stock count + */ +ProductUtils.getStockCount = function(pid) { + if (pid != undefined && pid != "") + { + var sum = db.cell(SqlCondition.begin() + .andPrepare("STOCK.PRODUCT_ID", pid) + .buildSql("select sum(QUANTITY * case IN_OUT when 0 then -1 else 1)" + + " from STOCK")); + + if (sum == "") + sum = "0"; + + return sum; + } + else + { + throw new Error();//TODO: add message + } +} + +/** + * Delivers metadata and price lists of the passed product. + * If parameter "priceListFilter" is passed valid price lists and the + * current price list to use for offer/order are delivered. + * + * @param {String} pid req ProductID + * @param {Object} priceListFilter opt { currency: "currencyValue", quantity: "quantityValue", relationId: "relationIdValue (for custom price lists)" } + * @param {String[]} additionalProductInfoFields additional fields from Product + * They are added to the result with the Fieldname as key. e.g. if the array is ["INFO"] the result will contain the key "INFO" + * + * @example //Product_entity, Field: PRODUCT_ID, Process: onValueChange + * var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID")); + * var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; + * var relid = vars.exists("$param.RelationId_param") ? vars.get("$param.RelationId_param") : ""; + * var pUtils = new ProductUtils(); + * var PriceListFilter = { currency: curr, quantity: vars.get("$field.QUANTITY"), relationId: relid }; + * var ProductDetails = pUtils.getProductDetails(pid, PriceListFilter, ["INFO"]); + * + * @return {Object} { <br> + * productId: "productid" <br> + * , productName: "product name" <br> + * , groupCode: "keyvalue of keyword 'GROUPCODE'" <br> + * , unit: "keyvalue of keyword 'UNIT'" <br> + * , PriceLists: {$pricelistid$ { <br> + * priceListId: "pricelistid" <br> + * , relationId: "relationid" when filled -> custom price list <br> + * , priceList: "keyvalue of keyword 'PRICELIST'" <br> + * , price: "price" <br> + * , vat: "vat" <br> + * , validFrom: TIMESTAMP <br> + * , validTo: TIMESTAMP <br> + * , buySell: "SP" / "PP" <br> + * , fromQuantity: "fromquantity" <br> + * , currency: "keyvalue of keyword 'CURRENCY'" <br> + * } } <br> + * , CurrentValidPriceLists: {$pricelistid$ { <br> + * priceListId: "pricelistid" <br> + * , relationId: "relationid" when filled -> custom price list <br> + * , priceList: "keyvalue of keyword 'PRICELIST'" <br> + * , price: "price" <br> + * , vat: "vat" <br> + * , validFrom: TIMESTAMP <br> + * , validTo: TIMESTAMP <br> + * , buySell: "SP" / "PP" <br> + * , fromQuantity: "fromquantity" <br> + * , currency: "keyvalue of keyword 'CURRENCY'" <br> + * } } <br> + * , PriceListToUse: {$pricelistid$ { <br> + * priceListId: "pricelistid" <br> + * , relationId: "relationid" when filled -> custom price list <br> + * , priceList: "keyvalue of keyword 'PRICELIST'" <br> + * , price: "price" <br> + * , vat: "vat" <br> + * , validFrom: TIMESTAMP <br> + * , validTo: TIMESTAMP <br> + * , buySell: "SP" / "PP" <br> + * , fromQuantity: "fromquantity" <br> + * , currency: "keyvalue of keyword 'CURRENCY'" <br> + * } }, <br> + * INFO: "the productinfo" + * } + */ +ProductUtils.getProductDetails = function(pid, priceListFilter, additionalProductInfoFields) +{ + if (additionalProductInfoFields == undefined) {additionalProductInfoFields = []} + var ProductDetails = {}; + + var cols = []; + var colsProduct = ["PRODUCT.PRODUCTID", "PRODUCT.PRODUCTNAME", "PRODUCT.GROUPCODEID", "PRODUCT.UNIT"]; + var defaultProductFieldCount = colsProduct.length; + colsProduct = colsProduct.concat(additionalProductInfoFields.map(function(item) {return "PRODUCT." + item})); + + cols = cols.concat(colsProduct); + + var joins = []; + var orderby = ["PRODUCTID"]; + + //PriceList (all) + var colsPricelistAll = ["allPP.PRODUCTPRICEID", "allPP.RELATION_ID", "allPP.PRICELIST", "allPP.PRICE", "allPP.VAT" + , "allPP.VALID_FROM", "allPP.VALID_TO", "allPP.BUYSELL", "allPP.FROMQUANTITY", "allPP.CURRENCY"]; + + cols = cols.concat(colsPricelistAll); + joins.push(" left join PRODUCTPRICE allPP on allPP.PRODUCT_ID = PRODUCTID "); + + //PriceList (currently valid) + var validPriceLists = false; + if (priceListFilter != undefined + && priceListFilter.currency != undefined && priceListFilter.currency != "" + && priceListFilter.quantity != undefined && priceListFilter.quantity != "") + { + validPriceLists = true; + var colsPricelistValid = ["validPP.PRODUCTPRICEID", "validPP.RELATION_ID", "validPP.PRICELIST", "validPP.PRICE", "validPP.VAT" + , "validPP.VALID_FROM", "validPP.VALID_TO", "validPP.BUYSELL", "validPP.FROMQUANTITY", "validPP.CURRENCY"]; + + cols = cols.concat(colsPricelistValid); + joins.push("left join PRODUCTPRICE validPP on " + + db.translateCondition(SqlCondition.begin() + .and("validPP.PRODUCT_ID = PRODUCTID") + .andPrepare(["PRODUCTPRICE", "CURRENCY", "validPP"], priceListFilter.currency) + .andPrepare(["PRODUCTPRICE", "VALID_FROM", "validPP"], datetime.date().toString(), "# <= ?") + .andPrepare(["PRODUCTPRICE", "FROMQUANTITY", "validPP"], priceListFilter.quantity, "# <= ?") + .andSqlCondition(SqlCondition.begin() + .orPrepare(["PRODUCTPRICE", "RELATION_ID", "validPP"], priceListFilter.relationId, "# <= ?") + .orSqlCondition(SqlCondition.begin() + .and("validPP.RELATION_ID is null") + .andPrepare(["PRODUCTPRICE", "BUYSELL", "validPP"], 'SP'), + "1 = 2"), + "1 = 2") + .build("1 = 2"))) + } + + var ProductDataSql = SqlCondition.begin() + .andPrepare("PRODUCT.PRODUCTID", pid) + .buildSql("select " + cols.join(", ") + " from PRODUCT " + joins.join(" "), + "1 = 2", + "order by " + orderby.join(", ")) + + var ProductData = db.table(ProductDataSql); + + for (var i = 0; i < ProductData.length; i++) + { + //Product + if (ProductDetails.productId == undefined) + { + ProductDetails = { + productId: ProductData[i][0] + , productName: ProductData[i][1] + , groupCode: ProductData[i][2] + , unit: ProductData[i][3] + , PriceLists: {} + , CurrentValidPriceLists: {} + , PriceListToUse: null + }; + + // add additional fields to the details + var countPos = defaultProductFieldCount; + additionalProductInfoFields.forEach(function(productField) + { + this[productField] = ProductData[i][countPos]; + countPos++; + }, ProductDetails); + } + //Pricelist (all) + var colIdx = colsProduct.length; + if (ProductData[i][colIdx] != "" && ProductDetails.PriceLists[ProductData[i][colIdx]] == undefined) //Pricelist found + { + ProductDetails.PriceLists[ProductData[i][colIdx]] = _getPriceListObject(); + } + + //Pricelist (currently valid) + colIdx = colsProduct.length + colsPricelistAll.length; + if (validPriceLists) + { + if (ProductData[i][colIdx] != "" && ProductDetails.CurrentValidPriceLists[ProductData[i][colIdx]] == undefined) //Pricelist found + { + ProductDetails.CurrentValidPriceLists[ProductData[i][colIdx]] = _getPriceListObject(); + } + } + } + + if (validPriceLists) + ProductDetails.PriceListToUse = _getPriceListToUse(ProductDetails.CurrentValidPriceLists, priceListFilter); + + return ProductDetails; + + function _getPriceListObject() { + return { + priceListId: ProductData[i][colIdx++] + , relationId: ProductData[i][colIdx++] + , priceList: ProductData[i][colIdx++] + , price: ProductData[i][colIdx++] + , vat: ProductData[i][colIdx++] + , validFrom: ProductData[i][colIdx++] + , validTo: ProductData[i][colIdx++] + , buySell: ProductData[i][colIdx++] + , fromQuantity: ProductData[i][colIdx++] + , currency: ProductData[i][colIdx++] + }; + } + + //price list to use for offer/order + function _getPriceListToUse(priceLists, priceListFilter) { + for (var list in priceLists) { + //custom price (defined in Org -> Conditions) + if (priceListFilter.relationId != "" && priceListFilter.relationId == priceLists[list].relationId) { + return priceLists[list]; + } + //customer deposited price list (defined by Attribute) + if (priceListFilter.priceList != "" && priceListFilter.priceList == priceLists[list].priceList) { + return priceLists[list]; + } + //default price list + if (priceLists[list].priceList == "1") { + return priceLists[list]; + } + } + + //no valid price list found + return null; + } +} + +/** + * Checks if there is already an existing price list identical to the passed price list + * + * @param {String} pid ProductID + * @param {Object} priceList { <br> + * priceList: "keyvalue of keyword 'PRICELIST'" <br> + * , validFrom: TIMESTAMP <br> + * , validTo: TIMESTAMP <br> + * , buySell: "SP" / "PP" <br> + * , fromQuantity: "fromquantity" <br> + * , currency: "keyvalue of keyword 'CURRENCY'" <br> + * } + * + * @example //Productprice_entity, Field: PRICELIST, Process: onValidation + * var pUtils = new ProductUtils(); + * var priceList = { + * priceList: ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRICELIST")) + * , fromQuantity: vars.get("$field.FROMQUANTITY") + * , buySell: vars.get("$field.BUYSELL") + * , currency: vars.get("$field.CURRENCY") + * , validFrom: vars.get("$field.VALID_FROM") + * , validTo: vars.get("$field.VALID_TO") + * }; + * + * var identicalPriceList = pUtils.checkForIndenticalPriceLists(vars.get("$field.PRODUCT_ID"), priceList); + * if (identicalPriceList != null) + * { + * result.string(translate.text("Identical price list found!")); + * } + * + * @return {Object | null} null if no identical price list was found, otherwise the found price list + */ +ProductUtils.checkForIndenticalPriceLists = function(pid, priceList) { + var PriceLists = this.getProductDetails(pid).PriceLists; + + for (var pricelist in PriceLists) { + //equal price list + //equal fromquantity + //equal currency + //equal pp/sp + if (priceList.priceList == PriceLists[pricelist].priceList + && priceList.fromQuantity == PriceLists[pricelist].fromQuantity + && priceList.buySell == PriceLists[pricelist].buySell + && priceList.currency == PriceLists[pricelist].currency) { + + //identical validFrom & validTo + // OR NOT [ validFrom_new <= validFrom & validTo_new <= validTo + // OR validFrom_new >= validFrom & validTo_new >= validTo + // OR validFrom_new < validFrom & validTo_new > validTo + // ] + if (priceList.validFrom == PriceLists[pricelist].validFrom && priceList.validTo == PriceLists[pricelist].validTo + || ! (priceList.validFrom <= PriceLists[pricelist].validFrom && priceList.validTo <= PriceLists[pricelist].validTo + || priceList.validFrom >= PriceLists[pricelist].validFrom && priceList.validTo >= PriceLists[pricelist].validTo + || priceList.validFrom < PriceLists[pricelist].validFrom && priceList.validTo > PriceLists[pricelist].validTo)) { + //identical price list found + return PriceLists[pricelist]; + } + } + } + + //no identical price list found + return null; +} + +/** + * returns the image for a product + * + * @param {String} pProductId the id of the product. + * @param {String} pDefaultText the text, to use for default image generation. + * @return {String} base64 coded String of the image. If none existed, the given String is used to create an image. + */ +ProductUtils.getImage = function(pProductId, pDefaultText) +{ + return ImageUtils.get("PRODUCT", "IMAGE", pProductId, pDefaultText); +} + +/** + * sets the image of a product + * + * @param {String} pProductId the id of the product. + * @param {String} pImageDateBase64 base64 coded String of the image. + * @return {Boolean} if image could be set + */ +ProductUtils.setImage = function(pProductId, pImageDateBase64) +{ + return ImageUtils.set("PRODUCT", "IMAGE", pProductId, pImageDateBase64, "ProductImage", "Image of the product"); +} + +/** + * deletes the image of a product + * + * @param {String} pProductId the id of the product. + * @return {Boolean} if image could be removed + */ +ProductUtils.removeImage = function(pProductId) +{ + return ImageUtils.remove("PRODUCT", "IMAGE", pProductId); +} + +/** + * Class containing utility functions for Prod2Prod (Parts list) + * + * @param {String} productId req ProductID + * + * @class + * + */ +function Prod2ProdUtils(productId) { + this.productId = productId; + this.data = undefined; +} + +/** + * Delivers an Object containing parts list structure for passed product "productId" (Constructor parameter) + * + * @return {Object} { $prod2prodid$ { <br> + * ids: [ Array containing child Prod2ProdIds for passed product "pProductId" (Constructor parameter) ] <br> + * , rowdata: [ "PROD2PRODID", "DEST_ID", "SOURCE_ID", "QUANTITY", "OPTIONAL", "TAKEPRICE" ] from DB-Table PROD2PROD <br> + * , destid: "Parent ProductID" <br> + * , sourceid: "Child ProductID" <br> + * , quantity: "Quantity" <br> + * , optional: "0" = not optional, "1" = optional <br> + * , takeprice: "0" = no price, "1" = price <br> + * } } + */ +Prod2ProdUtils.prototype.getPartsListObject = function() { + return this._relateChilds().getTreeObject(); +} + +/** + * Delivers a 2D-Array for RecordContainer of Entity "Prod2prod_entity" + * containing parts list for passed product "productId" (Constructor parameter). + * + * It is necessary to generate a specifically UID for the RecordContainer because + * the same data record can be listed several times. Therefore the primary key "PROD2PRODID" + * can not be used for UID because this must be unique. + * + * @return {String[][]} [ ["UID" + * , "PARENTID" (equals "DEST_ID") + * , "PROD2PRODID" + * , "DEST_ID" + * , "SOURCE_ID" + * , "QUANTITY" + * , "OPTIONAL" + * , "TAKEPRICE" + * , "PRODUCTCODE"] ] + */ +Prod2ProdUtils.prototype.getPartsListForRecordContainer = function() { + var tree = this._relateChilds(); + return tree.toArray(7); +// var ret = []; +// var childs = this._relateChilds(); +// +// // map internal, (uids used in this function) concatenated ids to new random generated uuids. +// // Without this every depth would make the uid significantly longer. +// var uidMap = {}; +// +// __push("", childs.root, 0); +// +// +// +// +// function __push(parent, obj) { +// logging.log(obj.toSource()) +// // +// +// for (var i = 0; i < obj.ids.length; i++) { +// logging.log(childs[obj.ids[i]].toSource()) +// var nextUid = parent + obj.ids[i]; +// __addRow(nextUid, parent, childs[obj.ids[i]].rowdata) +// +// __push(nextUid, childs[obj.ids[i]]) +// } +// } +// +// function __addRow(uid, parentId, rowdata) +// { +// uidMap[uid] = util.getNewUUID(); +// if (uidMap[parentId] == undefined) { +// uidMap[parentId] = util.getNewUUID(); +// } +// +// ret.push([uidMap[uid], uidMap[parentId]].concat(rowdata)); +// } +// +// return ret; +} + +/** +* Delivers an Array containing productids of the parts list +* for passed product "productId" (Constructor parameter). +* +* +* @return {String[]} [ "SOURCE_ID" ] +*/ +Prod2ProdUtils.prototype.getPartsListProdIds = function() { + var ret = []; + var childs = this._relateChilds().getTreeObject(); + + __push(childs.root); + + return ret; + + function __push(pObj) { + for (var i = 0; i < pObj.ids.length; i++) { + ret.push(childs[pObj.ids[i]].sourceid); + __push(childs[pObj.ids[i]]); + } + } +} + +/** +* Delivers an Array containing productids of the parent list +* for passed product "productId" (Constructor parameter). +* +* +* @return {String[]} [ "DEST_ID" ] +*/ +Prod2ProdUtils.prototype.getParentProdIds = function() { + var ret = []; + var parents = this._relateParents(); + + __push(parents.root); + + return ret; + + function __push(pObj) { + for (var i = 0; i < pObj.ids.length; i++) { + ret.push(parents[pObj.ids[i]].destid); + __push(parents[pObj.ids[i]]); + } + } +} + +/** +* Function to initalize class variable "data" containing complete Prod2Prod-Data.<br> +* It guarantees a unique load of data per instance. +* +* @ignore +*/ +Prod2ProdUtils.prototype._initProd2ProdData = function() { + if (this.data == undefined) { + this.data = db.table("select SOURCE_ID, DEST_ID, PROD2PRODID, QUANTITY, OPTIONAL, TAKEPRICE, PRODUCTCODE, SOURCE_ID, DEST_ID " + + "from PROD2PROD join PRODUCT on PROD2PROD.SOURCE_ID = PRODUCTID " + + "order by PRODUCTCODE "); + } +} + +/* object tree to relate products by DEST_ID / SOURCE_ID. + * + **/ +Prod2ProdUtils.prototype._buildTree = function(supervised) { + this._initProd2ProdData(); + var productId = this.productId; + + var tree = DataTree.begin(this.productId).addArray(this.data, + function(pUid, pNode) + { + if (pUid == productId) + { + pNode["sourceid"] = productId; + if (supervised) + { + pNode["destid"] = productId; + } + } + else + { + pNode["destid"] = pNode.parent; + pNode["sourceid"] = pUid; + + if (pNode.data != undefined) { + pNode["quantity"] = pNode.data[1]; + pNode["optional"] = pNode.data[2]; + pNode["takeprice"] = pNode.data[3]; + pNode["productcode"] = pNode.data[4]; + } + } + } + ); + /* + + var tree = { root: {ids: [], sourceid: this.productId } }; + + if (supervised) + tree = { root: {ids: [], destid: this.productId } }; + + for (var i = 0; i < this.data.length; i++) { + var prod2prodid = this.data[i][0]; + if (tree[prod2prodid] == undefined) { + tree[prod2prodid] = { + ids: [] + , rowdata: this.data[i].slice(0)//copy to get NativeArray for concatenation + , destid: this.data[i][1] + , sourceid: this.data[i][2] + , quantity: this.data[i][3] + , optional: this.data[i][4] + , takeprice: this.data[i][5] + , productcode: this.data[i][6] + }; + } + } +*/ + return tree; +} + +Prod2ProdUtils.prototype._relateChilds = function() { + var tree = this._buildTree(false); + __relate(this.productId); + + return tree; + + function __relate(id) { + var treeObject = tree.getTreeObject(); + for (var treeId in treeObject) { + if (treeObject[treeId].destid == treeObject[id].sourceid && treeObject[id].ids.indexOf(treeId) == -1) { + treeObject[id].ids.push(treeId); + __relate(treeId); + } + } + } +} +/* +Prod2ProdUtils.prototype._relateChilds = function() { + var tree = this._buildTree(false); + logging.log(tree.toSource()) + + __relate("root"); + + logging.log(tree.toSource()) + + return tree; + + + function __relate(id) { + for (var treeId in tree) { + if (tree[treeId].destid == tree[id].sourceid && tree[id].ids.indexOf(treeId) == -1) { + tree[id].ids.push(treeId); + __relate(treeId); + } + } + } +} +*/ +Prod2ProdUtils.prototype._relateParents = function() { + var tree = this._buildTree(true); + + __relate(this.productId); + + return tree; + + + function __relate(id) { + var treeObject = tree.getTreeObject(); + for (var treeId in treeObject) { + if (treeObject[treeId].sourceid == treeObject[id].destid && treeObject[id].ids.indexOf(treeId) == -1) { + treeObject[id].ids.push(treeId); + __relate(treeId); + } + } + } } \ No newline at end of file diff --git a/process/Relation_lib/process.js b/process/Relation_lib/process.js index 1fcb6da82b1..dc3610977d1 100644 --- a/process/Relation_lib/process.js +++ b/process/Relation_lib/process.js @@ -139,7 +139,7 @@ RelationUtils.getPersOrgIds = function(pRelationId) return db.array(db.ROW, SqlCondition.begin() .andPrepare("RELATION.RELATIONID", pRelationId) - .buildSelect("select RELATIONID, PERS_ID, ORG_ID from RELATION", "1=0")); + .buildSql("select RELATIONID, PERS_ID, ORG_ID from RELATION", "1=0")); } @@ -197,7 +197,7 @@ RelationUtils.getNameByPersOrgWithRelationId = function(pRelationId, pTitle) if (pRelationId) { var data = db.array(db.ROW, SqlCondition.begin() .andPrepare("RELATION.RELATIONID", pRelationId) - .buildSelect("select RELATION.PERS_ID, RELATION.ORG_ID, PERS.FIRSTNAME, PERS.LASTNAME, PERS.TITLE, ORG.NAME from RELATION RELATION join ORG on ORG.ORGID = RELATION.ORG_ID left join PERS on PERS.PERSID = RELATION.PERS_ID", "1 = 2")); + .buildSql("select RELATION.PERS_ID, RELATION.ORG_ID, PERS.FIRSTNAME, PERS.LASTNAME, PERS.TITLE, ORG.NAME from RELATION RELATION join ORG on ORG.ORGID = RELATION.ORG_ID left join PERS on PERS.PERSID = RELATION.PERS_ID", "1 = 2")); return RelationUtils.getNameByPersOrg(data[0], data[1], data[2], data[3], data[5], (pTitle ? data[4] : undefined)); } diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index 145b3b6bdbf..9d534dd841e 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -80,5 +80,5 @@ Salesproject.getSalesProjectTitleById = function(pSalesProjectId) { return db.cell( SqlCondition.begin() .andPrepare("SALESPROJECT.SALESPROJECTID", pSalesProjectId) - .buildSelect("select PROJECTTITLE from SALESPROJECT", "1=0")); + .buildSql("select PROJECTTITLE from SALESPROJECT", "1=0")); } \ No newline at end of file diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 98d834bfa9a..eb5e2391198 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -47,12 +47,12 @@ function SqlCondition(alias) { * .or("NAME = 'Max'") * .or("NAME = 'Bob'") * ) - * .buildSelect("select * from MYTABLE"); + * .buildSql("select * from MYTABLE"); * * // Or use it for simple selects: * var sum = db.cell(SqlCondition.begin() * .andPrepared("STOCK.PRODUCT_ID", pid) - * .buildSelect("select sum(QUANTITY * IN_OUT) from STOCK")); + * .buildSql("select sum(QUANTITY * IN_OUT) from STOCK")); */ SqlCondition.begin = function(alias) { return new SqlCondition(alias); @@ -243,15 +243,22 @@ SqlCondition.prototype.build = function(alternativeCond) { /** * ready to use prepared select - * @param {String} beforeCondition Part of the sql before the condition without where (e.g. "select FIRSTNAME from PERS") - * @param {String} [alternativeCond=""] Condition that is returned when nothing has been appended. - * @param {String} [afterCondition=""] Part of the sql after the condition (e.g. "order by FIRSTNAME"). + * @param {String} pBeforeCondition Part of the sql before the condition without where (e.g. "select FIRSTNAME from PERS") + * @param {String} [pAlternativeCond=""] Condition that is returned when nothing has been appended. + * @param {String} [pAfterCondition=""] Part of the sql after the condition (e.g. "order by FIRSTNAME"). + * @param {Boolean} [pWithWere=true] true if where should be added to the bginning * @return {Array[][][]} Prepared condition with [condition, [[field1, type1], [field2, type2]]] */ -SqlCondition.prototype.buildSelect = function(beforeCondition, alternativeCond, afterCondition) { - if (afterCondition == undefined) - afterCondition = "" - return [beforeCondition + " " + this.toWhereString(alternativeCond) + " " + afterCondition, this.preparedValues]; +SqlCondition.prototype.buildSql = function(pBeforeCondition, pAlternativeCond, pAfterCondition, pWithWere) { + if (pAfterCondition == undefined) + pAfterCondition = ""; + + if (pWithWere == undefined) + pWithWere = true; + + return [pBeforeCondition + " " + + (pWithWere ? this.toWhereString(pAlternativeCond) : this.toString(pAlternativeCond)) + + " " + pAfterCondition, this.preparedValues]; } /** -- GitLab