diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod index 4af02845d6b88a7b1f7554e453cf73a34ff78202..937eccc7ec75f72f9b5cc003c0bab88f90f1ece1 100644 --- a/entity/Address_entity/Address_entity.aod +++ b/entity/Address_entity/Address_entity.aod @@ -488,5 +488,39 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>childGroup</name> + <configMode>CHILD_INDEXGROUP</configMode> + <isGlobal v="false" /> + <indexRecordAlias>Data_alias</indexRecordAlias> + <query>%aditoprj%/entity/Address_entity/recordcontainers/childgroup/query.js</query> + <affectedTables> + <element>RELATION</element> + <element>ADDRESS</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Address_entity/recordcontainers/childgroup/affectedIds.js</affectedIds> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>ADDRESS.value</name> + <indexFieldType>ADDRESS</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>BUILDINGNO.value</name> + <indexFieldType>ADDRESS</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>ZIP.value</name> + <indexFieldType>ADDRESS</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>COUNTRY.value</name> + <indexFieldType>TEXT_PLAIN</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CITY.value</name> + <indexFieldType>ADDRESS</indexFieldType> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Address_entity/recordcontainers/childgroup/affectedIds.js b/entity/Address_entity/recordcontainers/childgroup/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..cd9ce4eca596f562519fd3e40d69d57afad64c62 --- /dev/null +++ b/entity/Address_entity/recordcontainers/childgroup/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/entity/Address_entity/recordcontainers/childgroup/query.js b/entity/Address_entity/recordcontainers/childgroup/query.js new file mode 100644 index 0000000000000000000000000000000000000000..b7e85c89077c7be4cf8f6de6928ea8def442e611 --- /dev/null +++ b/entity/Address_entity/recordcontainers/childgroup/query.js @@ -0,0 +1,23 @@ +import("system.result"); +import("system.vars"); +import("system.db"); + +var sqlQuery, queryCondition, affectedIds; + +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = " where ADDRESS.ADDRESSID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} + +sqlQuery = "select ADDRESS.ADDRESSID as uid" + + ', ADDRESS.ZIP as "ZIP.value"' + + ', ADDRESS.CITY as CITY' + + ', ADDRESS.COUNTRY' + + ', ADDRESS.ADDRESS' + + ', ADDRESS.BUILDINGNO' + + " from ADDRESS" + + (queryCondition || "") + + " order by ADDRESS.ADDRESSID "; + +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Communication_entity/Communication_entity.aod b/entity/Communication_entity/Communication_entity.aod index c982f10eed1e31afadb2e2221a9554e9f65cd2d8..2d656be4813383a884480f13dc93096c7e82f328 100644 --- a/entity/Communication_entity/Communication_entity.aod +++ b/entity/Communication_entity/Communication_entity.aod @@ -278,5 +278,24 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>groupExtension</name> + <configMode>INDEXGROUP_EXTENSION</configMode> + <indexRecordAlias>Data_alias</indexRecordAlias> + <idColumn>COMMUNICATIONID</idColumn> + <query>%aditoprj%/entity/Communication_entity/recordcontainers/groupextension/query.js</query> + <affectedTables> + <element>COMMUNICATION</element> + <element>AB_KEYWORD_ENTRY</element> + </affectedTables> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>ADDR.value</name> + <indexFieldType>COMM</indexFieldType> + <isMultiValued v="true" /> + <dbColumn>ADDR</dbColumn> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Communication_entity/recordcontainers/groupextension/query.js b/entity/Communication_entity/recordcontainers/groupextension/query.js new file mode 100644 index 0000000000000000000000000000000000000000..7faad202b023540b228df7dd410c24573ce8d755 --- /dev/null +++ b/entity/Communication_entity/recordcontainers/groupextension/query.js @@ -0,0 +1,17 @@ +import("system.result"); +import("system.vars"); +import("system.db"); + +var sqlQuery, queryCondition, affectedIds; + +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = " where COMMUNICATION.COMMUNICATIONID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} + +sqlQuery = "select COMMUNICATION.COMMUNICATIONID, COMMUNICATION.ADDR from COMMUNICATION " + + (queryCondition || "") + + " order by COMMUNICATION.COMMUNICATIONID "; + +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index 298a23b16fb53517a9ab1fba04202755c05b95cf..8b65868b9baafdb3bc55f34400559afdb48bcb28 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -485,5 +485,44 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <global v="true" /> + <query>%aditoprj%/entity/Contract_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>CONTRACT</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Contract_entity/recordcontainers/index/affectedIds.js</affectedIds> + <indexRecordAlias>Data_alias</indexRecordAlias> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>CONTRACTCODE</name> + <indexFieldType>TEXT_PLAIN</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CUSTOMERCODE</name> + <indexFieldType>TEXT_PLAIN</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.value</name> + <indexFieldType>STRING</indexFieldType> + <additionalFieldNameAliases> + <element>ORGANISATION_ID</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <indexFieldType>PROPER_NAME</indexFieldType> + <additionalFieldNameAliases> + <element>NAME</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Contract_entity/recordcontainers/index/affectedIds.js b/entity/Contract_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..cd9ce4eca596f562519fd3e40d69d57afad64c62 --- /dev/null +++ b/entity/Contract_entity/recordcontainers/index/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/entity/Contract_entity/recordcontainers/index/query.js b/entity/Contract_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..3a7783950d4c3e1f8c1222d963e3f468a4dd100d --- /dev/null +++ b/entity/Contract_entity/recordcontainers/index/query.js @@ -0,0 +1,33 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Keyword_lib"); +import("Sql_lib"); +import("KeywordRegistry_basic"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +queryCondition = ""; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where CONTRACTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select CONTRACTID as uid, " + + sqlHelper.concat(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | ") + + " as title, " + + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]) + + " as description" + + ", CONTRACTCODE " + + ", CUSTOMERCODE " + + ", CONTRACT.CONTACT_ID" + + ", CONTACT.ORGANISATION_ID as CONTACT_ORG_ID" + + ', ORGANISATION.NAME as "CONTACT_ORG_ID.displayValue"' + + " from CONTRACT " + + " join CONTACT on CONTRACT.CONTACT_ID = CONTACTID " + + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID " + + queryCondition + " order by CONTRACTCODE "; +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index dcd3bc7164d1a5760ae3b3b45997505d9f6d594b..f21573ee73d15c5dc6f7e2c599eb7c51f1043392 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -1080,5 +1080,40 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <query>%aditoprj%/entity/Offer_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>OFFER</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Offer_entity/recordcontainers/index/affectedIds.js</affectedIds> + <indexRecordAlias>Data_alias</indexRecordAlias> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>OFFERCODE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CUSTOMERCODE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <indexFieldType>PROPER_NAME</indexFieldType> + <additionalFieldNameAliases> + <element>name</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Offer_entity/recordcontainers/index/affectedIds.js b/entity/Offer_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..cd9ce4eca596f562519fd3e40d69d57afad64c62 --- /dev/null +++ b/entity/Offer_entity/recordcontainers/index/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/entity/Offer_entity/recordcontainers/index/query.js b/entity/Offer_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..7aed701b0b543ac1c93e7a932efec19bac353581 --- /dev/null +++ b/entity/Offer_entity/recordcontainers/index/query.js @@ -0,0 +1,33 @@ +import("system.SQLTYPES"); +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Keyword_lib"); +import("Sql_lib"); +import("KeywordRegistry_basic"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +queryCondition = ""; +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 as uid, " + + sqlHelper.concat([sqlHelper.cast("OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | ") + + " as title, " + + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]) + + " as description" + + ", OFFERCODE" + + ", CUSTOMERCODE " + + ", OFFER.CONTACT_ID " + + ", CONTACT.ORGANISATION_ID as CONTACT_ORG_ID" + + ', ORGANISATION.NAME as "CONTACT_ORG_ID.displayValue"' + + " 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/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 6181f04db534cb2ab56c6985c2a03d8dc579df9e..aeae02eb78096d2527f99673d4a0d7cdfc752f10 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -621,5 +621,40 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <query>%aditoprj%/entity/Order_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>SALESORDER</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Order_entity/recordcontainers/index/affectedIds.js</affectedIds> + <indexRecordAlias>Data_alias</indexRecordAlias> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>SALESORDERCODE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CUSTOMERCODE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACT_ORG_ID.displayValue</name> + <indexFieldType>PROPER_NAME</indexFieldType> + <additionalFieldNameAliases> + <element>name</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Order_entity/recordcontainers/index/affectedIds.js b/entity/Order_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..cd9ce4eca596f562519fd3e40d69d57afad64c62 --- /dev/null +++ b/entity/Order_entity/recordcontainers/index/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/entity/Order_entity/recordcontainers/index/query.js b/entity/Order_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..57bca0642de68d859f09012c034d5edc33139485 --- /dev/null +++ b/entity/Order_entity/recordcontainers/index/query.js @@ -0,0 +1,32 @@ +import("system.SQLTYPES"); +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Sql_lib"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +queryCondition = ""; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where SALESORDERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select SALESORDERID as uid, " + + sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesorderState(), "SALESORDER.STATUS")], " | ") + + " as title, " + + sqlHelper.concat(["ORGANISATION.NAME"], " | ") + + " as description" + + ", SALESORDERCODE" + + ", CUSTOMERCODE" + + ", SALESORDER.CONTACT_ID" + + ', CONTACT.ORGANISATION_ID as CONTACT_ORG_ID' + + ', ORGANISATION.NAME as "CONTACT_ORG_ID.displayValue"' + + " from SALESORDER " + + " join CONTACT on SALESORDER.CONTACT_ID = CONTACTID " + + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID " + + queryCondition + " order by SALESORDERCODE "; +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 924c7ba3d2b3a1824d007cf4999c7d825855cce8..399d17d57dbff851797d2a5c11b6a9679799b13f 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -969,5 +969,52 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <indexRecordAlias>Data_alias</indexRecordAlias> + <query>%aditoprj%/entity/Organisation_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>ADDRESS</element> + <element>COMMUNICATION</element> + <element>CONTACT</element> + <element>ORGANISATION</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Organisation_entity/recordcontainers/index/affectedIds.js</affectedIds> + <includedConsumers> + <element>Addresses</element> + <element>Communications</element> + </includedConsumers> + <affectedConsumerIds>%aditoprj%/entity/Organisation_entity/recordcontainers/index/affectedConsumerIds.js</affectedConsumerIds> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>NAME.value</name> + <indexFieldType>PROPER_NAME</indexFieldType> + <isKeyword v="true" /> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>ORGANISATIONID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>STANDARD_EMAIL_COMMUNICATION.value</name> + <indexFieldType>COMM</indexFieldType> + <additionalFieldNameAliases> + <element>comm</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>STANDARD_PHONE_COMMUNICATION.value</name> + <indexFieldType>COMM</indexFieldType> + <additionalFieldNameAliases> + <element>comm</element> + </additionalFieldNameAliases> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACTID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Organisation_entity/recordcontainers/index/affectedConsumerIds.js b/entity/Organisation_entity/recordcontainers/index/affectedConsumerIds.js new file mode 100644 index 0000000000000000000000000000000000000000..7919d22f394b5bc96cda226f0c2b309c9d4e8296 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/index/affectedConsumerIds.js @@ -0,0 +1,60 @@ +import("system.datetime"); +import("system.result"); +import("system.vars"); +import("system.entities"); +import("system.db"); +import("system.logging"); +import("system.util"); +import("Util_lib"); + +var res = []; + +var currId = null; +var alias = vars.get("$local.indexgroupAlias"); +if(vars.exists("$local.idvalue")) +{ + + currId = vars.get("$local.idvalue"); + + addAddressIds(res, currId); + addCommunicationIds(res, currId); + +} + +result.object(res); + +function addIds(pRes, pConsumerName, pIds) +{ + var elem = []; + elem[0]=pConsumerName; + + if(pIds == undefined || pIds == null || pIds.length <= 0) { + elem[1] = ""; + } + else { + elem[1] = StringUtils.concat(",", pIds); + } + + logging.log(elem); + pRes.push(elem); +} + +function addAddressIds(pRes, pCurrId) +{ + var sql, ids; + sql = "select ADDRESS.ADDRESSID from ADDRESS left join CONTACT on CONTACT.CONTACTID = ADDRESS.CONTACT_ID where CONTACT.ORGANISATION_ID = '" + pCurrId + "'"; + ids = db.array(db.COLUMN, sql, alias, 0 , 1 * datetime.ONE_MINUTE); + + logging.log("Addresses: " + ids); + addIds(pRes, "Addresses", ids); +} + +function addCommunicationIds(pRes, pCurrId) +{ + var sql, ids; + sql = "select COMMUNICATION.COMMUNICATIONID from COMMUNICATION left join CONTACT on CONTACT.CONTACTID = COMMUNICATION.CONTACT_ID where CONTACT.ORGANISATION_ID = '" + pCurrId + "'"; + ids = db.array(db.COLUMN, sql, alias, 0 , 1 * datetime.ONE_MINUTE); + + logging.log("Communications: " + ids); + addIds(pRes, "Communications", ids); +} diff --git a/entity/Organisation_entity/recordcontainers/index/affectedIds.js b/entity/Organisation_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..a218f2371431421b67c3978abc8c3f31ae34602f --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/index/affectedIds.js @@ -0,0 +1,66 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("IndexSearch_lib"); +import("Sql_lib"); + +var infoContainer, onUpdFn, tableName, res; + +tableName = vars.get("$local.table"); +idValue = vars.get("$local.idvalue"); +infoContainer = IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action") + ,function (){return vars.get("$local.columns")} + ,function (){return vars.get("$local.oldvalues")} + ,function (){return vars.get("$local.values")}); + +switch (tableName) +{ + case "CONTACT": + res = [idValue]; + break; + case "ORGANISATION": + res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID is null and CONTACT.ORGANISATION_ID = '" + idValue + "'"); + break; + case "ADDRESS": + res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ + return db.array(db.COLUMN, ["select ADDRESS.CONTACT_ID from ADDRESS where ADDRESS.ADDRESSID = ?", [ + [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")] + ]]); + }); + break; + case "COMMUNICATION": + res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ + return db.array(db.COLUMN, ["select COMMUNICATION.CONTACT_ID from COMMUNICATION where COMMUNICATIONID = ?", [ + [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")] + ]]); + }); + break; +} + +switch (tableName) +{ + case "ORGANISATION": + res = [idValue]; + break; + case "CONTACT": + res = db.array(db.COLUMN, "select CONTACT.ORGANISATION_ID from CONTACT where CONTACT.PERSON_ID is null and CONTACT.CONTACTID = '" + idValue + "'"); + break; + case "ADDRESS": + res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ + return db.array(db.COLUMN, ["select CONTACT.ORGANISATION_ID from ADDRESS left join CONTACT on CONTACT.CONTACTID = ADDRESS.CONTACT_ID where CONTACT.PERSON_ID is null and ADDRESS.ADDRESSID = ?", [ + [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")] + ]]); + }); + break; + case "COMMUNICATION": + res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ + return db.array(db.COLUMN, ["select CONTACT.ORGANISATION_ID from COMMUNICATION left join CONTACT on CONTACT.CONTACTID = COMMUNICATION.CONTACT_ID where CONTACT.PERSON_ID is null and where COMMUNICATIONID = ?", [ + [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")] + ]]); + }); + break; +} + +if (res) { + result.object(res); +} \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..37f5ff41f9b08d524593737395b9dd4874c68477 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/index/query.js @@ -0,0 +1,37 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Sql_lib"); +import("Communication_lib"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where CONTACT.CONTACTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select ORGANISATION.ORGANISATIONID as uid" + + ", " + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]) + + " as title " + + ", " + sqlHelper.concat([ + sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'" + ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"]) + ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]) + ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) + ], " | ") + " as description " + //additional indexed fields + + ", ORGANISATION.ORGANISATIONID" + + ", ORGANISATION.NAME" + + ", CONTACT.CONTACTID" + + ", (" + CommUtil.getStandardSubSqlPhone() + ') as "STANDARD_PHONE_COMMUNICATION.value"' + + ", (" + CommUtil.getStandardSubSqlMail() + ') as "STANDARD_EMAIL_COMMUNICATION.value"' + + " from ORGANISATION " + + " join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null " + + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID " + + " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID " + + (queryCondition || "") + + " order by CONTACT.CONTACTID "; +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index b985f968bb922b3d3389c4c70bbd2025e27ca82a..0d86874b8e6a0636c068a0b5de45049163320cce 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1086,5 +1086,62 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <patternExtensionProcess>%aditoprj%/entity/Person_entity/recordcontainers/index/patternExtensionProcess.js</patternExtensionProcess> + <indexRecordAlias>Data_alias</indexRecordAlias> + <query>%aditoprj%/entity/Person_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>ADDRESS</element> + <element>COMMUNICATION</element> + <element>PERSON</element> + <element>CONTACT</element> + <element>ORGANISATION</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Person_entity/recordcontainers/index/affectedIds.js</affectedIds> + <includedConsumers> + <element>PersAddresses</element> + <element>OrgAddresses</element> + <element>Communications</element> + </includedConsumers> + <affectedConsumerIds>%aditoprj%/entity/Person_entity/recordcontainers/index/affectedConsumerIds.js</affectedConsumerIds> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>FIRSTNAME.value</name> + <indexFieldType>PERS_NAME</indexFieldType> + <isKeyword v="true" /> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>LASTNAME.value</name> + <indexFieldType>PERS_NAME</indexFieldType> + <isKeyword v="true" /> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>SALUTATION.value</name> + <indexFieldType>PERS_NAME</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>TITLE.value</name> + <indexFieldType>PERS_NAME</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>ORGANISATION_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>ORGGANISATION_NAME.value</name> + <indexFieldType>PROPER_NAME</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>PERSON_ID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTACTID.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Person_entity/recordcontainers/index/affectedConsumerIds.js b/entity/Person_entity/recordcontainers/index/affectedConsumerIds.js new file mode 100644 index 0000000000000000000000000000000000000000..0c9ac195cdd862ef4739db4c045114bcba2139b0 --- /dev/null +++ b/entity/Person_entity/recordcontainers/index/affectedConsumerIds.js @@ -0,0 +1,70 @@ +import("system.datetime"); +import("system.result"); +import("system.vars"); +import("system.entities"); +import("system.db"); +import("system.logging"); +import("system.util"); +import("Util_lib"); + +var res = []; + +var currId = null; +var alias = vars.get("$local.indexgroupAlias"); +if(vars.exists("$local.idvalue")) +{ + + currId = vars.get("$local.idvalue"); + + addPersAddressIds(res, currId); + addOrgAddressIds(res, currId); + addCommunicationIds(res, currId); + +} + +result.object(res); + +function addIds(pRes, pConsumerName, pIds) +{ + var elem = []; + elem[0]=pConsumerName; + + if(pIds == undefined || pIds == null || pIds.length <= 0) { + elem[1] = ""; + } + else { + elem[1] = StringUtils.concat(",", pIds); + } + + logging.log(elem); + pRes.push(elem); +} + +function addPersAddressIds(pRes, pCurrId) +{ + var sql, ids; + sql = "select ADDRESS.ADDRESSID from ADDRESS left join CONTACT on CONTACT.CONTACTID = ADDRESS.CONTACT_ID where CONTACT.PERSON_ID = '" + pCurrId + "'"; + ids = db.array(db.COLUMN, sql, alias, 0 , 1 * datetime.ONE_MINUTE); + addIds(pRes, "PersAddresses", ids); +} + +function addOrgAddressIds(pRes, pCurrId) +{ + var sql, ids; + sql = "select CONTACT.ADDRESS_ID from ORGANISATION " + + "join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null " + + "where ORGANISATION.ORGANISATIONID = ( " + + "select c.ORGANISATION_ID FROM CONTACT as c where c.PERSON_ID = '" + pCurrId + + "')"; + + ids = db.array(db.COLUMN, sql, alias, 0 , 1 * datetime.ONE_MINUTE); + addIds(pRes, "OrgAddresses", ids); +} + +function addCommunicationIds(pRes, pCurrId) +{ + var sql, ids; + sql = "select COMMUNICATION.COMMUNICATIONID from COMMUNICATION left join CONTACT on CONTACT.CONTACTID = COMMUNICATION.CONTACT_ID where CONTACT.PERSON_ID = '" + pCurrId + "'"; + ids = db.array(db.COLUMN, sql, alias, 0 , 1 * datetime.ONE_MINUTE); + addIds(pRes, "Communications", ids); +} diff --git a/entity/Person_entity/recordcontainers/index/affectedIds.js b/entity/Person_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..e1040dbf0112d86358cb87e1a3ab7b40f8ec60f3 --- /dev/null +++ b/entity/Person_entity/recordcontainers/index/affectedIds.js @@ -0,0 +1,73 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("IndexSearch_lib"); +import("Sql_lib"); + +var infoContainer, onUpdFn, tableName, res; + +tableName = vars.get("$local.table"); +idValue = vars.get("$local.idvalue"); +infoContainer = IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action") + ,function (){return vars.get("$local.columns")} + ,function (){return vars.get("$local.oldvalues")} + ,function (){return vars.get("$local.values")}); + +//switch (tableName) +//{ +// case "CONTACT": +// res = [idValue]; +// break; +// case "PERSON": +// res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID = '" + idValue + "'"); +// break; +// case "ORGANISATION": +// res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID is not null and CONTACT.ORGANISATION_ID = '" + idValue + "'"); +// break; +// case "ADDRESS": +// res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ +// return db.array(db.COLUMN, ["select ADDRESS.CONTACT_ID from ADDRESS where ADDRESS.ADDRESSID = ?", [ +// [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")] +// ]]); +// }); +// break; +// case "COMMUNICATION": +// res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){ +// return db.array(db.COLUMN, ["select COMMUNICATION.CONTACT_ID from COMMUNICATION where COMMUNICATIONID = ?", [ +// [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")] +// ]]); +// }); +// break; +//} + +switch (tableName) +{ + case "PERSON": + res = [idValue]; + break; + case "CONTACT": + res = db.array(db.COLUMN, "select CONTACT.PERSON_ID from CONTACT where CONTACT.CONTACTID = '" + idValue + "'"); + break; + case "ORGANISATION": + res = db.array(db.COLUMN, "select CONTACT.PERSON_ID from CONTACT where CONTACT.PERSON_ID is not null and CONTACT.ORGANISATION_ID = '" + idValue + "'"); + break; + case "ADDRESS": + res = IndexsearchUtils.getAffectedIdValues("PERSON_ID", infoContainer, function (id){ + return db.array(db.COLUMN, ["select CONTACT.PERSON_ID from ADDRESS left join CONTACT on CONTACT.CONTACTID = ADDRESS.CONTACT_ID where CONTACT.PERSON_ID is not null and ADDRESS.ADDRESSID = ?", [ + [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")] + ]]); + }); + break; + case "COMMUNICATION": + res = IndexsearchUtils.getAffectedIdValues("PERSON_ID", infoContainer, function (id){ + return db.array(db.COLUMN, ["select CONTACT.PERSON_ID from COMMUNICATION left join CONTACT on CONTACT.CONTACTID = COMMUNICATION.CONTACT_ID where CONTACT.PERSON_ID is not null and where COMMUNICATIONID = ?", [ + [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")] + ]]); + }); + break; +} + +if (res) { + result.object(res); +} + \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/index/patternExtensionProcess.js b/entity/Person_entity/recordcontainers/index/patternExtensionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e1de697d7b7cdca5d450f2061da1154906517734 --- /dev/null +++ b/entity/Person_entity/recordcontainers/index/patternExtensionProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); + +var pattern = vars.get("$local.pattern"); + +var extension = ""; + +if(pattern.search("AG") != -1 || pattern.search("ag") != -1){ + extension += "-firstname:anja"; +} + +result.string(extension); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/index/query.js b/entity/Person_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..c77a81ee093b2331180c133e7f1274af2169f1a7 --- /dev/null +++ b/entity/Person_entity/recordcontainers/index/query.js @@ -0,0 +1,41 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Sql_lib"); +import("Communication_lib"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where CONTACT.CONTACTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select PERSON.PERSONID as uid " + + "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]) + + ' as "_title_" ' + + "," + sqlHelper.concat([ + sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'" + ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"]) + ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]) + ,sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) + ], " | ") + " as description " + //additional indexed fields + + ", PERSON.PERSONID " + + ", PERSON.FIRSTNAME " + + ", PERSON.LASTNAME " + + ", PERSON.SALUTATION " + + ', PERSON.TITLE as "TITLE.value"' + + ", CONTACT.CONTACTID " + + ", CONTACT.ORGANISATION_ID " + + ", ORGANISATION.NAME " + + " from PERSON " + + " join CONTACT on CONTACT.PERSON_ID = PERSON.PERSONID " + + " join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID " + + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID " + + " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID " + + (queryCondition || "") + + " order by CONTACT.CONTACTID "; +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 631c68ce9e7dd046284afa113fa6150eb5c92f60..365a3107032ee563963a3fbc1e0df1ed1d733f59 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -554,5 +554,21 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <query>%aditoprj%/entity/Product_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>PRODUCT</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Product_entity/recordcontainers/index/affectedIds.js</affectedIds> + <indexRecordAlias>Data_alias</indexRecordAlias> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>PRODUCTCODE.value</name> + <indexFieldType>TEXT_PLAIN</indexFieldType> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Product_entity/recordcontainers/index/affectedIds.js b/entity/Product_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..cd9ce4eca596f562519fd3e40d69d57afad64c62 --- /dev/null +++ b/entity/Product_entity/recordcontainers/index/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/entity/Product_entity/recordcontainers/index/query.js b/entity/Product_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..34a9a7a3beae0a79423a22b105e737b178717dde --- /dev/null +++ b/entity/Product_entity/recordcontainers/index/query.js @@ -0,0 +1,25 @@ +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Keyword_lib"); +import("Sql_lib"); +import("KeywordRegistry_basic"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +queryCondition = ""; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where PRODUCTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select PRODUCTID as uid, " + + sqlHelper.concat(["PRODUCTCODE", "PRODUCTNAME"], " | ") + + " as title, " + + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODEID") + + " as description" + + ", PRODUCTCODE " + + " from PRODUCT " + + queryCondition + " order by PRODUCTCODE "; +result.string(sqlQuery); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index 5c578e6b4e209390e615d38e56f2d3f1827dd0d6..e70eed207f42d9e41ab41586bf8e2f4baef598c4 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -772,5 +772,42 @@ </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> + <indexRecordContainer> + <name>index</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <query>%aditoprj%/entity/Salesproject_entity/recordcontainers/index/query.js</query> + <affectedTables> + <element>SALESPROJECT</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/Salesproject_entity/recordcontainers/index/affectedIds.js</affectedIds> + <indexRecordAlias>Data_alias</indexRecordAlias> + <indexFieldMappings> + <indexRecordFieldMapping> + <name>PROJECTCODE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>PROJECTTITLE.value</name> + <indexFieldType>TEXT</indexFieldType> + <stored v="false" /> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>STATE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>STATE.displayValue</name> + <indexFieldType>TEXT_PLAIN</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>PHASE.value</name> + <indexFieldType>STRING</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>PHASE.displayValue</name> + <indexFieldType>TEXT_PLAIN</indexFieldType> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> </recordContainers> </entity> diff --git a/entity/Salesproject_entity/recordcontainers/index/affectedIds.js b/entity/Salesproject_entity/recordcontainers/index/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..cd9ce4eca596f562519fd3e40d69d57afad64c62 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/index/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/entity/Salesproject_entity/recordcontainers/index/query.js b/entity/Salesproject_entity/recordcontainers/index/query.js new file mode 100644 index 0000000000000000000000000000000000000000..ae0bd2e48c708ed1828ef89fbaf737d7100c8236 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/index/query.js @@ -0,0 +1,33 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.calendars"); +import("system.db"); +import("Keyword_lib"); +import("Sql_lib"); +import("KeywordRegistry_basic"); + +var sqlQuery, sqlHelper, queryCondition, affectedIds; +queryCondition = ""; +if (vars.exists("$local.idvalue")) { + affectedIds = vars.get("$local.idvalue"); + queryCondition = "where SALESPROJECTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')"; + //TODO: refactor this for incremental indexer (injections?) +} +sqlHelper = new SqlMaskingUtils(); +sqlQuery = "select SALESPROJECTID as uid" + + ", PROJECTTITLE as title, " + + sqlHelper.concat([ + "'" + translate.text("Status") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATE"), + "'| " + translate.text("Phase") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "PHASE") + ]) + + " as description" + + ", PROJECTCODE" + + ", PROJECTTITLE" + + ", STATE" + + ', ' + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATE") + ' as "STATE.displayValue"' + + ", PHASE" + + ', ' + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "PHASE") + ' as "PHASE.displayValue"' + + " from SALESPROJECT " + + queryCondition + " order by PROJECTCODE "; +result.string(sqlQuery); \ No newline at end of file diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index 13d39a2e6f4aef208ef318d0cdbc2f12adb829c2..1ab5cd880dcba51eb38567a90c86f655cc0dbe6d 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -32,12 +32,14 @@ <blobHandlingMethod>DATABASE</blobHandlingMethod> <databaseAuditGetOldValueLobs v="false" /> <indexsearchGlobalEnabled v="true" /> + <indexsearchUseLegacyConfiguration v="false" /> <indexsearchFullIndexerEnabled v="true" /> <indexsearchFullIndexerInterval v="0" /> <indexsearchIncrementingIndexerEnabled v="true" /> <indexsearchIncrementingIndexerInterval v="1000" /> <indexsearchIncrementingIndexerBunchSize v="250" /> <indexsearchMaximumHits v="50000" /> + <indexsearchEnableChildDocSearches v="true" /> <customProperties> <customBooleanProperty> <name>phoneValidation.enable</name> diff --git a/process/indexsearch_patternextension/indexsearch_patternextension.aod b/process/indexsearch_patternextension/indexsearch_patternextension.aod deleted file mode 100644 index 3917e2a4e1335e8771643089fff4e1457d43e447..0000000000000000000000000000000000000000 --- a/process/indexsearch_patternextension/indexsearch_patternextension.aod +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> - <name>indexsearch_patternextension</name> - <majorModelMode>DISTRIBUTED</majorModelMode> -</process>