diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index ccb951171b001f5b1ed08cf8daa5368ae64d7990..c75998fdf577e9a4540d7860f1afb9d59fd3e9aa 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -7,6 +7,7 @@ <title>Contact</title> <siblings> <element>Address_entity</element> + <element>Contact_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Person_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Person_entity/contentTitleProcess.js</contentTitleProcess> @@ -1415,6 +1416,12 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityActionField> + <name>deleteFunction</name> + <title>Delete this Function</title> + <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/deletefunction/onActionProcess.js</onActionProcess> + <stateProcess>%aditoprj%/entity/Person_entity/entityfields/deletefunction/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Person_entity/entityfields/deletefunction/onActionProcess.js b/entity/Person_entity/entityfields/deletefunction/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..083e2d8b0d3d0649e0984e06b3947a6ae709fd3e --- /dev/null +++ b/entity/Person_entity/entityfields/deletefunction/onActionProcess.js @@ -0,0 +1,40 @@ +import("system.entities"); +import("system.neon"); +import("Workflow_lib"); +import("Context_lib"); +import("DuplicateScanner_lib"); +import("Sql_lib"); +import("system.vars"); + +var personId = vars.get("$field.PERSONID"); + +var contactIds = newSelect("count(CONTACT.CONTACTID)") + .from("CONTACT") + .join("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID") + .where("PERSON.PERSONID", personId) + .cell(); +if(contactIds > 1) +{ + var contactId = vars.get("$field.CONTACTID"); + + var config = entities.createConfigForDeletingRows().entity("Contact_entity").uid(contactId); + + entities.deleteRow(config); + + DuplicateScannerUtils.deleteCachedDuplicate(contactId); + + new AttributeRelationQuery(contactId, null, ContextUtils.getCurrentContextId()) + .deleteAllAttributes(); + + newWhere("COMMUNICATION.CONTACT_ID", contactId).deleteData(); + newWhere("ADDRESS.CONTACT_ID", contactId).deleteData(); + newWhere("COMMRESTRICTION.CONTACT_ID", contactId).deleteData(); + newWhere("AB_APPOINTMENTLINK.OBJECT_TYPE", "Person") + .and("AB_APPOINTMENTLINK.OBJECT_ROWID", contactId).deleteData(); + newWhere("AB_ATTRIBUTERELATION.OBJECT_TYPE", "Person") + .and("AB_ATTRIBUTERELATION.OBJECT_ROWID", contactId).deleteData(); + + WorkflowSignalSender.deleted(); + + neon.closeImage(vars.get("$sys.currentimage"), true); //ToDo: #1070797 This should probably not be necessary +} \ No newline at end of file diff --git a/entity/Person_entity/entityfields/deletefunction/stateProcess.js b/entity/Person_entity/entityfields/deletefunction/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d1b946d06bd61d13e75b51286466d8fbcd8d9f41 --- /dev/null +++ b/entity/Person_entity/entityfields/deletefunction/stateProcess.js @@ -0,0 +1,20 @@ +import("system.result"); +import("system.neon"); +import("Sql_lib"); +import("system.vars"); + +var res = neon.COMPONENTSTATE_DISABLED; + +var personId = vars.get("$field.PERSONID"); + +var contactIds = newSelect("count(CONTACT.CONTACTID)") + .from("CONTACT") + .join("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID") + .where("PERSON.PERSONID", personId) + .cell(); +if(contactIds > 1) +{ + res = neon.COMPONENTSTATE_EDITABLE; +} + +result.string(res); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 375e6f269678c8240a93bfc520ffd0c42045ac97..c8f697eb37c54696ad3a806fb357c661cf301fff 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7587,6 +7587,9 @@ <entry> <key>The team must have at least one owner</key> </entry> + <entry> + <key>Delete this Function</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index b1e9c45fd04c10da89d571eac12e23f973b3fe3b..48811b948ee655e2b6693d365778101ae1e9fabd 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -8381,7 +8381,6 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Subcategory</key> - <value>Unterkategorie</value> </entry> <entry> <key>The radius has to be at least %0.</key> @@ -9542,6 +9541,10 @@ Bitte Datumseingabe prüfen</value> <key>Date (Month)</key> <value>Datum (Monat)</value> </entry> + <entry> + <key>Delete this Function</key> + <value>Diese Funktion löschen</value> + </entry> <entry> <key>Date (Year)</key> <value>Datum (Jahr)</value> @@ -10000,9 +10003,6 @@ Bitte Datumseingabe prüfen</value> <entry> <key>My campaigns</key> </entry> - <entry> - <key>Subcategory</key> - </entry> <entry> <key>Campaign costs</key> </entry> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index e27607261acb9a472b6febcf29b79d1b6aebb970..56cb1721db20330175fd6f807047dfd6f89657fd 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7668,6 +7668,9 @@ <entry> <key>The team must have at least one owner</key> </entry> + <entry> + <key>Delete this Function</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language>