From 80e95a3d8187584b34663ad805e6880257ca7edd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maximilian=20Schr=C3=B6ger?= <m.schroeger@adito.de>
Date: Thu, 22 Nov 2018 11:47:39 +0100
Subject: [PATCH] Copy Offer splitted in two Actions: Copy offer, New offer
 version Added title to all fields

---
 aliasDefinition/Data_alias/Data_alias.aod     | 28 +++++++++++
 entity/Contract_entity/Contract_entity.aod    | 13 ++++-
 entity/Offer_entity/Offer_entity.aod          | 47 +++++++++++++++++--
 .../entityfields/newoffer/onActionProcess.js  | 29 ++++++++++++
 .../newofferversion/onActionProcess.js        |  7 +++
 .../valueProcess.js                           |  2 +-
 .../entityfields/versnr/valueProcess.js       |  9 ++++
 entity/Offeritem_entity/Offeritem_entity.aod  | 12 +++++
 entity/Prod2prod_entity/Prod2prod_entity.aod  |  4 ++
 entity/Product_entity/Product_entity.aod      | 14 ++++--
 .../Productprice_entity.aod                   | 13 +++++
 entity/Stock_entity/Stock_entity.aod          | 10 +++-
 .../_____LANGUAGE_EXTRA.aod                   | 39 +++++++++++++--
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     | 43 +++++++++++++++--
 .../_____LANGUAGE_en/_____LANGUAGE_en.aod     | 39 +++++++++++++--
 .../OfferFilter_view/OfferFilter_view.aod     |  5 ++
 .../OfferPreview_view/OfferPreview_view.aod   |  2 +-
 .../data/example_offer/OFFER_1000.xml         |  1 +
 others/db_changes/struct/create_offer.xml     |  4 ++
 process/OfferOrder_lib/process.js             | 11 +++++
 process/Util_lib/process.js                   |  4 +-
 21 files changed, 310 insertions(+), 26 deletions(-)
 create mode 100644 entity/Offer_entity/entityfields/newoffer/onActionProcess.js
 rename entity/Offer_entity/entityfields/{previewtitle => offercode_versnr}/valueProcess.js (75%)
 create mode 100644 entity/Offer_entity/entityfields/versnr/valueProcess.js

diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index b61203d40a..7a25937a44 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -2369,6 +2369,34 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>OFFER_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>VERSNR</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <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/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index c5490d13fc..fbc9e15d5a 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -3,14 +3,15 @@
   <name>Contract_entity</name>
   <title>Contract</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <alias>Data_alias</alias>
-  <conditionProcess>%aditoprj%/entity/Contract_entity/conditionProcess.js</conditionProcess>
   <recordContainerType>DB</recordContainerType>
   <caption>Contract</caption>
   <iconId>VAADIN:FORM</iconId>
+  <alias>Data_alias</alias>
+  <conditionProcess>%aditoprj%/entity/Contract_entity/conditionProcess.js</conditionProcess>
   <entityFields>
     <entityField>
       <name>CONTRACTCODE</name>
+      <title>Contract number</title>
       <tableName>CONTRACT</tableName>
       <columnName>CONTRACTCODE</columnName>
       <caption>Contract number</caption>
@@ -18,6 +19,7 @@
     </entityField>
     <entityField>
       <name>CONTRACTDUE</name>
+      <title>Next due date</title>
       <tableName>CONTRACT</tableName>
       <columnName>CONTRACTDUE</columnName>
       <caption>Next due date</caption>
@@ -27,6 +29,7 @@
     </entityField>
     <entityField>
       <name>CONTRACTEND</name>
+      <title>Contract expiry date</title>
       <tableName>CONTRACT</tableName>
       <columnName>CONTRACTEND</columnName>
       <caption>Contract expiry date</caption>
@@ -43,6 +46,7 @@
     </entityField>
     <entityField>
       <name>CONTRACTSTART</name>
+      <title>Contract start date</title>
       <tableName>CONTRACT</tableName>
       <columnName>CONTRACTSTART</columnName>
       <caption>Contract start date</caption>
@@ -53,6 +57,7 @@
     </entityField>
     <entityField>
       <name>CONTRACTSTATUS</name>
