Skip to content
Snippets Groups Projects
Commit ff1624b1 authored by Heinz Boesl's avatar Heinz Boesl Committed by Johannes Goderbauer
Browse files

improve the Index of Organisation and Person

# Conflicts:
#	entity/Organisation_entity/Organisation_entity.aod
parent 1856e350
No related branches found
No related tags found
No related merge requests found
......@@ -1045,6 +1045,9 @@
<name>OnlyOwnSupervised_param</name>
<expose v="true" />
</entityParameter>
<entityField>
<name>IndexCommPhone</name>
</entityField>
<entityConsumer>
<name>SelfDuplicatesUncached</name>
<dependency>
......@@ -1287,14 +1290,6 @@
<indexFieldType>TEXT_PLAIN</indexFieldType>
<additionalFieldNameAliases />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexCommunication.value</name>
<indexFieldType>COMMUNICATION</indexFieldType>
<additionalFieldNameAliases>
<element>comm</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexAddress.value</name>
<indexFieldType>ADDRESS</indexFieldType>
......@@ -1327,6 +1322,22 @@
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexCommunication.value</name>
<indexFieldType>COMMUNICATION</indexFieldType>
<additionalFieldNameAliases>
<element>comm</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexCommPhone.value</name>
<indexFieldType>TELEPHONE</indexFieldType>
<additionalFieldNameAliases>
<element>phone</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
</indexFieldMappings>
</indexRecordContainer>
</recordContainers>
......
......@@ -7,34 +7,39 @@ import("Sql_lib");
import("Communication_lib");
var sqlQuery, sqlHelper, queryCondition, affectedIds;
var CommMediumPhoneIds = db.array( db.COLUMN, "select KEYID from AB_KEYWORD_ENTRY join ab_keyword_attributerelation on AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID "
+ " join ab_keyword_attribute on AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID and CHAR_VALUE = 'TELEPHONE' and AB_KEYWORD_ATTRIBUTE.CONTAINER = 'CommunicationMedium'");
if (vars.exists("$local.idvalue")) {
affectedIds = vars.get("$local.idvalue");
queryCondition = "where CONTACT.CONTACTID in ('" + affectedIds.join("', '") + "')";
}
sqlHelper = new SqlMaskingUtils();
sqlQuery = "select CONTACT.CONTACTID " // as "_uid_"
+ ", " + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]) //as "_title_"
sqlQuery = "select CONTACT.CONTACTID "
+ ", " + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"])
+ ", " + 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.NAME"
+ ", ORGANISATION.ORGANISATIONID"
+ ", CONTACT.CONTACTID"
+ ", ORGANISATION.CUSTOMERCODE"
+ ", COMMUNICATION.ADDR " // as IndexCommunication
+ ", ADDRESS.ADDRESS " // as IndexAddress
+ ", ADDRESS.COUNTRY " // as IndexCountry
+ ", ADDRESS.ZIP " // as IndexZIP
+ ", ADDRESS.CITY " // as IndexCity
+ ", ADDRESS.ADDRESS "
+ ", ADDRESS.COUNTRY "
+ ", ADDRESS.ZIP "
+ ", ADDRESS.CITY "
+ ", COMMUNICATION.ADDR "
+ ", PHONE.ADDR "
+ " 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 ADDRESS on ADDRESS.CONTACT_ID = CONTACT.CONTACTID "
+ " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID "
+ " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID and COMMUNICATION.MEDIUM_ID not in ('" + CommMediumPhoneIds.join("', '") + "')"
+ " left join COMMUNICATION PHONE on PHONE.CONTACT_ID = CONTACT.CONTACTID and PHONE.MEDIUM_ID in ('" + CommMediumPhoneIds.join("', '") + "')"
+ (queryCondition || "")
+ " order by CONTACT.CONTACTID ";
result.string(sqlQuery);
......@@ -1112,12 +1112,8 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<expose v="true" />
</entityParameter>
<entityField>
<name>IndexPhoneticLastname</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/indexphoneticlastname/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>IndexPhoneticFirstname</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/indexphoneticfirstname/valueProcess.js</valueProcess>
<name>IndexCommPhone</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/indexcommphone/valueProcess.js</valueProcess>
</entityField>
<entityConsumer>
<name>SelfDuplicatesUncached</name>
......@@ -1426,22 +1422,14 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<name>PERSON_ID.value</name>
<indexFieldType>STRING</indexFieldType>
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>SALUTATION.value</name>
<indexFieldType>PHONETIC_NAME</indexFieldType>
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>TITLE.value</name>
<indexFieldType>PHONETIC_NAME</indexFieldType>
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>FIRSTNAME.value</name>
<indexFieldType>TEXT_NO_STOPWORDS</indexFieldType>
<indexFieldType>PHONETIC_NAME</indexFieldType>
<isBoosted v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>LASTNAME.value</name>
<indexFieldType>TEXT_NO_STOPWORDS</indexFieldType>
<indexFieldType>PHONETIC_NAME</indexFieldType>
<isBoosted v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
......@@ -1456,14 +1444,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<name>ORGANISATION_NAME.value</name>
<indexFieldType>PROPER_NAME</indexFieldType>
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexCommunication.value</name>
<indexFieldType>COMMUNICATION</indexFieldType>
<additionalFieldNameAliases>
<element>comm</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexAddress.value</name>
<indexFieldType>ADDRESS</indexFieldType>
......@@ -1497,18 +1477,20 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<isMultiValued v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexPhoneticFirstname.value</name>
<indexFieldType>PHONETIC_NAME</indexFieldType>
<name>IndexCommunication.value</name>
<indexFieldType>COMMUNICATION</indexFieldType>
<additionalFieldNameAliases>
<element>firstname</element>
<element>comm</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>IndexPhoneticLastname.value</name>
<indexFieldType>PHONETIC_NAME</indexFieldType>
<name>IndexCommPhone.value</name>
<indexFieldType>TELEPHONE</indexFieldType>
<additionalFieldNameAliases>
<element>lastname</element>
<element>phone</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
</indexRecordFieldMapping>
</indexFieldMappings>
</indexRecordContainer>
......
import("system.result");
import("system.vars");
result.string(vars.get("$field.FIRSTNAME"));
\ No newline at end of file
......@@ -7,42 +7,45 @@ import("Sql_lib");
import("Communication_lib");
var sqlQuery, sqlHelper, queryCondition, affectedIds;
var CommMediumPhoneIds = db.array( db.COLUMN, "select KEYID from AB_KEYWORD_ENTRY join ab_keyword_attributerelation on AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID "
+ " join ab_keyword_attribute on AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID and CHAR_VALUE = 'TELEPHONE' and AB_KEYWORD_ATTRIBUTE.CONTAINER = 'CommunicationMedium'");
if (vars.exists("$local.idvalue")) {
affectedIds = vars.get("$local.idvalue");
queryCondition = "where CONTACT.CONTACTID in ('" + affectedIds.join("', '") + "')";
}
sqlHelper = new SqlMaskingUtils();
sqlQuery = 'select CONTACT.CONTACTID ' // as "_uid_"
+ "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]) // as "_title_"
+ "," + sqlHelper.concat([
sqlQuery = "select CONTACT.CONTACTID "
+ "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"])
+ "," + 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
+ ", CONTACT.CONTACTID "
+ ", PERSON.PERSONID "
+ ", PERSON.SALUTATION "
+ ", PERSON.TITLE " // as "TITLE.value
+ ", PERSON.FIRSTNAME "
+ ", PERSON.LASTNAME "
+ ", TRIM(PERSON.GENDER) " // as GENDER
+ ", TRIM(PERSON.GENDER) "
+ ", CONTACT.ORGANISATION_ID "
+ ", ORGANISATION.NAME "
+ ", COMMUNICATION.ADDR " // as IndexCommunication
+ ", ADDRESS.ADDRESS " // as IndexAddress
+ ", ADDRESS.COUNTRY " // as IndexCountry
+ ", ADDRESS.ZIP " // as IndexZIP
+ ", ADDRESS.CITY " // as IndexCity"
+ ", PERSON.FIRSTNAME " // as IndexPhoneticFirstname
+ ", PERSON.LASTNAME " // as IndexPhoneticLastname
+ ", ADDRESS.ADDRESS "
+ ", ADDRESS.COUNTRY "
+ ", ADDRESS.ZIP "
+ ", ADDRESS.CITY "
+ ", COMMUNICATION.ADDR "
+ ", PHONE.ADDR "
+ " 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 ADDRESS on ADDRESS.CONTACT_ID = CONTACT.CONTACTID or ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID "
+ " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID "
+ " left join COMMUNICATION on COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID and COMMUNICATION.MEDIUM_ID not in ('" + CommMediumPhoneIds.join("', '") + "')"
+ " left join COMMUNICATION PHONE on PHONE.CONTACT_ID = CONTACT.CONTACTID and PHONE.MEDIUM_ID in ('" + CommMediumPhoneIds.join("', '") + "')"
+ (queryCondition || "")
+ " order by CONTACT.CONTACTID ";
result.string(sqlQuery);
\ No newline at end of file
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