blob: 64326176de31aef7cffb4ca23b04781c853badb6 [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.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