Skip to content
Snippets Groups Projects
Commit 66613d6a authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

fix offer: delete offeritem

parent 54fbac1d
No related branches found
No related tags found
No related merge requests found
......@@ -64,51 +64,6 @@ function ItemUtils(pOfferOrderId, pTableName) {
}
}
/**
* Deletes a node from an ItemTree Object within its subnodes. <br>
* If no ItemTree Object is passed, the class variable this.ItemTree will be used.
*
* @param {String} itemId req UID of item
* @param {Object} tree opt ItemTree Object to delete from
* @param {String[]} ids opt ids Array for all ItemIDs to save order
*
* @ignore
*/
this._deleteNodes = function(itemId, tree, ids) {
if (tree == undefined)
tree = this.ItemTree;
if (ids == undefined)
ids = this.ItemIds;
__delete(tree[itemId]);
_deleteNode(itemId);
function __delete(pNode) {
for (var i = 0; i < pNode.ids.length; i++) {
__delete(tree[pNode.ids[i]]);
_deleteNode(pNode.ids[i]);
}
}
function _deleteNode(itemId) {
//delete Object property
delete tree[itemId];
//delete id in global Array "ItemIds"
var idx = ids.indexOf(itemId);
if (idx > -1)
ids.splice(idx, 1);
//delete id in Array from property "ids" of Tree
for (var oiid in tree) {
idx = tree[oiid].ids.indexOf(itemId);
if (idx > -1)
tree[oiid].ids.splice(idx, 1);
}
}
}
/**
* Compares Positions & Sort of the passed ItemTree Object with the class variable this.ItemTree <br>
* and updates differences in database.
......@@ -346,23 +301,36 @@ ItemUtils.prototype.deletePartsList = function(itemId) {
var statements = [];
__itemDeleteStatement(itemId);
if (statements.length > 0)
db.deletes(statements);
self._deleteNodes(itemId);
// delete nodes from tree
_deleteNode(itemId)
deletedItemIds.forEach(_deleteNode);
return deletedItemIds;
function _deleteNode(pItemId) {
//delete Object property
delete self.ItemTree[pItemId];
//delete id in global Array "ItemIds"
var idx = self.ItemIds.indexOf(pItemId);
if (idx > -1)
self.ItemIds.splice(idx, 1);
}
//recursive function for building item delete statements
function __itemDeleteStatement(itemId) {
var itemsToDelete = self.ItemTree[itemId].ids;
for (var i = 0; i < itemsToDelete.length; i++) {
//unshift due to foreign key constraints (Delete hierarchically starting at the bottom)
statements.unshift([self.tableName + "ITEM", SqlCondition.begin()
.andPrepare(self.tableName + "ITEM." + self.tableName + "ITEMID", itemsToDelete[i])
.build("1 = 2")]);
deletedItemIds.push(itemsToDelete[i]);
__itemDeleteStatement(itemsToDelete[i]);
}
......@@ -468,4 +436,4 @@ ItemUtils.prototype.reOrgItems = function() {
}
}
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment