From fd7c2064b7b2c6fe6809d7858b32353c556ac230 Mon Sep 17 00:00:00 2001
From: Sebastian Pongratz <s.pongratz@adito.de>
Date: Mon, 15 Nov 2021 12:08:26 +0100
Subject: [PATCH] Revert "Merge branch
 'sales_pn_1080634_offer_order_dynamic_item_insert' into '2021.2'"

This reverts merge request !1249
---
 entity/Offeritem_entity/Offeritem_entity.aod  | 12 -------
 entity/Offeritem_entity/afterSave.js          | 10 ------
 .../entityfields/assignedto/valueProcess.js   |  5 ---
 .../children/insertsubnode/onActionProcess.js | 12 -------
 .../children/insertsubnode/stateProcess.js    | 11 -------
 entity/Offeritem_entity/grantDeleteProcess.js | 23 +++++++++++--
 entity/Orderitem_entity/Orderitem_entity.aod  | 12 -------
 entity/Orderitem_entity/afterSave.js          | 10 ------
 .../entityfields/assignedto/valueProcess.js   |  5 ---
 .../children/insertsubnode/onActionProcess.js | 13 --------
 .../children/insertsubnode/stateProcess.js    | 33 -------------------
 entity/Orderitem_entity/grantDeleteProcess.js | 25 ++++++++++++--
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     |  4 ---
 process/OfferOrder_lib/process.js             | 10 ------
 14 files changed, 43 insertions(+), 142 deletions(-)
 delete mode 100644 entity/Offeritem_entity/afterSave.js
 delete mode 100644 entity/Offeritem_entity/entityfields/assignedto/valueProcess.js
 delete mode 100644 entity/Offeritem_entity/entityfields/group/children/insertsubnode/onActionProcess.js
 delete mode 100644 entity/Offeritem_entity/entityfields/group/children/insertsubnode/stateProcess.js
 delete mode 100644 entity/Orderitem_entity/afterSave.js
 delete mode 100644 entity/Orderitem_entity/entityfields/assignedto/valueProcess.js
 delete mode 100644 entity/Orderitem_entity/entityfields/group/children/insertsubnode/onActionProcess.js
 delete mode 100644 entity/Orderitem_entity/entityfields/group/children/insertsubnode/stateProcess.js

diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index 468d323d76..11fa680716 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -10,7 +10,6 @@
   <grantCreateProcess>%aditoprj%/entity/Offeritem_entity/grantCreateProcess.js</grantCreateProcess>
   <grantUpdateProcess>%aditoprj%/entity/Offeritem_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Offeritem_entity/grantDeleteProcess.js</grantDeleteProcess>
-  <afterSave>%aditoprj%/entity/Offeritem_entity/afterSave.js</afterSave>
   <titlePlural>Offeritems</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -19,7 +18,6 @@
     </entityProvider>
     <entityField>
       <name>ASSIGNEDTO</name>
-      <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>DISCOUNT</name>
@@ -267,12 +265,6 @@
     <entityActionGroup>
       <name>group</name>
       <children>
-        <entityActionField>
-          <name>insertSubnode</name>
-          <title>Insert subnode</title>
-          <onActionProcess>%aditoprj%/entity/Offeritem_entity/entityfields/group/children/insertsubnode/onActionProcess.js</onActionProcess>
-          <stateProcess>%aditoprj%/entity/Offeritem_entity/entityfields/group/children/insertsubnode/stateProcess.js</stateProcess>
-        </entityActionField>
         <entityActionField>
           <name>moveUp</name>
           <onActionProcess>%aditoprj%/entity/Offeritem_entity/entityfields/group/children/moveup/onActionProcess.js</onActionProcess>
@@ -304,10 +296,6 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/currency/valueProcess.js</valueProcess>
     </entityField>
-    <entityParameter>
-      <name>AssignedTo_param</name>
-      <expose v="true" />
-    </entityParameter>
     <entityField>
       <name>OFFER_CODE</name>
       <title>Offer number</title>
