| /* |
| * 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 |
| } |
| } |
| |