From 5cd9eab5871af547929f3f872f3a9112e5a748aa Mon Sep 17 00:00:00 2001 From: "b.ulrich" <b.ulrich@adito.de> Date: Thu, 17 Dec 2020 08:54:37 +0100 Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20xRM][TicketNr.:?= =?UTF-8?q?=201065476][Kontakt=20mit=20mehreren=20Funktionen=20kann=20nich?= =?UTF-8?q?t=20gel=C3=B6scht=20werden]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Person_entity/Person_entity.aod | 7 ++++ .../deletefunction/onActionProcess.js | 40 +++++++++++++++++++ .../deletefunction/stateProcess.js | 20 ++++++++++ .../_____LANGUAGE_EXTRA.aod | 3 ++ .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 8 ++-- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 3 ++ 6 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 entity/Person_entity/entityfields/deletefunction/onActionProcess.js create mode 100644 entity/Person_entity/entityfields/deletefunction/stateProcess.js diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index ccb951171b0..c75998fdf57 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 00000000000..083e2d8b0d3 --- /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 00000000000..d1b946d06bd --- /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 375e6f26967..c8f697eb37c 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 b1e9c45fd04..48811b948ee 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 e27607261ac..56cb1721db2 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> -- GitLab