From ffb23256776afe5c44f9e6587564981849ec1bbf Mon Sep 17 00:00:00 2001
From: "m.mansour" <m.mansour@mmansour.aditosoftware.local>
Date: Thu, 18 Jul 2019 18:19:07 +0200
Subject: [PATCH] Belege fixed vertriebsprojekt and changed to objects like
 offer

---
 .../Data_alias/basic/2019.1.4/changelog.xml   |   2 +-
 .../basic/2019.1.4/update_Salesorder.xml      |   3 +-
 aliasDefinition/Data_alias/Data_alias.aod     |  54 ++++-----
 .../translate4log/property.js                 |   8 --
 entity/Context_entity/Context_entity.aod      |   6 +
 entity/Object_entity/Object_entity.aod        |   6 +
 entity/Offer_entity/Offer_entity.aod          |   5 +
 entity/Order_entity/Order_entity.aod          | 105 ++++++++++++++----
 .../children/whitelist/valueProcess.js        |   4 +
 .../object_rowid/displayValueProcess.js       |  11 ++
 .../object_rowid/linkedContextProcess.js      |   5 +
 .../object_rowid/mandatoryProcess.js          |   7 ++
 .../entityfields/object_rowid/titleProcess.js |  21 ++++
 .../entityfields/object_rowid/valueProcess.js |   8 ++
 .../object_type/displayValueProcess.js        |  10 ++
 .../object_type/mandatoryProcess.js           |   7 ++
 .../entityfields/object_type/valueProcess.js  |  19 ++++
 .../children/contactid_param/valueProcess.js  |  10 ++
 .../children/objecttype_param/valueProcess.js |   4 +
 .../possibleconnectiontypes/valueProcess.js   |   3 +
 .../salesproject_id/displayValueProcess.js    |   5 -
 .../salesproject_id/stateProcess.js           |  13 ---
 .../salesproject_id/valueProcess.js           |   7 --
 .../children/contactid_param/valueProcess.js  |   5 +
 .../recordcontainers/db/conditionProcess.js   |   8 +-
 .../recordcontainers/db/fromClauseProcess.js  |   2 +-
 .../recordcontainers/db/onDBDelete.js         |   2 +-
 .../recordcontainers/db/onDBInsert.js         |  12 +-
 .../object_rowid.displayvalue/expression.js   |   4 +
 .../Salesproject_entity.aod                   |  12 +-
 neonView/OrderEdit_view/OrderEdit_view.aod    |  12 +-
 31 files changed, 278 insertions(+), 102 deletions(-)
 delete mode 100644 aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js
 create mode 100644 entity/Order_entity/entityfields/contexts/children/whitelist/valueProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_rowid/titleProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_rowid/valueProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_type/displayValueProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_type/mandatoryProcess.js
 create mode 100644 entity/Order_entity/entityfields/object_type/valueProcess.js
 create mode 100644 entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js
 create mode 100644 entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js
 create mode 100644 entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js
 delete mode 100644 entity/Order_entity/entityfields/salesproject_id/displayValueProcess.js
 delete mode 100644 entity/Order_entity/entityfields/salesproject_id/stateProcess.js
 delete mode 100644 entity/Order_entity/entityfields/salesproject_id/valueProcess.js
 create mode 100644 entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
 create mode 100644 entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js

diff --git a/.liquibase/Data_alias/basic/2019.1.4/changelog.xml b/.liquibase/Data_alias/basic/2019.1.4/changelog.xml
index e08a486b996..b1975265893 100644
--- a/.liquibase/Data_alias/basic/2019.1.4/changelog.xml
+++ b/.liquibase/Data_alias/basic/2019.1.4/changelog.xml
@@ -83,7 +83,6 @@
     
     <include relativeToChangelogFile="true" file="update_Salesproject_Forecast.xml"/>
     <include relativeToChangelogFile="true" file="update_Offer.xml"/>
