Skip to content
Snippets Groups Projects
Commit 660a7d55 authored by Benjamin Ulrich's avatar Benjamin Ulrich :speech_balloon: Committed by Sebastian Pongratz
Browse files

[Projekt: xRM-Sales][TicketNr.: 1084790][Belegposten Multiedit Menge mehrere...

[Projekt: xRM-Sales][TicketNr.: 1084790][Belegposten Multiedit Menge mehrere Positionen ändern funktioniert nicht]
parent 30891562
No related branches found
No related tags found
No related merge requests found
import("Sql_lib");
import("system.vars"); import("system.vars");
import("system.result"); import("system.result");
import("Offer_lib"); import("Offer_lib");
result.object(OfferUtils.isDeletable(vars.get("$param.OfferStatus_param")) && vars.get("$field.ASSIGNEDTO") == ""); var canDelete = false;
\ No newline at end of file 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
import("system.db"); import("system.db");
import("OfferOrder_lib");
import("system.entities"); import("system.entities");
import("system.neon"); import("system.neon");
import("system.vars"); import("system.vars");
......
import("Order_lib");
import("Sql_lib");
import("system.vars"); import("system.vars");
import("system.result"); import("system.result");
import("Order_lib");
result.string(OrderUtils.isDeletable(vars.get("$field.OrderStatus"))); var canDelete = false;
\ No newline at end of file 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
import("Order_lib");
import("system.entities"); import("system.entities");
import("system.neon");
import("system.vars"); import("system.vars");
import("Order_lib"); import("system.db");
import("Sql_lib"); import("Sql_lib");
var oid = vars.get("$field.SALESORDER_ID"); var oid = vars.get("$field.SALESORDER_ID");
if(oid != "") if(oid != "")
{ {
var oiid = vars.get("$field.SALESORDERITEMID"); var oiid = vars.get("$field.SALESORDERITEMID");
var discount = vars.exists("$param.Discount_param") && vars.get("$param.Discount_param") ? vars.get("$param.Discount_param"): "";
var oiUtils = new OrderItemUtils(oid); var oiUtils = new OrderItemUtils(oid);
var deletedIds = oiUtils.deletePartsList(oiid); var deletedIds = oiUtils.deletePartsList(oiid);
deletedIds.push(oiid);
oiUtils.reOrgItems(); oiUtils.reOrgItems();
deletedIds.push(oiid); var vals = oiUtils.getNetAndVat(deletedIds);
var offerData = oiUtils.getNetAndVat(deletedIds); var discountedVals = OrderItemUtils.getDiscountedNet(deletedIds, oid, discount);
var fieldValues = {
NET: vals[0].toString(),
VAT: vals[1].toString()
};
if(discountedVals)
{
Object.assign(fieldValues, {
DISCOUNTED_NET: discountedVals[0].toString(),
DISCOUNTED_VAT: discountedVals[1].toString()
});
}
var config = entities.createConfigForUpdatingRows(); var config = entities.createConfigForUpdatingRows();
config.entity("Order_entity"); config.entity("Order_entity");
config.uid(oid); config.uid(oid);
config.fieldValues({ config.fieldValues(fieldValues);
NET: offerData[0].toString(),
VAT: offerData[1].toString()
});
entities.updateRow(config); entities.updateRow(config);
} }
import("system.db"); import("system.db");
import("OfferOrder_lib");
import("system.entities"); import("system.entities");
import("system.neon");
import("system.vars"); import("system.vars");
import("system.util");
import("Order_lib"); import("Order_lib");
import("Product_lib"); import("Product_lib");
import("Sql_lib"); import("Sql_lib");
var rowdata = vars.get("$local.rowdata"); var rowdata = vars.get("$local.rowdata");
var oid = rowdata["SALESORDERITEM.SALESORDER_ID"]; var oid = rowdata["SALESORDERITEM.SALESORDER_ID"];
if(oid != "") if(oid != "")
{ {
var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): ""; var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): "";
var oiUtils = new OrderItemUtils(oid); var oiUtils = new OrderItemUtils(oid);
var insertStatements = JSON.parse(vars.get("$field.itemInsertStatements"));//insert statements get set by insertPartsList in the onvalueChanges of product_id and quantity 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)
{
db.inserts(insertStatements);
}
//update order price //update offer price
var vals = oiUtils.getNetAndVat(); var vals = oiUtils.getNetAndVat();
var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount); var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount);
var fieldValues = {
NET: vals[0].toString(),
VAT: vals[1].toString()
};
if(discountedVals) if(discountedVals)
{ {
Object.assign(fieldValues, { statements.push(
DISCOUNTED_NET: discountedVals[0].toString(), newWhere("SALESORDER.SALESORDERID", oid).buildUpdateStatement({
DISCOUNTED_VAT: discountedVals[1].toString() "NET": vals[0],
}); "VAT": vals[1],
"DISCOUNTED_NET": discountedVals[0],
"DISCOUNTED_VAT": discountedVals[1]
})
)
} }
var config = entities.createConfigForUpdatingRows(); if(insertStatements)
config.entity("Order_entity"); {
config.uid(oid); statements = statements.concat(insertStatements);
config.fieldValues(fieldValues); }
entities.updateRow(config);
} db.execute(statements, "Data_alias", 10000000);
}
\ No newline at end of file
import("system.eMath");
import("system.entities"); import("system.entities");
import("system.vars"); import("system.vars");
import("system.db"); import("system.db");
...@@ -5,12 +6,13 @@ import("system.neon"); ...@@ -5,12 +6,13 @@ import("system.neon");
import("Order_lib"); import("Order_lib");
import("Sql_lib"); import("Sql_lib");
var oid = vars.get("$local.rowdata")["SALESORDERITEM.SALESORDER_ID"]; var oid = vars.get("$field.SALESORDER_ID");
if(oid != "") if(oid != "")
{ {
if(!vars.get("$field.ITEMPOSITION").includes("."))//only the topItems affect the Order price if(!vars.get("$field.ITEMPOSITION").includes("."))//only the topItems affect the Order price
{ {
var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): ""; var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): "";
var cols = ["NET", "VAT"];
var oiUtils = new OrderItemUtils(oid); var oiUtils = new OrderItemUtils(oid);
var vals = oiUtils.getNetAndVat(); var vals = oiUtils.getNetAndVat();
var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount); var discountedVals = OrderItemUtils.getDiscountedNet(null, oid, discount);
...@@ -34,12 +36,12 @@ if(oid != "") ...@@ -34,12 +36,12 @@ if(oid != "")
entities.updateRow(config); entities.updateRow(config);
} }
//this process get's executed for every child of this offerItem since we use writeEntiy, so we use the param to make sure we don't execute it for the children //this process get's executed for every child of this orderItem since we use writeEntiy, so we use the param to make sure we don't execute it for the children
if(vars.getString("$param.IgnoreOnUpdateProcess_param") != "true") if(vars.getString("$param.IgnoreOnUpdateProcess_param") != "true")
{ {
var newQuanitity = parseFloat(vars.get("$field.QUANTITY")); var newQuanitity = parseFloat(vars.get("$field.QUANTITY"));
var oldQuantity = parseFloat(vars.get("$local.initialRowdata")["SALESORDERITEM.QUANTITY"]); var oldQuantity = parseFloat(vars.get("$local.initialRowdata")["SALESORDERITEM.QUANTITY"]);
var offerItemId = vars.get("$field.SALESORDERITEMID"); var orderItemId = vars.get("$field.SALESORDERITEMID");
if(newQuanitity != oldQuantity) //quantity changed -> change quantities of the childitems accordingly if(newQuanitity != oldQuantity) //quantity changed -> change quantities of the childitems accordingly
{ {
var multiplier = newQuanitity/oldQuantity; var multiplier = newQuanitity/oldQuantity;
...@@ -47,25 +49,25 @@ if(oid != "") ...@@ -47,25 +49,25 @@ if(oid != "")
var loadConfig = entities.createConfigForLoadingRows().entity("Orderitem_entity").addParameter("OrderId_param", oid).fields(["SALESORDERITEMID", "ASSIGNEDTO", "PRODUCT_ID", "QUANTITY"]) var loadConfig = entities.createConfigForLoadingRows().entity("Orderitem_entity").addParameter("OrderId_param", oid).fields(["SALESORDERITEMID", "ASSIGNEDTO", "PRODUCT_ID", "QUANTITY"])
var rows = entities.getRows(loadConfig); var rows = entities.getRows(loadConfig);
var potentialAsignees = {}; var potentialAsignees = {};
var offerItemsToUpdate = {}; var orderItemsToUpdate = {};
var statements = []; var statements = [];
var stop = false; var stop = false;
while(stop == false)//we have too loop forall the rows for each row that needs updating, since those are also pontially asignees while(stop == false)//we have too loop for all the rows for each row that needs updating, since those are also pontially asignees
{ {
stop = true; stop = true;
for(var offeritem in rows)//loop trough all the rows and build offerItemsToUpdate for(var orderitem in rows)//loop trough all the rows and build orderItemsToUpdate
{ {
if(!(rows[offeritem]["SALESORDERITEMID"] in offerItemsToUpdate) &&(rows[offeritem]["ASSIGNEDTO"] == offerItemId || rows[offeritem]["ASSIGNEDTO"] in potentialAsignees)) if(!(rows[orderitem]["SALESORDERITEMID"] in orderItemsToUpdate) &&(rows[orderitem]["ASSIGNEDTO"] == orderItemId || rows[orderitem]["ASSIGNEDTO"] in potentialAsignees))
{ {
statements.push( statements.push(
newWhere("OFFERITEM.OFFERITEMID", rows[offeritem]["OFFERITEMID"]).buildUpdateStatement({ newWhere("SALESORDERITEM.SALESORDERITEMID", rows[orderitem]["SALESORDERITEMID"]).buildUpdateStatement({
"QUANTITY": parseInt(rows[offeritem]["QUANTITY"])*multiplier "QUANTITY": parseInt(rows[orderitem]["QUANTITY"])*multiplier
}) })
); );
offerItemsToUpdate[rows[offeritem]["SALESORDERITEMID"]] = parseInt(rows[offeritem]["QUANTITY"])*multiplier; orderItemsToUpdate[rows[orderitem]["SALESORDERITEMID"]] = parseInt(rows[orderitem]["QUANTITY"])*multiplier;
potentialAsignees[rows[offeritem]["SALESORDERITEMID"]] = ""; potentialAsignees[rows[orderitem]["SALESORDERITEMID"]] = "";
stop = false; stop = false;
} }
} }
...@@ -73,4 +75,4 @@ if(oid != "") ...@@ -73,4 +75,4 @@ if(oid != "")
db.execute(statements);// no write entity -> performance reason db.execute(statements);// no write entity -> performance reason
} }
} }
} }
\ 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