From a974f35005f2b065d68d4dba8ac133b64214a62e Mon Sep 17 00:00:00 2001
From: "m.escher" <m.escher@mescher-nb.aditosoftware.local>
Date: Tue, 2 Oct 2018 15:26:02 +0200
Subject: [PATCH] ORGNAME Lookup processes

---
 entity/Pers_entity/Pers_entity.aod            |  7 +++++++
 .../entityfields/org_id/onValueChange.js      |  0
 .../entityfields/org_id/valueProcess.js       |  8 ++++++--
 .../entityfields/orgname/fieldIdProcess.js    |  3 +--
 .../orgname/linkedContextProcess.js           |  7 +++++--
 .../entityfields/orgname/onValueChange.js     | 17 ++++++++++++++++
 .../entityfields/orgname/valueProcess.js      | 20 +++++++++++++++++++
 .../_____PREFERENCES_PROJECT.aod              |  2 +-
 8 files changed, 57 insertions(+), 7 deletions(-)
 create mode 100644 entity/Pers_entity/entityfields/org_id/onValueChange.js
 create mode 100644 entity/Pers_entity/entityfields/orgname/onValueChange.js
 create mode 100644 entity/Pers_entity/entityfields/orgname/valueProcess.js

diff --git a/entity/Pers_entity/Pers_entity.aod b/entity/Pers_entity/Pers_entity.aod
index 6f54575abb..81aaf1e8d1 100644
--- a/entity/Pers_entity/Pers_entity.aod
+++ b/entity/Pers_entity/Pers_entity.aod
@@ -169,6 +169,7 @@
       <columnName>ORG_ID</columnName>
       <caption></caption>
       <valueProcess>%aditoprj%/entity/Pers_entity/entityfields/org_id/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/Pers_entity/entityfields/org_id/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
       <name>REL_USER_NEW</name>
@@ -242,7 +243,13 @@
       <linkedContextProcess>%aditoprj%/entity/Pers_entity/entityfields/orgname/linkedContextProcess.js</linkedContextProcess>
       <mandatory v="true" />
       <outgoingField>PersOrg_dfo</outgoingField>
+      <valueProcess>%aditoprj%/entity/Pers_entity/entityfields/orgname/valueProcess.js</valueProcess>
       <fieldIdProcess>%aditoprj%/entity/Pers_entity/entityfields/orgname/fieldIdProcess.js</fieldIdProcess>
+      <onValueChange>%aditoprj%/entity/Pers_entity/entityfields/orgname/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>ORGID</name>
diff --git a/entity/Pers_entity/entityfields/org_id/onValueChange.js b/entity/Pers_entity/entityfields/org_id/onValueChange.js
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/entity/Pers_entity/entityfields/org_id/valueProcess.js b/entity/Pers_entity/entityfields/org_id/valueProcess.js
index 489cac6bba..2c20db8f32 100644
--- a/entity/Pers_entity/entityfields/org_id/valueProcess.js
+++ b/entity/Pers_entity/entityfields/org_id/valueProcess.js
@@ -5,8 +5,12 @@ import("system.neon");
 
 if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
 {
-    if(vars.exists("$param.OrgId_param") && vars.get("$param.OrgId_param") != null)
+    if(vars.exists("$image.lookup_orgname") && vars.get("$image.lookup_orgname") == '')
+        result.string(vars.get("$this.value"));    
+    else if(vars.exists("$param.OrgId_param") && vars.get("$param.OrgId_param") != null)
         result.string(vars.getString("$param.OrgId_param"));    
     else
         result.string("0")
-}
\ No newline at end of file
+}
+else
+    result.string(vars.get("$this.value"));    
diff --git a/entity/Pers_entity/entityfields/orgname/fieldIdProcess.js b/entity/Pers_entity/entityfields/orgname/fieldIdProcess.js
index ade38aef1c..7dd987ac84 100644
--- a/entity/Pers_entity/entityfields/orgname/fieldIdProcess.js
+++ b/entity/Pers_entity/entityfields/orgname/fieldIdProcess.js
@@ -1,11 +1,10 @@
-import("system.logging");
 import("system.vars");
 import("system.db");
 import("system.result");
 import("system.neon");
 
 var ret = "";
-var orgid = vars.getString("$field.ORGID").trim();
+var orgid = vars.getString("$field.ORG_ID").trim();
 
 if(orgid == "0")
     ret = null;
diff --git a/entity/Pers_entity/entityfields/orgname/linkedContextProcess.js b/entity/Pers_entity/entityfields/orgname/linkedContextProcess.js
index ec9fb8b7c0..d2f6c19c34 100644
--- a/entity/Pers_entity/entityfields/orgname/linkedContextProcess.js
+++ b/entity/Pers_entity/entityfields/orgname/linkedContextProcess.js
@@ -5,7 +5,10 @@ import("system.neon");
 
 var orgid = vars.getString("$field.ORGID");
 
-if((orgid == null || orgid.trim() == "0") && (vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW))
+if(vars.exists("$image.lookup_orgname") && vars.get("$image.lookup_orgname") != '')
+    result.string("Org_context");
+else if((orgid == null || orgid.trim() == "0")
+    && (vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW))
     result.string(null);
 else
-    result.string("Org_context");    
+    result.string("Org_context");        
diff --git a/entity/Pers_entity/entityfields/orgname/onValueChange.js b/entity/Pers_entity/entityfields/orgname/onValueChange.js
new file mode 100644
index 0000000000..fce9fb549e
--- /dev/null
+++ b/entity/Pers_entity/entityfields/orgname/onValueChange.js
@@ -0,0 +1,17 @@
+import("system.logging");
+import("system.db");
+import("system.neon");
+import("system.vars");
+
+var org_id = db.cell("select ORG_ID from RELATION where RELATIONID = '" + vars.getString("$field.ORGNAME") + "'");
+
+logging.log("value change -> " + org_id);
+
+if(org_id != '')
+{
+    neon.setFieldValue("$field.ORG_ID", org_id);            
+
+    var org_name = db.cell("select NAME from ORG where ORGID = '" + org_id + "'");
+    vars.set("$image.lookup_orgname", org_name);
+    neon.refresh("", "$field.ORGNAME");
+}
diff --git a/entity/Pers_entity/entityfields/orgname/valueProcess.js b/entity/Pers_entity/entityfields/orgname/valueProcess.js
new file mode 100644
index 0000000000..563668cb78
--- /dev/null
+++ b/entity/Pers_entity/entityfields/orgname/valueProcess.js
@@ -0,0 +1,20 @@
+import("system.result");
+import("system.vars");
+
+if(!vars.exists("$image.lookup_orgname"))
+{
+    result.string(vars.get("$this.value"));
+}
+else
+{
+    var name = vars.get("$image.lookup_orgname");
+
+    if(name != null)
+    {
+        vars.set("$image.lookup_orgname", null);
+        result.string(name);
+    }
+    else
+        result.string(vars.get("$this.value"));
+}
+        
\ No newline at end of file
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 9fb33b2728..b0f2142f63 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -2,7 +2,7 @@
 <preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.0.1">
   <name>_____PREFERENCES_PROJECT</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <projectName>xRM-Basic 5</projectName>
+  <projectName>xRM-Basic-5</projectName>
   <jditoMaxContentSize v="57671680" />
   <calendarCategoriesEvent>
     <entry>
-- 
GitLab