From b598af87fba6c0e3e45495a5be3b7884aaae2bf5 Mon Sep 17 00:00:00 2001
From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local>
Date: Wed, 13 Feb 2019 10:26:16 +0100
Subject: [PATCH] [Projekt: Entwicklung - Neon][TicketNr.: 1034201][Vertrieb -
 Angebot - Beleg aus Angebot erstellen]

---
 .../entityfields/neworder/onActionProcess.js  |  7 ++-
 entity/Order_entity/Order_entity.aod          | 11 +++-
 .../currency/displayValueProcess.js           | 11 ++++
 .../language/displayValueProcess.js           | 15 ++++++
 .../language/possibleItemsProcess.js          |  0
 .../recordcontainers/db/onDBInsert.js         | 50 +++++++++++++++++++
 .../SalesprojectPreview_view.aod              |  5 ++
 process/OfferOrder_lib/process.js             |  4 +-
 process/Offer_lib/process.js                  |  4 +-
 report/RPTJ_OFFER/reportData.jrxml            | 13 +++--
 10 files changed, 103 insertions(+), 17 deletions(-)
 create mode 100644 entity/Order_entity/entityfields/currency/displayValueProcess.js
 create mode 100644 entity/Order_entity/entityfields/language/displayValueProcess.js
 delete mode 100644 entity/Order_entity/entityfields/language/possibleItemsProcess.js
 create mode 100644 entity/Order_entity/recordcontainers/db/onDBInsert.js

diff --git a/entity/Offer_entity/entityfields/neworder/onActionProcess.js b/entity/Offer_entity/entityfields/neworder/onActionProcess.js
index da9440a32cf..edcc92a2700 100644
--- a/entity/Offer_entity/entityfields/neworder/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/neworder/onActionProcess.js
@@ -7,9 +7,8 @@ var params = {
     "OrderCurrency_param" : vars.getString("$field.CURRENCY"),
     "OrderLanguage_param" : vars.getString("$field.LANGUAGE"),
     "OrderHeader_param" : vars.getString("$field.HEADER"),
-    "OrderAddress_param" : vars.getString("$field.ADDRESS")
+    "OrderAddress_param" : vars.getString("$field.ADDRESS"),
+    "OfferId_param" : vars.getString("$field.OFFERID")
 };
 
-
-neon.openContext("Order_context", null, null, neon.OPERATINGSTATE_NEW, params);
-
+neon.openContext("Order_context", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index e2e3fa28079..b00d8d4aea2 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -16,6 +16,7 @@
       <title>Currency</title>
       <consumer>KeywordCurrencies</consumer>
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/currency/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/currency/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>SALESORDERCODE</name>
@@ -159,8 +160,8 @@
       <title>Language</title>
       <consumer>Languages</consumer>
       <mandatory v="true" />
-      <possibleItemsProcess>%aditoprj%/entity/Order_entity/entityfields/language/possibleItemsProcess.js</possibleItemsProcess>
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/language/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityActionField>
       <name>newOrder</name>
@@ -350,6 +351,13 @@
         <fieldName>LanguagesISO3Code</fieldName>
       </dependency>
     </entityConsumer>
+    <entityParameter>
+      <name>OfferId_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <mandatory v="false" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -358,6 +366,7 @@
       <maximumDbRows v="0" />
       <fromClauseProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <onDBInsert>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBDelete>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Order_entity/entityfields/currency/displayValueProcess.js b/entity/Order_entity/entityfields/currency/displayValueProcess.js
new file mode 100644
index 00000000000..6be00b93783
--- /dev/null
+++ b/entity/Order_entity/entityfields/currency/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.db");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+
+if (vars.exists("$param.OrderCurrency_param")) 
+{
+    var currency = KeywordUtils.getViewValue($KeywordRegistry.get.Currency, vars.get("$param.OrderCurrency_param"));
+    result.string(currency);
+}
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/language/displayValueProcess.js b/entity/Order_entity/entityfields/language/displayValueProcess.js
new file mode 100644
index 00000000000..528cfe6e165
--- /dev/null
+++ b/entity/Order_entity/entityfields/language/displayValueProcess.js
@@ -0,0 +1,15 @@
+import("system.db");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+if (vars.exists("$param.OrderLanguage_param")) 
+{
+    var iso3 = vars.get("$param.OrderLanguage_param");
+    var latinName = db.cell(SqlCondition.begin()
+        .andPrepare("AB_LANGUAGE.ISO3", iso3)
+        .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=0"));
+    latinName = translate.text(latinName);
+    result.string(latinName);
+}
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/language/possibleItemsProcess.js b/entity/Order_entity/entityfields/language/possibleItemsProcess.js
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 00000000000..db29c0a1c5b
--- /dev/null
+++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,50 @@
+import("system.util");
+import("system.db");
+import("system.neon");
+import("system.vars");
+import("Sql_lib");
+import("Order_lib");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param"))
+{
+    var rowId = vars.getString("$field.SALESORDERID");
+    var offerId = vars.getString("$param.OfferId_param");
+    
+    var cols = [
+        "UNIT", 
+        "QUANTITY", 
+        "GROUPCODEID", 
+        "ASSIGNEDTO", 
+        "PRICE", 
+        "ITEMSORT", 
+        "PRODUCT_ID", 
+        "VAT", 
+        "ITEMNAME", 
+        "OPTIONAL", 
+        "DISCOUNT", 
+        "ITEMPOSITION", 
+        "INFO"
+    ];
+    var offerItemSql = SqlCondition.begin()
+        .andPrepare("OFFERITEM.OFFER_ID", offerId)
+        .buildSql("select " + cols.join(", ") + " from OFFERITEM", "1=0");
+    var offerItems = db.table(offerItemSql);
+    
+    var table = "SALESORDERITEM";
+    cols = cols.concat(["SALESORDER_ID", "SALESORDERITEMID"]);
+    var types = db.getColumnTypes(table, cols);
+    
+    var toInsert = offerItems.map(function (row) 
+    {
+        return [table, cols, types, row.concat([rowId, util.getNewUUID()])];
+    });
+    db.inserts(toInsert);
+    
+    var oiUtils = new OrderItemUtils(rowId);
+    
+    //update order price
+    cols = ["NET", "VAT"];
+    var vals = oiUtils.getNetAndVat();
+    
+    db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", rowId, "1 = 2"));
+}
\ No newline at end of file
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
index 74696f96f86..ab4378e8fd7 100644
--- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -71,5 +71,10 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>f3542270-e7bd-4f9f-b7c0-f6c5210bb337</name>
+      <entityField>MainDocuments</entityField>
+      <view>DocumentList_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index 4a5b7827856..c7970114ea0 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -327,9 +327,7 @@ ItemUtils.prototype.insertPartsList = function(columns, productId, assignedTo, c
                         , P2pObject.quantity
                         , (P2pObject.optional) ? "1" : "0"
                         , pos
-                        , itemsort
-                        , datetime.date()
-                        , vars.get("$sys.user")]
+                        , itemsort]
                     // add aditional details
                     .concat(additionalProductInfo.map(function(item) {return ProductDetails[item[1]]}));
             
diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js
index 158084c3fc5..6e29c53f600 100644
--- a/process/Offer_lib/process.js
+++ b/process/Offer_lib/process.js
@@ -108,7 +108,7 @@ OfferUtils.openOfferReport = function(pOfferID)
     var offerCondition = SqlCondition.begin().andPrepare("OFFER.OFFERID", pOfferID);
     var rptdata = db.table(offerCondition.buildSql("select " + fields.join(", ") + offerFromSql, "1 = 0"));
     
-    var language = KeywordUtils.get("LANGUAGE", rptdata[0][2])[1];
+    var language = "deu" //KeywordUtils.get("LANGUAGE", rptdata[0][2])[1];
     var relid = rptdata[0][1];
     
     // TODO: AddrObject implementieren
@@ -160,7 +160,7 @@ OfferUtils.openOfferReport = function(pOfferID)
         rptdata[i][21] = text.formatDouble(rptdata[i][21], translate.text("#,##0"), true);
         rptdata[i][26] = text.formatDouble(rptdata[i][26], translate.text("#,##0.00"), true);
         rptdata[i][27] = text.formatDouble(itemSum, translate.text("#,##0.00"), true); //Immer zwei Nachkommastellen und ',' statt '.' 
-        rptdata[i][28] = KeywordUtils.get("UNIT", rptdata[i][19])[1];
+        rptdata[i][28] = "dummy2"// KeywordUtils.get($KeywordRegistry.get.QuantityUnit, rptdata[i][19])[1];
     }
     
     // TODO: get Images implementieren
diff --git a/report/RPTJ_OFFER/reportData.jrxml b/report/RPTJ_OFFER/reportData.jrxml
index 3ad08a8903c..cfa817363bd 100644
--- a/report/RPTJ_OFFER/reportData.jrxml
+++ b/report/RPTJ_OFFER/reportData.jrxml
@@ -125,13 +125,12 @@
 				</textField>
 			</band>
 			<band height="20">
-				<textField isStretchWithOverflow="true">
-					<reportElement x="20" y="0" width="516" height="20" uuid="c687218f-a277-48b3-b107-89caf7acda9e"/>
-					<textElement>
-						<font fontName="Segoe UI" size="8" isBold="false"/>
-					</textElement>
-					<textFieldExpression><![CDATA[$F{OFFER_HEADER}]]></textFieldExpression>
-				</textField>
+				<componentElement>
+					<reportElement mode="Transparent" x="20" y="0" width="535" height="20" uuid="bb9d7d02-c2a6-4f60-94e9-f0912135dbeb"/>
+					<hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" xsi:schemaLocation="http://jasperreports.sourceforge.net/htmlcomponent http://jasperreports.sourceforge.net/xsd/htmlcomponent.xsd" scaleType="RetainShape" horizontalAlign="Left" verticalAlign="Middle">
+						<hc:htmlContentExpression><![CDATA[$F{OFFER_HEADER}]]></hc:htmlContentExpression>
+					</hc:html>
+				</componentElement>
 			</band>
 			<band height="42">
 				<staticText>
-- 
GitLab