-    <include relativeToChangelogFile="true" file="update_Salesorder.xml"/>
     <include relativeToChangelogFile="true" file="update_Salesproject_Competition.xml"/>
     <include relativeToChangelogFile="true" file="update_Salesproject_Member.xml"/>
     <include relativeToChangelogFile="true" file="update_Memberrole_InternExtern.xml"/>
@@ -187,4 +186,5 @@
     
     <include relativeToChangelogFile="true" file="create_ordertype_keyword.xml"/>
     <include relativeToChangelogFile="true" file="create_dunninglevel_keyword.xml"/>
+    <include relativeToChangelogFile="true" file="update_Salesorder.xml"/>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2019.1.4/update_Salesorder.xml b/.liquibase/Data_alias/basic/2019.1.4/update_Salesorder.xml
index d29fe7b6f37..0a03c722c22 100644
--- a/.liquibase/Data_alias/basic/2019.1.4/update_Salesorder.xml
+++ b/.liquibase/Data_alias/basic/2019.1.4/update_Salesorder.xml
@@ -1,6 +1,6 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <changeSet author="m.mansour" id="1fc81acb-5347-4ff4-89c8-868fcb486d7e">  
+    <changeSet author="m.mansour" id="a48f9e54-16ac-4bb8-8f2a-395f3035c55e">  
         
         <addColumn tableName="SALESORDER">
             <column name="OBJECT_TYPE" type="NVARCHAR(63)">
@@ -11,6 +11,7 @@
             <column name="OBJECT_TYPE" value="Salesproject" />
             <where>OBJECT_ROWID = '0833465c-8851-4fbb-b7e3-8c1d73c903da' </where>
         </update>
+      
         
         <addNotNullConstraint
             tableName="SALESORDER"
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index bae8b488090..5a18b0f65be 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -4399,32 +4399,6 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>SALESPROJECT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title>Salesproject</title>
-                <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                  <customJDitoProperty>
-                    <name>translate4Log</name>
-                    <global v="false" />
-                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js</property>
-                  </customJDitoProperty>
-                </customProperties>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>STATUS</name>
                 <dbName></dbName>
@@ -4722,6 +4696,34 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js
deleted file mode 100644
index d92ff2dc841..00000000000
--- a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("Loghistory_lib");
-import("system.vars");
-import("system.result");
-import("Salesproject_lib");
-
-var params = Translate4LogParams.load();
-var id = params.value;
-result.string(Salesproject.getSalesProjectTitleById(id));
diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod
index b4361237ebe..6cad5fcef7d 100644
--- a/entity/Context_entity/Context_entity.aod
+++ b/entity/Context_entity/Context_entity.aod
@@ -65,6 +65,12 @@
           <fieldName>Contexts</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>98695ca8-7f46-489d-a479-f856f6d2b5ca</name>
+          <entityName>Order_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index f15093d9532..7396acca1bd 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -198,6 +198,12 @@
           <fieldName>Objects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>6a7a34e0-22ae-4bd7-b762-84a332a0a937</name>
+          <entityName>Order_entity</entityName>
+          <fieldName>Objects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index e9400dd1aa5..ff5478a884d 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -646,6 +646,11 @@
       <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index e9c71dfe2f6..ecb08c01ed0 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -65,17 +65,6 @@
         <element>MASK</element>
       </onValueChangeTypes>
     </entityField>
-    <entityField>
-      <name>SALESPROJECT_ID</name>
-      <title>Salesproject</title>
-      <consumer>Salesprojects</consumer>
-      <linkedContext>Salesproject</linkedContext>
-      <mandatory v="true" />
-      <state>INVISIBLE</state>
-      <stateProcess>%aditoprj%/entity/Order_entity/entityfields/salesproject_id/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesproject_id/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/salesproject_id/displayValueProcess.js</displayValueProcess>
-    </entityField>
     <entityField>
       <name>STATUS</name>
       <title>Status</title>
@@ -161,12 +150,6 @@
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/totalgross/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/totalgross/displayValueProcess.js</displayValueProcess>
     </entityField>
