Skip to content
Snippets Groups Projects
Commit 8e563fd2 authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

WIP with load entity

parent 72ce55f9
No related branches found
No related tags found
No related merge requests found
Showing with 355 additions and 301 deletions
......@@ -125,7 +125,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<entityParameter>
<name>CommCategory_param</name>
<valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess>
<expose v="true" />
<expose v="false" />
<description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
</entityParameter>
<entityParameter>
......@@ -162,8 +162,9 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<children>
<entityParameter>
<name>CommCategory_param</name>
<title></title>
<valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess>
<expose v="true" />
<expose v="false" />
<description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
</entityParameter>
<entityParameter>
......
......@@ -104,6 +104,7 @@
<children>
<entityParameter>
<name>ContainerName_param</name>
<title></title>
<valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvopurpose/children/containername_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
......
import("system.logging");
import("system.result");
import("system.neon");
import("system.vars");
......@@ -6,7 +5,6 @@ import("Address_lib");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
{
logging.log(vars.get("$field.CONTACT_ID"))
var addrobj = new AddrObject(vars.get("$field.CONTACT_ID"));
var salutation = addrobj.getFormattedAddress(false, "{letter_salutation},");
if (salutation != "Err.,")
......
......@@ -908,6 +908,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
</entityParameter>
</children>
</entityConsumer>
<entityActionField>
<name>lokl</name>
<onActionProcess>%aditoprj%/entity/Person_entity/entityfields/lokl/onActionProcess.js</onActionProcess>
</entityActionField>
</entityFields>
<recordContainers>
<dbRecordContainer>
......
import("system.vars");
import("Contact_lib");
ContactUtils.getPrivateContact(vars.get("$field.PERSONID"))
\ No newline at end of file
......@@ -22,3 +22,4 @@ if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedC
//TODO: use a preparedCondition when available #1030812 #1034026
result.string(db.translateCondition(cond.build("1 = 1")));
logging.log(JSON.stringify(vars.get("$sys.filter"), null, "\t"))
\ No newline at end of file
......@@ -5,4 +5,4 @@ import("system.result");
result.string("PERSON \n\
join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) \n\
join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) \n\
left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)");
\ No newline at end of file
left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)");
......@@ -34,4 +34,4 @@ vars.get("$local.changed").forEach(function(fieldName) {
}
})
DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$field.CONTACT_ID"));
\ No newline at end of file
DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$field.CONTACTID"));
\ No newline at end of file
......@@ -121,6 +121,7 @@ function getAddressData( pCondition, pConfig, AddressID )
*/
function fetchAddressData( pCondition, pConfig, AddressID, pPerson )
{
// TODO: load entity?
if ( typeof(pCondition) == "object") pCondition = "CONTACT.CONTACTID in ('" + pCondition.join("','") + "')";
if ( pConfig.length > 0 )
{
......@@ -325,6 +326,7 @@ function _getAddrData( pData )
pData[23] = salutation;
pData[24] = lettersalutation;
pData[25] = _getCountryName(pData[5]);
logging.log(JSON.stringify(pData, null, "\t"))
return pData;
}
......
......@@ -15,6 +15,7 @@ import("system.entities");
import("system.datetime");
import("Report_lib");
import("Contact_lib");
import("Address_lib");
/**
*
......@@ -62,57 +63,100 @@ DataPrivacyType.get = function(pKey)
/**
* Helper function to get personal data.
*/
function _selectPersonal(pContactId, pPersonId, fields)
function _selectPersonal(pContactId, pContactIdSaved, fields)
{
// Use PersonId as ID, since the data comes from the person
// TODO: with loadEntity
var persData = db.array(db.ROW, SqlCondition.begin()
.andPrepareIfSet("CONTACT.CONTACTID", pContactId)
.andPrepareIfSet("PERSON.PERSONID", pPersonId)
.buildSql("select PERSONID, " + fields.join(",")
+ (pContactId ? " from CONTACT left join PERSON on PERSONID = PERSON_ID" : "PERSON"), // use only CONTACT, if contactid is given else use PERSON directly
"1 = 0"));
return persData;
fields.push("CONTACTID");
if (pContactIdSaved)
pContactId = pContactIdSaved;
var entityConfig = entities.createConfigForLoadingRows()
.entity("Person_entity")
.provider("Contact")
.uid(pContactId)
.fields(fields);
return entities.getRow(entityConfig);
}
function _getName(pContactId, pPersonId)
function _getName(pContactId, pContactIdSaved)
{
// Use PersonId as ID, since the data comes from the person
var persData = _selectPersonal(pContactId, pPersonId, ["SALUTATION", "TITLE", "TITLESUFFIX", "FIRSTNAME", "MIDDLENAME", "LASTNAME"]);
var persData = _selectPersonal(pContactId, pContactIdSaved, ["SALUTATION", "TITLE", "TITLESUFFIX", "FIRSTNAME", "MIDDLENAME", "LASTNAME"]);
// TODO format correctly (with lib?)
var names = persData.slice(1).join(" ");
var contact = new Contact();
contact.salutation = persData.SALUTATION;
contact.title = persData.TITLE;
contact.firstname= persData.FIRSTNAME;
contact.middlename = persData.MIDDLENAME;
contact.lastname = persData.LASTNAME;
contact.suffix = persData.TITLESUFFIX;
var renderer = new ContactTitleRenderer(contact);
var names = renderer.asString()
return [{
value: names,
id: persData[0]
id: persData.CONTACTID
}]
}
function _getBirthday(pContactId, pPersonId)
{
// Use PersonId as ID, since the data comes from the person
function _getBirthday(pContactId, pContactIdSaved)
{
// Todo Format or set content type
var persData = _selectPersonal(pContactId, pPersonId, ["DATEOFBIRTH"]);
var persData = _selectPersonal(pContactId, pContactIdSaved, ["DATEOFBIRTH"]);
return [{
value: persData[1],
id: persData[0]
value: persData.DATEOFBIRTH,
id: persData.CONTACTID
}]
}
function _getAddress(pContactId, pAddressId)
{
// TODO: with loadEntity
var addrIds
if (pAddressId)
{
addrIds = [{
ADDRESSID: pAddressId
}]
}
else
{
var entityConfig = entities.createConfigForLoadingRows()
.entity("Address_entity")
.provider("ContactAddresses")
.addParameter("ContactId_param", pContactId)
.fields(["ADDRESSID"]);
addrIds = entities.getRows(entityConfig);
}
// Todo: Address_lib doesn't use loadEntity...
for (addrId in addrIds)
{
addrId = addrId.ADDRESSID
var addrobj = new AddrObject(pContactId, true, addrId);
var addr = addrobj.getFormattedAddress(false);
logging.log(JSON.stringify(addr, null, "\t"))
}
// if (addr != "Err.")
/*
var addrData = db.table(SqlCondition.begin()
.andPrepareIfSet("ADDRESS.ADDRESSID", pAddressId)
.andPrepareIfSet("ADDRESS.CONTACT_ID", pContactId)
.buildSql("select ADDRESSID, ADDRESS, ADDRESSADDITION, ADDRIDENTIFIER, "
+ "BUILDINGNO, CITY, COUNTRY, DISTRICT, REGION, STATE, ZIP, ADDR_TYPE "
+ "from ADDRESS", "1 = 0"));
*/
return addrData.map(function(pAddr)
{
// TODO Addresse formatieren
......
import("KeywordRegistry_basic");
import("system.db");
import("Sql_lib");
import("Contact_lib");
import("Keyword_lib");
import("Util_lib");
/**
* Methods for addresses.
* Todo: evtl. übernahme / anpassung der Adresslib aus altem Basic. 1030856
*
* Do not create an instance of this!
*
* @class
*/
function AddressUtils(){}
/**
* format the Address in one line
*
* @param {String} pCountry
* @param {String} pAddressLine
* @param {String} pBuildingNo
* @param {String} pZipCode
* @param {String} pCity
* @param {String} pAddressIdentifier
*
* @return {String}
*/
AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZipCode, pCity, pAddressIdentifier)
{
//request (and resulting change) was made here to NOT include Country int othe title
return StringUtils.concat(", ", [pAddressLine, pBuildingNo, pZipCode, pCity, pAddressIdentifier]);
};
/**
* format the Address in one line as a sql statement
*
* @return {String} sql expression that can be used within a select statement
*/
AddressUtils.formatOnelineSql = function ()
{
//request (and resulting change) was made here to NOT include Country int othe title
var maskingHelper = new SqlMaskingUtils();
var sqlExpression = maskingHelper.concat(["ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"], ", ");
return sqlExpression;
};
/**
* returns the formatted address by the ADDRESSID as one line
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @params {String} pAddressId ADDRESSID of the address which shall be loaded
*
* @return {String} formatted address
*/
AddressUtils.getFormattedOnlineAddressById = function(pAddressId)
{
var addrId = pAddressId;
var addr = "";
if (addrId)
{
var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY, ADDRESS.ADDRIDENTIFIER from ADDRESS ";
var addrData = db.array(db.ROW,
SqlCondition.begin()
.andPrepare("ADDRESS.ADDRESSID", addrId)
.buildSql(select));
addr = AddressUtils.formatOneline.apply(this, addrData);
}
return addr;
}
/**
* Returns the formatted standard address for the contact.
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @return {String}
*/
AddressUtils.getAddress = function(pContactId) {
var address = db.array(db.ROW, SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pContactId).buildSql('select CONTACTID, ADDRESS, BUILDINGNO, ZIP, CITY, "NAME", FIRSTNAME, LASTNAME, TITLE from' + ContactUtils.getFullContactString(), "1=0"));
// TODO: currently there are some relations without standard address. Use Hardcoded one.
if (!address[1]) {
var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSql('select ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0"));
address[1] = dummyAddress[0];
address[2] = dummyAddress[1];
address[3] = dummyAddress[2];
address[4] = dummyAddress[3];
}
var type = ContactUtils.getContactTypeByContactId(pContactId);
return AddressUtils.formatAddress(type, address[1], address[2], address[3], address[4], address[5], address[6], address[7], address[8]);
}
/**
* Returns the formatted address.
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @return {String}
*/
AddressUtils.getAddressById = function(pAddressId) {
var address = db.array(db.ROW, SqlCondition.begin()
.andPrepare("ADDRESS.ADDRESSID", pAddressId)
.buildSql("select CONTACT_ID, ADDRESS, BUILDINGNO, ZIP, CITY from "
+ "ADDRESS", "1=0"));
// TODO: currently there are some relations without standard address. Use Hardcoded one.
if (!address[1]) {
var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSql('select CONTACT_ID, ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0"));
address[0] = dummyAddress[0];
address[1] = dummyAddress[1];
address[2] = dummyAddress[2];
address[3] = dummyAddress[3];
address[4] = dummyAddress[4];
}
var type = ContactUtils.getContactTypeByContactId(address[0]);
if (address[0])
{
var names = db.array(db.ROW, SqlCondition.begin()
.andPrepare("CONTACT.CONTACTID", address[0])
.buildSql("select ORGANISATION.NAME, FIRSTNAME, LASTNAME, TITLE from CONTACT left join PERSON on PERSONID = PERSON_ID left join ORGANISATION on ORGANISATIONID = ORGANISATION_ID"
, "1=0"));
return AddressUtils.formatAddress(type, address[1], address[2], address[3], address[4], names[0], names[1], names[2], names[3]);
}
return "";
}
/**
* TODO: Dummy method!
*
* Returns the formatted address.
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic und Nutzung von den Platzhaltern in Zukunft!
*
* @return {String}
*/
AddressUtils.formatAddress = function(pAddrType, pAddress, pBuildingno, pZip, pCity, pOrgname, pFirstname, pLastname, pTitle) {
var resultAddr = "";
// 1 if organisation <br>
// 2 if privat person <br>
// 3 if person of an organisation <br>
switch (pAddrType)
{
case 1:
resultAddr = pOrgname + "\n" + pAddress + " " + pBuildingno + "\n" + pZip + " " + pCity;
break;
case 2:
resultAddr = pTitle + " " + pFirstname + " " + pLastname + "\n" + pAddress + " " + pBuildingno + "\n" + pZip + " " + pCity;
break;
case 3:
resultAddr = pOrgname + "\n" + (pTitle && pFirstname && pLastname ? pTitle + " " + pFirstname + " " + pLastname + "\n" : "") + pAddress + " " + pBuildingno + "\n" + pZip + " " + pCity;
break;
}
return resultAddr;
}
/**
* Returns the formatted addresses for the contact.
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @return {String}
*/
AddressUtils.getAllPossibleAddresses = function(pRelationId) {
var addresses = db.table(SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pRelationId)
.buildSql("select ADDRESSID, ADDR_TYPE, ADDRIDENTIFIER from ADDRESS join CONTACT on CONTACTID = CONTACT_ID or CONTACT_ID = ORGANISATION_ID", "1=0"));
return addresses.map(function(pAddress) {
return [pAddress[0], KeywordUtils.getViewValue($KeywordRegistry.addressType(), pAddress[1]) + ": " + pAddress[2]];
});
}
/**
* Returns a letter salutation.
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @return {String}
*/
AddressUtils.getLetterSalutation = function() {
return "Sehr geehrte Damen und Herren";
}
/**
* Methods for validating addresses.
*
* Do not create an instance of this!
*
* @class
*/
function AddressValidationUtils(){}
/**
* loads AB_COUNTRYINFO.REQUIRED_FIELDS from db
*
* @param {String} countryCode
*
* @return {String} A string containing all mandatory fieldCodes
*
* @ignore
*/
AddressValidationUtils._getRequiredFields = function(countryCode)
{
if (!countryCode)
return "";
var requiredFields = db.cell(SqlCondition.begin().andPrepare("AB_COUNTRYINFO.ISO2", countryCode)
.buildSql("select AB_COUNTRYINFO.REQUIRED_FIELDS from AB_COUNTRYINFO"));
return requiredFields;
};
/**
* check if the requested field is a mandatory field
*
* @param {String} countryCode
* @param {String} fieldCode
*
* @return {Boolean}
*/
AddressValidationUtils.isMandatoryField = function(countryCode, fieldCode)
{
var requiredFields = this._getRequiredFields(countryCode);
return requiredFields == "" || requiredFields.search(fieldCode) != -1;
};
/**
* load the regexp for zip validation from the database
*
* @param {String} countryCode
*
* @return {String} the regexp
*/
AddressValidationUtils._getZipValidationRegEx = function(countryCode)
{
if (!countryCode)
return "";
var cond = new SqlCondition();
cond.andPrepare("AB_COUNTRYINFO.ISO2", countryCode );
var stmt = cond.buildSql("select AB_COUNTRYINFO.ZIP_REGEX from AB_COUNTRYINFO");
return db.cell(stmt);
};
/**
* check if the zip code is valid
*
* @param {String} countryCode
* @param {String} zipCode
*
* return {Boolean}
*/
AddressValidationUtils.isValidZip = function(countryCode, zipCode)
{
if (zipCode == "")
return true;//if ZIP is a required field has to be checked in a separate mandatory-field-check -> do not check this here
var regExpVal = this._getZipValidationRegEx(countryCode);
if (regExpVal == "")
return true;
//only an exact match is a correct one -> specify being and end anchors
regExpVal = "^" + regExpVal + "$";
var regExp = new RegExp(regExpVal);
return regExp.test(zipCode);
import("KeywordRegistry_basic");
import("system.db");
import("Sql_lib");
import("Contact_lib");
import("Keyword_lib");
import("Util_lib");
/**
* Methods for addresses.
* Todo: evtl. übernahme / anpassung der Adresslib aus altem Basic. 1030856
*
* Do not create an instance of this!
*
* @class
*/
function AddressUtils(){}
/**
* format the Address in one line
*
* @param {String} pCountry
* @param {String} pAddressLine
* @param {String} pBuildingNo
* @param {String} pZipCode
* @param {String} pCity
* @param {String} pAddressIdentifier
*
* @return {String}
*/
AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZipCode, pCity, pAddressIdentifier)
{
//request (and resulting change) was made here to NOT include Country int othe title
return StringUtils.concat(", ", [pAddressLine, pBuildingNo, pZipCode, pCity, pAddressIdentifier]);
};
/**
* format the Address in one line as a sql statement
*
* @return {String} sql expression that can be used within a select statement
*/
AddressUtils.formatOnelineSql = function ()
{
//request (and resulting change) was made here to NOT include Country int othe title
var maskingHelper = new SqlMaskingUtils();
var sqlExpression = maskingHelper.concat(["ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"], ", ");
return sqlExpression;
};
/**
* returns the formatted address by the ADDRESSID as one line
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @params {String} pAddressId ADDRESSID of the address which shall be loaded
*
* @return {String} formatted address
*/
AddressUtils.getFormattedOnlineAddressById = function(pAddressId)
{
var addrId = pAddressId;
var addr = "";
if (addrId)
{
var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY, ADDRESS.ADDRIDENTIFIER from ADDRESS ";
var addrData = db.array(db.ROW,
SqlCondition.begin()
.andPrepare("ADDRESS.ADDRESSID", addrId)
.buildSql(select));
addr = AddressUtils.formatOneline.apply(this, addrData);
}
return addr;
}
/**
* Returns the formatted standard address for the contact.
*
* TODO: Dummy method! Übernahme der Adresslib aus altem Basic
*
* @return {String}
*/
AddressUtils.getAddress = function(pContactId) {
var address = db.array(db.ROW, SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pContactId).buildSql('select CONTACTID, ADDRESS, BUILDINGNO, ZIP, CITY, "NAME", FIRSTNAME, LASTNAME, TITLE from' + ContactUtils.getFullContactString(), "1=0"));
// TODO: currently there are some relations without standard address. Use Hardcoded one.
if (!address[1]) {
var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSql('select ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0"));
address[1] = dummyAddress[0];
address[2] = dummyAddress[1];
address[3] = dummyAddress[2];
address[4] = dummyAddress[3];
}
var type = ContactUtils.getContactTypeByContactId(pContactId);
return AddressUtils.formatAddress(type, "DUMMYADDR - (no standard addr set)" + address[1], address[2], address[3], address[4], address[5], address[6], address[7], address[8]);
}
/**
* Returns the formatted address.
*
* TODO: Dummy method! Übernahme der Adresslib (jetzt Address_lib) aus altem Basic
*
* @return {String}
*/
AddressUtils.getAddressById = function(pAddressId) {
var address = db.array(db.ROW, SqlCondition.begin()
.andPrepare("ADDRESS.ADDRESSID", pAddressId)
.buildSql("select CONTACT_ID, ADDRESS, BUILDINGNO, ZIP, CITY from "
+ "ADDRESS", "1=0"));
// TODO: currently there are some relations without standard address. Use Hardcoded one.
if (!address[1]) {
var dummyAddress = db.array(db.ROW, SqlCondition.begin().andPrepare("ADDRESS.ADDRESSID", '97d37aea-d7f8-4436-bb31-875439f5f7f1').buildSql('select CONTACT_ID, ADDRESS, BUILDINGNO, ZIP, CITY from ADDRESS', "1=0"));
address[0] = dummyAddress[0];
address[1] = dummyAddress[1];
address[2] = dummyAddress[2];
address[3] = dummyAddress[3];
address[4] = dummyAddress[4];
}
var type = ContactUtils.getContactTypeByContactId(address[0]);
if (address[0])
{
var names = db.array(db.ROW, SqlCondition.begin()
.andPrepare("CONTACT.CONTACTID", address[0])
.buildSql("select ORGANISATION.NAME, FIRSTNAME, LASTNAME, TITLE from CONTACT left join PERSON on PERSONID = PERSON_ID left join ORGANISATION on ORGANISATIONID = ORGANISATION_ID"
, "1=0"));
return AddressUtils.formatAddress(type, address[1], address[2], address[3], address[4], names[0], names[1], names[2], names[3]);
}
return "";
}
/**
* TODO: Dummy method!
*
* Returns the formatted address.
*
* TODO: Dummy method! Übernahme der Adresslib (jetzt Address_lib) aus altem Basic und Nutzung von den Platzhaltern in Zukunft!
*
* @return {String}
*/
AddressUtils.formatAddress = function(pAddrType, pAddress, pBuildingno, pZip, pCity, pOrgname, pFirstname, pLastname, pTitle) {
var resultAddr = "";
// 1 if organisation <br>
// 2 if privat person <br>
// 3 if person of an organisation <br>
switch (pAddrType)
{
case 1:
resultAddr = pOrgname + "\n" + pAddress + " " + pBuildingno + "\n" + pZip + " " + pCity;
break;
case 2:
resultAddr = pTitle + " " + pFirstname + " " + pLastname + "\n" + pAddress + " " + pBuildingno + "\n" + pZip + " " + pCity;
break;
case 3:
resultAddr = pOrgname + "\n" + (pTitle && pFirstname && pLastname ? pTitle + " " + pFirstname + " " + pLastname + "\n" : "") + pAddress + " " + pBuildingno + "\n" + pZip + " " + pCity;
break;
}
return resultAddr;
}
/**
* Returns the formatted addresses for the contact.
*
* TODO: Dummy method! Übernahme der Adresslib (jetzt Address_lib) aus altem Basic
*
* @return {String}
*/
AddressUtils.getAllPossibleAddresses = function(pRelationId) {
var addresses = db.table(SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pRelationId)
.buildSql("select ADDRESSID, ADDR_TYPE, ADDRIDENTIFIER from ADDRESS join CONTACT on CONTACTID = CONTACT_ID or CONTACT_ID = ORGANISATION_ID", "1=0"));
return addresses.map(function(pAddress) {
return [pAddress[0], KeywordUtils.getViewValue($KeywordRegistry.addressType(), pAddress[1]) + ": " + pAddress[2]];
});
}
/**
* Returns a letter salutation.
*
* TODO: Dummy method! Übernahme der Adresslib (jetzt Address_lib) aus altem Basic
*
* @return {String}
*/
AddressUtils.getLetterSalutation = function() {
return "Sehr geehrte Damen und Herren";
}
/**
* Methods for validating addresses.
*
* Do not create an instance of this!
*
* @class
*/
function AddressValidationUtils(){}
/**
* loads AB_COUNTRYINFO.REQUIRED_FIELDS from db
*
* @param {String} countryCode
*
* @return {String} A string containing all mandatory fieldCodes
*
* @ignore
*/
AddressValidationUtils._getRequiredFields = function(countryCode)
{
if (!countryCode)
return "";
var requiredFields = db.cell(SqlCondition.begin().andPrepare("AB_COUNTRYINFO.ISO2", countryCode)
.buildSql("select AB_COUNTRYINFO.REQUIRED_FIELDS from AB_COUNTRYINFO"));
return requiredFields;
};
/**
* check if the requested field is a mandatory field
*
* @param {String} countryCode
* @param {String} fieldCode
*
* @return {Boolean}
*/
AddressValidationUtils.isMandatoryField = function(countryCode, fieldCode)
{
var requiredFields = this._getRequiredFields(countryCode);
return requiredFields == "" || requiredFields.search(fieldCode) != -1;
};
/**
* load the regexp for zip validation from the database
*
* @param {String} countryCode
*
* @return {String} the regexp
*/
AddressValidationUtils._getZipValidationRegEx = function(countryCode)
{
if (!countryCode)
return "";
var cond = new SqlCondition();
cond.andPrepare("AB_COUNTRYINFO.ISO2", countryCode );
var stmt = cond.buildSql("select AB_COUNTRYINFO.ZIP_REGEX from AB_COUNTRYINFO");
return db.cell(stmt);
};
/**
* check if the zip code is valid
*
* @param {String} countryCode
* @param {String} zipCode
*
* return {Boolean}
*/
AddressValidationUtils.isValidZip = function(countryCode, zipCode)
{
if (zipCode == "")
return true;//if ZIP is a required field has to be checked in a separate mandatory-field-check -> do not check this here
var regExpVal = this._getZipValidationRegEx(countryCode);
if (regExpVal == "")
return true;
//only an exact match is a correct one -> specify being and end anchors
regExpVal = "^" + regExpVal + "$";
var regExp = new RegExp(regExpVal);
return regExp.test(zipCode);
};
\ 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