From 1c8937843a17ac45e8d9319c27a4e97584d9aa2c Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Mon, 11 Feb 2019 17:00:37 +0100
Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?=
 =?UTF-8?q?=201032312][Keywords=20f=C3=BCr=20bestehende=20Module=20anlegen?=
 =?UTF-8?q?]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 entity/Keyword_entity/Keyword_entity.aod      | 12 ++++++++
 .../SalesprojectCompetition_entity.aod        | 21 ++++++++++++-
 .../children/containername_param/code.js      |  4 +++
 .../reason/possibleItemsProcess.js            |  7 -----
 .../reason.displayvalue/expression.js         |  5 ++++
 entity/Stock_entity/Stock_entity.aod          | 21 ++++++++++++-
 .../children/containername_param/code.js      |  4 +++
 .../warehouse/possibleItemsProcess.js         |  7 -----
 .../warehouse.displayvalue/expression.js      |  5 ++++
 .../data/example_product/PRODUCT_42154311.xml |  8 ++---
 .../create_salesproject_competition.xml       |  2 +-
 .../data_alias/struct/create_stock.xml        |  2 +-
 process/Keyword_lib/process.js                | 30 ++++---------------
 13 files changed, 81 insertions(+), 47 deletions(-)
 create mode 100644 entity/SalesprojectCompetition_entity/entityfields/keywordwonlost/children/containername_param/code.js
 delete mode 100644 entity/SalesprojectCompetition_entity/entityfields/reason/possibleItemsProcess.js
 create mode 100644 entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/reason.displayvalue/expression.js
 create mode 100644 entity/Stock_entity/entityfields/keywordwarehouses/children/containername_param/code.js
 delete mode 100644 entity/Stock_entity/entityfields/warehouse/possibleItemsProcess.js
 create mode 100644 entity/Stock_entity/recordcontainers/db/recordfieldmappings/warehouse.displayvalue/expression.js

diff --git a/entity/Keyword_entity/Keyword_entity.aod b/entity/Keyword_entity/Keyword_entity.aod
index fef0c9e712..dcce9447b4 100644
--- a/entity/Keyword_entity/Keyword_entity.aod
+++ b/entity/Keyword_entity/Keyword_entity.aod
@@ -214,6 +214,18 @@
           <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>
+          <fieldName>KeywordWarehouses</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
index fedbaa221c..1e4c35e49e 100644
--- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
+++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
@@ -21,7 +21,7 @@
     <entityField>
       <name>REASON</name>
       <title>Reason</title>
-      <possibleItemsProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/reason/possibleItemsProcess.js</possibleItemsProcess>
+      <consumer>KeywordWonLost</consumer>
       <onValidation>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/reason/onValidation.js</onValidation>
     </entityField>
     <entityField>
@@ -117,6 +117,21 @@
         <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
+    <entityConsumer>
+      <name>KeywordWonLost</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Keyword_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/keywordwonlost/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -193,6 +208,10 @@
           <name>RELATION_ID.displayValue</name>
           <recordfield>ORG.NAME</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>REASON.displayValue</name>
+          <expression>%aditoprj%/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/reason.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/SalesprojectCompetition_entity/entityfields/keywordwonlost/children/containername_param/code.js b/entity/SalesprojectCompetition_entity/entityfields/keywordwonlost/children/containername_param/code.js
new file mode 100644
index 0000000000..b855b77f90
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/keywordwonlost/children/containername_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Keyword_lib");
+
+result.string($KeywordRegistry.get.SalesprojectWonLost);
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/reason/possibleItemsProcess.js b/entity/SalesprojectCompetition_entity/entityfields/reason/possibleItemsProcess.js
deleted file mode 100644
index 01a1170142..0000000000
--- a/entity/SalesprojectCompetition_entity/entityfields/reason/possibleItemsProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-var items;
-
-items = KeywordUtils.getStandardArray("SALESPROJECT.WONLOST");
-result.object(items);
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/reason.displayvalue/expression.js b/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/reason.displayvalue/expression.js
new file mode 100644
index 0000000000..f3ca32ff03
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/recordcontainers/db/recordfieldmappings/reason.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.SalesprojectWonLost, "SALESPROJECT_COMPETITION.REASON");
+result.string(sql);
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index 2dc4b520d5..baea0e3691 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -43,8 +43,8 @@
     <entityField>
       <name>WAREHOUSE</name>
       <title>Warehouse</title>
+      <consumer>KeywordWarehouses</consumer>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/Stock_entity/entityfields/warehouse/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
     <entityProvider>
       <name>Stocks</name>
