From 47cf446dda6165b97bd8ca6a8edd027a1ffb67e6 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Wed, 30 Jan 2019 13:57:54 +0100
Subject: [PATCH] fixes for offer productitem list

---
 entity/Offeritem_entity/onDBDelete.js         |  2 +-
 entity/Offeritem_entity/onDBInsert.js         |  2 +-
 entity/Offeritem_entity/onDBUpdate.js         |  2 +-
 .../recordcontainers/db/onDBDelete.js         |  2 +-
 .../recordcontainers/db/onDBInsert.js         |  2 +-
 .../recordcontainers/db/onDBUpdate.js         |  2 +-
 .../recordcontainers/db/onDBDelete.js         |  2 +-
 .../recordcontainers/db/onDBInsert.js         |  2 +-
 .../recordcontainers/db/onDBUpdate.js         |  2 +-
 process/OfferOrder_lib/process.js             | 29 +++++++++++++------
 10 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/entity/Offeritem_entity/onDBDelete.js b/entity/Offeritem_entity/onDBDelete.js
index 9190f702bee..2acb846c670 100644
--- a/entity/Offeritem_entity/onDBDelete.js
+++ b/entity/Offeritem_entity/onDBDelete.js
@@ -17,5 +17,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBInsert.js b/entity/Offeritem_entity/onDBInsert.js
index 54792d1a095..048025fe9d9 100644
--- a/entity/Offeritem_entity/onDBInsert.js
+++ b/entity/Offeritem_entity/onDBInsert.js
@@ -22,5 +22,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBUpdate.js b/entity/Offeritem_entity/onDBUpdate.js
index c25fed571f8..7441937d9ef 100644
--- a/entity/Offeritem_entity/onDBUpdate.js
+++ b/entity/Offeritem_entity/onDBUpdate.js
@@ -12,5 +12,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js b/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
index 3d3da26d0f8..568700b2157 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
@@ -19,5 +19,5 @@ if(oid != "")
 
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
index faad425ccbc..33f35dd3c95 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
@@ -23,5 +23,5 @@ if(oid != "")
 
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
index 23ce07486b0..8c333d3d4bb 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
@@ -12,5 +12,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, oiUtils.getNetAndVat(), SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
 
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js b/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js
index 9b55b013181..1893bf1fa14 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js
@@ -18,5 +18,5 @@ if(oid != "")
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
 
-    neon.refresh("Order_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js b/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js
index ba73df2fc7d..e564c8123b9 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js
@@ -23,5 +23,5 @@ if(oid != "")
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
     
-    neon.refresh("Order_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
index bf481974b15..cd1ddcfae6c 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
@@ -13,5 +13,5 @@ if(oid != "")
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
     
-    neon.refresh("Order_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index 78375a40824..d2b44d92d67 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.translate");
 import("system.text");
 import("system.vars");
@@ -140,12 +141,16 @@ function ItemUtils(pOfferOrderId, pTableName) {
  * get a new SqlCondition Object with tablename + "ITEM." + tablename + "ITEMID" = pItemId
  * 
  * @param {String} pItemId item id
+ * @param {String} [pTableName=this.tableName] table name, if this is not available
  * 
  * @return {SqlCondition}
  */
-ItemUtils.prototype.getNewItemIdCondition = function(pItemId)
+ItemUtils.prototype.getNewItemIdCondition = function(pItemId, pTableName)
 {
-    return SqlCondition.begin().andPrepare(this.tableName + "ITEM." + this.tableName + "ITEMID", pItemId);
+    if (pTableName == undefined) 
+        pTableName = this.tableName;
+    logging.log("hää" + pTableName)
+    return SqlCondition.begin().andPrepare(pTableName + "ITEM." + pTableName + "ITEMID", pItemId);
 }
 
 /**
@@ -168,7 +173,7 @@ ItemUtils.prototype.getNetAndVat = function(itemIds) {
         itemIds.forEach(function(pItem)
         {
             condition.andPrepare(this.tableName + "ITEM." + this.tableName + "ITEMID", pItem, "# <> ?");
-        });
+        }, this);
     }
 
     var orderItems = db.table(condition.buildSql("select QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL from " + this.tableName + "ITEM", "1 = 0"));   
@@ -280,8 +285,9 @@ ItemUtils.prototype.insertPartsList = function(columns, productId, assignedTo, c
         
         columns = columns.concat(additionalProductInfo.map(function(item) {return item[0]}));
         var colTypes = db.getColumnTypes(table, columns);
-
-        __itemInsertStatement(partsList.root, assignedTo, currency, relationId);
+        logging.log(partsList.toSource())
+        // partsList[rootProdId] = root node
+        __itemInsertStatement(partsList[rootProdId], assignedTo, currency, relationId);
 
         if (statements.length > 0)
             db.inserts(statements);
@@ -332,7 +338,8 @@ ItemUtils.prototype.insertPartsList = function(columns, productId, assignedTo, c
             
             statements.push([table, columns, colTypes, vals]);
             insertedItemIds.push(newid);
-
+            
+            logging.log(p2pid)
             __itemInsertStatement(partsList[p2pid], newid);
         }
     }
@@ -352,7 +359,7 @@ ItemUtils.prototype.deletePartsList = function(itemId) {
         
     //save address for this here to get class variables in recursive sub function __itemDeleteStatement
     var self = this;
-    
+    logging.log("1 " + self.tableName)
     var statements = [];
 
     __itemDeleteStatement(itemId);
@@ -366,11 +373,15 @@ ItemUtils.prototype.deletePartsList = function(itemId) {
     
     //recursive function for building item delete statements 
     function __itemDeleteStatement(itemId) {
-        var itemsToDelete = self.ItemTree[itemId].ids;
+        logging.log("2 " + self.tableName)
 
+        var itemsToDelete = self.ItemTree[itemId].ids;
+        logging.log("__ " + self.tableName)
+        logging.log(itemsToDelete.toSource())
         for (var i = 0; i < itemsToDelete.length; i++) {
             //unshift due to foreign key constraints (Delete hierarchically starting at the bottom)
-            statements.unshift(self.getNewItemIdCondition(itemsToDelete[i]).build("1 = 2"));
+            logging.log("3 " + self.tableName)
+            statements.unshift(self.getNewItemIdCondition(itemsToDelete[i], self.tableName).build("1 = 2"));
             deletedItemIds.push(itemsToDelete[i]);
             __itemDeleteStatement(itemsToDelete[i]);
         }
-- 
GitLab