diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 6bc32d7d9dabe6094c7105967e5314134507ad39..7e09926aa31b4d677a81ba73f0b39e519e2508f6 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -5130,5 +5130,77 @@ </affectedTables> <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js</affectedIds> </indexSearchGroup> + <indexSearchGroup> + <name>OFFER</name> + <title>Offer</title> + <icon>VAADIN:CART</icon> + <active v="false" /> + <idColumn>OFFERID</idColumn> + <titleColumn>TITLECOLUMN</titleColumn> + <descriptionColumn>DESCCOLUMN</descriptionColumn> + <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js</query> + <resultContextNeon>Offer</resultContextNeon> + <affectedTables> + <element>OFFER</element> + </affectedTables> + <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js</affectedIds> + </indexSearchGroup> + <indexSearchGroup> + <name>SALESORDER</name> + <title>Order</title> + <icon>VAADIN:DOLLAR</icon> + <active v="false" /> + <idColumn>SALESORDERID</idColumn> + <titleColumn>TITLECOLUMN</titleColumn> + <descriptionColumn>DESCCOLUMN</descriptionColumn> + <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js</query> + <resultContextNeon>Order</resultContextNeon> + <affectedTables> + <element>SALESORDER</element> + </affectedTables> + <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js</affectedIds> + </indexSearchGroup> + <indexSearchGroup> + <name>CONTRACT</name> + <title>Contract</title> + <icon>VAADIN:FILE_TEXT</icon> + <active v="false" /> + <idColumn>CONTRACT</idColumn> + <titleColumn>TITLECOLUMN</titleColumn> + <descriptionColumn>DESCCOLUMN</descriptionColumn> + <resultContextNeon>Contract</resultContextNeon> + <affectedTables> + <element>CONTRACT</element> + </affectedTables> + <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js</affectedIds> + </indexSearchGroup> + <indexSearchGroup> + <name>PRODUCT</name> + <title>Product</title> + <icon>VAADIN:HAMMER</icon> + <active v="false" /> + <idColumn>PRODUCT</idColumn> + <titleColumn>TITLECOLUMN</titleColumn> + <descriptionColumn>DESCCOLUMN</descriptionColumn> + <resultContextNeon>Product</resultContextNeon> + <affectedTables> + <element>PRODUCT</element> + </affectedTables> + <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js</affectedIds> + </indexSearchGroup> + <indexSearchGroup> + <name>SALESPROJECT</name> + <title>Salesproject</title> + <icon>VAADIN:BOOK_DOLLAR</icon> + <active v="false" /> + <idColumn>SALESPROJECT</idColumn> + <titleColumn>TITLECOLUMN</titleColumn> + <descriptionColumn>DESCCOLUMN</descriptionColumn> + <resultContextNeon>Salesproject</resultContextNeon> + <affectedTables> + <element>SALESPROJECT</element> + </affectedTables> + <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js</affectedIds> + </indexSearchGroup> </indexSearchGroups> </aliasDefinition> diff --git a/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20 --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.object([vars.getString("$local.idvalue")]); \ No newline at end of file diff --git a/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20 --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.object([vars.getString("$local.idvalue")]); \ No newline at end of file diff --git a/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js b/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js new file mode 100644 index 0000000000000000000000000000000000000000..d8bff6962ee6476f616c9cb6a66304bfae3d35b2 --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js @@ -0,0 +1,22 @@ +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Sql_lib"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where OFFERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select OFFERID, " + + "OFFERCODE as TITLECOLUMN, " + + sqlHelper.concat(["ORGNAME", "'| Kd-Nr.: '", "CUSTOMERCODE"]) + + " as DESCCOLUMN, OFFERCODE, ORGNAME, CUSTOMERCODE " + + " from OFFER " + + " join CONTACT on OFFER.CONTACT_ID = CONTACTID " + + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID " + + queryCondition + " order by OFFERCODE "; +result.string(sqlQuery); \ No newline at end of file diff --git a/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20 --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.object([vars.getString("$local.idvalue")]); \ No newline at end of file diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20 --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.object([vars.getString("$local.idvalue")]); \ No newline at end of file diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js new file mode 100644 index 0000000000000000000000000000000000000000..39a1d15028db2e6dd488e391a63d6d3d51cc52de --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js @@ -0,0 +1,22 @@ +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Sql_lib"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where OFFERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select SALESORDERID, " + + " ORDERCODE as TITLECOLUMN, " + + sqlHelper.concat(["ORGNAME", "'| Kd-Nr.: '", "CUSTOMERCODE"]) + + " as DESCCOLUMN, ORDERCODE, ORGNAME, CUSTOMERCODE " + + " from SALESORDER " + + " join RELATION on SALESORDER.RELATION_ID = RELATIONID " + + " join ORG on ORGID = RELATION.ORG_ID " + + queryCondition + " order by ORDERCODE "; +result.string(sqlQuery); \ No newline at end of file diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20 --- /dev/null +++ b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.object([vars.getString("$local.idvalue")]); \ No newline at end of file diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 29aff4640e7d1b3091d0a8cdf4444ad2d860f2c9..4e90b5b470b7003fa1c6ef6a40e349f8fdb102e9 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -32,7 +32,6 @@ <node name="Attribute" kind="10077" /> <node name="KeywordEntry" kind="10077" /> <node name="KeywordAttribute" kind="10077" /> - <node name="Salutation" kind="10077" /> <node name="INTERNAL_ADMINISTRATOR" kind="159" /> </node> </node> diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/iconIdProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/iconIdProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index dc0e95ce40aa8b214bf9f13f02cca8a647aabf06..3f998199e73bd8addc2b6b5bf9a945d68533dcee 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -263,7 +263,7 @@ <consumer>Contacts</consumer> <linkedContext>Person</linkedContext> <searchable v="false" /> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/creator/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/creator/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> <name>ModuleTrees</name> diff --git a/entity/Activity_entity/entityfields/creator/displayValueProcess.js b/entity/Activity_entity/entityfields/creator/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0dde82e7728286629b1c210326725aac2ebb92c5 --- /dev/null +++ b/entity/Activity_entity/entityfields/creator/displayValueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.vars"); +import("Contact_lib"); + +var id = vars.get("$this.value"); +//show the simpel title since this will be later an employee-entry and therefore no organisation is needed +var title = ContactUtils.getTitleByContactId(id); +result.string(title); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/creator/valueProcess.js b/entity/Activity_entity/entityfields/creator/valueProcess.js deleted file mode 100644 index fbf6105a85aaeeb73fa5784afaf603d6d650a770..0000000000000000000000000000000000000000 --- a/entity/Activity_entity/entityfields/creator/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.result"); -import("system.vars"); -import("system.neon"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - result.string(vars.get("$sys.user")); -} \ 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 787c4614c1462768ec4b375d47ef1a79eb2d57d3..3ede97828741f9baed6f5ef05de7d3913953e3fc 100644 --- a/entity/Activity_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Activity_entity/recordcontainers/db/onDBDelete.js @@ -1,11 +1,8 @@ import("system.vars"); import("system.db"); import("Sql_lib"); -import("Context_lib"); 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")); + .andPrepareVars("ACTIVITYLINK.ACTIVITY_ID", "$field.ACTIVITYID"); +db.deleteData("ACTIVITYLINK", activityObjectsCondition.build("1=2")); \ No newline at end of file diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 505785aee4ca2423bab2bada7b9f9a0b7c8884ea..ef3c7122fe47dc58830ac0cae0f16a7d2a668e72 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -88,7 +88,7 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <children> <entityParameter> <name>ContactId_param</name> - <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/organisation/children/ContactId_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/organisations/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> diff --git a/entity/AnyContact_entity/entityfields/organisation/children/contactid_param/valueProcess.js b/entity/AnyContact_entity/entityfields/organisation/children/contactid_param/valueProcess.js deleted file mode 100644 index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/entityfields/organisation/children/contactid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/contexts/children/contextid_param/valueProcess.js b/entity/Appointment_entity/entityfields/contexts/children/contextid_param/valueProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Appointment_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/Appointment_entity/entityfields/objects/children/objecttype_param/valueProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index cabd4f0e481e979f64fc0a81d86a0e0ec125941a..e257ce32b6f4ecc06cfc62b9e8b5ca5f84d8b1fc 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -99,6 +99,7 @@ <entityParameter> <name>ObjectRowId_param</name> <expose v="true" /> + <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> <entityField> diff --git a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js index 7375ee03d22b48d48e19926a0ad891be06cc2aec..acda6626ab40309e259438b0dca6da54219b99ec 100644 --- a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js +++ b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js @@ -2,4 +2,6 @@ import("system.vars"); import("system.result"); import("Attribute_lib"); -result.string(AttributeUtil.getFullAttributeName(vars.get("$field.AB_ATTRIBUTE_ID"))); \ No newline at end of file +result.string(AttributeUtil.getFullAttributeName( + vars.get("$field.AB_ATTRIBUTE_ID"), + vars.exists("$param.DisplaySimpleName_param") ? vars.get("$param.DisplaySimpleName_param") : false )); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js index aee41089141ec40518d13418f789ecc3a54b5e2e..623fac4157f0adf965683447e178916aedffc2a6 100644 --- a/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js @@ -1,14 +1,17 @@ +import("system.logging"); import("system.vars"); import("system.db"); import("system.result"); import("Sql_lib"); - - var cond = SqlCondition.begin() .andPrepareVars("AB_ATTRIBUTERELATION.OBJECT_ROWID", "$param.ObjectRowId_param"); -if (vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param")) +if (vars.exists("$param.ObjectRowId_param")) + logging.log(vars.get("$param.ObjectRowId_param")) + +if (vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param") + && vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param")) { var filteredIds = JSON.parse(vars.get("$param.FilteredAttributeIds_param")); var filteredIdsCondition = new SqlCondition(); diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod index 18af22e8347ed37d6c604134d7aab2e9c3e12216..db802200adca400fc289e7fa8cdbe26d38fcf352 100644 --- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod +++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod @@ -13,7 +13,12 @@ <name>OBJECT_TYPE</name> <title>Module</title> <consumer>Context</consumer> + <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + </onValueChangeTypes> </entityField> <entityField> <name>AB_ATTRIBUTEUSAGEID</name> @@ -71,6 +76,9 @@ <name>db</name> <alias>Data_alias</alias> <conditionProcess>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBInsert>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <onDBDelete>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> <name>c30f5670-580e-4621-95dd-0fec4a99190f</name> diff --git a/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js b/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js index c3a2248b66e14317873bfcff446f25abac69686a..9efed36fc2699e14e3c6f4baa4cd4c62ceef938e 100644 --- a/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js +++ b/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js @@ -3,4 +3,6 @@ import("system.result"); import("system.neon"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param") != null) - result.string(vars.get("$param.AttributeId_param")); \ No newline at end of file + result.string(vars.get("$param.AttributeId_param")); +else if (vars.get("$field.AB_ATTRIBUTE_ID")) + result.string(vars.get("$field.AB_ATTRIBUTE_ID")); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js b/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..40b7c76fc5515aeb4d2e88c54f0bbe9daf403618 --- /dev/null +++ b/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); + +//this is a workaround to get the old value in the onDBUpdate process +//@TODO replace this when it's possible to get the old value in onDBUpdate +vars.set("$context.originalObjectType", vars.get("$field.OBJECT_TYPE")); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js b/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..b41e99cd82af7be8fd94faddd41fda7feb3e733e --- /dev/null +++ b/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("Attribute_lib"); + +var attributeId = vars.get("$field.AB_ATTRIBUTE_ID"); +var objectType = vars.get("$field.OBJECT_TYPE"); + +AttributeUsageUtil.deleteChildrenUsages(attributeId, objectType); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js b/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..73c28f291697502a3d36b35e3b5878ecefdf14a1 --- /dev/null +++ b/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("Attribute_lib"); + +var attributeId = vars.get("$field.AB_ATTRIBUTE_ID"); +var objectType = vars.get("$field.OBJECT_TYPE"); + +AttributeUsageUtil.insertChildrenUsages(attributeId, objectType); +AttributeUsageUtil.removeDuplicates(attributeId); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js b/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..02890f1b92c8da2fd1f5849ad7855337ba6148ed --- /dev/null +++ b/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("Attribute_lib"); + +var attributeId = vars.get("$field.AB_ATTRIBUTE_ID"); +var oldObjectType = vars.get("$context.originalObjectType"); +var newObjectType = vars.get("$field.OBJECT_TYPE"); + +AttributeUsageUtil.updateChildrenUsages(attributeId, oldObjectType, newObjectType); +AttributeUsageUtil.removeDuplicates(attributeId); \ No newline at end of file diff --git a/entity/Attribute_entity/afterUiInit.js b/entity/Attribute_entity/afterUiInit.js index f36f9fbc0eb68caa31ed5b1e78c6508976364ffb..87febc93d555370828def178d66937ba02b37a7e 100644 --- a/entity/Attribute_entity/afterUiInit.js +++ b/entity/Attribute_entity/afterUiInit.js @@ -3,13 +3,15 @@ import("system.db"); import("system.neon"); import("system.vars"); import("Context_lib"); +import("Attribute_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + && vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE && vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param")) { var parentId = vars.get("$param.AttrParentId_param"); var attributeId = vars.get("$field.AB_ATTRIBUTEID"); - + var usageSql = SqlCondition.begin() .andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", parentId) .buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE", "1=0"); diff --git a/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js b/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js index b768fb2fba7336e45a6e5c99d6224d9e623d4e5b..f663dddf570f4246c8ae5babd6035026d2bc2ffc 100644 --- a/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js +++ b/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js @@ -3,10 +3,29 @@ import("system.neon"); import("system.result"); import("system.vars"); import("Attribute_lib"); +import("Sql_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.ATTRIBUTE_PARENT_ID") != "") +var type = vars.get("$field.ATTRIBUTE_TYPE").trim(); +var state = neon.COMPONENTSTATE_AUTO +if (type == $AttributeTypes.COMBOVALUE) { - var type = AttributeHandler.begin(vars.get("$field.ATTRIBUTE_PARENT_ID")).getAttributeType(); - if (type == $AttributeTypes.COMBO) - result.string(neon.COMPONENTSTATE_INVISIBLE); -} \ No newline at end of file + state = neon.COMPONENTSTATE_READONLY; +} +else if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO) +{ + var hasSubordinate = db.cell(SqlCondition.begin() + .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTEID") + .buildSql( + "select exists (" + + "select SUB.AB_ATTRIBUTEID from AB_ATTRIBUTE SUB " + + "where SUB.ATTRIBUTE_PARENT_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID" + + ") from AB_ATTRIBUTE", "1=2" + ) + ) == "true"; + if (hasSubordinate) + state = neon.COMPONENTSTATE_READONLY; +} +else if (AttributeUtil.hasRelations(vars.get("$field.AB_ATTRIBUTEID"))) + state = neon.COMPONENTSTATE_READONLY; + +result.string(state) \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js index f2318723e88440808277d20753657fb7674a0d0f..b68489b6e02b29d34ae67b14c7371f985305f014 100644 --- a/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js +++ b/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js @@ -1,4 +1,7 @@ import("system.vars"); import("system.result"); +import("Attribute_lib"); -result.string(vars.getString("$field.AB_ATTRIBUTEID")); +var type = vars.get("$field.ATTRIBUTE_TYPE").trim(); +if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO) + result.string(vars.getString("$field.AB_ATTRIBUTEID")); diff --git a/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js index 372decd8620b90d3e722f96f362c01b947eb6a32..fe18eca06c7f87d798bd3e58c7726058b5bf049f 100644 --- a/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js +++ b/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js @@ -1,10 +1,4 @@ -import("system.neon"); import("system.vars"); import("system.result"); -var type; -if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW) - type = "GETGROUPS"; -else - type = vars.getString("$field.ATTRIBUTE_TYPE").trim() -result.string(type); +result.string(vars.getString("$field.ATTRIBUTE_TYPE").trim()); diff --git a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js b/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js index 9ce13917b56c5c8e51f01876f47c5cb1f625ec85..67de95ea15b0707ce1a44627ba5a60b92cb5e917 100644 --- a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js +++ b/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js @@ -4,9 +4,9 @@ import("system.result"); import("Attribute_lib"); var fieldState; -if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD) +if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD && !AttributeUtil.hasRelations(vars.get("$field.AB_ATTRIBUTEID"))) fieldState = neon.COMPONENTSTATE_EDITABLE; else - fieldState = neon.COMPONENTSTATE_DISABLED; + fieldState = neon.COMPONENTSTATE_READONLY; result.string(fieldState); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/usagelist/valueProcess.js b/entity/Attribute_entity/entityfields/usagelist/valueProcess.js index 0192da48ac5fb006f40737067207ddf9043604a0..675da9521dc245e23992c051dc34239c6f262963 100644 --- a/entity/Attribute_entity/entityfields/usagelist/valueProcess.js +++ b/entity/Attribute_entity/entityfields/usagelist/valueProcess.js @@ -3,10 +3,16 @@ import("system.result"); import("system.db"); import("system.vars"); import("Sql_lib"); +import("Attribute_lib"); -var usages = db.array(db.COLUMN, SqlCondition.begin() - .andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", vars.get("$field.AB_ATTRIBUTEID")) - .buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE")); -var usageStr = translate.text("Usage"); +var retStr = "\u00A0"; // \u00A0 -> space character that doesn't get trimmed +if (vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE) +{ + var usages = db.array(db.COLUMN, SqlCondition.begin() + .andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", vars.get("$field.AB_ATTRIBUTEID")) + .buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE")); + if (usages.length) + retStr = translate.text("Usage") + ": " + usages.join(", "); +} -result.string(usages.length ? usageStr + ": " + usages.join(", ") : "\u00A0"); // \u00A0 -> space character that doesn't get trimmed \ No newline at end of file +result.string(retStr); \ No newline at end of file diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 4ce8a38fd6962ba6b14bf4479779995fc6f191c2..866f81d40bdb74084bd1dd7933b0ab590bd7e960 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -4,7 +4,6 @@ <title>Contact</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Contact_entity/documentation.adoc</documentation> - <onValidation>%aditoprj%/entity/Contact_entity/onValidation.js</onValidation> <iconId>VAADIN:USERS</iconId> <recordContainer>db</recordContainer> <entityFields> @@ -33,14 +32,20 @@ <entityField> <name>DEPARTMENT</name> <title>Department</title> + <possibleItemsProcess>%aditoprj%/entity/Contact_entity/entityfields/department/possibleItemsProcess.js</possibleItemsProcess> + <newItemsAllowed v="true" /> </entityField> <entityField> <name>POSITION</name> <title>Position</title> + <possibleItemsProcess>%aditoprj%/entity/Contact_entity/entityfields/position/possibleItemsProcess.js</possibleItemsProcess> + <newItemsAllowed v="true" /> </entityField> <entityField> <name>CONTACTROLE</name> <title>Contactrole</title> + <possibleItemsProcess>%aditoprj%/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js</possibleItemsProcess> + <newItemsAllowed v="true" /> </entityField> <entityConsumer> <name>Organisations</name> diff --git a/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js b/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..96627ddf00215d0598ae85d2452acfd248cbe52a --- /dev/null +++ b/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactContactrole()).map(function (e){ + return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers +}); + +result.object(res); \ No newline at end of file diff --git a/entity/Contact_entity/entityfields/department/possibleItemsProcess.js b/entity/Contact_entity/entityfields/department/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..77d99fa219eb36618f38dbb344e4a345bb71d331 --- /dev/null +++ b/entity/Contact_entity/entityfields/department/possibleItemsProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactDepartment()).map(function (e){ + return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers +}); + +result.object(res); \ No newline at end of file diff --git a/entity/Contact_entity/entityfields/position/possibleItemsProcess.js b/entity/Contact_entity/entityfields/position/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a86d6820913b759ac976779f9c045378095b6d24 --- /dev/null +++ b/entity/Contact_entity/entityfields/position/possibleItemsProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactPosition()).map(function (e){ + return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers +}); + +result.object(res); \ No newline at end of file diff --git a/entity/Contact_entity/onValidation.js b/entity/Contact_entity/onValidation.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js b/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/ObjectRelation_entity/entityfields/targetobjectrowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/valueProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/ObjectRelation_entity/entityfields/targetobjecttype/valueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjecttype/valueProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js index 19b4227d9653b2fea12ec49da0a70b90b50aa3a5..34ef78477331f19dc8f0ebb899c3b97bfb14454d 100644 --- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js @@ -81,7 +81,7 @@ function buildTreeData (pObjectRelations) { var i = 0; for (i = 0; i < pObjectRelations.length; i++) { - var currentRelation = pObjectRelations[i]; + let currentRelation = pObjectRelations[i]; if (relationTypeMapping[currentRelation[0]] === undefined) relationTypeMapping[currentRelation[0]] = currentRelation[2]; @@ -89,7 +89,7 @@ function buildTreeData (pObjectRelations) { var treeRows = [] for (i = 0; i < pObjectRelations.length; i++) { - var currentRelation = pObjectRelations[i]; + let currentRelation = pObjectRelations[i]; treeRows.push([currentRelation[3], currentRelation[0], currentRelation[4]]); } diff --git a/entity/Offer_entity/entityfields/printoffer/stateProcess.js b/entity/Offer_entity/entityfields/printoffer/stateProcess.js index b6ef75cff77e2ad3ff7423b297ecb8fa6cac1aa1..bb8a76fc6373e23f7ea9e562c2bcedad4c6b5bdb 100644 --- a/entity/Offer_entity/entityfields/printoffer/stateProcess.js +++ b/entity/Offer_entity/entityfields/printoffer/stateProcess.js @@ -10,4 +10,4 @@ var itemcount = db.cell(SqlCondition.begin() if(itemcount == "0") result.string(neon.COMPONENTSTATE_DISABLED); else - result.string(neon.COMPONENTSTATE_AUTO); \ No newline at end of file + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod index bca109621bcae2469bf6c3087157de7244b15488..236c205986cbdc9106c1762473cc0b5b4e177a92 100644 --- a/entity/Offeritem_entity/Offeritem_entity.aod +++ b/entity/Offeritem_entity/Offeritem_entity.aod @@ -1,324 +1,323 @@ -<?xml version="1.0" encoding="UTF-8"?> -<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0"> - <name>Offeritem_entity</name> - <title>Offeritem</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/Offeritem_entity/documentation.adoc</documentation> - <afterOperatingState>%aditoprj%/entity/Offeritem_entity/afterOperatingState.js</afterOperatingState> - <recordContainer>db</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>ASSIGNEDTO</name> - </entityField> - <entityField> - <name>DISCOUNT</name> - <title>Discount %</title> - <contentType>NUMBER</contentType> - <outputFormat>#,##0</outputFormat> - </entityField> - <entityField> - <name>GROUPCODEID</name> - <title>Commodity group</title> - <consumer>KeywordProductGroupcodes</consumer> - <state>READONLY</state> - <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>ITEMNAME</name> - <title>Designation</title> - </entityField> - <entityField> - <name>ITEMPOSITION</name> - <title>Position</title> - <state>READONLY</state> - </entityField> - <entityField> - <name>ITEMSORT</name> - </entityField> - <entityField> - <name>OFFERITEMID</name> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offeritemid/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>OFFER_ID</name> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offer_id/valueProcess.js</valueProcess> - <onValueChangeTypes> - <element>MASK</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>OPTIONAL</name> - <title>Optional</title> - <contentType>BOOLEAN</contentType> - <possibleItemsProcess>%aditoprj%/entity/Offeritem_entity/entityfields/optional/possibleItemsProcess.js</possibleItemsProcess> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/optional/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>PRICE</name> - <title>Unit price</title> - <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - </entityField> - <entityField> - <name>PRODUCT_ID</name> - <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/documentation.adoc</documentation> - <title>Article</title> - <consumer>Products</consumer> - <linkedContext>Product</linkedContext> - <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js</displayValueProcess> - <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValueChange.js</onValueChange> - <onValueChangeTypes> - <element>MASK</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>QUANTITY</name> - <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/documentation.adoc</documentation> - <title>Quantity</title> - <contentType>NUMBER</contentType> - <outputFormat>#</outputFormat> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/valueProcess.js</valueProcess> - <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValidation.js</onValidation> - <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValueChange.js</onValueChange> - <onValueChangeTypes> - <element>MASK</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>UNIT</name> - <title>Unit</title> - <consumer>KeywordQuantityUnits</consumer> - <state>READONLY</state> - <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/unit/displayValueProcess.js</displayValueProcess> - <onValueChangeTypes> - <element>PROCESS</element> - <element>MASK</element> - <element>PROCESS_SETVALUE</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>VAT</name> - <title>VAT in %</title> - <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - <state>READONLY</state> - </entityField> - <entityParameter> - <name>OfferId_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>Currency_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityField> - <name>TotalPrice</name> - <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/totalprice/documentation.adoc</documentation> - <title>Sum</title> - <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/totalprice/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>IMAGE</name> - <contentType>IMAGE</contentType> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/image/valueProcess.js</valueProcess> - </entityField> - <entityParameter> - <name>OfferStatus_param</name> - <expose v="true" /> - <triggerRecalculation v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityProvider> - <name>OfferItems</name> - <fieldType>DEPENDENCY_IN</fieldType> - <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> - <entityName>Offer_entity</entityName> - <fieldName>Offeritems</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>Currency_param</name> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offeritems/children/currency_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>OfferId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>OfferStatus_param</name> - <expose v="true" /> - </entityParameter> - </children> - </entityProvider> - <entityField> - <name>INFO</name> - <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/info/documentation.adoc</documentation> - <title>Note</title> - <contentType>LONG_TEXT</contentType> - <state>READONLY</state> - </entityField> - <entityConsumer> - <name>KeywordProductGroupcodes</name> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/keywordquantityunits/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>Products</name> - <fieldType>DEPENDENCY_OUT</fieldType> - <dependency> - <name>dependency</name> - <entityName>Product_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> - </entityConsumer> - </entityFields> - <recordContainers> - <dbRecordContainer> - <name>db</name> - <alias>Data_alias</alias> - <maximumDbRows v="0" /> - <conditionProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js</conditionProcess> - <orderClauseProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> - <onDBInsert>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js</onDBInsert> - <onDBUpdate>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> - <onDBDelete>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js</onDBDelete> - <linkInformation> - <linkInformation> - <name>1894a7fa-bc31-43c2-9ba9-d432892efdaa</name> - <tableName>OFFERITEM</tableName> - <primaryKey>OFFERITEMID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>ASSIGNEDTO.value</name> - <recordfield>OFFERITEM.ASSIGNEDTO</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DISCOUNT.value</name> - <recordfield>OFFERITEM.DISCOUNT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>GROUPCODEID.value</name> - <recordfield>OFFERITEM.GROUPCODEID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ITEMNAME.value</name> - <recordfield>OFFERITEM.ITEMNAME</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ITEMPOSITION.value</name> - <recordfield>OFFERITEM.ITEMPOSITION</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>ITEMSORT.value</name> - <recordfield>OFFERITEM.ITEMSORT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OFFERITEMID.value</name> - <recordfield>OFFERITEM.OFFERITEMID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OFFER_ID.value</name> - <recordfield>OFFERITEM.OFFER_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OPTIONAL.value</name> - <recordfield>OFFERITEM.OPTIONAL</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PRICE.value</name> - <recordfield>OFFERITEM.PRICE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PRODUCT_ID.value</name> - <recordfield>OFFERITEM.PRODUCT_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>QUANTITY.value</name> - <recordfield>OFFERITEM.QUANTITY</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>UNIT.value</name> - <recordfield>OFFERITEM.UNIT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>VAT.value</name> - <recordfield>OFFERITEM.VAT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>INFO.value</name> - <recordfield>OFFERITEM.INFO</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>GROUPCODEID.displayValue</name> - <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/groupcodeid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>UNIT.displayValue</name> - <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/unit.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>PRODUCT_ID.displayValue</name> - <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> - </recordContainers> -</entity> +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0"> + <name>Offeritem_entity</name> + <title>Offeritem</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Offeritem_entity/documentation.adoc</documentation> + <afterOperatingState>%aditoprj%/entity/Offeritem_entity/afterOperatingState.js</afterOperatingState> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>ASSIGNEDTO</name> + </entityField> + <entityField> + <name>DISCOUNT</name> + <title>Discount %</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0</outputFormat> + </entityField> + <entityField> + <name>GROUPCODEID</name> + <title>Commodity group</title> + <consumer>KeywordProductGroupcodes</consumer> + <state>READONLY</state> + <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>ITEMNAME</name> + <title>Designation</title> + </entityField> + <entityField> + <name>ITEMPOSITION</name> + <title>Position</title> + <state>READONLY</state> + </entityField> + <entityField> + <name>ITEMSORT</name> + </entityField> + <entityField> + <name>OFFERITEMID</name> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offeritemid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>OFFER_ID</name> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offer_id/valueProcess.js</valueProcess> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>OPTIONAL</name> + <title>Optional</title> + <contentType>BOOLEAN</contentType> + <possibleItemsProcess>%aditoprj%/entity/Offeritem_entity/entityfields/optional/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/optional/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PRICE</name> + <title>Unit price</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + </entityField> + <entityField> + <name>PRODUCT_ID</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/documentation.adoc</documentation> + <title>Article</title> + <consumer>Products</consumer> + <linkedContext>Product</linkedContext> + <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js</displayValueProcess> + <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>QUANTITY</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/documentation.adoc</documentation> + <title>Quantity</title> + <contentType>NUMBER</contentType> + <outputFormat>#</outputFormat> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/valueProcess.js</valueProcess> + <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValidation.js</onValidation> + <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>UNIT</name> + <title>Unit</title> + <consumer>KeywordQuantityUnits</consumer> + <state>READONLY</state> + <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/unit/displayValueProcess.js</displayValueProcess> + <onValueChangeTypes> + <element>PROCESS</element> + <element>MASK</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>VAT</name> + <title>VAT in %</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + <state>READONLY</state> + </entityField> + <entityParameter> + <name>OfferId_param</name> + <expose v="true" /> + <triggerRecalculation v="true" /> + <mandatory v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <triggerRecalculation v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityParameter> + <name>Currency_param</name> + <expose v="true" /> + <triggerRecalculation v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityField> + <name>TotalPrice</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/totalprice/documentation.adoc</documentation> + <title>Sum</title> + <contentType>NUMBER</contentType> + <outputFormat>#,##0.00</outputFormat> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/totalprice/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>IMAGE</name> + <contentType>IMAGE</contentType> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/image/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>OfferStatus_param</name> + <expose v="true" /> + <triggerRecalculation v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityProvider> + <name>OfferItems</name> + <fieldType>DEPENDENCY_IN</fieldType> + <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> + <entityName>Offer_entity</entityName> + <fieldName>Offeritems</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Currency_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>OfferId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>OfferStatus_param</name> + <expose v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityField> + <name>INFO</name> + <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/info/documentation.adoc</documentation> + <title>Note</title> + <contentType>LONG_TEXT</contentType> + <state>READONLY</state> + </entityField> + <entityConsumer> + <name>KeywordProductGroupcodes</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/keywordquantityunits/children/containername_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Products</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>Product_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <maximumDbRows v="0" /> + <conditionProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBInsert>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <onDBDelete>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js</onDBDelete> + <linkInformation> + <linkInformation> + <name>1894a7fa-bc31-43c2-9ba9-d432892efdaa</name> + <tableName>OFFERITEM</tableName> + <primaryKey>OFFERITEMID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>ASSIGNEDTO.value</name> + <recordfield>OFFERITEM.ASSIGNEDTO</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DISCOUNT.value</name> + <recordfield>OFFERITEM.DISCOUNT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>GROUPCODEID.value</name> + <recordfield>OFFERITEM.GROUPCODEID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ITEMNAME.value</name> + <recordfield>OFFERITEM.ITEMNAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ITEMPOSITION.value</name> + <recordfield>OFFERITEM.ITEMPOSITION</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ITEMSORT.value</name> + <recordfield>OFFERITEM.ITEMSORT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OFFERITEMID.value</name> + <recordfield>OFFERITEM.OFFERITEMID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OFFER_ID.value</name> + <recordfield>OFFERITEM.OFFER_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OPTIONAL.value</name> + <recordfield>OFFERITEM.OPTIONAL</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PRICE.value</name> + <recordfield>OFFERITEM.PRICE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PRODUCT_ID.value</name> + <recordfield>OFFERITEM.PRODUCT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>QUANTITY.value</name> + <recordfield>OFFERITEM.QUANTITY</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>UNIT.value</name> + <recordfield>OFFERITEM.UNIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>VAT.value</name> + <recordfield>OFFERITEM.VAT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>INFO.value</name> + <recordfield>OFFERITEM.INFO</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>GROUPCODEID.displayValue</name> + <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/groupcodeid.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>UNIT.displayValue</name> + <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/unit.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PRODUCT_ID.displayValue</name> + <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/Offeritem_entity/entityfields/offeritems/children/currency_param/valueProcess.js b/entity/Offeritem_entity/entityfields/offeritems/children/currency_param/valueProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index cbf15c42b4556e833a57da1f19477f8db5dce923..a1bfbf3da6a45cd9e66a135767a1c65be48377a6 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -372,6 +372,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <expose v="true" /> <mandatory v="true" /> </entityParameter> + <entityParameter> + <name>ExcludedContactIds_param</name> + <expose v="false" /> + </entityParameter> </children> </entityProvider> <entityConsumer> @@ -691,14 +695,20 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <entityField> <name>DEPARTMENT</name> <title>Department</title> + <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/department/possibleItemsProcess.js</possibleItemsProcess> + <newItemsAllowed v="true" /> </entityField> <entityField> <name>POSITION</name> <title>Position</title> + <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/position/possibleItemsProcess.js</possibleItemsProcess> + <newItemsAllowed v="true" /> </entityField> <entityField> <name>CONTACTROLE</name> <title>Contactrole</title> + <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js</possibleItemsProcess> + <newItemsAllowed v="true" /> </entityField> <entityConsumer> <name>OtherContacts</name> @@ -716,17 +726,20 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> </children> </entityConsumer> + <entityField> + <name>ORGANISATION_NAME</name> + </entityField> <entityParameter> - <name>SalesprojectId_param</name> + <name>ExcludedContactIds_param</name> <expose v="true" /> <description>PARAMETER</description> </entityParameter> <entityProvider> - <name>SalesprojectMemberContact</name> + <name>Contacts</name> <fieldType>DEPENDENCY_IN</fieldType> <dependencies> <entityDependency> - <name>a6372a65-6cbe-4a8e-b428-f77b7f1ea4db</name> + <name>75f0e309-8b3f-4224-b599-a203405f1bff</name> <entityName>SalesprojectMember_entity</entityName> <fieldName>Contacts</fieldName> <isConsumer v="false" /> @@ -734,11 +747,20 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </dependencies> <children> <entityParameter> - <name>SalesprojectId_param</name> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ExcludedContactIds_param</name> <expose v="true" /> </entityParameter> + <entityParameter> + <name>OrgId_param</name> + <expose v="false" /> + </entityParameter> </children> </entityProvider> +<<<<<<< HEAD <entityField> <name>ORGANISATION_NAME</name> </entityField> @@ -758,6 +780,8 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> </children> </entityConsumer> +======= +>>>>>>> e6bff1f416a5ecb607992832678b33fe6b6a0084 </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js b/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..96627ddf00215d0598ae85d2452acfd248cbe52a --- /dev/null +++ b/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactContactrole()).map(function (e){ + return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers +}); + +result.object(res); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/department/possibleItemsProcess.js b/entity/Person_entity/entityfields/department/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..77d99fa219eb36618f38dbb344e4a345bb71d331 --- /dev/null +++ b/entity/Person_entity/entityfields/department/possibleItemsProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactDepartment()).map(function (e){ + return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers +}); + +result.object(res); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/position/possibleItemsProcess.js b/entity/Person_entity/entityfields/position/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a86d6820913b759ac976779f9c045378095b6d24 --- /dev/null +++ b/entity/Person_entity/entityfields/position/possibleItemsProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactPosition()).map(function (e){ + return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers +}); + +result.object(res); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js index 77acb02a09f3d362a1d26dde8ecf05ee28a2d291..47f1ee35510663ddbb914ef4dd4f25988d323560 100644 --- a/entity/Person_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js @@ -4,13 +4,27 @@ import("system.result"); import("Sql_lib"); var cond = new SqlCondition(); -cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param"); -cond.andPrepareVars("PERSON.CONTACT_ID", "$param.ContactId_param"); +cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param") + .andPrepareVars("PERSON.CONTACT_ID", "$param.ContactId_param"); +if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedContactIds_param")) +{ + var excludedContacts = JSON.parse(vars.get("$param.ExcludedContactIds_param")); + var excludedCond = SqlCondition.begin(); + + excludedContacts.forEach(function(pContactId) + { + excludedCond.andPrepare("CONTACT.CONTACTID", pContactId, "#<>?"); + }); + + cond.andSqlCondition(excludedCond, "1=1"); +} + +/* //in salesprojectMember, only people that aren't already in the salesproject should be selectable cond.andPrepareVars("PERSON.PERSONID", "$param.SalesprojectId_param", "# not in (select CONTACT.PERSON_ID from SALESPROJECT_MEMBER join CONTACT on SALESPROJECT_MEMBER.CONTACT_ID = CONTACT.CONTACTID " + " where SALESPROJECT_MEMBER.SALESPROJECT_ID = ?)"); - +*/ //TODO: use a preparedCondition when available #1030812 #1034026 -result.string(db.translateCondition(cond.build("1 = 1"))); \ No newline at end of file +result.string(db.translateCondition(cond.build("1 = 1"))); diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod index 80bbc2d7cd34083d96453057c56a151d3d7bea88..78d288fbd064f2aa42f6a4d8823fb3362f34dfeb 100644 --- a/entity/Prod2prod_entity/Prod2prod_entity.aod +++ b/entity/Prod2prod_entity/Prod2prod_entity.aod @@ -52,11 +52,6 @@ <triggerRecalculation v="true" /> <description>PARAMETER</description> </entityParameter> - <entityField> - <name>PARENTID</name> - <title>Parent</title> - <groupable v="true" /> - </entityField> <entityField> <name>PROD2PRODID</name> <valueProcess>%aditoprj%/entity/Prod2prod_entity/entityfields/prod2prodid/valueProcess.js</valueProcess> @@ -145,6 +140,9 @@ <element>QUANTITY.value</element> <element>PRODUCTCODE.value</element> <element>PRODUCTID.value</element> + <element>PROD2PRODID.value</element> + <element>OPTIONAL.value</element> + <element>TAKEPRICE.value</element> </recordFields> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js index 2e71e4c9dd769dfb2ac8d258de4574683599ad0d..eeef1e962f6196a9eb632698f6860c216068cb51 100644 --- a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js @@ -119,7 +119,7 @@ if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) if(prodid != "") { // First 3 columns are crucial, the rest is optional. - var data = db.table("select PROD2PRODID, SOURCE_ID, DEST_ID, QUANTITY, PRODUCTCODE, PRODUCTID " + var data = db.table("select PROD2PRODID, SOURCE_ID, DEST_ID, QUANTITY, PRODUCTCODE, PRODUCTID, PROD2PRODID, OPTIONAL, TAKEPRICE " + "from PROD2PROD join PRODUCT on PROD2PROD.SOURCE_ID = PRODUCTID " + "order by PRODUCTCODE"); diff --git a/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js b/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js index 75472b57594f5b0bfac9304d844e36c49cd92f69..3f5b37d8a09c58c04eb400f106a90a33be140cdd 100644 --- a/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js +++ b/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js @@ -1,3 +1,4 @@ +import("system.vars"); import("system.neon"); import("system.db"); import("Sql_lib"); @@ -7,4 +8,4 @@ db.deleteData("PROD2PROD", SqlCondition.begin() .build("1=2")); // Refresh otherwise the children of the deleted node would be moved to the root. -neon.refresh() \ No newline at end of file +neon.refresh(); \ No newline at end of file diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod index bdd5fa2a86d27e88650268b235c03f7846d46d3a..0df2e74d7c286b06191944b2c34905f90ccf6324 100644 --- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod +++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod @@ -219,6 +219,7 @@ <name>Attributes</name> <title>Attributes</title> <fieldType>DEPENDENCY_OUT</fieldType> + <state>DISABLED</state> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> @@ -228,17 +229,15 @@ <entityParameter> <name>FilteredAttributeIds_param</name> <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/filteredattributeids_param/valueProcess.js</valueProcess> - <expose v="false" /> </entityParameter> <entityParameter> <name>ObjectRowId_param</name> <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> - <expose v="false" /> + <triggerRecalculation v="true" /> </entityParameter> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> - <expose v="false" /> </entityParameter> <entityParameter> <name>DisplaySimpleName_param</name> diff --git a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js index 41202c0153c75fda1c5eb90ea3a2f09178ba6df9..9acfa14adab3e82729a6f5f57b0aa1b4b1bbadad 100644 --- a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js +++ b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js @@ -1,3 +1,7 @@ +import("system.vars"); import("system.result"); -result.string("Organisation"); +if (vars.get("$field.CONTACT_ID")) + result.string("Organisation"); +else + result.string("true"); \ No newline at end of file diff --git a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod index 94831ab56859425d402f96d06a02b076ae682e80..34540f9d1108c7c08cfefad0eaf52bb364a250b3 100644 --- a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod +++ b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod @@ -137,12 +137,12 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt <dependency> <name>dependency</name> <entityName>Person_entity</entityName> - <fieldName>SalesprojectMemberContact</fieldName> + <fieldName>Contacts</fieldName> </dependency> <children> <entityParameter> - <name>SalesprojectId_param</name> - <valueProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/contacts/children/salesprojectid_param/valueProcess.js</valueProcess> + <name>ExcludedContactIds_param</name> + <valueProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> </entityConsumer> diff --git a/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js b/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..35ca5d0cce0f248a842d75e8ee8d987dee71646c --- /dev/null +++ b/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js @@ -0,0 +1,13 @@ +import("system.logging"); +import("system.result"); +import("system.vars"); +import("system.db"); +import("Sql_lib"); + +logging.log(db.array(db.COLUMN, SqlCondition.begin() + .andPrepare("SALESPROJECT_MEMBER.SALESPROJECT_ID", vars.get("$field.SALESPROJECT_ID")) + .buildSql("select CONTACT_ID from SALESPROJECT_MEMBER", "1=2")).toSource()) +result.object(db.array(db.COLUMN, SqlCondition.begin() + .andPrepare("SALESPROJECT_MEMBER.SALESPROJECT_ID", vars.get("$field.SALESPROJECT_ID")) + .buildSql("select CONTACT_ID from SALESPROJECT_MEMBER", "1=2"))); + \ No newline at end of file diff --git a/entity/SalesprojectMember_entity/entityfields/contacts/children/salesprojectid_param/valueProcess.js b/entity/SalesprojectMember_entity/entityfields/contacts/children/salesprojectid_param/valueProcess.js deleted file mode 100644 index 0456b23233a1ace988306c88ab36b7a26030d519..0000000000000000000000000000000000000000 --- a/entity/SalesprojectMember_entity/entityfields/contacts/children/salesprojectid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.SALESPROJECT_ID")); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js index ee76682f8edea5a240eab30e4a8dffdfe66ac907..0dde82e7728286629b1c210326725aac2ebb92c5 100644 --- a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js +++ b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js @@ -3,5 +3,6 @@ import("system.vars"); import("Contact_lib"); var id = vars.get("$this.value"); -var title = ContactUtils.getFullTitleByContactId(id); +//show the simpel title since this will be later an employee-entry and therefore no organisation is needed +var title = ContactUtils.getTitleByContactId(id); result.string(title); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js index ee76682f8edea5a240eab30e4a8dffdfe66ac907..0dde82e7728286629b1c210326725aac2ebb92c5 100644 --- a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js +++ b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js @@ -3,5 +3,6 @@ import("system.vars"); import("Contact_lib"); var id = vars.get("$this.value"); -var title = ContactUtils.getFullTitleByContactId(id); +//show the simpel title since this will be later an employee-entry and therefore no organisation is needed +var title = ContactUtils.getTitleByContactId(id); result.string(title); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/onDBDelete.js b/entity/Task_entity/recordcontainers/db/onDBDelete.js index 7857f671302c87c59f3123e3329ff7057a6b0e20..d19d38f6e972d7759782100f4a94d41fd3dd7944 100644 --- a/entity/Task_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Task_entity/recordcontainers/db/onDBDelete.js @@ -5,5 +5,4 @@ import("Sql_lib"); var condition = SqlCondition.begin() .andPrepareVars("TASKLINK.TASK_ID", "$field.TASKID"); -db.deleteData("TASKLINK", condition.build("1=2")); - +db.deleteData("TASKLINK", condition.build("1=2")); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 39ba8770d5698323c9bcad7982bea1b4cb7274e1..737d12613926001907d83bf7b8c148ca47db7db4 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -1164,9 +1164,6 @@ <entry> <key>Attribute Usage</key> </entry> - <entry> - <key>Beziehung</key> - </entry> <entry> <key>Key</key> </entry> @@ -2581,13 +2578,52 @@ <key>New module</key> </entry> <entry> - <key>New salesproject</key> + <key>Time in minutes</key> </entry> <entry> - <key>New contract</key> + <key>Sales manager</key> </entry> <entry> - <key>Time in minutes</key> + <key>IT</key> + </entry> + <entry> + <key>Administrator</key> + </entry> + <entry> + <key>Managing director</key> + </entry> + <entry> + <key>Production manager</key> + </entry> + <entry> + <key>Production</key> + </entry> + <entry> + <key>CEO</key> + </entry> + <entry> + <key>Purchasing manager</key> + </entry> + <entry> + <key>Marketing manager</key> + </entry> + <entry> + <key>IT manager</key> + </entry> + <entry> + <key>Marketing</key> + </entry> + <entry> + <key>CSO</key> + </entry> + <entry> + <key>Executive board</key> + </entry> + <entry> + <key>Supervisory board</key> + </entry> + <entry> + <key>Management</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 499739e2d4cd025ce39e85af70c718a6f99e0238..61efa9f24ab8eda804250b23e1f55e8cd9995715 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -42,10 +42,6 @@ <key>Show all activities</key> <value>Alle Aktivitäten anzeigen</value> </entry> - <entry> - <key>New contract</key> - <value>Neuer Vertrag</value> - </entry> <entry> <key>${ADDRESS_STATE}</key> <value>Staat</value> @@ -1610,9 +1606,6 @@ <key>Attribute Usage</key> <value>Eigenschaftsverwendung</value> </entry> - <entry> - <key>Beziehung</key> - </entry> <entry> <key>Key</key> </entry> @@ -1864,10 +1857,6 @@ <key>Cabo Verde</key> <value>Cabo Verde</value> </entry> - <entry> - <key>New salesproject</key> - <value>Neues Vertriebsprojekt</value> - </entry> <entry> <key>Ecuador</key> <value>Ecuador</value> @@ -3335,6 +3324,60 @@ <key>Time in minutes</key> <value>Zeit in Minuten</value> </entry> + <entry> + <key>Sales manager</key> + <value>Vertriebsleiter</value> + </entry> + <entry> + <key>IT</key> + </entry> + <entry> + <key>Administrator</key> + </entry> + <entry> + <key>Managing director</key> + <value>Geschäftsführer</value> + </entry> + <entry> + <key>Production manager</key> + <value>Produktionsleiter</value> + </entry> + <entry> + <key>Production</key> + <value>Produktion</value> + </entry> + <entry> + <key>CEO</key> + </entry> + <entry> + <key>Purchasing manager</key> + <value>Einkaufsleiter</value> + </entry> + <entry> + <key>Marketing manager</key> + <value>Marketingleiter</value> + </entry> + <entry> + <key>IT manager</key> + <value>IT-Leiter</value> + </entry> + <entry> + <key>Marketing</key> + </entry> + <entry> + <key>CSO</key> + </entry> + <entry> + <key>Executive board</key> + <value>Vorstand</value> + </entry> + <entry> + <key>Supervisory board</key> + <value>Aufsichtsrat</value> + </entry> + <entry> + <key>Management</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 39e9b302cf5d3d120975c2f8fdbf0c46f23d6660..de4f31a483976ce8aff9c6f97b8cd1d2e2324ceb 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -521,7 +521,7 @@ </entry> <entry> <key>${EURO_SIGN}</key> - <value>�</value> + <value>?</value> </entry> <entry> <key>Planned</key> @@ -1184,9 +1184,6 @@ <entry> <key>Attribute Usage</key> </entry> - <entry> - <key>Beziehung</key> - </entry> <entry> <key>Key</key> </entry> @@ -1217,9 +1214,6 @@ <entry> <key>Context name</key> </entry> - <entry> - <key>Schlüsselwort</key> - </entry> <entry> <key>Cambodia</key> </entry> @@ -1307,9 +1301,6 @@ <entry> <key>Jordan</key> </entry> - <entry> - <key>Côte d'Ivoire</key> - </entry> <entry> <key>United Arab Emirates</key> </entry> @@ -1677,9 +1668,6 @@ <entry> <key>Kazakhstan</key> </entry> - <entry> - <key>Åland Islands</key> - </entry> <entry> <key>Bahamas</key> </entry> @@ -1958,9 +1946,6 @@ <entry> <key>Ukraine</key> </entry> - <entry> - <key>Curaçao</key> - </entry> <entry> <key>Anguilla</key> </entry> @@ -2057,9 +2042,6 @@ <entry> <key>ended</key> </entry> - <entry> - <key>Saint Barthélemy</key> - </entry> <entry> <key>Wallis and Futuna</key> </entry> @@ -2075,9 +2057,6 @@ <entry> <key>Hungary</key> </entry> - <entry> - <key>Réunion</key> - </entry> <entry> <key>Japan</key> </entry> @@ -2484,9 +2463,6 @@ <entry> <key>Other Contactroles</key> </entry> - <entry> - <key>Bitte Datumseingabe prüfen!</key> - </entry> <entry> <key>In Bearbeitung</key> </entry> @@ -2499,12 +2475,6 @@ <entry> <key>Bitte Filterbedingungen setzen</key> </entry> - <entry> - <key>Bestätigt</key> - </entry> - <entry> - <key>Vorläufig</key> - </entry> <entry> <key>keine</key> </entry> @@ -2517,18 +2487,12 @@ <entry> <key>&Aufgaben (%0)</key> </entry> - <entry> - <key>erledigt / zurückgestellt</key> - </entry> <entry> <key>hoch</key> </entry> <entry> <key>Keine Berechtigung zum Verschieben der Aufgabe</key> </entry> - <entry> - <key>Zurückgestellt</key> - </entry> <entry> <key>Erledigt</key> </entry> @@ -2538,24 +2502,15 @@ <entry> <key>Abgesagt</key> </entry> - <entry> - <key>Außer Haus</key> - </entry> <entry> <key>Abbrechen</key> </entry> - <entry> - <key>Benutzer auswählen</key> - </entry> <entry> <key>delegiert</key> </entry> <entry> <key>frei</key> </entry> - <entry> - <key>Kein Weitergeben von privaten Aufgaben möglich!</key> - </entry> <entry> <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key> </entry> @@ -2605,14 +2560,95 @@ <entry> <key>Time in minutes</key> </entry> + <entry> + <key>Sales manager</key> + </entry> + <entry> + <key>IT</key> + </entry> + <entry> + <key>Administrator</key> + </entry> + <entry> + <key>Managing director</key> + </entry> + <entry> + <key>Production manager</key> + </entry> + <entry> + <key>Production</key> + </entry> + <entry> + <key>CEO</key> + </entry> + <entry> + <key>Purchasing manager</key> + </entry> + <entry> + <key>Marketing manager</key> + </entry> + <entry> + <key>IT manager</key> + </entry> + <entry> + <key>Marketing</key> + </entry> + <entry> + <key>CSO</key> + </entry> + <entry> + <key>Executive board</key> + </entry> + <entry> + <key>Supervisory board</key> + </entry> + <entry> + <key>Management</key> + </entry> <entry> <key>New module</key> </entry> <entry> - <key>New salesproject</key> + <key>Côte d'Ivoire</key> + </entry> + <entry> + <key>Bitte Datumseingabe prüfen!</key> + </entry> + <entry> + <key>Bestätigt</key> + </entry> + <entry> + <key>Vorläufig</key> + </entry> + <entry> + <key>Saint Barthélemy</key> + </entry> + <entry> + <key>erledigt / zurückgestellt</key> + </entry> + <entry> + <key>Zurückgestellt</key> + </entry> + <entry> + <key>Außer Haus</key> + </entry> + <entry> + <key>Benutzer auswählen</key> + </entry> + <entry> + <key>Åland Islands</key> + </entry> + <entry> + <key>Kein Weitergeben von privaten Aufgaben möglich!</key> </entry> <entry> - <key>New contract</key> + <key>Curaçao</key> + </entry> + <entry> + <key>Schlüsselwort</key> + </entry> + <entry> + <key>Réunion</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index 8bd1c5f25d7e107d260c2752f565a3fa913f71ac..edf7596f2f4c18361445c97edeffb08b8f034e8d 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -27,7 +27,7 @@ <name>SendOffersDashlet</name> <title>Sent offers</title> <description>Show all sent offers</description> - <fragment>Offer/filter?search=W3sibmFtZSI6IlNUQVRVUyIsIm9wZXJhdG9yIjoiRVFVQUwiLCJ2YWx1ZUtleSI6IjIiLCJ2YWx1ZSI6IlZlcnNlbmRldCIsImNvbnRlbnRUeXBlIjoiVEVYVCJ9XQ%253D%253D</fragment> + <fragment>Offer/filter?search=W3sibmFtZSI6IlNUQVRVUyIsIm9wZXJhdG9yIjoiRVFVQUwiLCJ2YWx1ZSI6ImU1ZDZiNWE0LTc1NzYtNDQwZi04MzMyLWJjNDAxNDdjMDMzNSIsImNvbnRlbnRUeXBlIjoiVEVYVCJ9XQ%253D%253D</fragment> <singleton v="true" /> <requiresConfiguration v="false" /> <icon>vaadin:cart</icon> diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod index 55ea2a761ba85c258981ef0ce2ca8c6e21d23f12..97dfc7bb74265146568a0df9e75d2a15833e6f8b 100644 --- a/neonView/PersonEdit_view/PersonEdit_view.aod +++ b/neonView/PersonEdit_view/PersonEdit_view.aod @@ -57,6 +57,18 @@ <name>f8ec0e41-7ead-4c80-878c-df75ce5fce34</name> <entityField>STATUS</entityField> </entityFieldLink> + <entityFieldLink> + <name>16b3b029-eed3-45b7-94b0-446c89d70594</name> + <entityField>DEPARTMENT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>720ba110-faa2-4c64-823b-82a2089f337c</name> + <entityField>CONTACTROLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>7bad6e30-fda3-4ee4-858c-712a60437397</name> + <entityField>POSITION</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <neonViewReference> diff --git a/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod b/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod index badeadd20fbc20a68526aec3aa629834da7c35d5..16ddeeaa248d7712b685e16dc2f590662dfe4796 100644 --- a/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod +++ b/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod @@ -51,10 +51,5 @@ </entityFieldLink> </fields> </genericViewTemplate> - <neonViewReference> - <name>cba34c27-9abf-416b-99fc-f7e91bd3669c</name> - <entityField>Attributes</entityField> - <view>AttributeRelationEdit_view</view> - </neonViewReference> </children> </neonView> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index 5baa8af9d1972faee567f460d1e03c380063d9f2..1ea48c8e825f65023b66ea0231761b4a8747a445 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -27,7 +27,7 @@ <name>OpenSalesprojectsDashlet</name> <title>Open salesprojects</title> <description>Show open salesprojects</description> - <fragment>Salesproject/filter?search=W3sibmFtZSI6IlNUQVRFIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlS2V5IjoiMSIsInZhbHVlIjoiT2ZmZW4iLCJjb250ZW50VHlwZSI6IlRFWFQifV0%253D</fragment> + <fragment>Salesproject/filter?search=W3sibmFtZSI6IlNUQVRFIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlIjoiMjViMGFjNzctZWY5Mi00ODA5LTgwMmUtYmI5ZDg3ODJmODY1IiwiY29udGVudFR5cGUiOiJURVhUIn1d</fragment> <singleton v="true" /> <requiresConfiguration v="false" /> <icon>vaadin:filter</icon> diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactContactrole.xml b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactContactrole.xml new file mode 100644 index 0000000000000000000000000000000000000000..e63bb7ba7d4a32faf22bc6e1f01365c7672d7b33 --- /dev/null +++ b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactContactrole.xml @@ -0,0 +1,135 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="j.goderbauer" id="88938510-188f-4814-b25d-0b5e393cd837"> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="767b89c6-2461-4d0e-9b7a-dda33e5090c9"/> + + <column name="KEYID" value="47abd1f8-d449-4d81-9e6d-c48783119b0b"/> + <column name="TITLE" value="Managing director"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="0"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="2fa7cddb-1e2c-438f-8f16-92f245af09f4"/> + + <column name="KEYID" value="07ec8a18-c830-4982-a4c6-d2795841b07a"/> + <column name="TITLE" value="Purchasing manager"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="67ea4d33-b683-4a04-b2e3-4af54d6debcb"/> + + <column name="KEYID" value="91411987-8700-43d7-a101-4bd375c6e3af"/> + <column name="TITLE" value="Executive board"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="d7be200e-ffc0-47a7-b0bb-3da92f39b993"/> + + <column name="KEYID" value="bd0c1b58-6c8c-42a4-b68b-7099ef05bc0e"/> + <column name="TITLE" value="Marketing manager"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="3"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="3b836d42-9ecf-49b9-8df9-570c27860c01"/> + + <column name="KEYID" value="97d0d10d-14a2-4d85-908d-ea14624b2bfd"/> + <column name="TITLE" value="Sales manager"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="4"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="2a4e6516-8493-4dde-a9df-bf2efd4db0c8"/> + + <column name="KEYID" value="9c3aea50-b402-4e51-b48d-bfc50c107232"/> + <column name="TITLE" value="Supervisory board"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="5"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="3e7f2a42-ad8b-48da-aa11-95525ca36d01"/> + + <column name="KEYID" value="7b71b7e0-fb4a-4557-a4ab-7122574b292b"/> + <column name="TITLE" value="Administrator"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="6"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="11c05d41-78ec-4d7c-acbe-f94912f2386c"/> + + <column name="KEYID" value="6d6f2261-2dbd-445a-9189-18418e7c44ef"/> + <column name="TITLE" value="IT manager"/> + <column name="CONTAINER" value="ContactContactrole"/> + <column name="SORTING" valueNumeric="7"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <rollback> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="767b89c6-2461-4d0e-9b7a-dda33e5090c9" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="2fa7cddb-1e2c-438f-8f16-92f245af09f4" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="67ea4d33-b683-4a04-b2e3-4af54d6debcb" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="d7be200e-ffc0-47a7-b0bb-3da92f39b993" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="3b836d42-9ecf-49b9-8df9-570c27860c01" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="2a4e6516-8493-4dde-a9df-bf2efd4db0c8" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="3e7f2a42-ad8b-48da-aa11-95525ca36d01" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="11c05d41-78ec-4d7c-acbe-f94912f2386c" /> + </whereParams> + </delete> + </rollback> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactDepartment.xml b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactDepartment.xml new file mode 100644 index 0000000000000000000000000000000000000000..15f81f525dd0bcdd343a3849029af4d14c32df4b --- /dev/null +++ b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactDepartment.xml @@ -0,0 +1,87 @@ +<?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="88938510-188f-4814-b25d-0b5e393cd837"> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="75bd97bc-56f3-4ea3-a132-df3cb9cda071"/> + + <column name="KEYID" value="c58a028c-772a-444f-8109-37cfde3f60a0"/> + <column name="TITLE" value="Management"/> + <column name="CONTAINER" value="ContactDepartment"/> + <column name="SORTING" valueNumeric="0"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="6e30d397-e31f-4ccb-96e9-51cf71d259fa"/> + + <column name="KEYID" value="afc7a9b8-895d-41b9-b68c-e1bdb8ba878f"/> + <column name="TITLE" value="Sales"/> + <column name="CONTAINER" value="ContactDepartment"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="722e83bc-148a-4762-abda-d491bf590bd5"/> + + <column name="KEYID" value="e00eb3fc-2c8d-46a9-990a-ed2bf1948ffe"/> + <column name="TITLE" value="Production"/> + <column name="CONTAINER" value="ContactDepartment"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="191617b2-09cc-4fe6-bc02-1cee746285d5"/> + + <column name="KEYID" value="bde6d083-517e-45bd-8326-d84e7f8aeba0"/> + <column name="TITLE" value="Marketing"/> + <column name="CONTAINER" value="ContactDepartment"/> + <column name="SORTING" valueNumeric="3"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="87f97554-c335-4328-911a-345d8a9abd7d"/> + + <column name="KEYID" value="b1113c19-2f1f-4d0a-806e-b0165ecc1b4a"/> + <column name="TITLE" value="IT"/> + <column name="CONTAINER" value="ContactDepartment"/> + <column name="SORTING" valueNumeric="4"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <rollback> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="75bd97bc-56f3-4ea3-a132-df3cb9cda071" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="6e30d397-e31f-4ccb-96e9-51cf71d259fa" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="722e83bc-148a-4762-abda-d491bf590bd5" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="191617b2-09cc-4fe6-bc02-1cee746285d5" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="87f97554-c335-4328-911a-345d8a9abd7d" /> + </whereParams> + </delete> + </rollback> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactPosition.xml b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactPosition.xml new file mode 100644 index 0000000000000000000000000000000000000000..136f8bbd47dc2b9753b1cdb8d7d98cb2aa853673 --- /dev/null +++ b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ContactPosition.xml @@ -0,0 +1,55 @@ +<?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="88938510-188f-4814-b25d-0b5e393cd837"> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="ba369295-c717-48eb-ae76-314087375e06"/> + + <column name="KEYID" value="3308c1e5-cf4d-4934-86b7-981b8f026369"/> + <column name="TITLE" value="CEO"/> + <column name="CONTAINER" value="ContactPosition"/> + <column name="SORTING" valueNumeric="0"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="dcacb175-4c8a-4941-a417-69a971f52583"/> + + <column name="KEYID" value="a4952791-73e4-41a1-8a78-5a27640ff0fd"/> + <column name="TITLE" value="CSO"/> + <column name="CONTAINER" value="ContactPosition"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="1a508899-e2bf-409d-8a57-3ca31c9c832d"/> + + <column name="KEYID" value="77dcf148-112e-4251-8a0e-9e8bd811f0b7"/> + <column name="TITLE" value="Production manager"/> + <column name="CONTAINER" value="ContactPosition"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + <column name="ISESSENTIAL" valueNumeric="0"/> + </insert> + <rollback> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="ba369295-c717-48eb-ae76-314087375e06" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="dcacb175-4c8a-4941-a417-69a971f52583" /> + </whereParams> + </delete> + <delete tableName="AB_KEYWORD_ENTRY"> + <where>AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="1a508899-e2bf-409d-8a57-3ca31c9c832d" /> + </whereParams> + </delete> + </rollback> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/basic/2019.2/changelog.xml b/others/db_changes/data_alias/basic/2019.2/changelog.xml index a9809f5a9d599555454a49990cdae23d0fad8628..05f9a8b2d4e26926cc632f938986211609fa083a 100644 --- a/others/db_changes/data_alias/basic/2019.2/changelog.xml +++ b/others/db_changes/data_alias/basic/2019.2/changelog.xml @@ -105,4 +105,7 @@ <include relativeToChangelogFile="true" file="Salesproject_add_column.xml"/> <include relativeToChangelogFile="true" file="AditoBasic/update_Strength_Weakness.xml"/> + <include relativeToChangelogFile="true" file="AditoBasic/init_ContactDepartment.xml"/> + <include relativeToChangelogFile="true" file="AditoBasic/init_ContactContactrole.xml"/> + <include relativeToChangelogFile="true" file="AditoBasic/init_ContactPosition.xml"/> </databaseChangeLog> diff --git a/others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml b/others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml index db8fa70a9c5427c29c02f22db8e08f93f8fa83b5..448f72ab561a6f45d401d58e19b8f186882c1610 100644 --- a/others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml +++ b/others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml @@ -6,14 +6,14 @@ <insert tableName="AB_OBJECTRELATION"> <column name="AB_OBJECTRELATIONID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/> <column name="OBJECT1_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="OBJECT2_ROWID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="OBJECT2_ROWID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> <column name="AB_OBJECTRELATIONTYPE1" value="c74ad02c-1db9-4f47-8691-aba349dbe316"/> <column name="AB_OBJECTRELATIONTYPE2" value="b3b85332-1c86-4cd8-a3b9-34c49c51f01a"/> </insert> <insert tableName="AB_OBJECTRELATION"> <column name="AB_OBJECTRELATIONID" value="85ad4578-dce2-49df-a844-d162f1bd9f2f"/> <column name="OBJECT1_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/> - <column name="OBJECT2_ROWID" value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="OBJECT2_ROWID" value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf"/> <column name="AB_OBJECTRELATIONTYPE1" value="090f6adc-c2b8-44b7-8c61-39dbb5660aa0"/> <column name="AB_OBJECTRELATIONTYPE2" value="090f6adc-c2b8-44b7-8c61-39dbb5660aa0"/> </insert> diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml index 4c56d28a9fe6ffa708e17108b8a9e735ab4c999b..3d748a734c6d1c673e12d7edc2ef9afe85c11aa8 100644 --- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml +++ b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.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="PERSON"> - <column name="PERSONID" value="73d732ce-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSONID" value="7c1efe4c-cc73-4e95-bdf0-208a3ff699b5"/> <column name="FIRSTNAME" value="Jerome"/> <column name="MIDDLENAME"/> <column name="LASTNAME" value="Grüner"/> @@ -13,7 +13,7 @@ <insert tableName="CONTACT"> <column name="RELATIONSHIP" valueNumeric="1"/> <column name="LANGUAGE" value="deu"/> - <column name="PERSON_ID" value="73d732ce-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSON_ID" value="7c1efe4c-cc73-4e95-bdf0-208a3ff699b5"/> <column name="CONTACTID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="ORGANISATION_ID" value="0"/> <column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/> @@ -28,7 +28,7 @@ <delete tableName="PERSON"> <where>PERSONID = ?</where> <whereParams> - <param value="73d732ce-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="7c1efe4c-cc73-4e95-bdf0-208a3ff699b5" /> </whereParams> </delete> </rollback> diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml index 8b82284ee002bdc39792f40c57c34ec6e7f5e9d6..6eade59392e5f2120e1405d4e5d74cffa4bf68b6 100644 --- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml +++ b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.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="PERSON"> - <column name="PERSONID" value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSONID" value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf"/> <column name="FIRSTNAME" value="Ludwig"/> <column name="MIDDLENAME"/> <column name="LASTNAME" value="Kanzler"/> @@ -13,7 +13,7 @@ <insert tableName="CONTACT"> <column name="RELATIONSHIP" valueNumeric="1"/> <column name="LANGUAGE" value="deu"/> - <column name="PERSON_ID" value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSON_ID" value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf"/> <column name="CONTACTID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/> <column name="ORGANISATION_ID" value="0"/> <column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/> @@ -28,7 +28,7 @@ <delete tableName="PERSON"> <where>PERSONID = ?</where> <whereParams> - <param value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf" /> </whereParams> </delete> </rollback> diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml index 286d335285d3ba16b61bbc1137c9686c95e6842a..d14a4606b8a5cad89c9dff0ab250f2b61569d7f4 100644 --- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml +++ b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_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="PERSON"> - <column name="PERSONID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSONID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> <column name="FIRSTNAME" value="Birgit"/> <column name="MIDDLENAME"/> <column name="LASTNAME" value="Leicht"/> @@ -13,8 +13,8 @@ <insert tableName="CONTACT"> <column name="RELATIONSHIP" valueNumeric="1"/> <column name="LANGUAGE" value="deu"/> - <column name="PERSON_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="CONTACTID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSON_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> + <column name="CONTACTID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> <column name="ORGANISATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/> </insert> @@ -23,7 +23,7 @@ <column name="ADDR_TYPE" valueNumeric="2"/> <column name="CITY" value="Landshut"/> <column name="COUNTRY" value="DE"/> - <column name="CONTACT_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> <column name="ADDRIDENTIFIER" value=""/> <column name="REGION" value="Niederbayern"/> <column name="ADDRESSID" value="ce990566-3b86-48fe-bd0c-1167142e584b"/> @@ -38,7 +38,7 @@ <column name="ADDR_TYPE" valueNumeric="3"/> <column name="CITY" value="Landshut"/> <column name="COUNTRY" value="DE"/> - <column name="CONTACT_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/> <column name="ADDRIDENTIFIER" value=""/> <column name="REGION" value="Niederbayern"/> <column name="ADDRESSID" value="43b8aea1-2444-448f-87c5-f12fe1ef4ca0"/> @@ -52,19 +52,19 @@ <delete tableName="CONTACT"> <where>CONTACTID = ?</where> <whereParams> - <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> </whereParams> </delete> <delete tableName="PERSON"> <where>PERSONID = ?</where> <whereParams> - <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> </whereParams> </delete> <delete tableName="ADDRESS"> <where>CONTACT_ID = ?</where> <whereParams> - <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" /> </whereParams> </delete> </rollback> diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_muller.xml b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_muller.xml index 92325841d488cb250e60837236ed62834513e74e..a647b15464c1a77feaf6e539c5b0c6b9a6eec364 100644 --- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_muller.xml +++ b/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_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="PERSON"> - <column name="PERSONID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="PERSONID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> <column name="FIRSTNAME" value="Franz"/> <column name="MIDDLENAME"/> <column name="LASTNAME" value="Müller"/> @@ -13,8 +13,8 @@ <insert tableName="CONTACT"> <column name="RELATIONSHIP" valueNumeric="1"/> <column name="LANGUAGE" value="deu"/> - <column name="CONTACTID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> - <column name="PERSON_ID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/> + <column name="CONTACTID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> + <column name="PERSON_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/> <column name="ORGANISATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> <column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/> </insert> @@ -22,13 +22,13 @@ <delete tableName="CONTACT"> <where>CONTACTID = ?</where> <whereParams> - <param value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="f0fb7676-8183-4bc7-beca-ca32c1e11c10" /> </whereParams> </delete> <delete tableName="PERSON"> <where>PERSONID = ?</where> <whereParams> - <param value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1" /> + <param value="f0fb7676-8183-4bc7-beca-ca32c1e11c10" /> </whereParams> </delete> </rollback> diff --git a/process/ActivityTask_lib/process.js b/process/ActivityTask_lib/process.js index 421a419f4f090246ef1b6aefa40a865e54c1b3ba..4228e5d38db37b07d9a0329cc3577b69893815c2 100644 --- a/process/ActivityTask_lib/process.js +++ b/process/ActivityTask_lib/process.js @@ -165,7 +165,7 @@ _ActivityTaskUtils._addLinkRecords = function(pObjectIdField, pRowIdField, pAddi break; case "Task": presetLinks = presetLinks.concat(db.table(SqlCondition.begin() - .andPrepare("TASKLINK.ACTIVITY_ID", vars.get(pParentIdField)) + .andPrepare("TASKLINK.TASK_ID", vars.get(pParentIdField)) .buildSql("select OBJECT_TYPE, OBJECT_ROWID from TASKLINK", "1=2"))); break; } diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index fcd1ba99fa423c020c228d00f0d988c7f4ae650d..6614f1c74149370b5d9309558f6f797f8d6a5031 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -1,3 +1,5 @@ +import("system.logging"); +import("system.util"); import("system.datetime"); import("system.translate"); import("system.neon"); @@ -61,11 +63,15 @@ AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups, pFi * returns the name of an attribute with all parent attribute names * * @param {String} pAttributeId the id of the attribute + * @param {Boolean} [pSimpleName=false] Use only the name of the attribute and not the names of the parents. * * @return {String} the name of the attribute */ -AttributeUtil.getFullAttributeName = function (pAttributeId) +AttributeUtil.getFullAttributeName = function (pAttributeId, pSimpleName) { + if (pSimpleName == undefined) + pSimpleName = false; + if (!pAttributeId) return ""; var attributeNames = []; @@ -83,8 +89,8 @@ AttributeUtil.getFullAttributeName = function (pAttributeId) } else pAttributeId = ""; - } while (pAttributeId); - + } while (pAttributeId && !pSimpleName); + return attributeNames.reverse().join(" / "); } @@ -128,6 +134,28 @@ AttributeUtil.getAllChildren = function (pAttributeId) return childIds; } +/** + * checks if an attribute has attribute relations + * + * @param {String} pAttributeId the id of the attribute + * + * @result {boolean} true if it has relations + */ +AttributeUtil.hasRelations = function (pAttributeId) +{ + if (!pAttributeId) + return false; + return db.cell(SqlCondition.begin() + .andPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", pAttributeId) + .buildSql( + "select exists (" + + "select AB_ATTRIBUTERELATIONID from AB_ATTRIBUTERELATION " + + "where AB_ATTRIBUTE_ID = AB_ATTRIBUTEID" + + ") from AB_ATTRIBUTE", "1=2" + ) + ) == "true"; +} + /*********************************************************************************************************************/ /** @@ -482,3 +510,168 @@ AttributeTypeUtil.getTypeColumnIndex = function (pAttributeType) AttributeTypeUtil._initTypeColumnData(); return this._typeColumnMap[pAttributeType.trim()]; } + +/*********************************************************************************************************************/ + +/** + * Functions for AttributeUsages. + * Do not instanciate this! + * + * @class + */ +function AttributeUsageUtil () {} + +/** + * Creates AttributeUsages for all subordinate attributes of an attribute. + * This is required when an usage is added to a superordinate attribute. + * + * @param {String} pAttributeId the id of the superordinate attribute + * @param {String} pObjectType the context + */ +AttributeUsageUtil.insertChildrenUsages = function (pAttributeId, pObjectType) +{ + var table = "AB_ATTRIBUTEUSAGE"; + var columns = ["AB_ATTRIBUTEUSAGEID", "AB_ATTRIBUTE_ID", "OBJECT_TYPE"]; + var types = db.getColumnTypes(table, columns); + + var sqlSelect = "select AB_ATTRIBUTEID, " + + " exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID and OBJECT_TYPE = '" + + pObjectType + "') from AB_ATTRIBUTE"; + + var inserts = []; + _addInserts(pAttributeId, pObjectType); + db.inserts(inserts); + + function _addInserts (pAttributeId, pObjectType) + { + var condition = SqlCondition.begin() + .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") + .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); + var attributes = db.table(condition.buildSql(sqlSelect)); + + attributes.forEach(function (row) + { + if (row[1] != "true") + { + let values = [util.getNewUUID(), row[0], pObjectType]; + inserts.push([table, columns, types, values]); + } + _addInserts(row[0], pObjectType); + }); + } +} + +/** + * Updates AttributeUsages for all subordinate attributes of an attribute. + * This is required when an usage of a superordinate attribute is changed. + * + * @param {String} pAttributeId the id of the superordinate attribute + * @param {String} pOldObjectType ye olde context + * @param {String} pNewObjectType the new context + */ +AttributeUsageUtil.updateChildrenUsages = function (pAttributeId, pOldObjectType, pNewObjectType) +{ + if (!pNewObjectType) + return; + + var table = "AB_ATTRIBUTEUSAGE"; + + var sqlSelect = "select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, " + + " exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID and OBJECT_TYPE = '" + + pNewObjectType + "')" + + " from AB_ATTRIBUTE left join AB_ATTRIBUTEUSAGE on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID and OBJECT_TYPE = '" + pOldObjectType + "'"; + + var updateCond = SqlCondition.begin(); + + //it is possible that the new objectType is already in a subordinate attribute + //and an update could cause a duplicate entry so one has to be deleted + var deleteCond = SqlCondition.begin(); + + _addUpdateIds(pAttributeId, pOldObjectType); + + if (updateCond.isSet()) + db.updateData(table, ["OBJECT_TYPE"], null, [pNewObjectType], updateCond.build("1=2")); + if (deleteCond.isSet()) + db.deleteData(table, deleteCond.build("1=2")); + + function _addUpdateIds (pAttributeId) + { + var condition = SqlCondition.begin() + .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") + .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); + var attributes = db.table(condition.buildSql(sqlSelect)); + + attributes.forEach(function (row) + { + if (row[1] && row[2] == "true") + deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]); + else if (row[1]) + updateCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]); + _addUpdateIds(row[0]); + }); + } +} + +/** + * Deletes AttributeUsages for all subordinate attributes of an attribute. + * This is required when an usage is removed from a superordinate attribute. + * + * @param {String} pAttributeId the id of the superordinate attribute + * @param {String} pObjectType the context + */ +AttributeUsageUtil.deleteChildrenUsages = function (pAttributeId, pObjectType) +{ + var table = "AB_ATTRIBUTEUSAGE"; + + var sqlSelect = "select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID " + + " from AB_ATTRIBUTE left join AB_ATTRIBUTEUSAGE on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID and OBJECT_TYPE = '" + pObjectType + "'"; + + var deleteCond = SqlCondition.begin(); + _addDeleteIds(pAttributeId, pObjectType); + if (deleteCond.isSet()) + db.deleteData(table, deleteCond.build("1=2")); + + function _addDeleteIds (pAttributeId) + { + var condition = SqlCondition.begin() + .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?") + .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId); + var attributes = db.table(condition.buildSql(sqlSelect)); + + attributes.forEach(function (row) + { + if (row[1]) + deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]) + _addDeleteIds(row[0]); + }); + } +} + +/** + * Deletes duplicate attribute usages. + * + * @param {String} [pAttributeId=null] attribute id, if omitted, all duplicates will be deleted + */ +AttributeUsageUtil.removeDuplicates = function (pAttributeId) +{ + var condition = SqlCondition.begin() + .and("exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE AU where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AU.AB_ATTRIBUTE_ID " + + "and AB_ATTRIBUTEUSAGE.OBJECT_TYPE = AU.OBJECT_TYPE and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID != AU.AB_ATTRIBUTEUSAGEID)"); + if (pAttributeId) + condition.andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", pAttributeId); + + var duplicates = db.table(condition.buildSql("select AB_ATTRIBUTEUSAGEID, AB_ATTRIBUTE_ID, OBJECT_TYPE from AB_ATTRIBUTEUSAGE")); + var usageObj = {}; + var deleteCond = SqlCondition.begin(); + + duplicates.forEach(function (row) + { + if (!(row[1] in this)) + this[row[1]] = {}; + if (row[2] in this[row[1]]) + deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[0]); + this[row[1]][row[2]] = true; + }, usageObj); + if (deleteCond.isSet()) + db.deleteData("AB_ATTRIBUTEUSAGE", deleteCond.build("1=2")); +} \ No newline at end of file diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 4dc852d62ea958c7327fa1c1a5e8b459fe1589b1..f4d50682682ea63b11f722b56ea83c21de72c396 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -235,6 +235,7 @@ ContactUtils.getFullTitleByContactId = function(pContactId) /** * get the name of the person + * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time * * @param {String} pPersonId the id of the person where the data shall be loaded * @@ -259,6 +260,28 @@ ContactUtils.getTitleByPersonId = function(pPersonId) return ""; } +/** + * get the name of the person + * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time + * + * @param {String} pContactId the id of the contact entry with the person where the data shall be loaded + * + * @return {String} the name or "" + */ +ContactUtils.getTitleByContactId = function(pContactId) +{ + if (pContactId) + { + var personId = db.cell(SqlCondition.begin() + .andPrepare("CONTACT.CONTACTID", pContactId) + .buildSql("select CONTACT.PERSON_ID from CONTACT ", "1 = 2")); + if (personId) + return ContactUtils.getTitleByPersonId(personId); + } + + return ""; +} + /** * returns the from string for the contact joined with org, person, address * @@ -368,7 +391,7 @@ Contact.createWithColumnPreset = function() function ContactTitleRenderer(pContact, pOptions) { this.contact = pContact; - if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined + if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined to check if default option has to be set this._options = pOptions; else this._options = ContactTitleRenderer.OPTIONS.IncludeOrganisation; @@ -401,6 +424,7 @@ function ContactTitleRenderer(pContact, pOptions) * @static */ ContactTitleRenderer.OPTIONS = { + NoOption: 0, IncludeOrganisation: 1 }; diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 698392214a43b109d79f978f94c7904d1f5ce1ba..5549cd81dbd688f7cc3d4fdc6656b1bd1f6f8111 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -108,13 +108,20 @@ ContextUtils._getSelectMap = function() { var maskingUtils = new SqlMaskingUtils(); return { - // contextId nameField Tablename (or from-part inc, joins), IDField, RelationField, CreationDate override Tablename (needed if Tablename is a join clause) + // contextId, + // nameField, + // Tablename (or from-part inc, joins), + // IDField, + // RelationField, + // CreationDate override Tablename (needed if Tablename is a join clause) + // "Appointment": ["SUMMARY", "ASYS_CALENDARBACKEND", "UID"] "Organisation": [ "\"NAME\"", "ORGANISATION", "ORGANISATIONID", "", + "", "" ], "Person": [ @@ -143,6 +150,7 @@ ContextUtils._getSelectMap = function() "SALESPROJECT", "SALESPROJECTID", "CONTACT_ID", + "", "STARTDATE" ], "Contract": [ @@ -153,6 +161,7 @@ ContextUtils._getSelectMap = function() "CONTRACT", "CONTRACTID", "CONTACT_ID", + "", "CONTRACTSTART" ], "Offer": [ @@ -166,6 +175,7 @@ ContextUtils._getSelectMap = function() "OFFER", "OFFERID", "CONTACT_ID", + "", "OFFERDATE" ], "Order": [ @@ -179,6 +189,7 @@ ContextUtils._getSelectMap = function() "SALESORDER", "SALESORDERID", "CONTACT_ID", + "", "ORDERDATE" ], "Product": [ @@ -190,6 +201,7 @@ ContextUtils._getSelectMap = function() "PRODUCT", "PRODUCTID", "", + "", "" ], "Task": [ @@ -198,6 +210,7 @@ ContextUtils._getSelectMap = function() "TASKID", translate.text("Task"), "", + "", "" ] } diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index 2addda46a43b75ce9367de9691e7cade21cd31eb..f9c474f06c75194161738fcf44b31ecaa1409177 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -60,4 +60,7 @@ $KeywordRegistry.salesprojectCompetitionState = function(){return "SalesprojectC $KeywordRegistry.objectRelationType = function(){return "ObjectRelationType"}; $KeywordRegistry.deliveryTerm = function(){return "DeliveryTerm"}; $KeywordRegistry.paymentTerm = function(){return "PaymentTerm"}; +$KeywordRegistry.contactDepartment = function(){return "ContactDepartment"}; +$KeywordRegistry.contactPosition = function(){return "ContactPosition"}; +$KeywordRegistry.contactContactrole = function(){return "ContactContactrole"}; diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index 273862a3072e83e7c6d7645f5ba060890b9e7b32..3c150d05ed7e111d2531dc3ef03177a27a88a082 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -147,6 +147,25 @@ KeywordUtils.getContainerNames = function() return list; }; +/** +* provides a translated list of keyword-entry-titles in the system filtered by a containerName; +* usefull for lists where the key is the name which is then a editable displayValue +* +* @param {String} pContainerName name of the keyword container for filtering +* +* @return {String[]} translated titles as 1D-Array +*/ +KeywordUtils.getEntryNamesByContainer = function(pContainerName) +{ + var sql = SqlCondition.begin() + .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", pContainerName) + .buildSql("select AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY", null, "order by AB_KEYWORD_ENTRY.SORTING asc, AB_KEYWORD_ENTRY.TITLE asc") + var list = db.array(db.COLUMN, sql).map(function (v){ + return translate.text(v); + }); + return list; +}; + /** * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute * diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index aa218c4ff40b8ddab1b07189daa24b501e820026..b4c8bea33f50080dfcb04b1b1d98a38ef64ec7dc 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -148,6 +148,8 @@ OfferUtils.openOfferReport = function (pOfferID) ); var itemData = db.table(offerItemSql); + if (itemData.length == 0) + return; // TODO: AddrObject implementieren //var addrobj = new AddrObject(contactId);