@@ -85,6 +85,21 @@
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
+    <entityConsumer>
+      <name>KeywordWarehouses</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Keyword_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/Stock_entity/entityfields/keywordwarehouses/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -131,6 +146,10 @@
           <name>WAREHOUSE.value</name>
           <recordfield>STOCK.WAREHOUSE</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>WAREHOUSE.displayValue</name>
+          <expression>%aditoprj%/entity/Stock_entity/recordcontainers/db/recordfieldmappings/warehouse.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Stock_entity/entityfields/keywordwarehouses/children/containername_param/code.js b/entity/Stock_entity/entityfields/keywordwarehouses/children/containername_param/code.js
new file mode 100644
index 0000000000..e26a2604ef
--- /dev/null
+++ b/entity/Stock_entity/entityfields/keywordwarehouses/children/containername_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Keyword_lib");
+
+result.string($KeywordRegistry.get.StockWarehouse);
\ No newline at end of file
diff --git a/entity/Stock_entity/entityfields/warehouse/possibleItemsProcess.js b/entity/Stock_entity/entityfields/warehouse/possibleItemsProcess.js
deleted file mode 100644
index 6c5c453086..0000000000
--- a/entity/Stock_entity/entityfields/warehouse/possibleItemsProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-var items;
-
-items = KeywordUtils.getStandardArray("STOCK.WAREHOUSE");
-result.object(items);
\ No newline at end of file
diff --git a/entity/Stock_entity/recordcontainers/db/recordfieldmappings/warehouse.displayvalue/expression.js b/entity/Stock_entity/recordcontainers/db/recordfieldmappings/warehouse.displayvalue/expression.js
new file mode 100644
index 0000000000..ffecade2a1
--- /dev/null
+++ b/entity/Stock_entity/recordcontainers/db/recordfieldmappings/warehouse.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.StockWarehouse, "STOCK.WAREHOUSE");
+result.string(sql);
diff --git a/others/db_changes/data_alias/data/example_product/PRODUCT_42154311.xml b/others/db_changes/data_alias/data/example_product/PRODUCT_42154311.xml
index 1a5dedcbe3..ca0d647143 100644
--- a/others/db_changes/data_alias/data/example_product/PRODUCT_42154311.xml
+++ b/others/db_changes/data_alias/data/example_product/PRODUCT_42154311.xml
@@ -208,7 +208,7 @@
             <column name="QUANTITY" valueNumeric="30"/>
             <column name="PRODUCT_ID" value="a2e76fe1-e49b-4f2b-8da5-12660738043d"/>
             <column name="ENTRYDATE" valueDate="2018-11-22T00:00:00"/>
-            <column name="WAREHOUSE" valueNumeric="1"/>
+            <column name="WAREHOUSE" value="7885caba-8d58-4fe5-9774-1872fbad1dbe"/>
         </insert>
         <insert tableName="STOCK">
             <column name="STOCKID" value="a90a8aba-76bb-40b1-a4ab-ef39508296cb"/>
@@ -216,7 +216,7 @@
             <column name="QUANTITY" valueNumeric="25"/>
             <column name="PRODUCT_ID" value="a2e76fe1-e49b-4f2b-8da5-12660738043d"/>
             <column name="ENTRYDATE" valueDate="2018-11-15T00:00:00"/>
-            <column name="WAREHOUSE" valueNumeric="1"/>
+            <column name="WAREHOUSE" value="7885caba-8d58-4fe5-9774-1872fbad1dbe"/>
         </insert>
         <insert tableName="STOCK">
             <column name="STOCKID" value="bd4c1a16-1b80-4b3e-aa67-306f387a62df"/>
@@ -224,7 +224,7 @@
             <column name="QUANTITY" valueNumeric="23"/>
             <column name="PRODUCT_ID" value="a2e76fe1-e49b-4f2b-8da5-12660738043d"/>
             <column name="ENTRYDATE" valueDate="2018-11-22T00:00:00"/>
-            <column name="WAREHOUSE" valueNumeric="1"/>
+            <column name="WAREHOUSE" value="7885caba-8d58-4fe5-9774-1872fbad1dbe"/>
         </insert>
         <insert tableName="STOCK">
             <column name="STOCKID" value="3caba278-9d38-485c-9d78-11ea969b832c"/>
@@ -232,7 +232,7 @@
             <column name="QUANTITY" valueNumeric="17"/>
             <column name="PRODUCT_ID" value="a2e76fe1-e49b-4f2b-8da5-12660738043d"/>
             <column name="ENTRYDATE" valueDate="2018-11-15T00:00:00"/>
-            <column name="WAREHOUSE" valueNumeric="1"/>
+            <column name="WAREHOUSE" value="7885caba-8d58-4fe5-9774-1872fbad1dbe"/>
         </insert>
 
     </changeSet>