+      <title>${CONTRACT_STATUS}</title>
       <tableName>CONTRACT</tableName>
       <columnName>CONTRACTSTATUS</columnName>
       <caption>${CONTRACT_STATUS}</caption>
@@ -60,6 +65,7 @@
     </entityField>
     <entityField>
       <name>CONTRACTTYPE</name>
+      <title>Type of contract</title>
       <tableName>CONTRACT</tableName>
       <columnName>CONTRACTTYPE</columnName>
       <caption>Type of contract</caption>
@@ -83,6 +89,7 @@
     </entityField>
     <entityField>
       <name>PAYMENT</name>
+      <title>Payment method</title>
       <tableName>CONTRACT</tableName>
       <columnName>PAYMENT</columnName>
       <caption>Payment method</caption>
@@ -91,6 +98,7 @@
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
+      <title>Contact / Company</title>
       <tableName>CONTRACT</tableName>
       <columnName>RELATION_ID</columnName>
       <caption>Contact / Company</caption>
@@ -102,6 +110,7 @@
     </entityField>
     <entityField>
       <name>REMARK</name>
+      <title>Description</title>
       <tableName>CONTRACT</tableName>
       <columnName>REMARK</columnName>
       <caption>Description</caption>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index c75d5629ea..1ff7742f78 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -15,6 +15,7 @@
     </entityIncomingField>
     <entityField>
       <name>CURRENCY</name>
+      <title>Currency</title>
       <tableName>OFFER</tableName>
       <columnName>CURRENCY</columnName>
       <caption>Currency</caption>
@@ -37,6 +38,7 @@
     </entityField>
     <entityField>
       <name>OFFERCODE</name>
+      <title>Offer number</title>
       <tableName>OFFER</tableName>
       <columnName>OFFERCODE</columnName>
       <caption>Offer number</caption>
@@ -46,6 +48,7 @@
     </entityField>
     <entityField>
       <name>OFFERDATE</name>
+      <title>Date</title>
       <tableName>OFFER</tableName>
       <columnName>OFFERDATE</columnName>
       <caption>Date</caption>
@@ -62,6 +65,7 @@
     </entityField>
     <entityField>
       <name>PROBABILITY</name>
+      <title>Probability</title>
       <tableName>OFFER</tableName>
       <columnName>PROBABILITY</columnName>
       <caption>Probability</caption>
@@ -69,6 +73,7 @@
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
+      <title>Contact / Company</title>
       <tableName>OFFER</tableName>
       <columnName>RELATION_ID</columnName>
       <caption>Contact / Company</caption>
@@ -77,12 +82,14 @@
     </entityField>
     <entityField>
       <name>SALESPROJECT_ID</name>
+      <title>Salesproject</title>
       <tableName>OFFER</tableName>
       <columnName>SALESPROJECT_ID</columnName>
       <caption>Salesproject</caption>
     </entityField>
     <entityField>
       <name>STATUS</name>
+      <title>Status</title>
       <tableName>OFFER</tableName>
       <columnName>STATUS</columnName>
       <caption>Status</caption>
@@ -102,6 +109,7 @@
     </entityField>
     <entityField>
       <name>VAT</name>
+      <title>Total VAT</title>
       <tableName>OFFER</tableName>
       <columnName>VAT</columnName>
       <caption>Total VAT</caption>
@@ -114,6 +122,7 @@
     </entityField>
     <entityField>
       <name>HEADER</name>
+      <title>Header text</title>
       <tableName>OFFER</tableName>
       <columnName>HEADER</columnName>
       <caption>Header text</caption>
@@ -121,6 +130,7 @@
     </entityField>
     <entityField>
       <name>FOOTER</name>
+      <title>Footer text</title>
       <tableName>OFFER</tableName>
       <columnName>FOOTER</columnName>
       <caption>Footer text</caption>
@@ -169,15 +179,13 @@
     <entityActionField>
       <name>newOfferVersion</name>
       <fieldType>ACTION</fieldType>
+      <title>New offer version</title>
       <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js</onActionProcess>
-      <caption>New offer verison</caption>
+      <caption>New offer version</caption>
     </entityActionField>
-    <entityField>
-      <name>PreviewTitle</name>
-      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/previewtitle/valueProcess.js</valueProcess>
-    </entityField>
     <entityField>
       <name>NET</name>
