From 9ba860df3f12d8ebcd1e42b1f503cf78929085ff Mon Sep 17 00:00:00 2001
From: Maria Hofmann <m.hofmann@adito.de>
Date: Fri, 15 Mar 2019 12:30:59 +0000
Subject: [PATCH] 1034886 1034887 1034888 vertriebsprojekt state

---
 aliasDefinition/Data_alias/Data_alias.aod     | 14 +++++
 .../KeywordEntry_entity.aod                   | 16 +++---
 .../recordcontainers/db/conditionProcess.js   |  2 +-
 .../SalesprojectCompetition_entity.aod        |  2 +
 .../Salesproject_entity.aod                   | 41 +++++++++++++-
 .../children/containername_param/code.js      |  5 ++
 .../containername_param/valueProcess.js       |  4 ++
 .../reasons/displayValueProcess.js            |  8 +++
 .../entityfields/reasons/mandatoryProcess.js  |  6 +++
 .../reasons/possibleItemsProcess.js           |  9 ++++
 .../entityfields/reasons/stateProcess.js      |  8 +++
 .../entityfields/reasons/valueProcess.js      |  7 +++
 .../recordcontainers/db/onDBInsert.js         |  5 +-
 .../recordcontainers/db/onDBUpdate.js         | 53 ++++++++++++++++++-
 .../reasons.displayvalue/expression.js        |  7 +++
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     | 14 +++++
 .../SalesprojectEdit_view.aod                 |  4 ++
 .../SalesprojectPreview_view.aod              |  4 ++
 .../basic/2019.2/Salesproject_add_column.xml  |  9 ++++
 .../data_alias/basic/2019.2/changelog.xml     |  2 +
 others/db_changes/readme.adoc                 |  2 +-
 others/guide/CodingGuidelines.adoc            |  8 +++
 process/Sql_lib/process.js                    |  2 +-
 23 files changed, 217 insertions(+), 15 deletions(-)
 create mode 100644 entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/code.js
 create mode 100644 entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/reasons/mandatoryProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/reasons/stateProcess.js
 create mode 100644 entity/Salesproject_entity/entityfields/reasons/valueProcess.js
 create mode 100644 entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js
 create mode 100644 others/db_changes/data_alias/basic/2019.2/Salesproject_add_column.xml
 create mode 100644 others/guide/CodingGuidelines.adoc

diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 5f9b83200e..0b59d9d16b 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -2163,6 +2163,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>REASONS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="498" />
+                <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/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index e0f3ed9282..8b73d4bd76 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -222,12 +222,6 @@
           <fieldName>KeywordStates</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>59546343-9f48-4437-a829-e7715e860a7d</name>
-          <entityName>SalesprojectCompetition_entity</entityName>
-          <fieldName>KeywordWonLost</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>e2041dea-8647-49e9-aacf-4481b75b76ff</name>
           <entityName>Stock_entity</entityName>
@@ -342,6 +336,12 @@
           <fieldName>KeywordStates</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>ef8b9397-6292-42de-806e-5aaf3e3db5f3</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>KeywordWonLost</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
         <entityDependency>
           <name>5d9e0e48-ece8-4b8e-ab72-beef77b5dcc3</name>
           <entityName>Task_entity</entityName>
@@ -367,6 +367,10 @@
           <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <expose v="true" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityField>
diff --git a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
index 1a47f13073..4fb1ef2f32 100644
--- a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
@@ -3,7 +3,7 @@ import("system.db");
 import("system.result");
 import("Sql_lib");
 