diff --git a/others/db_changes/data_alias/struct/create_salesproject_competition.xml b/others/db_changes/data_alias/struct/create_salesproject_competition.xml
index 308f9b0cae..219f5d3e34 100644
--- a/others/db_changes/data_alias/struct/create_salesproject_competition.xml
+++ b/others/db_changes/data_alias/struct/create_salesproject_competition.xml
@@ -13,7 +13,7 @@
             </column>
             <column name="DATE_CANCELLED" type="TIMESTAMP"/>
             <column name="INFO" type="NCLOB"/>
-            <column name="REASON" type="INTEGER"/>
+            <column name="REASON" type="CHAR(36)"/>
             <column name="STATUS" type="INTEGER"/> 
                         
         </createTable>
diff --git a/others/db_changes/data_alias/struct/create_stock.xml b/others/db_changes/data_alias/struct/create_stock.xml
index fec96be53f..13b95322b8 100644
--- a/others/db_changes/data_alias/struct/create_stock.xml
+++ b/others/db_changes/data_alias/struct/create_stock.xml
@@ -14,7 +14,7 @@
                     <constraints nullable="false" foreignKeyName="FK_STOCK_PRODUCT_ID" references="PRODUCT(PRODUCTID)"/>
                 </column>
                 <column name="ENTRYDATE" type="TIMESTAMP"/>
-                <column name="WAREHOUSE" type="INTEGER"/>
+                <column name="WAREHOUSE" type="CHAR(36)"/>
 	</createTable>      
 </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 57705e0db0..2ecca3916b 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -12,6 +12,9 @@ import("Sql_lib");
  * the reason behind this is that the registry is initalized at the position of the Keyword_lib-import;
  * That means, if a value of the registry is used before the import of the Keyword_lib the registry is not set
  * 
+ * Not every KeywordContainer that exists has to be listed here (e.g. dynamic created keywords) but every keyword-container-name that is used within
+ * JDito code should be listed here
+ * 
  * This is a very special case of an object and should not be used as a refernece for own implementations since the requirements will be different
  * 
  * @class
@@ -37,6 +40,8 @@ $KeywordRegistry.get = {
     SalesprojectMemberRole: "SalesprojectMemberRole",
     SalesprojectSource: "SalesprojectSource",
     SalesorderState: "SalesorderState",
+    SalesprojectWonLost: "SalesprojectWonLost",
+    StockWarehouse: "StockWarehouse",
     
     "null": null
 };
@@ -219,13 +224,6 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL
                     ,_createKeywordEntry("6", translate.text("Service", locale))
                 ]);
                 break;
-            case "STOCK.WAREHOUSE":
-                valueContainer = _createKeywordEntriesContainer([
-                     _createKeywordEntry("1", translate.text("Warehouse 1", locale))
-                    ,_createKeywordEntry("2", translate.text("Warehouse 2", locale))
-                    ,_createKeywordEntry("3", translate.text("Warehouse 3", locale))
-                ]);
-                break;
             case "SALESPROJECT.PRICE_POLITICS":
                 valueContainer = _createKeywordEntriesContainer([
                      _createKeywordEntry("1", translate.text("Abomodel", locale))
@@ -285,24 +283,6 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL
                     ,_createKeywordEntry("1", translate.text("Lead", locale))
                 ]);
                 break;
-            case "SALESPROJECT.WONLOST":
-                valueContainer = _createKeywordEntriesContainer([
-                     _createKeywordEntry("1", translate.text("Project_volume", locale))
-                    ,_createKeywordEntry("2", translate.text("Project_duration", locale))
-                    ,_createKeywordEntry("3", translate.text("Project_reference", locale))
-                    ,_createKeywordEntry("4", translate.text("Product_technic", locale))
-                    ,_createKeywordEntry("5", translate.text("Product_flexibility", locale))
-                    ,_createKeywordEntry("6", translate.text("Product_GUI", locale))
-                    ,_createKeywordEntry("7", translate.text("Product_functionality", locale))
-                    ,_createKeywordEntry("8", translate.text("Product_industry knowhow", locale))
-                    ,_createKeywordEntry("9", translate.text("Product_mobile use", locale))
-                    ,_createKeywordEntry("10", translate.text("Company_size", locale))
-                    ,_createKeywordEntry("11", translate.text("Company_internationality", locale))
-                    ,_createKeywordEntry("12", translate.text("Company_industry knowhow", locale))
-                    ,_createKeywordEntry("13", translate.text("Other_existing Customer", locale))
-                    ,_createKeywordEntry("14", translate.text("Other_unknown", locale))
-                ]);
-                break;
             case "SALESPROJECT.CYCLE.TYPE":
                 valueContainer = _createKeywordEntriesContainer([
                      _createKeywordEntry("1", translate.text("Phase", locale), null, {keyword: "SALESPROJECT.PHASE"})
-- 
GitLab