blob: d3fcbfaddeddffd2b7081c4ddb9a0daf8dafc135 [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.util.EntityUtil
import org.apache.ofbiz.base.util.UtilHttp
import org.apache.ofbiz.product.catalog.CatalogWorker
import org.apache.ofbiz.webapp.website.WebSiteWorker
import org.apache.ofbiz.entity.util.EntityUtilProperties
prodCatalogId = CatalogWorker.getCurrentCatalogId(request)
webSiteId = WebSiteWorker.getWebSiteId(request)
currencyUomId = parameters.currencyUomId ?: UtilHttp.getCurrencyUom(request)
context.currencyUomId = currencyUomId
partyId = parameters.partyId ?:request.getAttribute("partyId")
party = from("Party").where("partyId", partyId).queryOne()
context.party = party
if (party) {
context.lookupPerson = party.getRelatedOne("Person", false)
context.lookupGroup = party.getRelatedOne("PartyGroup", false)
}
shoppingListId = parameters.shoppingListId ?: request.getAttribute("shoppingListId")
//get the party for listid if it exists
if (!partyId && shoppingListId) {
partyId = from("ShoppingList").where("shoppingListId", shoppingListId).queryOne().partyId
}
context.partyId = partyId
// get the top level shopping lists for the party
allShoppingLists = from("ShoppingList").where("partyId", partyId).queryList()
shoppingLists = EntityUtil.filterByAnd(allShoppingLists, [parentShoppingListId : null])
context.allShoppingLists = allShoppingLists
context.shoppingLists = shoppingLists
// get all shoppingListTypes
shoppingListTypes = from("ShoppingListType").orderBy("description").cache(true).queryList()
context.shoppingListTypes = shoppingListTypes
// no passed shopping list id default to first list
if (!shoppingListId) {
firstList = EntityUtil.getFirst(shoppingLists)
if (firstList) {
shoppingListId = firstList.shoppingListId
}
}
// if we passed a shoppingListId get the shopping list info
if (shoppingListId) {
shoppingList = from("ShoppingList").where("shoppingListId", shoppingListId).queryOne()
context.shoppingList = shoppingList
context.shoppingListId = shoppingListId
if (shoppingList) {
shoppingListItemTotal = 0.0
shoppingListChildTotal = 0.0
shoppingListItems = shoppingList.getRelated("ShoppingListItem", null, null, true)
if (shoppingListItems) {
shoppingListItemDatas = new ArrayList(shoppingListItems.size())
shoppingListItems.each { shoppingListItem ->
shoppingListItemData = [:]
product = shoppingListItem.getRelatedOne("Product", true)
// DEJ20050704 not sure about calculating price here, will have some bogus data when not in a store webapp
calcPriceOutMap = runService('calculateProductPrice', [product : product, quantity : shoppingListItem.quantity , currencyUomId : currencyUomId, userLogin : userLogin, productStoreId : shoppingList.productStoreId])
price = calcPriceOutMap.price
totalPrice = price * shoppingListItem.getDouble("quantity")
shoppingListItemTotal += totalPrice
productVariantAssocs = null
if ("Y".equals(product.isVirtual)) {
productVariantAssocs = product.getRelated("MainProductAssoc", [productAssocTypeId : "PRODUCT_VARIANT"], ["sequenceNum"], true)
productVariantAssocs = EntityUtil.filterByDate(productVariantAssocs)
}
shoppingListItemData.shoppingListItem = shoppingListItem
shoppingListItemData.product = product
shoppingListItemData.unitPrice = price
shoppingListItemData.totalPrice = totalPrice
shoppingListItemData.productVariantAssocs = productVariantAssocs
shoppingListItemDatas.add(shoppingListItemData)
}
context.shoppingListItemDatas = shoppingListItemDatas
// pagination for the shopping list
viewIndex = Integer.valueOf(parameters.VIEW_INDEX ?: 0)
viewSize = parameters.VIEW_SIZE ?: EntityUtilProperties.getPropertyAsInteger("widget", "widget.form.defaultViewSize", 20)
listSize = shoppingListItemDatas ? shoppingListItemDatas.size() : 0
lowIndex = (viewIndex * viewSize) + 1
highIndex = (viewIndex + 1) * viewSize
highIndex = highIndex > listSize ? listSize : highIndex
lowIndex = lowIndex > highIndex ? highIndex : lowIndex
context.viewIndex = viewIndex
context.viewSize = viewSize
context.listSize = listSize
context.lowIndex = lowIndex
context.highIndex = highIndex
}
shoppingListType = shoppingList.getRelatedOne("ShoppingListType", false)
context.shoppingListType = shoppingListType
// get the child shopping lists of the current list for the logged in user
childShoppingLists = from("ShoppingList").where("partyId", partyId, "parentShoppingListId", shoppingListId).orderBy("listName").cache(true).queryList()
// now get prices for each child shopping list...
if (childShoppingLists) {
childShoppingListDatas = new ArrayList(childShoppingLists.size())
childShoppingListDatas.each { childShoppingList ->
childShoppingListData = [:]
calcListPriceInMap = [shoppingListId : childShoppingList.shoppingListId , prodCatalogId : prodCatalogId , webSiteId : webSiteId, userLogin : userLogin]
childShoppingListData.childShoppingList = childShoppingList
childShoppingListDatas.add(childShoppingListData)
}
context.childShoppingListDatas = childShoppingListDatas
}
// get the parent shopping list if there is one
parentShoppingList = shoppingList.getRelatedOne("ParentShoppingList", false)
context.parentShoppingList = parentShoppingList
}
}