-    <entityParameter>
-      <name>SalesprojectId_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
     <entityField>
       <name>LANGUAGE</name>
       <title>Language</title>
@@ -207,7 +190,7 @@
     <entityParameter>
       <name>ContactId_param</name>
       <expose v="true" />
-      <mandatory v="false" />
+      <mandatory v="true" />
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
@@ -273,8 +256,14 @@
       <dependency>
         <name>dependency</name>
         <entityName>Salesproject_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>Salesprojects</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityField>
       <name>ADDRESS</name>
@@ -546,6 +535,76 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>OBJECT_ROWID</name>
+      <title>Link</title>
+      <consumer>Objects</consumer>
+      <linkedContextProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
+      <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js</mandatoryProcess>
+      <titleProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/titleProcess.js</titleProcess>
+      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <title>Connection Type</title>
+      <consumer>Contexts</consumer>
+      <mandatoryProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/mandatoryProcess.js</mandatoryProcess>
+      <state>INVISIBLE</state>
+      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Objects</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Object_entity</entityName>
+        <fieldName>FilteredObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Contexts</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>Context</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Whitelist</name>
+          <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/whitelist/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>PossibleConnectionTypes</name>
+      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js</valueProcess>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -719,6 +778,14 @@
           <name>PAYDUEDATE.value</name>
           <recordfield>SALESORDER.PAYDUEDATE</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.value</name>
+          <recordfield>SALESORDER.OBJECT_ROWID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.displayValue</name>
+          <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
     <indexRecordContainer>