-var cond = SqlCondition.begin().andPrepareVars("AB_KEYWORD_ENTRY.CONTAINER", "$param.containerName_param");
+var cond = SqlCondition.begin().andPrepareVars("AB_KEYWORD_ENTRY.CONTAINER", "$param.ContainerName_param");
 
 if (vars.get("$param.OnlyActives_param") == "true")
 {
diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
index f74ccc8803..1385a0beb1 100644
--- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
+++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
@@ -23,6 +23,7 @@
       <name>REASON</name>
       <title>Reason</title>
       <consumer>KeywordWonLost</consumer>
+      <selectionMode>SINGLE</selectionMode>
       <onValidation>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js</onValidation>
     </entityField>
     <entityField>
@@ -112,6 +113,7 @@
     <entityConsumer>
       <name>KeywordWonLost</name>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <selectionMode>MULTI</selectionMode>
       <dependency>
         <name>dependency</name>
         <entityName>KeywordEntry_entity</entityName>
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index ce9f78b180..a2022eaa27 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -157,6 +157,7 @@
       <name>SalesprojectCompetitions</name>
       <title>Competition</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <selectionMode>MULTI</selectionMode>
       <dependency>
         <name>dependency</name>
         <entityName>SalesprojectCompetition_entity</entityName>
@@ -419,6 +420,34 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/days_notactive/valueProcess.js</valueProcess>
     </entityField>
+    <entityConsumer>
+      <name>KeywordWonLost</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <selectionMode>MULTI</selectionMode>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>REASONS</name>
+      <title>Reason</title>
+      <consumer>KeywordWonLost</consumer>
+      <mandatoryProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/mandatoryProcess.js</mandatoryProcess>
+      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js</possibleItemsProcess>
+      <searchable v="true" />
+      <selectionMode>MULTI</selectionMode>
+      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js</displayValueProcess>
+    </entityField>
     <entityProvider>
       <name>Salesprojects</name>
       <fieldType>DEPENDENCY_IN</fieldType>
@@ -456,14 +485,14 @@
       <onDBUpdate>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
-          <name>4c96cc1e-fe7f-4f7f-93c8-5ceeb9e0a56b</name>
+          <name>02eb2f4c-3b85-409f-ac13-c8b26804da44</name>
           <tableName>SALESPROJECT</tableName>
           <primaryKey>SALESPROJECTID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
         <linkInformation>
-          <name>701d5159-3b17-4ba9-879f-fce34375411e</name>
+          <name>485af2f8-d91d-442f-89c7-c44915dda990</name>
           <tableName>ORGANISATION</tableName>
           <primaryKey>ORGANISATIONID</primaryKey>
           <isUIDTable v="false" />
@@ -531,6 +560,14 @@
           <name>PHASE.displayValue</name>
           <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>REASONS.displayValue</name>
+          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>REASONS.value</name>
+          <recordfield>SALESPROJECT.REASONS</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/code.js b/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/code.js
new file mode 100644
index 0000000000..cbd1c68194
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/code.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.salesprojectWonLost());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js b/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000..cfe4e46f28
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.salesprojectWonLost());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js b/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js
new file mode 100644
index 0000000000..bd91d37f12
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+
+value = KeywordUtils.getViewValue($KeywordRegistry.salesprojectWonLost(), vars.get("$field.REASONS"));
+result.string(value);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/reasons/mandatoryProcess.js b/entity/Salesproject_entity/entityfields/reasons/mandatoryProcess.js
new file mode 100644
index 0000000000..086a5d36d4
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/reasons/mandatoryProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+
+// IDs: SalesprojectState Order and Lost
+var res = vars.get("$field.STATE") && (vars.get("$field.STATE") == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd' || vars.get("$field.STATE") == '130bb53a-a97e-455e-8f34-8d445e985474');
+result.string(res);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js
new file mode 100644
index 0000000000..47fe8c4030
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+/*import("system.vars");
+import("system.result");
+import("system.db");
+
+var res = db.table("select KEYID, TITLE from AB_KEYWORD_ENTRY where CONTAINER = 'SalesprojectWonLost'");
+
+result.object(res);
+*/
+// TODO: multiple select
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/reasons/stateProcess.js b/entity/Salesproject_entity/entityfields/reasons/stateProcess.js
new file mode 100644
index 0000000000..871eb8d93a
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/reasons/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+
+// IDs: SalesprojectState Order and Lost
+if(vars.get("$field.STATE") && (vars.get("$field.STATE") == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd' || vars.get("$field.STATE") == '130bb53a-a97e-455e-8f34-8d445e985474'))
+        result.string("EDITABLE");
+else
+        result.string("READONLY");
diff --git a/entity/Salesproject_entity/entityfields/reasons/valueProcess.js b/entity/Salesproject_entity/entityfields/reasons/valueProcess.js
new file mode 100644
index 0000000000..33b4bb87b0
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/reasons/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+
+// IDs: SalesprojectState Order and Lost
+var state = vars.get("$field.STATE");
+if(state && (state != 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd' && state != '130bb53a-a97e-455e-8f34-8d445e985474'))
+    result.string("");
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js
index 46e16c3d68..47067fdfe5 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js
@@ -1,5 +1,6 @@
 import("system.vars");
 import("Salesproject_lib");
 
-Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 1, vars.get("$field.PHASE"), false);
-Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE"), true);
\ No newline at end of file
+// TODO Milestone Value is still an Integer but has to be a String (varchar)
+// Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 1, vars.get("$field.PHASE"), false);
+// Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), 2, vars.get("$field.STATE"), true);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
index 222926e7c1..22b4360c61 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
@@ -1,5 +1,9 @@
+import("system.neon");
+import("system.translate");
 import("system.vars");
 import("Salesproject_lib");
+import("Sql_lib");
+import("system.db");
 
 var typeValue, fieldVar
 
@@ -11,12 +15,57 @@ vars.get("$local.changed").forEach(function(fieldName) {
             fieldVar = "$field.PHASE";
             break;
         case "SALESPROJECT.STATE":
+            // Milestone
             typeValue = 2;
             fieldVar = "$field.STATE";
+            
+            // set COMPETITION / OFFER to Lost
+            
+            // Lost
+            if ( vars.get("$field.STATE") == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd')
+            {
+                _updateDataToLost("OFFER", $KeywordRegistry.offerStatus());
+                _updateReasons();
+            }
+            // Order
+            else if(vars.get("$field.STATE") == '130bb53a-a97e-455e-8f34-8d445e985474')
+            {
+                _updateDataToLost("SALESPROJECT_COMPETITION", $KeywordRegistry.salesprojectCompetitionState()); 
+                _updateReasons();
+            }
+            else
+                _updateReasons("del");
             break;
     }
 
     if (typeValue) {
-        Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar), true);
+        // TODO Milestone Value is still an Integer but has to be a String (varchar)
+        // Salesproject.insertMilestone(vars.getString("$field.SALESPROJECTID"), typeValue, vars.getString(fieldVar), true);
     }
-});
\ No newline at end of file
+});
+
+neon.refresh()
+
+function _updateReasons(pDelete)
+{
+    var reasons = "";
+    if(!pDelete)
+        vars.getString("field.REASONS");
+    if(reasons != null)
+        db.updateData("SALESPROJECT", ["REASONS"], null, [reasons], SqlCondition.equals("SALESPROJECT.SALESPROJECTID", vars.getString("$field.SALESPROJECTID"), "1=2"));
+}
+
+/**
+ * when project is state offer sets competitors to lost, when project is state lost sets offer to lost
+ * @param pTable {String}
+ * @param pContainer {String}
+ */
+function _updateDataToLost(pTable, pContainer )
+{
+     var statusLost = db.table(SqlCondition.begin()
+                .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", pContainer)
+                .andPrepare("AB_KEYWORD_ENTRY.TITLE", "Lost")
+                .buildSql("select KEYID from AB_KEYWORD_ENTRY", "1=2"));
+    
+    db.updateData(pTable, ["STATUS"], null, statusLost, SqlCondition.equals(pTable + ".SALESPROJECT_ID", vars.getString("$field.SALESPROJECTID"), "1=2"));
+}
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js
new file mode 100644
index 0000000000..c62430bd64
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+var value = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectWonLost(), "SALESPROJECT.REASONS");
+result.string(value);
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 916dcec7a1..0009fdbbe2 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -1779,6 +1779,7 @@
     </entry>
     <entry>
       <key>Product_technic</key>
