diff --git a/entity/Person_entity/recordcontainers/db/onDBUpdate.js b/entity/Person_entity/recordcontainers/db/onDBUpdate.js index 4268b8a01770b2026a28ea01d6606fb743b1e64b..126fccba8ce2e7d34c7e73e68da7713856aff1d5 100644 --- a/entity/Person_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Person_entity/recordcontainers/db/onDBUpdate.js @@ -1,12 +1,52 @@ +import("Sql_lib"); import("Workflow_lib"); import("DataPrivacy_lib"); import("system.tools"); +import("system.neon"); import("system.vars"); import("Person_lib"); import("Communication_lib"); import("Entity_lib"); import("StandardObject_lib"); +var localChanged = vars.get("$local.changed"); +var orgChanged = false; +for (var i = 0; i < localChanged.length; i++) { + if(localChanged[i] == "CONTACT.ORGANISATION_ID") + { + orgChanged = true; + break; + } +} + +if(orgChanged) +{ + var orgAddressId = newSelect("CONTACT.ADDRESS_ID") + .from("CONTACT") + .where("CONTACT.ORGANISATION_ID", vars.get("$field.ORGANISATION_ID")) + .and("CONTACT.PERSON_ID is null") + .cell(); + + var addressId = vars.get("$field.ADDRESS_ID"); + + if(addressId != orgAddressId) //update standard address if the the organisation changed + { + var persAddress = newSelect("ADDRESS.ADDRESSID") + .from("ADDRESS") + .where("ADDRESS.CONTACT_ID", vars.get("$field.CONTACTID")) + .and("ADDRESS.ADDRESSID", addressId) + .cell(); + + if(!persAddress) // only when the standard address is from the organisation + { + var standardAddressId = new StandardObject("Address", null, "Person", vars.get("$field.PERSONID")) + .onPersonValueChange(vars.get("$field.ORGANISATION_ID")); + + neon.setFieldValue("$field.ADDRESS_ID", standardAddressId); + } + } +} + var rowdata = vars.get("$local.rowdata"); // TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023 var uid = rowdata["CONTACT.CONTACTID"]; @@ -24,7 +64,7 @@ new StandardObject("Address", rowdata["CONTACT.ADDRESS_ID"], "Person", uid) var updates = []; // update user object if name changed -vars.get("$local.changed").forEach(function(fieldName) +localChanged.forEach(function(fieldName) { var nameProp = tools.LASTNAME; switch (fieldName) {