diff --git a/entity/Order_entity/entityfields/contexts/children/whitelist/valueProcess.js b/entity/Order_entity/entityfields/contexts/children/whitelist/valueProcess.js
new file mode 100644
index 00000000000..928bc6a94ca
--- /dev/null
+++ b/entity/Order_entity/entityfields/contexts/children/whitelist/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.PossibleConnectionTypes"))
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
new file mode 100644
index 00000000000..8946bb43f89
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Context_lib");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) {
+    result.string("");
+} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+}
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js b/entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js
new file mode 100644
index 00000000000..0d20a44e4ae
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_rowid/linkedContextProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE")))
diff --git a/entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js b/entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js
new file mode 100644
index 00000000000..4736fe4bfc8
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_rowid/mandatoryProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var type = ContactUtils.getContactType(vars.get("$field.CONTACT_ID"), vars.get("$field.CONTACT_PERSON_ID"), vars.get("$field.CONTACT_ORG_ID"));
+
+result.string(type != 2);
diff --git a/entity/Order_entity/entityfields/object_rowid/titleProcess.js b/entity/Order_entity/entityfields/object_rowid/titleProcess.js
new file mode 100644
index 00000000000..cf72d33d286
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_rowid/titleProcess.js
@@ -0,0 +1,21 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Context_lib");
+
+var possibleTypes = vars.getString("$param.PossibleConnectionTypes");
+var title = translate.text("Link");
+
+if (possibleTypes)
+{
+    possibleTypes = JSON.parse(possibleTypes);
+    if (possibleTypes.length == 1)
+    {
+        var contextTitle = ContextUtils.getTitle(possibleTypes[0]);
+        if (contextTitle)
+            title = contextTitle;
+    }
+}
+
+result.string(title);
+    
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/object_rowid/valueProcess.js b/entity/Order_entity/entityfields/object_rowid/valueProcess.js
new file mode 100644
index 00000000000..487f3796607
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_rowid/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.logging");
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+logging.log("--- " + JSON.stringify(vars.get("$sys.recordstate"), vars.exists("$param.ObjectRowId_param"), null, "\t"))
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
+    result.string(vars.get("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/object_type/displayValueProcess.js b/entity/Order_entity/entityfields/object_type/displayValueProcess.js
new file mode 100644
index 00000000000..d7b4dedc2e4
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_type/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("system.project");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_TYPE")) {
+    result.string("");
+} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT_TYPE"))[1]);
+}
diff --git a/entity/Order_entity/entityfields/object_type/mandatoryProcess.js b/entity/Order_entity/entityfields/object_type/mandatoryProcess.js
new file mode 100644
index 00000000000..4736fe4bfc8
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_type/mandatoryProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var type = ContactUtils.getContactType(vars.get("$field.CONTACT_ID"), vars.get("$field.CONTACT_PERSON_ID"), vars.get("$field.CONTACT_ORG_ID"));
+
+result.string(type != 2);
diff --git a/entity/Order_entity/entityfields/object_type/valueProcess.js b/entity/Order_entity/entityfields/object_type/valueProcess.js
new file mode 100644
index 00000000000..55bd8cc69a8
--- /dev/null
+++ b/entity/Order_entity/entityfields/object_type/valueProcess.js
@@ -0,0 +1,19 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("Context_lib")
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+{
+    if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"))
+    {
+        result.string(vars.get("$param.ObjectType_param"));
+    }        
+    else if (vars.exists("$param.PossibleConnectionTypes") && vars.get("$param.PossibleConnectionTypes"))
+    {
+        var possible = JSON.parse(vars.getString("$param.PossibleConnectionTypes"));
+        if (possible.length > 0)
+            result.string(possible[0]);
+    }
+}
+        
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js b/entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js
new file mode 100644
index 00000000000..c5efd0f6d8a
--- /dev/null
+++ b/entity/Order_entity/entityfields/objects/children/contactid_param/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Contact_lib");
+
+if (vars.get("$field.CONTACT_ID"))
+{
+    var ids = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"));
+    if (ids.length >= 3 && ids[2])
+        result.string(ids[2]);
+}
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js
new file mode 100644
index 00000000000..4238ef7d331
--- /dev/null
+++ b/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js b/entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js
new file mode 100644
index 00000000000..e4878ba3eac
--- /dev/null
+++ b/entity/Order_entity/entityfields/possibleconnectiontypes/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.object(["Salesproject"]);
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/salesproject_id/displayValueProcess.js b/entity/Order_entity/entityfields/salesproject_id/displayValueProcess.js
deleted file mode 100644
index 65afbf6e950..00000000000
--- a/entity/Order_entity/entityfields/salesproject_id/displayValueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Salesproject_lib");
-
-result.string(Salesproject.getSalesProjectTitleById(vars.getString("$field.SALESPROJECT_ID")));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/salesproject_id/stateProcess.js b/entity/Order_entity/entityfields/salesproject_id/stateProcess.js
deleted file mode 100644
index a88395a1cc7..00000000000
--- a/entity/Order_entity/entityfields/salesproject_id/stateProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.neon");
-import("system.result");
-import("system.vars");
-
-
-switch (vars.get("$sys.recordstate")) 
-{
-    case neon.OPERATINGSTATE_NEW:
-        result.object(neon.COMPONENTSTATE_EDITABLE);
-    break;
-    default:
-        result.object(neon.COMPONENTSTATE_READONLY);
-}
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/salesproject_id/valueProcess.js b/entity/Order_entity/entityfields/salesproject_id/valueProcess.js
deleted file mode 100644
index 2bc1715fbb0..00000000000
--- a/entity/Order_entity/entityfields/salesproject_id/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if (vars.exists("$param.SalesprojectId_param")) 
-{
-    result.string(vars.get("$param.SalesprojectId_param"));
-}
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
new file mode 100644
index 00000000000..9232f51b2e0
--- /dev/null
+++ b/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Entity_lib");
+
+result.string(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID")));
diff --git a/entity/Order_entity/recordcontainers/db/conditionProcess.js b/entity/Order_entity/recordcontainers/db/conditionProcess.js
index 11dd858114e..708518b4c62 100644
--- a/entity/Order_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Order_entity/recordcontainers/db/conditionProcess.js
@@ -1,9 +1,15 @@
+import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
 
 var cond = new SqlCondition();
-cond.andPrepareVars("SALESORDER.SALESPROJECT_ID", "$param.SalesprojectId_param");
 
+if(vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
+    cond.andPrepareVars("SALESORDER.CONTACT_ID", "$param.ContactId_param");
+else {
+    cond.andPrepareVars("SALESORDER.OBJECT_ROWID", "$param.ObjectRowId_param");
+    cond.andPrepareVars("SALESORDEER.OBJECT_TYPE", "$param.ObjectType_param");
+}
 //TODO: use a preparedCondition when available #1030812 #1034026
 result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/fromClauseProcess.js b/entity/Order_entity/recordcontainers/db/fromClauseProcess.js
index 4b856fef61d..c0acd1b6df7 100644
--- a/entity/Order_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Order_entity/recordcontainers/db/fromClauseProcess.js
@@ -4,4 +4,4 @@ result.string("SALESORDER \n\
     left join CONTACT on CONTACT.CONTACTID = SALESORDER.CONTACT_ID \n\
     left join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID \n\
     left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID \n\
-    left join SALESPROJECT on SALESPROJECTID = SALESPROJECT_ID");
\ No newline at end of file
+    left join SALESPROJECT on SALESPROJECTID = SALESORDER.OBJECT_ROWID");
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/onDBDelete.js b/entity/Order_entity/recordcontainers/db/onDBDelete.js
index 2a29a4332ab..775affb9539 100644
--- a/entity/Order_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Order_entity/recordcontainers/db/onDBDelete.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.db");
 
-db.deleteData("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = '" + vars.getString("$field.SALESORDERID") + "'");
\ No newline at end of file
+db.deleteData("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = '" + vars.getString("$field.OFFER_ID") + "'");
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js
index 940a4ff0f9a..f40d760016e 100644
--- a/entity/Order_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js
@@ -1,12 +1,6 @@
 import("system.neon");
 import("system.vars");
-import("Sql_lib");
-import("Order_lib");
+import("Offer_lib");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param"))
-{
-    var orderId = vars.getString("$field.SALESORDERID");
-    var offerId = vars.getString("$param.OfferId_param");
-    
-    OrderUtils.copyOfferItemsToOrder(offerId, orderId); //copy all offerItems
-}
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferOriginal_Id_param"))
+    OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), vars.get("$field.OFFER_ID"));
diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
new file mode 100644
index 00000000000..4ac0690f62f
--- /dev/null
+++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index c767317136d..f98437a49d7 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -17,12 +17,6 @@
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
-        <entityDependency>
-          <name>497657f7-ebd7-4c9c-b8ab-da447a1556e5</name>
-          <entityName>Order_entity</entityName>
-          <fieldName>Salesprojects</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>f010781d-453d-4df3-b330-75c1336e4d4c</name>
           <entityName>Object_entity</entityName>
@@ -434,6 +428,12 @@
           <fieldName>Salesprojects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>cb529e29-37cb-4e8d-9e89-f15cff56df68</name>
+          <entityName>Order_entity</entityName>
+          <fieldName>Salesprojects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/neonView/OrderEdit_view/OrderEdit_view.aod b/neonView/OrderEdit_view/OrderEdit_view.aod
index 5b0773ec480..3c6ebeeba30 100644
--- a/neonView/OrderEdit_view/OrderEdit_view.aod
+++ b/neonView/OrderEdit_view/OrderEdit_view.aod
@@ -40,10 +40,6 @@
           <name>7ab3eb65-b713-4251-9eb1-3119432565f5</name>
           <entityField>LANGUAGE</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>ac6f81a2-5012-461a-bcf1-4534182b0973</name>
-          <entityField>SALESPROJECT_ID</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>cf2fd509-eaa5-4b35-8775-063f31dafc2c</name>
           <entityField>OFFER_ID</entityField>
@@ -80,6 +76,14 @@
           <name>c14ed3d5-0442-4b3e-8410-2a3285a2e8fd</name>
           <entityField>CANCELLATION</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>c9efcb50-ed61-453b-baa3-02071d99e4b0</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>acb42613-102e-42cc-984f-5820b36ad2a8</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <neonViewReference>
-- 
GitLab