+      <value>Produkt_Technik</value>
     </entry>
     <entry>
       <key>Moldova (Republic of)</key>
@@ -1810,9 +1811,11 @@
     </entry>
     <entry>
       <key>Project_duration</key>
+      <value>Projekt_Dauer</value>
     </entry>
     <entry>
       <key>Company_internationality</key>
+      <value>Unternehmen_Internationalität</value>
     </entry>
     <entry>
       <key>Eritrea</key>
@@ -1848,6 +1851,7 @@
     </entry>
     <entry>
       <key>Product_functionality</key>
+      <value>Produkt_Funktionalität</value>
     </entry>
     <entry>
       <key>Bulgaria</key>
@@ -2027,6 +2031,7 @@
     </entry>
     <entry>
       <key>Other_existing Customer</key>
+      <value>Sonstiges_Bestandskunde</value>
     </entry>
     <entry>
       <key>Uzbekistan</key>
@@ -2166,6 +2171,7 @@
     </entry>
     <entry>
       <key>Product_mobile use</key>
+      <value>Produkt_Mobiler Einsatz</value>
     </entry>
     <entry>
       <key>Samoa</key>
@@ -2229,6 +2235,7 @@
     </entry>
     <entry>
       <key>Company_size</key>
+      <value>Unternehmen_Größe</value>
     </entry>
     <entry>
       <key>Republic of Kosovo</key>
@@ -2264,6 +2271,7 @@
     </entry>
     <entry>
       <key>Product_industry knowhow</key>
+      <value>Produkt_Branchen KnowHow</value>
     </entry>
     <entry>
       <key>Progress</key>
@@ -2287,6 +2295,7 @@
     </entry>
     <entry>
       <key>Project_volume</key>
+      <value>Projekt_Volumen</value>
     </entry>
     <entry>
       <key>Ireland</key>
@@ -2538,6 +2547,7 @@
     </entry>
     <entry>
       <key>Project_reference</key>
+      <value>Projekt_Referenz</value>
     </entry>
     <entry>
       <key>Vanuatu</key>
@@ -2593,6 +2603,7 @@
     </entry>
     <entry>
       <key>Product_flexibility</key>
+      <value>Produkt_Flexibilität</value>
     </entry>
     <entry>
       <key>China</key>
