Skip to content
Snippets Groups Projects
Commit a0a78de1 authored by Johannes Goderbauer's avatar Johannes Goderbauer
Browse files

Organisation_entity: Index bugfix: standard phone and standard email stored too much values

parent 89406e86
No related branches found
No related tags found
No related merge requests found
......@@ -1601,7 +1601,7 @@
<additionalFieldNameAliases>
<element>email</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
<isMultiValued v="false" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>STANDARD_PHONE_COMMUNICATION.value</name>
......@@ -1609,7 +1609,7 @@
<additionalFieldNameAliases>
<element>phone</element>
</additionalFieldNameAliases>
<isMultiValued v="true" />
<isMultiValued v="false" />
</indexRecordFieldMapping>
<indexRecordFieldMapping>
<name>ADDRESS_ID.displayValue</name>
......
......@@ -15,17 +15,18 @@ You may want to check out if your change affects other modules. However adding m
*/
var commMediumPhoneIds = CommUtil.getMediumIdsByCategory("PHONE");
var commMediumMailIds = CommUtil.getMediumIdsByCategory("EMAIL");
var sqlHelper = new SqlMaskingUtils();
var querySelect = newSelect([
"CONTACT.CONTACTID",
sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]),
sqlHelper.concat([
sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"]),
sqlHelper.concat(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO", "'-'"
,"standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]),
sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]),
sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"])
], " | "),
sqlHelper.concat([sqlHelper.cast("defaultAddress.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("defaultAddress.LON", SQLTYPES.VARCHAR, 16)], ","),
sqlHelper.concat([sqlHelper.cast("standardAddress.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("standardAddress.LON", SQLTYPES.VARCHAR, 16)], ","),
//additional indexed fields
"ORGANISATION.NAME",
sqlHelper.trim("ORGANISATION.ORGANISATIONID"),//trim to enable filter patterns like: >> -organisationid_value:0<<
......@@ -35,19 +36,27 @@ var querySelect = newSelect([
"ADDRESS.COUNTRY",
"ADDRESS.ZIP",
"ADDRESS.CITY",
"COMMUNICATION.ADDR",
"PHONE.ADDR",
sqlHelper.concat([sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO"])
,sqlHelper.concat(["defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
"standardEmail.ADDR",
"standardPhone.ADDR",
sqlHelper.concat([sqlHelper.concat(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"])
,sqlHelper.concat(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"])
], " - ")
])
.from("ORGANISATION")
.join("CONTACT", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null")
.leftJoin("ADDRESS", "defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID", "defaultAddress")
.leftJoin("ADDRESS", "standardAddress.ADDRESSID = CONTACT.ADDRESS_ID", "standardAddress")
.leftJoin("ADDRESS", "ADDRESS.CONTACT_ID = CONTACT.CONTACTID")
.leftJoin("COMMUNICATION", "COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID")
.leftJoin("COMMUNICATION", newWhere("phone.CONTACT_ID = CONTACT.CONTACTID")
.and(["COMMUNICATION", "MEDIUM_ID", "phone"], commMediumPhoneIds, SqlBuilder.IN()), "phone")
//standardMail is not multi valued and can only old one value (the standard email address)
.leftJoin("COMMUNICATION", newWhere("standardEmail.CONTACT_ID = CONTACT.CONTACTID")
.and(["COMMUNICATION", "MEDIUM_ID", "standardEmail"], commMediumMailIds, SqlBuilder.IN())
.and(["COMMUNICATION", "ISSTANDARD", "standardEmail"], "1")
, "standardEmail")
//standardPhone is not multi valued and can only old one value (the standard phone number)
.leftJoin("COMMUNICATION", newWhere("standardPhone.CONTACT_ID = CONTACT.CONTACTID")
.and(["COMMUNICATION", "MEDIUM_ID", "standardPhone"], commMediumPhoneIds, SqlBuilder.IN())
.and(["COMMUNICATION", "ISSTANDARD", "standardPhone"], "1")
, "standardPhone")
.where("CONTACT.STATUS", $KeywordRegistry.contactStatus$inactive(), SqlBuilder.NOT_EQUAL());
if (vars.exists("$local.idvalue") && vars.get("$local.idvalue") && vars.get("$local.idvalue").length > 0)
......
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