+      <title>Total net</title>
       <tableName>OFFER</tableName>
       <columnName>NET</columnName>
       <caption>Total net</caption>
@@ -187,6 +195,7 @@
     </entityField>
     <entityField>
       <name>TotalGross</name>
+      <title>Total gross</title>
       <caption>Total gross</caption>
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/totalgross/valueProcess.js</valueProcess>
@@ -212,6 +221,7 @@
     </entityIncomingField>
     <entityField>
       <name>LANGUAGE</name>
+      <title>Language</title>
       <tableName>OFFER</tableName>
       <columnName>LANGUAGE</columnName>
       <caption>Language</caption>
@@ -219,6 +229,33 @@
       <outgoingField></outgoingField>
       <possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/language/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
+    <entityActionField>
+      <name>newOffer</name>
+      <fieldType>ACTION</fieldType>
+      <title>Copy offer</title>
+      <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
+      <caption>Copy offer</caption>
+    </entityActionField>
+    <entityField>
+      <name>VERSNR</name>
+      <title>Vers. no.</title>
+      <tableName>OFFER</tableName>
+      <columnName>VERSNR</columnName>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/versnr/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OFFER_ID</name>
+    </entityField>
+    <entityFieldGroup>
+      <name>OfferCode_VersNr</name>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offercode_versnr/valueProcess.js</valueProcess>
+      <description>FIELDGROUP</description>
+      <fields>
+        <element>OFFERCODE</element>
+        <element>VERSNR</element>
+      </fields>
+    </entityFieldGroup>
   </entityFields>
   <linkInformation>
     <linkInformation>
diff --git a/entity/Offer_entity/entityfields/newoffer/onActionProcess.js b/entity/Offer_entity/entityfields/newoffer/onActionProcess.js
new file mode 100644
index 0000000000..8d44f51dea
--- /dev/null
+++ b/entity/Offer_entity/entityfields/newoffer/onActionProcess.js
@@ -0,0 +1,29 @@
+import("system.logging");
+import("system.vars");
+import("system.neon");
+import("Util_lib");
+import("OfferOrder_lib");
+
+var CMUtils = new CopyModuleUtils();
+var offUtils = new OfferUtils();
+
+var InputMapping = {
+    
+    "OFFER": {
+            condition: "OFFERID = '" + vars.get("$field.OFFERID") + "'"
+            , ValueMapping: {
+                            "OFFER_ID": ""
+                            , "OFFERCODE":  offUtils.getNextOfferNumber()
+                            , "VERSNR": "1"
+                        }
+            , SubModules:{
+                "OFFERITEM": {
+                    condition: "OFFER_ID = '" + vars.get("$field.OFFERID") + "' order by ITEMSORT" 
+            }
+        }
+    }
+}
+
+var ModulesMapping = CMUtils.copyModule(InputMapping);
+
+CMUtils.openNewModules("Offer_context", ModulesMapping);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
index c08e236d13..60eaab0968 100644
--- a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
@@ -2,13 +2,20 @@ import("system.logging");
 import("system.vars");
 import("system.neon");
 import("Util_lib");
+import("OfferOrder_lib");
 
 var CMUtils = new CopyModuleUtils();