@@ -2712,6 +2723,7 @@
     </entry>
     <entry>
       <key>Other_unknown</key>
+      <value>Sonstiges_Unbekannt</value>
     </entry>
     <entry>
       <key>Isle of Man</key>
@@ -2735,6 +2747,7 @@
     </entry>
     <entry>
       <key>Product_GUI</key>
+      <value>Produkt_GUI</value>
     </entry>
     <entry>
       <key>${GENDER_OTHER}</key>
@@ -2866,6 +2879,7 @@
     </entry>
     <entry>
       <key>Company_industry knowhow</key>
+      <value>Unternehmen_Branchen KnowHow</value>
     </entry>
     <entry>
       <key>Monaco</key>
diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
index f817929387..835768dd28 100644
--- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
+++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
@@ -36,6 +36,10 @@
           <name>426a20c1-5d79-417b-bab1-d3100fabb25b</name>
           <entityField>STATE</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>373ba27b-5f27-4c5d-865e-da50447124fa</name>
+          <entityField>REASONS</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>c00b2121-c44d-41a1-8c32-e2339b4dd234</name>
           <entityField>PHASE</entityField>
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
index 9067095183..9fe2b5c18f 100644
--- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -30,6 +30,10 @@
           <name>4e3d7a37-f55b-4c18-9ba1-ab4ab0bbb442</name>
           <entityField>STATE</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>2867e662-b824-4bbf-8eaf-bbd34f44598e</name>
+          <entityField>REASONS</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>ff0dcd67-56ec-4db1-8c53-531f22fda716</name>
           <entityField>PHASE</entityField>
diff --git a/others/db_changes/data_alias/basic/2019.2/Salesproject_add_column.xml b/others/db_changes/data_alias/basic/2019.2/Salesproject_add_column.xml
new file mode 100644
index 0000000000..a40ddf6bd7
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/Salesproject_add_column.xml
@@ -0,0 +1,9 @@
+<?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.hofmann" id="e148d42d-ba3c-4cb7-a414-f2da9a9f2ae0">
+		<addColumn tableName="SALESPROJECT">
+			<!-- space for 13 entries as Multistring encoded -->
+            <column name="REASONS" type="VARCHAR(498)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/changelog.xml b/others/db_changes/data_alias/basic/2019.2/changelog.xml
index 1de36b80a0..8a9244cf31 100644
--- a/others/db_changes/data_alias/basic/2019.2/changelog.xml
+++ b/others/db_changes/data_alias/basic/2019.2/changelog.xml
@@ -99,4 +99,6 @@
     
     <include relativeToChangelogFile="true" file="add_ObjectRelation_type.xml"/>
     <include relativeToChangelogFile="true" file="data/AditoBasic/ObjectRelation_exampleData.xml" context="example"/>
+    
+    <include relativeToChangelogFile="true" file="Salesproject_add_column.xml"/>
 </databaseChangeLog>
diff --git a/others/db_changes/readme.adoc b/others/db_changes/readme.adoc
index e9bf2e4ff2..240dfacc50 100644
--- a/others/db_changes/readme.adoc
+++ b/others/db_changes/readme.adoc
@@ -31,7 +31,7 @@ So, that's where all our changes are located - but what about the changes _itsel
 As you can think of, they're stored in files located in the folders `struct` for DDL-stuff like _create_, _alter_ etc. 
 and `data` for DML-stuff like _insert_, _update_ etc. 
 
-If you want to know what to do add in these files take a look at the official liquibase documentation for futher information how to fill these XML files: http://www.liquibase.org/documentation/index.html
+If you want to know what to do add in these files take a look at the official liquibase documentation for further information how to fill these XML files: http://www.liquibase.org/documentation/index.html
 
 IMPORTANT: Always remember that you might have to define some rollback-entries. +
 This is e.g. not needed for create-entries but for others like insert.
diff --git a/others/guide/CodingGuidelines.adoc b/others/guide/CodingGuidelines.adoc
new file mode 100644
index 0000000000..7fbd1bf92c
--- /dev/null
+++ b/others/guide/CodingGuidelines.adoc
@@ -0,0 +1,8 @@
+= Sample Document
+Doc Writer <doc.writer@asciidoc.org>; John Smith <john.smith@asciidoc.org>
+v1.0, 2013-05-20: First draft
+:title: Sample Document
+:tags: [document, example]
+
+
+Preamble...
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index e677069ded..195c85cb41 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -1207,7 +1207,7 @@ SqlUtils.getSqlInStatement = function(pFieldname, pData, pQuoteSymbol) {
 * 
 * @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title -> as preparedSatement-elements
 */
-SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale)
+SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale) 
 {
     var keyData = pKeyValueArray;
     if (keyData.length == 0)
-- 
GitLab