Skip to content
Snippets Groups Projects
Commit 52ce8f5b authored by Alexander Niebisch's avatar Alexander Niebisch :coffee:
Browse files

#1040248 Erste Konfiguration der Indexgruppen über den IndexRecordContainer

parent 30cf64f2
No related branches found
No related tags found
No related merge requests found
Showing
with 653 additions and 0 deletions
......@@ -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>
import("system.vars");
import("system.result");
result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
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
......@@ -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>
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
......@@ -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>
import("system.vars");
import("system.result");
result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
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
......@@ -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>
import("system.vars");
import("system.result");
result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
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
......@@ -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>
import("system.vars");
import("system.result");
result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
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
......@@ -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>
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);
}
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
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
......@@ -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>
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);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment