/* * 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.apache.ofbiz.entity.* import org.apache.ofbiz.entity.condition.* import org.apache.ofbiz.entity.transaction.* action = request.getParameter("action") inventoryItemTotals = [] qohGrandTotal = 0.0 atpGrandTotal = 0.0 costPriceGrandTotal = 0.0 retailPriceGrandTotal = 0.0 totalCostPriceGrandTotal = 0.0 totalRetailPriceGrandTotal = 0.0 boolean beganTransaction = false searchParameterString = "action=Y&facilityId=" + facilityId if (action) { conditions = [EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "INV_DELIVERED")] conditions.add(EntityCondition.makeCondition("statusId", EntityOperator.EQUALS, null)) conditionList = EntityCondition.makeCondition(conditions, EntityOperator.OR) try { beganTransaction = TransactionUtil.begin() invItemListItr = from("InventoryItem").where(conditionList).orderBy("productId").queryIterator() while ((inventoryItem = invItemListItr.next()) != null) { productId = inventoryItem.productId product = from("Product").where("productId", productId).queryOne() productFacility = from("ProductFacility").where("productId", productId, "facilityId", facilityId).queryOne() if (productFacility) { quantityOnHandTotal = inventoryItem.getDouble("quantityOnHandTotal") availableToPromiseTotal = inventoryItem.getDouble("availableToPromiseTotal") costPrice = inventoryItem.getDouble("unitCost") retailPrice = 0.0 totalCostPrice = 0.0 totalRetailPrice = 0.0 productPrices = product.getRelated("ProductPrice", null, null, false) if (productPrices) { productPrices.each { productPrice -> if (("DEFAULT_PRICE").equals(productPrice.productPriceTypeId)) { retailPrice = productPrice.getDouble("price") } } } if (costPrice && quantityOnHandTotal) { totalCostPrice = costPrice * quantityOnHandTotal totalCostPriceGrandTotal += totalCostPrice } if (retailPrice && quantityOnHandTotal) { totalRetailPrice = retailPrice * quantityOnHandTotal totalRetailPriceGrandTotal += totalRetailPrice } if (quantityOnHandTotal) { qohGrandTotal += quantityOnHandTotal } if (availableToPromiseTotal) { atpGrandTotal += availableToPromiseTotal } if (costPrice) { costPriceGrandTotal += costPrice } if (retailPrice) { retailPriceGrandTotal += retailPrice } resultMap = [productId : product.productId, quantityOnHand : quantityOnHandTotal, availableToPromise : availableToPromiseTotal, costPrice : costPrice, retailPrice : retailPrice, totalCostPrice : totalCostPrice, totalRetailPrice : totalRetailPrice] inventoryItemTotals.add(resultMap) } } invItemListItr.close() } catch (GenericEntityException e) { errMsg = "Failure in operation, rolling back transaction" Debug.logError(e, errMsg, "findInventoryItemsByLabels") try { // only rollback the transaction if we started one... TransactionUtil.rollback(beganTransaction, errMsg, e) } catch (GenericEntityException e2) { Debug.logError(e2, "Could not rollback transaction: " + e2.toString(), "findInventoryItemsByLabels") } // after rolling back, rethrow the exception throw e } finally { // only commit the transaction if we started one... this will throw an exception if it fails TransactionUtil.commit(beganTransaction) } } inventoryItemGrandTotals = [] inventoryItemGrandTotals.add([qohGrandTotal : qohGrandTotal, atpGrandTotal : atpGrandTotal, totalCostPriceGrandTotal : totalCostPriceGrandTotal, totalRetailPriceGrandTotal : totalRetailPriceGrandTotal]) context.searchParameterString = searchParameterString context.inventoryItemTotals = inventoryItemTotals context.inventoryItemGrandTotals = inventoryItemGrandTotals