diff --git a/entity/Offeritem_entity/afterSave.js b/entity/Offeritem_entity/afterSave.js
deleted file mode 100644
index 7c2d55dd96..0000000000
--- a/entity/Offeritem_entity/afterSave.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("Offer_lib");
-
-if(vars.get("$local.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    var oiUtils = new OfferItemUtils(vars.get("$field.OFFER_ID"));
-    oiUtils.reOrgItems();
-    neon.refreshAll();
-}
diff --git a/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js b/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js
deleted file mode 100644
index bbde8dea6b..0000000000
--- a/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-
-var assignedTo = vars.get("$param.AssignedTo_param");
-assignedTo && result.string(assignedTo);
diff --git a/entity/Offeritem_entity/entityfields/group/children/insertsubnode/onActionProcess.js b/entity/Offeritem_entity/entityfields/group/children/insertsubnode/onActionProcess.js
deleted file mode 100644
index 456e0cc707..0000000000
--- a/entity/Offeritem_entity/entityfields/group/children/insertsubnode/onActionProcess.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("system.neonFilter");
-import("system.neon");
-import("system.vars");
-
-neon.openContextWithRecipe(vars.get("$sys.currentcontextname"), null, neonFilter.createEntityRecordsRecipeBuilder().parameters({
-    ContactId_param: vars.get("$param.ContactId_param"),
-    OfferId_param: vars.get("$param.OfferId_param"),
-    ProductId_param: vars.get("$param.ProductId_param"),
-    Currency_param: vars.get("$param.Currency_param"),
-    Discount_param: vars.get("$param.Discount_param"),
-    AssignedTo_param: vars.get("$sys.uid")
-}).toString(), neon.OPERATINGSTATE_NEW);
diff --git a/entity/Offeritem_entity/entityfields/group/children/insertsubnode/stateProcess.js b/entity/Offeritem_entity/entityfields/group/children/insertsubnode/stateProcess.js
deleted file mode 100644
index 5ba1e5ac67..0000000000
--- a/entity/Offeritem_entity/entityfields/group/children/insertsubnode/stateProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("Offer_lib");
-
-var res = neon.COMPONENTSTATE_DISABLED;
-if(OfferUtils.isEditable(vars.get("$param.OfferStatus_param")))
-{
-    res = neon.COMPONENTSTATE_EDITABLE;
-}
-result.string(res);
diff --git a/entity/Offeritem_entity/grantDeleteProcess.js b/entity/Offeritem_entity/grantDeleteProcess.js
index f23d205f0c..97dc6583f5 100644
--- a/entity/Offeritem_entity/grantDeleteProcess.js
+++ b/entity/Offeritem_entity/grantDeleteProcess.js
@@ -1,5 +1,24 @@
-import("system.result");
+import("Sql_lib");
 import("system.vars");
+import("system.result");
 import("Offer_lib");
 
-result.object(OfferUtils.isDeletable(vars.get("$param.OfferStatus_param")));
+var canDelete = false;
+if(OfferUtils.isDeletable(vars.get("$param.OfferStatus_param")))
+{
+    var offerItemIds = vars.get("$sys.selection");
+    
+    if(offerItemIds.length == 1 && offerItemIds[0] != null)
+    {
+        assignedTo = newSelect("OFFERITEM.ASSIGNEDTO")
+                            .from("OFFERITEM")
+                            .where("OFFERITEM.OFFERITEMID", offerItemIds[0])
+                            .orderBy("ITEMPOSITION desc")
+                            .cell();
+        if(assignedTo == "")//topItem
+        {
+            canDelete = true;
+        }
+    }
+}
+result.object(canDelete);
\ No newline at end of file
diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod
index dbdcda9914..d88495d1e7 100644
--- a/entity/Orderitem_entity/Orderitem_entity.aod
+++ b/entity/Orderitem_entity/Orderitem_entity.aod
@@ -10,7 +10,6 @@
   <grantCreateProcess>%aditoprj%/entity/Orderitem_entity/grantCreateProcess.js</grantCreateProcess>
   <grantUpdateProcess>%aditoprj%/entity/Orderitem_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Orderitem_entity/grantDeleteProcess.js</grantDeleteProcess>
-  <afterSave>%aditoprj%/entity/Orderitem_entity/afterSave.js</afterSave>
   <titlePlural>Orderitems</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -19,7 +18,6 @@
     </entityProvider>
     <entityField>
       <name>ASSIGNEDTO</name>
-      <valueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/assignedto/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>DISCOUNT</name>
@@ -245,12 +243,6 @@
     <entityActionGroup>
       <name>group</name>
       <children>
-        <entityActionField>
-          <name>insertSubnode</name>
-          <title>Insert subnode</title>
-          <onActionProcess>%aditoprj%/entity/Orderitem_entity/entityfields/group/children/insertsubnode/onActionProcess.js</onActionProcess>
-          <stateProcess>%aditoprj%/entity/Orderitem_entity/entityfields/group/children/insertsubnode/stateProcess.js</stateProcess>
-        </entityActionField>
         <entityActionField>
           <name>moveUp</name>
           <onActionProcess>%aditoprj%/entity/Orderitem_entity/entityfields/group/children/moveup/onActionProcess.js</onActionProcess>
@@ -287,10 +279,6 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/currency/valueProcess.js</valueProcess>
     </entityField>
-    <entityParameter>
-      <name>AssignedTo_param</name>
-      <expose v="true" />
-    </entityParameter>
     <entityField>
       <name>ORDER_CODE</name>
       <title>Receipt number</title>
diff --git a/entity/Orderitem_entity/afterSave.js b/entity/Orderitem_entity/afterSave.js
deleted file mode 100644
index 7526b591ec..0000000000
--- a/entity/Orderitem_entity/afterSave.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("Order_lib");
-
-if(vars.get("$local.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    var oiUtils = new OrderItemUtils(vars.get("$field.SALESORDER_ID"));
-    oiUtils.reOrgItems();
-    neon.refreshAll();
-}
diff --git a/entity/Orderitem_entity/entityfields/assignedto/valueProcess.js b/entity/Orderitem_entity/entityfields/assignedto/valueProcess.js
deleted file mode 100644
index bbde8dea6b..0000000000
--- a/entity/Orderitem_entity/entityfields/assignedto/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-
-var assignedTo = vars.get("$param.AssignedTo_param");
-assignedTo && result.string(assignedTo);
diff --git a/entity/Orderitem_entity/entityfields/group/children/insertsubnode/onActionProcess.js b/entity/Orderitem_entity/entityfields/group/children/insertsubnode/onActionProcess.js
deleted file mode 100644
index fa085e2b7c..0000000000
--- a/entity/Orderitem_entity/entityfields/group/children/insertsubnode/onActionProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.neonFilter");
-import("system.logging");
-import("system.neon");
-import("system.vars");
-
-neon.openContextWithRecipe(vars.get("$sys.currentcontextname"), null, neonFilter.createEntityRecordsRecipeBuilder().parameters({
-    ContactId_param: vars.get("$param.ContactId_param"),
-    OrderId_param: vars.get("$param.OrderId_param"),
-    ProductId_param: vars.get("$param.ProductId_param"),
-    Currency_param: vars.get("$param.Currency_param"),
-    Discount_param: vars.get("$param.Discount_param"),
-    AssignedTo_param: vars.get("$sys.uid")
-}).toString(), neon.OPERATINGSTATE_NEW);
diff --git a/entity/Orderitem_entity/entityfields/group/children/insertsubnode/stateProcess.js b/entity/Orderitem_entity/entityfields/group/children/insertsubnode/stateProcess.js
deleted file mode 100644
index ab4319e289..0000000000
--- a/entity/Orderitem_entity/entityfields/group/children/insertsubnode/stateProcess.js
+++ /dev/null
@@ -1,33 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("system.db");
-import("Sql_lib");
-import("Order_lib");
-
-var itemcount = newSelect("count(*)")
-    .from("SALESORDERITEM")
-    .whereIfSet("SALESORDERITEM.SALESORDER_ID", "$field.SALESORDER_ID")
-    .cell(true, "0");
-
-var res;
-if (vars.get("$field.OrderStatus") == undefined)
-{
-    res = neon.COMPONENTSTATE_DISABLED;
-}
-else if (itemcount == "0" && vars.get("$field.OrderStatus") == "1" )
-{
-    res = neon.COMPONENTSTATE_DISABLED;
-}
-else if (itemcount == "0" && vars.get("$field.OrderStatus") == "0")
-{
-    res = neon.COMPONENTSTATE_EDITABLE;
-}
-else
-{
-    res = OrderUtils.isEditable(vars.get("$field.OrderStatus")
-        ? neon.COMPONENTSTATE_EDITABLE
-        : neon.COMPONENTSTATE_DISABLED
-    );
-}
-result.string(res);
diff --git a/entity/Orderitem_entity/grantDeleteProcess.js b/entity/Orderitem_entity/grantDeleteProcess.js
index ec8d83f2d9..56d26c9ab2 100644
--- a/entity/Orderitem_entity/grantDeleteProcess.js
+++ b/entity/Orderitem_entity/grantDeleteProcess.js
@@ -1,5 +1,24 @@
-import("system.result");
-import("system.vars");
 import("Order_lib");
+import("Sql_lib");
+import("system.vars");
+import("system.result");
 
-result.object(OrderUtils.isDeletable(vars.get("$param.OrderStatus_param")));
+var canDelete = false;
+if(OrderUtils.isDeletable(vars.get("$param.OrderStatus_param")))
+{
+    var orderItemIds = vars.get("$sys.selection");
+    
+    if(orderItemIds.length == 1 && orderItemIds[0] != null)
+    {
+        assignedTo = newSelect("SALESORDERITEM.ASSIGNEDTO")
+                            .from("SALESORDERITEM")
+                            .where("SALESORDERITEM.SALESORDERITEMID", orderItemIds[0])
+                            .orderBy("ITEMPOSITION desc")
+                            .cell();
+        if(assignedTo == "")//topItem
+        {
+            canDelete = true;
+        }
+    }
+}
+result.object(canDelete);
\ No newline at end of file
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 61f4995c89..6f6dbc6a56 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -14659,10 +14659,6 @@ Bitte Datumseingabe prüfen</value>
       <key>Offers / Receipts</key>
       <value>Angebote / Belege</value>
     </entry>
-    <entry>
-      <key>Insert subnode</key>
-      <value>Unterposten einfügen</value>
-    </entry>
     <entry>
       <key>Calculate sum</key>
       <value>Summe berechnen</value>
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index 5ef98cc5d6..7d890d2866 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -467,16 +467,6 @@ ItemUtils.prototype.deletePartsList = function(itemId) {
     function _deleteNode(pItemId) {
         //delete Object property
         delete self.ItemTree[pItemId];
-        
-        // delete id references
-        for(var currItemId in self.ItemTree)
-        {
-            var idsIdx = self.ItemTree[currItemId].ids.indexOf(pItemId);
-            if (idsIdx >= 0)
-            {
-                self.ItemTree[currItemId].ids.splice(idsIdx, 1);
-            }
-        }
 
         //delete id in global Array "ItemIds"
         var idx = self.ItemIds.indexOf(pItemId);
-- 
GitLab