+var offUtils = new OfferUtils();
 
 var InputMapping = {
     
     "OFFER": {
             condition: "OFFERID = '" + vars.get("$field.OFFERID") + "'"
+            , ValueMapping: {
+                            "OFFER_ID": vars.get("$field.OFFERID")
+                            , "OFFERCODE":  vars.get("$field.OFFERCODE")
+                            , "VERSNR":  offUtils.getNextOfferVersionNumber(vars.get("$field.OFFERCODE"))
+                        }
             , SubModules:{
                 "OFFERITEM": {
                     condition: "OFFER_ID = '" + vars.get("$field.OFFERID") + "' order by ITEMSORT" 
diff --git a/entity/Offer_entity/entityfields/previewtitle/valueProcess.js b/entity/Offer_entity/entityfields/offercode_versnr/valueProcess.js
similarity index 75%
rename from entity/Offer_entity/entityfields/previewtitle/valueProcess.js
rename to entity/Offer_entity/entityfields/offercode_versnr/valueProcess.js
index d8bf28486a..12a2f7a02a 100644
--- a/entity/Offer_entity/entityfields/previewtitle/valueProcess.js
+++ b/entity/Offer_entity/entityfields/offercode_versnr/valueProcess.js
@@ -2,4 +2,4 @@ import("system.translate");
 import("system.result");
 import("system.vars");
 
-result.string(translate.text("Offer") + " " + vars.get("$field.OFFERCODE"));
\ No newline at end of file
+result.string(translate.text("Offer") + " " + vars.get("$field.OFFERCODE") + "-" + vars.get("$field.VERSNR"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/versnr/valueProcess.js b/entity/Offer_entity/entityfields/versnr/valueProcess.js
new file mode 100644
index 0000000000..bdd9495312
--- /dev/null
+++ b/entity/Offer_entity/entityfields/versnr/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("OfferOrder_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string( "1" );
+}
\ No newline at end of file
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index 3adf52ce78..d5aa9a670e 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -50,6 +50,7 @@
     </entityField>
     <entityField>
       <name>DESCRIPTION</name>
+      <title>Description</title>
       <tableName>OFFERITEM</tableName>
       <columnName>DESCRIPTION</columnName>
       <caption>Description</caption>
@@ -57,12 +58,14 @@
     </entityField>
     <entityField>
       <name>DISCOUNT</name>
+      <title>Discount</title>
       <tableName>OFFERITEM</tableName>
       <columnName>DISCOUNT</columnName>
       <caption>Discount</caption>
     </entityField>
     <entityField>
       <name>GROUPCODEID</name>
+      <title>Commodity group</title>
       <tableName>OFFERITEM</tableName>
       <columnName>GROUPCODEID</columnName>
       <caption>Commodity group</caption>
@@ -71,12 +74,14 @@
     </entityField>
     <entityField>
       <name>ITEMNAME</name>
+      <title>Designation</title>
       <tableName>OFFERITEM</tableName>
       <columnName>ITEMNAME</columnName>
       <caption>Designation</caption>
     </entityField>
     <entityField>
       <name>ITEMPOSITION</name>
+      <title>Position</title>
       <tableName>OFFERITEM</tableName>
       <columnName>ITEMPOSITION</columnName>
       <caption>Position</caption>
@@ -103,6 +108,7 @@
     </entityField>
     <entityField>
       <name>OPTIONAL</name>
+      <title>Optional</title>
       <tableName>OFFERITEM</tableName>
       <columnName>OPTIONAL</columnName>
       <caption>Optional</caption>
@@ -112,12 +118,14 @@
     </entityField>
     <entityField>
       <name>PRICE</name>
+      <title>Unit price</title>
       <tableName>OFFERITEM</tableName>
       <columnName>PRICE</columnName>
       <caption>Unit price</caption>
     </entityField>
     <entityField>
       <name>PRODUCT_ID</name>
+      <title>Article</title>
       <tableName>OFFERITEM</tableName>
       <columnName>PRODUCT_ID</columnName>
       <caption>Article</caption>
@@ -127,6 +135,7 @@
     </entityField>
     <entityField>
       <name>QUANTITY</name>
+      <title>Quantity</title>
       <tableName>OFFERITEM</tableName>
       <columnName>QUANTITY</columnName>
       <caption>Quantity</caption>
@@ -136,6 +145,7 @@
     </entityField>
     <entityField>
       <name>UNIT</name>
+      <title>Unit</title>
       <tableName>OFFERITEM</tableName>
       <columnName>UNIT</columnName>
       <caption>Unit</caption>
@@ -155,6 +165,7 @@
     </entityField>
     <entityField>
       <name>VAT</name>
+      <title>VAT</title>
       <tableName>OFFERITEM</tableName>
       <columnName>VAT</columnName>
       <caption>VAT</caption>
@@ -181,6 +192,7 @@
     </entityParameter>
     <entityField>
       <name>TotalPrice</name>
+      <title>Sum</title>
       <caption>Sum</caption>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod
index 2299428d6b..798dde9f9b 100644
--- a/entity/Prod2prod_entity/Prod2prod_entity.aod
+++ b/entity/Prod2prod_entity/Prod2prod_entity.aod
@@ -74,6 +74,7 @@
     </entityField>
     <entityField>
       <name>QUANTITY</name>
+      <title>Quantity</title>
       <tableName></tableName>
       <columnName></columnName>
       <fieldName>QUANTITY</fieldName>
@@ -82,6 +83,7 @@
     </entityField>
     <entityField>
       <name>SOURCE_ID</name>
+      <title>Product</title>
       <tableName></tableName>
       <columnName></columnName>
       <fieldName>SOURCE_ID</fieldName>
@@ -91,6 +93,7 @@
     </entityField>
     <entityField>
       <name>TAKEPRICE</name>
+      <title>Price</title>
       <tableName></tableName>
       <columnName></columnName>
       <fieldName>TAKEPRICE</fieldName>
@@ -118,6 +121,7 @@
     </entityParameter>
     <entityField>
       <name>PARENTID</name>
+      <title>Parent</title>
       <fieldName>PARENTID</fieldName>
       <caption>Parent</caption>
     </entityField>
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 529105de08..62ca293305 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -3,15 +3,16 @@
   <name>Product_entity</name>
   <title>Product</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <alias>Data_alias</alias>
-  <orderClauseProcess>%aditoprj%/entity/Product_entity/orderClauseProcess.js</orderClauseProcess>
-  <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
   <recordContainerType>DB</recordContainerType>
   <caption>Product</caption>
   <iconId>VAADIN:HAMMER</iconId>
+  <alias>Data_alias</alias>
+  <orderClauseProcess>%aditoprj%/entity/Product_entity/orderClauseProcess.js</orderClauseProcess>
+  <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
   <entityFields>
     <entityField>
       <name>ADVERTISING</name>
+      <title>Advertising material</title>
       <tableName>PRODUCT</tableName>
       <columnName>ADVERTISING</columnName>
       <caption>Advertising material</caption>
@@ -37,6 +38,7 @@
     </entityField>
     <entityField>
       <name>GROUPCODEID</name>
+      <title>Product group</title>
       <tableName>PRODUCT</tableName>
       <columnName>GROUPCODEID</columnName>
       <caption>Product group</caption>
@@ -45,6 +47,7 @@
     </entityField>
     <entityField>
       <name>MINSTOCK</name>
+      <title>Min. stock</title>
       <tableName>PRODUCT</tableName>
       <columnName>MINSTOCK</columnName>
       <caption>Min. stock</caption>
@@ -53,6 +56,7 @@
     </entityField>
     <entityField>
       <name>ORG_ID</name>
+      <title>Developer</title>
       <tableName>PRODUCT</tableName>
       <columnName>ORG_ID</columnName>
       <caption>Developer</caption>
@@ -60,6 +64,7 @@
     </entityField>
     <entityField>
       <name>PRODUCTCODE</name>
+      <title>Product number</title>
       <tableName>PRODUCT</tableName>
       <columnName>PRODUCTCODE</columnName>
       <caption>Product number</caption>
@@ -74,6 +79,7 @@
     </entityField>
     <entityField>
       <name>PRODUCTNAME</name>
+      <title>Product name</title>
       <tableName>PRODUCT</tableName>
       <columnName>PRODUCTNAME</columnName>
       <caption>Product name</caption>
@@ -86,6 +92,7 @@
     </entityField>
     <entityField>
       <name>STATUS</name>
+      <title>Active</title>
       <tableName>PRODUCT</tableName>
       <columnName>STATUS</columnName>
       <caption>Active</caption>
@@ -95,6 +102,7 @@
     </entityField>
     <entityField>
       <name>UNIT</name>
+      <title>Unit</title>
       <tableName>PRODUCT</tableName>
       <columnName>UNIT</columnName>
       <caption>Unit</caption>
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 6994efe5ba..faa99beeea 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -15,6 +15,7 @@
   <entityFields>
     <entityField>
       <name>BUYSELL</name>
+      <title>PP/SP</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>BUYSELL</columnName>
       <caption>PP/SP</caption>
@@ -25,6 +26,7 @@
     </entityField>
     <entityField>
       <name>CURRENCY</name>
+      <title>Currency</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>CURRENCY</columnName>
       <caption>Currency</caption>
@@ -49,6 +51,7 @@
     </entityField>
     <entityField>
       <name>FROMQUANTITY</name>
+      <title>From no. of units</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>FROMQUANTITY</columnName>
       <caption>From no. of units</caption>
@@ -60,6 +63,7 @@
     </entityField>
     <entityField>
       <name>PRICE</name>
+      <title>Price</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>PRICE</columnName>
       <caption>Price</caption>
@@ -75,6 +79,7 @@
     </entityField>
     <entityField>
       <name>PRODUCT_ID</name>
+      <title>Product</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>PRODUCT_ID</columnName>
       <caption>Product</caption>
@@ -88,6 +93,7 @@
     </entityField>
     <entityField>
       <name>RELATION_ID</name>
+      <title>Company</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>RELATION_ID</columnName>
       <caption>Company</caption>
@@ -107,6 +113,7 @@
     </entityField>
     <entityField>
       <name>VALID_FROM</name>
+      <title>Valid from</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>VALID_FROM</columnName>
       <caption>Valid from</caption>
@@ -117,6 +124,7 @@
     </entityField>
     <entityField>
       <name>VALID_TO</name>
+      <title>Valid until</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>VALID_TO</columnName>
       <caption>Valid until</caption>
@@ -126,6 +134,7 @@
     </entityField>
     <entityField>
       <name>VAT</name>
+      <title>VAT</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>VAT</columnName>
       <caption>VAT</caption>
@@ -136,6 +145,7 @@
     </entityField>
     <entityField>
       <name>PRICELIST</name>
+      <title>Price list</title>
       <tableName>PRODUCTPRICE</tableName>
       <columnName>PRICELIST</columnName>
       <caption>Price list</caption>
@@ -173,6 +183,7 @@
     </entityParameter>
     <entityField>
       <name>PRODUCT_GROUPCODEID</name>
+      <title>Product group</title>
       <caption>Product group</caption>
       <possibleItemsProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_groupcodeid/possibleItemsProcess.js</possibleItemsProcess>
     </entityField>
@@ -229,6 +240,7 @@
     </entityField>
     <entityField>
       <name>currentPurchasePrice</name>
+      <title>Curr. sales price</title>
       <caption>Curr. sales price</caption>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00 €</outputFormat>
@@ -236,6 +248,7 @@
     </entityField>
     <entityField>
       <name>currentSalesPrice</name>
+      <title>Curr. sales price</title>
       <caption>Curr. sales price</caption>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00 €</outputFormat>
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index 4942e5aa72..a1f4c5785c 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -3,10 +3,10 @@
   <name>Stock_entity</name>
   <title>Stock</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <alias>Data_alias</alias>
-  <conditionProcess>%aditoprj%/entity/Stock_entity/conditionProcess.js</conditionProcess>
   <recordContainerType>DB</recordContainerType>
   <caption>Stock</caption>
+  <alias>Data_alias</alias>
+  <conditionProcess>%aditoprj%/entity/Stock_entity/conditionProcess.js</conditionProcess>
   <entityFields>
     <entityField>
       <name>DATE_EDIT</name>
@@ -26,6 +26,7 @@
     </entityField>
     <entityField>
       <name>ENTRYDATE</name>
+      <title>Date</title>
       <tableName>STOCK</tableName>
       <columnName>ENTRYDATE</columnName>
       <caption>Date</caption>
@@ -36,6 +37,7 @@
     </entityField>
     <entityField>
       <name>IN_OUT</name>
+      <title>I / O</title>
       <tableName>STOCK</tableName>
       <columnName>IN_OUT</columnName>
       <caption>I / O</caption>
@@ -51,6 +53,7 @@
     </entityField>
     <entityField>
       <name>QUANTITY</name>
+      <title>Quantity</title>
       <tableName>STOCK</tableName>
       <columnName>QUANTITY</columnName>
       <caption>Quantity</caption>
@@ -60,6 +63,7 @@
     </entityField>
     <entityField>
       <name>REFNUMBER</name>
+      <title>Reference</title>
       <tableName>STOCK</tableName>
       <columnName>REFNUMBER</columnName>
       <caption>Reference</caption>
@@ -84,6 +88,7 @@
     </entityField>
     <entityField>
       <name>WAREHOUSE</name>
+      <title>Warehouse</title>
       <tableName>STOCK</tableName>
       <columnName>WAREHOUSE</columnName>
       <caption>Warehouse</caption>
@@ -115,6 +120,7 @@
     </entityField>
     <entityField>
       <name>STOCKCOUNT</name>
+      <title>Stock</title>
       <caption>Stock</caption>
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Stock_entity/entityfields/stockcount/valueProcess.js</valueProcess>
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index f74a14b8df..6c73c6cfcc 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -669,9 +669,6 @@
     <entry>
       <key>Offeritem</key>
     </entry>
-    <entry>
-      <key>New offer verison</key>
-    </entry>
     <entry>
       <key>ISO3  Code</key>
     </entry>
@@ -912,6 +909,42 @@
     <entry>
       <key>Adviser</key>
     </entry>
+    <entry>
+      <key>Document</key>
+    </entry>
+    <entry>
+      <key>New offer version</key>
+    </entry>
+    <entry>
+      <key>Dateiname</key>
+    </entry>
+    <entry>
+      <key>Dokumente</key>
+    </entry>
+    <entry>
+      <key>Dateityp</key>
+    </entry>
+    <entry>
+      <key>Copy offer</key>
+    </entry>
+    <entry>
+      <key>Documents</key>
+    </entry>
+    <entry>
+      <key>Datum</key>
+    </entry>
+    <entry>
+      <key>Vorschau</key>
+    </entry>
+    <entry>
+      <key>Datei</key>
+    </entry>
+    <entry>
+      <key>Dateigröße</key>
+    </entry>
+    <entry>
+      <key>Vers. no.</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index d128f9c2dc..6dd386adf5 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -883,10 +883,6 @@
       <key>Offeritem</key>
       <value>Angebotsposten</value>
     </entry>
-    <entry>
-      <key>New offer verison</key>
-      <value>Neue Angebotsversion</value>
-    </entry>
     <entry>
       <key>ISO3  Code</key>
     </entry>
@@ -1181,6 +1177,45 @@
     <entry>
       <key>Adviser</key>
     </entry>
+    <entry>
+      <key>Document</key>
+    </entry>
+    <entry>
+      <key>New offer version</key>
+      <value>Neue Angebotsversion</value>
+    </entry>
+    <entry>
+      <key>Dateiname</key>
+    </entry>
+    <entry>
+      <key>Dokumente</key>
+    </entry>
+    <entry>
+      <key>Dateityp</key>
+    </entry>
+    <entry>
+      <key>Copy offer</key>
+      <value>Angebot kopieren</value>
+    </entry>
+    <entry>
+      <key>Documents</key>
+    </entry>
+    <entry>
+      <key>Datum</key>
+    </entry>
+    <entry>
+      <key>Vorschau</key>
+    </entry>
+    <entry>
+      <key>Datei</key>
+    </entry>
+    <entry>
+      <key>Dateigröße</key>
+    </entry>
+    <entry>
+      <key>Vers. no.</key>
+      <value>Vers.-Nr.</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index bff855d047..14e8dc1f6a 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -677,9 +677,6 @@
     <entry>
       <key>Offeritem</key>
     </entry>
-    <entry>
-      <key>New offer verison</key>
-    </entry>
     <entry>
       <key>ISO3  Code</key>
     </entry>
@@ -921,6 +918,42 @@
     <entry>
       <key>Adviser</key>
     </entry>
+    <entry>
+      <key>Document</key>
+    </entry>
+    <entry>
+      <key>New offer version</key>
+    </entry>
+    <entry>
+      <key>Dateiname</key>
+    </entry>
+    <entry>
+      <key>Dokumente</key>
+    </entry>
+    <entry>
+      <key>Dateityp</key>
+    </entry>
+    <entry>
+      <key>Copy offer</key>
+    </entry>
+    <entry>
+      <key>Documents</key>
+    </entry>
+    <entry>
+      <key>Datum</key>
+    </entry>
+    <entry>
+      <key>Vorschau</key>
+    </entry>
+    <entry>
+      <key>Datei</key>
+    </entry>
+    <entry>
+      <key>Dateigröße</key>
+    </entry>
+    <entry>
+      <key>Vers. no.</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod
index c50ceb2b9d..5eeaf48f1d 100644
--- a/neonView/OfferFilter_view/OfferFilter_view.aod
+++ b/neonView/OfferFilter_view/OfferFilter_view.aod
@@ -16,6 +16,11 @@
           <name>60b83daa-9349-4bef-94d8-5f1fc350da59</name>
           <entityField>OFFERCODE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>2a4ce1c5-0719-48e3-853d-c1ffba382571</name>
+          <entityField>VERSNR</entityField>
+          <width v="20" />
+        </neonTableColumn>
         <neonTableColumn>
           <name>2e926750-d1db-4cb0-8fd9-f930ed7f0252</name>
           <entityField>RELATION_ID</entityField>
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
index d50f003cb7..9f42c58c3b 100644
--- a/neonView/OfferPreview_view/OfferPreview_view.aod
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -11,7 +11,7 @@
     <cardViewTemplate>
       <name>OfferHeader_template</name>
       <iconField>IMAGE</iconField>
-      <titleField>PreviewTitle</titleField>
+      <titleField>OfferCode_VersNr</titleField>
       <descriptionField>RELATION_ID</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
diff --git a/others/db_changes/data/example_offer/OFFER_1000.xml b/others/db_changes/data/example_offer/OFFER_1000.xml
index 6759240a39..cfdf6cfacb 100644
--- a/others/db_changes/data/example_offer/OFFER_1000.xml
+++ b/others/db_changes/data/example_offer/OFFER_1000.xml
@@ -6,6 +6,7 @@
             <column name="RELATION_ID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
             <column name="OFFERDATE" valueDate="2018-11-21T00:00:00"/>
             <column name="OFFERCODE" valueNumeric="1000"/>
+            <column name="VERSNR" valueNumeric="1"/>
             <column name="STATUS" valueNumeric="1"/>
             <column name="PROBABILITY" valueNumeric="5"/>
             <column name="NET" valueNumeric="210.00"/>
diff --git a/others/db_changes/struct/create_offer.xml b/others/db_changes/struct/create_offer.xml
index 45c57d54f2..4e3e610d85 100644
--- a/others/db_changes/struct/create_offer.xml
+++ b/others/db_changes/struct/create_offer.xml
@@ -9,9 +9,13 @@
                     <constraints nullable="false"/>
                 </column>                           
                 <column name="SALESPROJECT_ID" type="CHAR(36)"/>
+		<column name="OFFER_ID" type="CHAR(36)">
+			<constraints foreignKeyName="FK_OFFER_OFFER_ID" references="OFFER(OFFERID)"/>
+		</column>
                 <column name="OFFERDATE" type="TIMESTAMP"/>
                 <column name="LANGUAGE" type="INTEGER"/>
                 <column name="OFFERCODE" type="INTEGER"/>
+                <column name="VERSNR" type="INTEGER"/>
                 <column name="STATUS" type="INTEGER"/>
                 <column name="PROBABILITY" type="INTEGER"/>
                 <column name="NET" type="NUMERIC(14,2)"/>
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index 0bae4843e3..3e32be2ad1 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -19,6 +19,17 @@ function OfferUtils()
         return JdUtils.getNextUniqueNumber("OFFERCODE", "OFFER");
     }
     
+    /**
+     * Delivers the next valid offer version number
+     * 
+     * @return {String} next valid offer version number
+     */
+    this.getNextOfferVersionNumber = function(pOfferCode)
+    {
+        var JdUtils = new JDitoUtils();
+        return JdUtils.getNextUniqueNumber("VERSNR", "OFFER", 1, "OFFERCODE = " + pOfferCode);
+    }
+    
     /**
      * Checks if the passed offer number is valid (has to be unique)
      * 
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index e88d7781f5..8e186fec9b 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -1339,10 +1339,10 @@ function CopyModuleUtils()
                     case "OFFER":
                     {
                         //andere Values setzen
-                        var offUtils = new OfferUtils();
+                        //var offUtils = new OfferUtils();
                         var dtUtils = new DateUtils();
                         
-                        ModuleRowMapping.ColumnMapping["OFFERCODE"].newValue = offUtils.getNextOfferNumber();
+                        //ModuleRowMapping.ColumnMapping["OFFERCODE"].newValue = offUtils.getNextOfferNumber();
                         ModuleRowMapping.ColumnMapping["OFFERDATE"].newValue = dtUtils.getTodayUTC();
                     }
                     break;
-- 
GitLab