blob: 0973671cc20f6ecc9727bb5dd2177b337b4ca220 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.ofbiz.base.util.Debug;
import org.ofbiz.manufacturing.bom.BOMNode;
tree = request.getAttribute("tree");
currencyUomId = parameters.currencyUomId;
facilityId = parameters.facilityId;
if (tree) {
treeArray = [];
treeQty = [:];
tree.print(treeArray);
tree.sumQuantities(treeQty);
context.tree = treeArray;
Iterator treeQtyIt = treeQty.values().iterator();
productsData = [];
grandTotalCost = 0.0;
while (treeQtyIt) {
BOMNode node = (BOMNode)treeQtyIt.next();
unitCost = null;
totalCost = null;
qoh = null;
// The standard cost is retrieved
try {
outMap = [:];
if (currencyUomId) {
outMap = dispatcher.runSync("getProductCost", [productId : node.getProduct().productId,
currencyUomId : currencyUomId,
costComponentTypePrefix : "EST_STD",
userLogin : userLogin]);
unitCost = outMap.productCost;
totalCost = unitCost * node.getQuantity();
grandTotalCost = grandTotalCost + totalCost ?: 0;
}
if (facilityId) {
outMap = dispatcher.runSync("getInventoryAvailableByFacility", [productId : node.getProduct().productId,
facilityId : facilityId,
userLogin : userLogin]);
qoh = outMap.quantityOnHandTotal;
}
} catch (Exception e) {
Debug.logError("Error retrieving bom simulation data: " + e.getMessage(), "BomSimulation");
}
productsData.add([node : node, unitCost : unitCost, totalCost : totalCost, qoh : qoh]);
}
context.productsData = productsData;
context.grandTotalCost = grandTotalCost;
}