From d1da72ef47d3f98e762e091b6c43ba9ecd510b71 Mon Sep 17 00:00:00 2001
From: Sascha Schmidt <s.schmidt@adito.de>
Date: Fri, 11 Oct 2019 16:43:31 +0200
Subject: [PATCH] fix #1045149 quickentry - error on save when company is
 created without address

---
 entity/Address_entity/Address_entity.aod      | 12 +--
 .../entityfields/contact_id/valueProcess.js   |  1 -
 .../recordcontainers/db/onDBInsert.js         | 10 +--
 .../recordcontainers/jdito/onInsert.js        |  5 +-
 .../QuickEntry_entity/QuickEntry_entity.aod   | 23 +++++-
 .../contacttype_param/valueProcess.js         |  3 +
 .../children/contactid_param/valueProcess.js  |  6 +-
 .../contacttype_param/valueProcess.js         |  3 +
 neonContext/Address/Address.aod               |  4 +
 .../AddressOrgMultiEdit_view.aod              | 77 +++++++++++++++++++
 .../QuickEntryEdit_view.aod                   |  5 ++
 11 files changed, 129 insertions(+), 20 deletions(-)
 create mode 100644 entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js
 rename entity/QuickEntry_entity/entityfields/{adresses => orgaddresses}/children/contactid_param/valueProcess.js (96%)
 create mode 100644 entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js
 create mode 100644 neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod

diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 56b90af820..133262e806 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -466,13 +466,13 @@
           <fieldName>Adresses</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>aa315b76-7573-4627-ae15-2e7414b8b34d</name>
+          <entityName>QuickEntry_entity</entityName>
+          <fieldName>OrgAddresses</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
-      <children>
-        <entityParameter>
-          <name>ContactType_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
     </entityProvider>
     <entityParameter>
       <name>ContactIds_param</name>
diff --git a/entity/Address_entity/entityfields/contact_id/valueProcess.js b/entity/Address_entity/entityfields/contact_id/valueProcess.js
index 5917f2446d..0a5a0150c0 100644
--- a/entity/Address_entity/entityfields/contact_id/valueProcess.js
+++ b/entity/Address_entity/entityfields/contact_id/valueProcess.js
@@ -12,7 +12,6 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
         var addrType = vars.get("$field.ADDR_TYPE");
         var isOrgType = KeywordUtils.getAttributeRelation(addrType, $KeywordRegistry.addressType(), "organisation");
         var contactIds = vars.get("$param.ContactIds_param");
-        
         result.string(isOrgType ? contactId : JSON.parse(contactIds)[0]);
     }
     else if (contactId)
diff --git a/entity/Address_entity/recordcontainers/db/onDBInsert.js b/entity/Address_entity/recordcontainers/db/onDBInsert.js
index f6a22d75b0..05aad0bca1 100644
--- a/entity/Address_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Address_entity/recordcontainers/db/onDBInsert.js
@@ -9,11 +9,11 @@ var addrType = rowdata["ADDRESS.ADDR_TYPE"];
 
 var typeParam = vars.get("$param.ContactType_param");
 
-if (!typeParam && vars.exists("$param.ContactIds_param") && vars.getString("$param.ContactIds_param"))
-{
-    var isOrgType = KeywordUtils.getAttributeRelation(addrType, $KeywordRegistry.addressType(), "organisation");
-    typeParam = isOrgType ? "organisation" : "contact";
-}
+//if (!typeParam && vars.exists("$param.ContactIds_param") && vars.getString("$param.ContactIds_param"))
+//{
+//    var isOrgType = KeywordUtils.getAttributeRelation(addrType, $KeywordRegistry.addressType(), "organisation");
+//    typeParam = isOrgType ? "organisation" : "contact";
+//}
 
 var scopeType = null
 if (typeParam === "contact")
diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js
index 51da0240f6..fa718b256d 100644
--- a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js
@@ -1,3 +1,4 @@
+import("system.neon");
 import("system.util");
 import("ObjectRelation_lib");
 import("system.vars");
@@ -42,4 +43,6 @@ if (vars.getString("$field.Type2Enabled_proxy") == "1"
         2,
         vars.get("$field.HIERARCHY")
     ]);
-}
\ No newline at end of file
+}
+
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod
index 6f19540672..a9fc5171af 100644
--- a/entity/QuickEntry_entity/QuickEntry_entity.aod
+++ b/entity/QuickEntry_entity/QuickEntry_entity.aod
@@ -25,16 +25,13 @@
         <fieldName>QuickEntryAdresses</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/adresses/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
         <entityParameter>
           <name>ContactIds_param</name>
           <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/adresses/children/contactids_param/valueProcess.js</valueProcess>
         </entityParameter>
         <entityParameter>
           <name>ContactType_param</name>
+          <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -153,6 +150,24 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>OrgAddresses</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Address_entity</entityName>
+        <fieldName>QuickEntryAdresses</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/orgaddresses/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ContactType_param</name>
+          <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js
new file mode 100644
index 0000000000..bfc3470c81
--- /dev/null
+++ b/entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("contact");
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/entityfields/adresses/children/contactid_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/orgaddresses/children/contactid_param/valueProcess.js
similarity index 96%
rename from entity/QuickEntry_entity/entityfields/adresses/children/contactid_param/valueProcess.js
rename to entity/QuickEntry_entity/entityfields/orgaddresses/children/contactid_param/valueProcess.js
index 16c85500b5..2c71e53a49 100644
--- a/entity/QuickEntry_entity/entityfields/adresses/children/contactid_param/valueProcess.js
+++ b/entity/QuickEntry_entity/entityfields/orgaddresses/children/contactid_param/valueProcess.js
@@ -1,4 +1,4 @@
-import("system.vars");
-import("system.result");
-
+import("system.vars");
+import("system.result");
+
 result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js
new file mode 100644
index 0000000000..c15d79bb24
--- /dev/null
+++ b/entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("organisation");
\ No newline at end of file
diff --git a/neonContext/Address/Address.aod b/neonContext/Address/Address.aod
index b60374eacb..477b1d4f8c 100644
--- a/neonContext/Address/Address.aod
+++ b/neonContext/Address/Address.aod
@@ -18,5 +18,9 @@
       <name>77b182a7-2361-41a7-ae78-dc5285b41b97</name>
       <view>AddressLookup_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>fffe7dd0-6f32-4b4f-865b-501f48813c6d</name>
+      <view>AddressOrgMultiEdit_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod
new file mode 100644
index 0000000000..50fffcec19
--- /dev/null
+++ b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.2">
+  <name>AddressOrgMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>MultipleEdit</name>
+      <entityField>#ENTITY</entityField>
+      <title>Firmenadresse</title>
+      <columns>
+        <neonTableColumn>
+          <name>2aebe24e-875a-4c57-8461-16da46d6f080</name>
+          <entityField>ADDR_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>435f10b8-b6ef-4187-bffc-fc6104a6130c</name>
+          <entityField>COUNTRY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>00300f6f-ac45-4daa-9693-6452da972403</name>
+          <entityField>AddressSearch</entityField>
+          <width v="100" />
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>66ae75ca-7a5c-4cf0-b768-6c2900f7b7c6</name>
+          <entityField>STATE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b62515bf-e89d-44a9-94ff-933766657fe5</name>
+          <entityField>REGION</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b9379fcc-3212-488b-8f90-cade09c00f3c</name>
+          <entityField>Zip_ws</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>c1372a93-cf83-4c55-90e6-3b6b352abebf</name>
+          <entityField>ZIP</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>5a0d723a-8531-4330-957b-11a1be9d7eab</name>
+          <entityField>City_ws</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2e7ba632-36ad-4852-bcca-d75bcf3f7de1</name>
+          <entityField>CITY</entityField>
+          <width v="75" />
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2c104842-2ca1-408d-81d6-e998c0a562f2</name>
+          <entityField>Address_ws</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ac71d5eb-7ce7-41a0-91aa-5594f2238788</name>
+          <entityField>ADDRESS</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>61261845-740e-4f4b-a1f8-5e6aeac2deba</name>
+          <entityField>BUILDINGNO</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>37df9198-cb7b-4080-a040-21ed32e26948</name>
+          <entityField>ADDRESSADDITION</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>443b9d7d-dac2-40b2-bb2b-d5e0091877a9</name>
+          <entityField>ADDRIDENTIFIER</entityField>
+        </neonTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
index b957d0f846..72a62d4289 100644
--- a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
+++ b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
@@ -31,6 +31,11 @@
       <entityField>Contacts</entityField>
       <view>PersonMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>fe6b7731-fdc6-4925-95b2-ee003b52dab5</name>
+      <entityField>OrgAddresses</entityField>
+      <view>AddressOrgMultiEdit_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>9f1eace6-b69e-4cd3-b672-5628d5ee2a47</name>
       <entityField>Adresses</entityField>
-- 
GitLab