diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
index 7310f91eb38e14a7e2bf37c40acaec12e1e58116..e78ed8f9e28022f4232709ca1a9c97cbea10b41d 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
@@ -16,34 +16,25 @@ if(oid != "")
     
     var insertStatements = JSON.parse(vars.get("$field.itemInsertStatements"));//insert statements get set by insertPartsList in the onvalueChanges of product_id and quantity
     var statements = [];
-    if(insertStatements)
-    {
-        statements = statements.concat(insertStatements);
-    }
     
     //update offer price
     var vals = oiUtils.getNetAndVat();
     var discountedVals = OfferItemUtils.getDiscountedNet(null, oid,  discount);
     if(discountedVals)
     {
-    insertStatements.push(
-        newWhere("OFFERITEM.OFFERITEMID", rowdata["OFFERITEM.OFFERITEMID"]).buildUpdateStatement({
-                "NET": vals[0],
-                "VAT": vals[1],
-                "DISCOUNTED_NET": discountedVals[0],
-                "DISCOUNTED_VAT": discountedVals[1]
-            })
-        )
+        statements.push(
+            newWhere("OFFER.OFFERID", rowdata["OFFERITEM.OFFER_ID"]).buildUpdateStatement({
+                    "NET": vals[0],
+                    "VAT": vals[1],
+                    "DISCOUNTED_NET": discountedVals[0],
+                    "DISCOUNTED_VAT": discountedVals[1]
+                })
+            )
     }
-    else
+
+    if(insertStatements)
     {
-        insertStatements.push(
-            newWhere("OFFERITEMID", rowdata["OFFERITEM.OFFERITEMID"])
-                    .buildUpdateStatement({
-                        "NET": vals[0],
-                        "VAT": vals[1]
-                    })
-            )
+        statements = statements.concat(insertStatements);
     }
 
     db.execute(statements, "Data_alias", 10000000);
diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js
index 1fb67604ae5cdb6dd7491ed489ead8af5a800e39..a9561a5068390247ec5b6e0d1b39edf453e8180f 100644
--- a/process/Offer_lib/process.js
+++ b/process/Offer_lib/process.js
@@ -631,7 +631,7 @@ OfferItemUtils.getDiscountedNet = function(pExcludedIs, pOfferId, pDiscount, pEx
     var vat = 0;
     var vatExcluded = 0;
     if(pOfferId){
-        var offeritemData = newSelect("QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL")
+        var offeritemData = newSelect("QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL, ITEMPOSITION")
         .from("OFFERITEM")
         .where("OFFERITEM.OFFER_ID", pOfferId)
         .andIfSet("OFFERITEM.GROUPCODEID", pExcludedProductgroups, SqlBuilder.NOT_IN())
@@ -640,8 +640,12 @@ OfferItemUtils.getDiscountedNet = function(pExcludedIs, pOfferId, pDiscount, pEx
         .table();
         for (var i = 0; i < offeritemData.length; i++)
         {
-            sum = eMath.addDec(sum, ItemUtils.prototype.getItemSum(offeritemData[i][0], offeritemData[i][1], offeritemData[i][2], offeritemData[i][4]));
-            vat = eMath.addDec(vat, ItemUtils.prototype.getItemVAT(offeritemData[i][0], offeritemData[i][1], offeritemData[i][2], offeritemData[i][3], offeritemData[i][4]));
+            if(!offeritemData[i][5].toString().includes(".")//only top items
+                && offeritemData[i][4] == "0")//which are not optional
+            {
+                sum = eMath.addDec(sum, eMath.subDec(offeritemData[i][1], offeritemData[i][2])*offeritemData[i][0]);
+                vat = eMath.addDec(vat, offeritemData[i][3]*eMath.subDec(offeritemData[i][1], offeritemData[i][2])*offeritemData[i][0]/100);
+            }
         }
        
         sum = eMath.subDec(sum, eMath.divDec(eMath.mulDec(sum, pDiscount), "100"));