Modified: ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy?rev=1767764&r1=1767763&r2=1767764&view=diff ============================================================================== --- ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy (original) +++ ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy Wed Nov 2 19:09:13 2016 @@ -22,613 +22,613 @@ * should not contain order component's specific code. */ -import java.text.NumberFormat; +import java.text.NumberFormat -import org.apache.ofbiz.base.util.*; -import org.apache.ofbiz.entity.*; -import org.apache.ofbiz.entity.condition.*; -import org.apache.ofbiz.entity.util.*; -import org.apache.ofbiz.service.*; -import org.apache.ofbiz.webapp.taglib.ContentUrlTag; -import org.apache.ofbiz.product.product.ProductContentWrapper; -import org.apache.ofbiz.product.product.ProductSearch; -import org.apache.ofbiz.product.product.ProductSearchSession; -import org.apache.ofbiz.product.product.ProductWorker; -import org.apache.ofbiz.product.catalog.*; -import org.apache.ofbiz.product.store.*; -import org.apache.ofbiz.webapp.stats.VisitHandler; +import org.apache.ofbiz.base.util.* +import org.apache.ofbiz.entity.* +import org.apache.ofbiz.entity.condition.* +import org.apache.ofbiz.entity.util.* +import org.apache.ofbiz.service.* +import org.apache.ofbiz.webapp.taglib.ContentUrlTag +import org.apache.ofbiz.product.product.ProductContentWrapper +import org.apache.ofbiz.product.product.ProductSearch +import org.apache.ofbiz.product.product.ProductSearchSession +import org.apache.ofbiz.product.product.ProductWorker +import org.apache.ofbiz.product.catalog.* +import org.apache.ofbiz.product.store.* +import org.apache.ofbiz.webapp.stats.VisitHandler import org.apache.ofbiz.webapp.website.WebSiteWorker -import org.apache.ofbiz.order.shoppingcart.ShoppingCartEvents; -import org.apache.ofbiz.order.shoppingcart.ShoppingCart; +import org.apache.ofbiz.order.shoppingcart.ShoppingCartEvents +import org.apache.ofbiz.order.shoppingcart.ShoppingCart String buildNext(Map map, List order, String current, String prefix, Map featureTypes) { - def ct = 0; - def buf = new StringBuffer(); - buf.append("function listFT" + current + prefix + "() { "); - buf.append("document.forms[\"addform\"].elements[\"FT" + current + "\"].options.length = 1;"); - buf.append("document.forms[\"addform\"].elements[\"FT" + current + "\"].options[0] = new Option(\"" + featureTypes[current] + "\",\"\",true,true);"); + def ct = 0 + def buf = new StringBuffer() + buf.append("function listFT" + current + prefix + "() { ") + buf.append("document.forms[\"addform\"].elements[\"FT" + current + "\"].options.length = 1;") + buf.append("document.forms[\"addform\"].elements[\"FT" + current + "\"].options[0] = new Option(\"" + featureTypes[current] + "\",\"\",true,true);") map.each { key, value -> - def optValue = null; + def optValue = null if (order.indexOf(current) == (order.size()-1)) { - optValue = value.iterator().next(); + optValue = value.iterator().next() } else { - optValue = prefix + "_" + ct; + optValue = prefix + "_" + ct } - buf.append("document.forms[\"addform\"].elements[\"FT" + current + "\"].options[" + (ct + 1) + "] = new Option(\"" + key + "\",\"" + optValue + "\");"); - ct++; + buf.append("document.forms[\"addform\"].elements[\"FT" + current + "\"].options[" + (ct + 1) + "] = new Option(\"" + key + "\",\"" + optValue + "\");") + ct++ } - buf.append(" }"); + buf.append(" }") if (order.indexOf(current) < (order.size()-1)) { - ct = 0; + ct = 0 map.each { key, value -> - def nextOrder = order.get(order.indexOf(current)+1); - def newPrefix = prefix + "_" + ct; - buf.append(buildNext(value, order, nextOrder, newPrefix, featureTypes)); - ct++; + def nextOrder = order.get(order.indexOf(current)+1) + def newPrefix = prefix + "_" + ct + buf.append(buildNext(value, order, nextOrder, newPrefix, featureTypes)) + ct++ } } - return buf.toString(); + return buf.toString() } -cart = ShoppingCartEvents.getCartObject(request); +cart = ShoppingCartEvents.getCartObject(request) // set currency format -currencyUomId = null; -if (cart) currencyUomId = cart.getCurrency(); -if (!currencyUomId) currencyUomId = EntityUtilProperties.getPropertyValue("general", "currency.uom.id.default", "USD", delegator); +currencyUomId = null +if (cart) currencyUomId = cart.getCurrency() +if (!currencyUomId) currencyUomId = EntityUtilProperties.getPropertyValue("general", "currency.uom.id.default", "USD", delegator) // get the shopping lists for the user (if logged in) if (userLogin) { exprList = [EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, userLogin.partyId), - EntityCondition.makeCondition("listName", EntityOperator.NOT_EQUAL, "auto-save")]; - allShoppingLists = from("ShoppingList").where(exprList).orderBy("listName").queryList(); - context.shoppingLists = allShoppingLists; + EntityCondition.makeCondition("listName", EntityOperator.NOT_EQUAL, "auto-save")] + allShoppingLists = from("ShoppingList").where(exprList).orderBy("listName").queryList() + context.shoppingLists = allShoppingLists } // set the content path prefix -contentPathPrefix = CatalogWorker.getContentPathPrefix(request); -context.contentPathPrefix = contentPathPrefix; +contentPathPrefix = CatalogWorker.getContentPathPrefix(request) +context.contentPathPrefix = contentPathPrefix // get the product detail information if (product) { - productId = product.productId; - context.product_id = productId; - productTypeId = product.productTypeId; + productId = product.productId + context.product_id = productId + productTypeId = product.productTypeId - boolean isMarketingPackage = EntityTypeUtil.hasParentType(delegator, "ProductType", "productTypeId", product.productTypeId, "parentTypeId", "MARKETING_PKG"); - context.isMarketingPackage = (isMarketingPackage? "true": "false"); + boolean isMarketingPackage = EntityTypeUtil.hasParentType(delegator, "ProductType", "productTypeId", product.productTypeId, "parentTypeId", "MARKETING_PKG") + context.isMarketingPackage = (isMarketingPackage? "true": "false") - featureTypes = [:]; - featureOrder = []; + featureTypes = [:] + featureOrder = [] // set this as a last viewed - LAST_VIEWED_TO_KEEP = 10; // modify this to change the number of last viewed to keep - lastViewedProducts = session.getAttribute("lastViewedProducts"); + LAST_VIEWED_TO_KEEP = 10 // modify this to change the number of last viewed to keep + lastViewedProducts = session.getAttribute("lastViewedProducts") if (!lastViewedProducts) { - lastViewedProducts = []; - session.setAttribute("lastViewedProducts", lastViewedProducts); + lastViewedProducts = [] + session.setAttribute("lastViewedProducts", lastViewedProducts) } - lastViewedProducts.remove(productId); - lastViewedProducts.add(0, productId); + lastViewedProducts.remove(productId) + lastViewedProducts.add(0, productId) while (lastViewedProducts.size() > LAST_VIEWED_TO_KEEP) { - lastViewedProducts.remove(lastViewedProducts.size() - 1); + lastViewedProducts.remove(lastViewedProducts.size() - 1) } // make the productContentWrapper - productContentWrapper = new ProductContentWrapper(product, request); - context.productContentWrapper = productContentWrapper; + productContentWrapper = new ProductContentWrapper(product, request) + context.productContentWrapper = productContentWrapper // get the main detail image (virtual or single product) - mainDetailImage = productContentWrapper.get("DETAIL_IMAGE_URL", "url"); + mainDetailImage = productContentWrapper.get("DETAIL_IMAGE_URL", "url") if (mainDetailImage) { - mainDetailImageUrl = ContentUrlTag.getContentPrefix(request) + mainDetailImage; - context.mainDetailImageUrl = mainDetailImageUrl.toString(); + mainDetailImageUrl = ContentUrlTag.getContentPrefix(request) + mainDetailImage + context.mainDetailImageUrl = mainDetailImageUrl.toString() } // get next/previous information for category - categoryId = parameters.category_id ?: product.primaryProductCategoryId; - if (categoryId) context.categoryId = categoryId; + categoryId = parameters.category_id ?: product.primaryProductCategoryId + if (categoryId) context.categoryId = categoryId - catNextPreviousResult = null; + catNextPreviousResult = null if (categoryId) { - prevNextMap = [categoryId : categoryId, productId : productId]; - prevNextMap.orderByFields = context.orderByFields ?: ["sequenceNum", "productId"]; - catNextPreviousResult = runService('getPreviousNextProducts', prevNextMap); + prevNextMap = [categoryId : categoryId, productId : productId] + prevNextMap.orderByFields = context.orderByFields ?: ["sequenceNum", "productId"] + catNextPreviousResult = runService('getPreviousNextProducts', prevNextMap) if (ServiceUtil.isError(catNextPreviousResult)) { - request.setAttribute("errorMessageList", [ServiceUtil.getErrorMessage(catNextPreviousResult)]); - return; + request.setAttribute("errorMessageList", [ServiceUtil.getErrorMessage(catNextPreviousResult)]) + return } if (catNextPreviousResult && catNextPreviousResult.category) { - context.category = catNextPreviousResult.category; - context.previousProductId = catNextPreviousResult.previousProductId; - context.nextProductId = catNextPreviousResult.nextProductId; + context.category = catNextPreviousResult.category + context.previousProductId = catNextPreviousResult.previousProductId + context.nextProductId = catNextPreviousResult.nextProductId } } // get the product store for only Sales Order not for Purchase Order. - productStore = null; - productStoreId = null; - cart = ShoppingCartEvents.getCartObject(request); + productStore = null + productStoreId = null + cart = ShoppingCartEvents.getCartObject(request) if (cart.isSalesOrder()) { - productStore = ProductStoreWorker.getProductStore(request); - productStoreId = productStore.productStoreId; - context.productStoreId = productStoreId; + productStore = ProductStoreWorker.getProductStore(request) + productStoreId = productStore.productStoreId + context.productStoreId = productStoreId } // get a defined survey - productSurvey = ProductStoreWorker.getProductSurveys(delegator, productStoreId, productId, "CART_ADD"); + productSurvey = ProductStoreWorker.getProductSurveys(delegator, productStoreId, productId, "CART_ADD") if (productSurvey) { - survey = EntityUtil.getFirst(productSurvey); - origParamMapId = UtilHttp.stashParameterMap(request); - surveyContext = ["_ORIG_PARAM_MAP_ID_" : origParamMapId]; - surveyPartyId = userLogin?.partyId; - wrapper = new ProductStoreSurveyWrapper(survey, surveyPartyId, surveyContext); - context.surveyWrapper = wrapper; + survey = EntityUtil.getFirst(productSurvey) + origParamMapId = UtilHttp.stashParameterMap(request) + surveyContext = ["_ORIG_PARAM_MAP_ID_" : origParamMapId] + surveyPartyId = userLogin?.partyId + wrapper = new ProductStoreSurveyWrapper(survey, surveyPartyId, surveyContext) + context.surveyWrapper = wrapper } // get the product price - catalogId = CatalogWorker.getCurrentCatalogId(request); - currentCatalogId = catalogId; - webSiteId = WebSiteWorker.getWebSiteId(request); - autoUserLogin = request.getSession().getAttribute("autoUserLogin"); + catalogId = CatalogWorker.getCurrentCatalogId(request) + currentCatalogId = catalogId + webSiteId = WebSiteWorker.getWebSiteId(request) + autoUserLogin = request.getSession().getAttribute("autoUserLogin") if (cart.isSalesOrder()) { // sales order: run the "calculateProductPrice" service priceContext = [product : product, prodCatalogId : catalogId, - currencyUomId : cart.getCurrency(), autoUserLogin : autoUserLogin]; - priceContext.webSiteId = webSiteId; - priceContext.productStoreId = productStoreId; - priceContext.checkIncludeVat = "Y"; - priceContext.agreementId = cart.getAgreementId(); - priceContext.partyId = cart.getPartyId(); // IMPORTANT: must put this in, or price will be calculated for the CSR instead of the customer - priceMap = runService('calculateProductPrice', priceContext); - context.priceMap = priceMap; + currencyUomId : cart.getCurrency(), autoUserLogin : autoUserLogin] + priceContext.webSiteId = webSiteId + priceContext.productStoreId = productStoreId + priceContext.checkIncludeVat = "Y" + priceContext.agreementId = cart.getAgreementId() + priceContext.partyId = cart.getPartyId() // IMPORTANT: must put this in, or price will be calculated for the CSR instead of the customer + priceMap = runService('calculateProductPrice', priceContext) + context.priceMap = priceMap } else { // purchase order: run the "calculatePurchasePrice" service priceContext = [product : product, currencyUomId : cart.getCurrency(), - partyId : cart.getPartyId(), userLogin : userLogin]; - priceMap = runService('calculatePurchasePrice', priceContext); - context.priceMap = priceMap; + partyId : cart.getPartyId(), userLogin : userLogin] + priceMap = runService('calculatePurchasePrice', priceContext) + context.priceMap = priceMap } // get the product review(s) // get all product review in case of Purchase Order. - reviewByAnd = [:]; - reviewByAnd.statusId = "PRR_APPROVED"; + reviewByAnd = [:] + reviewByAnd.statusId = "PRR_APPROVED" if (cart.isSalesOrder()) { - reviewByAnd.productStoreId = productStoreId; + reviewByAnd.productStoreId = productStoreId } - reviews = product.getRelated("ProductReview", reviewByAnd, ["-postedDateTime"], true); - context.productReviews = reviews; + reviews = product.getRelated("ProductReview", reviewByAnd, ["-postedDateTime"], true) + context.productReviews = reviews // get the average rating if (reviews) { - ratingReviews = EntityUtil.filterByAnd(reviews, [EntityCondition.makeCondition("productRating", EntityOperator.NOT_EQUAL, null)]); + ratingReviews = EntityUtil.filterByAnd(reviews, [EntityCondition.makeCondition("productRating", EntityOperator.NOT_EQUAL, null)]) if (ratingReviews) { - context.averageRating = ProductWorker.getAverageProductRating(product, reviews, productStoreId); - context.numRatings = ratingReviews.size(); + context.averageRating = ProductWorker.getAverageProductRating(product, reviews, productStoreId) + context.numRatings = ratingReviews.size() } } // get the days to ship // if order is purchase then don't calculate available inventory for product. if (cart.isSalesOrder()) { - facilityId = productStore.inventoryFacilityId; + facilityId = productStore.inventoryFacilityId - resultOutput = runService('getInventoryAvailableByFacility', [productId : productId, facilityId : facilityId, useCache : false]); - totalAvailableToPromise = resultOutput.availableToPromiseTotal; + resultOutput = runService('getInventoryAvailableByFacility', [productId : productId, facilityId : facilityId, useCache : false]) + totalAvailableToPromise = resultOutput.availableToPromiseTotal if (totalAvailableToPromise) { - productFacility = from("ProductFacility").where("productId", productId, "facilityId", facilityId).cache(true).queryOne(); + productFacility = from("ProductFacility").where("productId", productId, "facilityId", facilityId).cache(true).queryOne() context.daysToShip = productFacility?.daysToShip } } else { - supplierProduct = from("SupplierProduct").where("productId", productId).orderBy("-availableFromDate").cache(true).queryFirst(); + supplierProduct = from("SupplierProduct").where("productId", productId).orderBy("-availableFromDate").cache(true).queryFirst() if (supplierProduct?.standardLeadTimeDays) { - standardLeadTimeDays = supplierProduct.standardLeadTimeDays; - daysToShip = standardLeadTimeDays + 1; - context.daysToShip = daysToShip; + standardLeadTimeDays = supplierProduct.standardLeadTimeDays + daysToShip = standardLeadTimeDays + 1 + context.daysToShip = daysToShip } } // get the product distinguishing features - disFeatureMap = runService('getProductFeatures', [productId : productId, type : "DISTINGUISHING_FEAT"]); - disFeatureList = disFeatureMap.productFeatures; - context.disFeatureList = disFeatureList; + disFeatureMap = runService('getProductFeatures', [productId : productId, type : "DISTINGUISHING_FEAT"]) + disFeatureList = disFeatureMap.productFeatures + context.disFeatureList = disFeatureList // an example of getting features of a certain type to show - sizeProductFeatureAndAppls = from("ProductFeatureAndAppl").where("productId", productId, "productFeatureTypeId", "SIZE").orderBy("sequenceNum", "defaultSequenceNum").queryList(); - context.sizeProductFeatureAndAppls = sizeProductFeatureAndAppls; + sizeProductFeatureAndAppls = from("ProductFeatureAndAppl").where("productId", productId, "productFeatureTypeId", "SIZE").orderBy("sequenceNum", "defaultSequenceNum").queryList() + context.sizeProductFeatureAndAppls = sizeProductFeatureAndAppls // get product variant for Box/Case/Each - productVariants = []; - boolean isAlternativePacking = ProductWorker.isAlternativePacking(delegator, product.productId, null); - mainProducts = []; + productVariants = [] + boolean isAlternativePacking = ProductWorker.isAlternativePacking(delegator, product.productId, null) + mainProducts = [] if(isAlternativePacking){ - productVirtualVariants = from("ProductAssoc").where("productIdTo", product.productId , "productAssocTypeId", "ALTERNATIVE_PACKAGE").cache(true).queryList(); + productVirtualVariants = from("ProductAssoc").where("productIdTo", product.productId , "productAssocTypeId", "ALTERNATIVE_PACKAGE").cache(true).queryList() if(productVirtualVariants){ productVirtualVariants.each { virtualVariantKey -> - mainProductMap = [:]; - mainProduct = virtualVariantKey.getRelatedOne("MainProduct", true); - quantityUom = mainProduct.getRelatedOne("QuantityUom", true); - mainProductMap.productId = mainProduct.productId; - mainProductMap.piecesIncluded = mainProduct.piecesIncluded; - mainProductMap.uomDesc = quantityUom.description; - mainProducts.add(mainProductMap); + mainProductMap = [:] + mainProduct = virtualVariantKey.getRelatedOne("MainProduct", true) + quantityUom = mainProduct.getRelatedOne("QuantityUom", true) + mainProductMap.productId = mainProduct.productId + mainProductMap.piecesIncluded = mainProduct.piecesIncluded + mainProductMap.uomDesc = quantityUom.description + mainProducts.add(mainProductMap) } } } - context.mainProducts = mainProducts; + context.mainProducts = mainProducts // Special Variant Code if ("Y".equals(product.isVirtual)) { if ("VV_FEATURETREE".equals(ProductWorker.getProductVirtualVariantMethod(delegator, productId))) { - context.featureLists = ProductWorker.getSelectableProductFeaturesByTypesAndSeq(product); + context.featureLists = ProductWorker.getSelectableProductFeaturesByTypesAndSeq(product) } else { - featureMap = runService('getProductFeatureSet', [productId : productId]); - featureSet = featureMap.featureSet; + featureMap = runService('getProductFeatureSet', [productId : productId]) + featureSet = featureMap.featureSet if (featureSet) { //if order is purchase then don't calculate available inventory for product. if (cart.isPurchaseOrder()) { - variantTreeMap = runService('getProductVariantTree', [productId : productId, featureOrder : featureSet, checkInventory: false]); + variantTreeMap = runService('getProductVariantTree', [productId : productId, featureOrder : featureSet, checkInventory: false]) } else { - variantTreeMap = runService('getProductVariantTree', [productId : productId, featureOrder : featureSet, productStoreId : productStoreId]); + variantTreeMap = runService('getProductVariantTree', [productId : productId, featureOrder : featureSet, productStoreId : productStoreId]) } - variantTree = variantTreeMap.variantTree; - imageMap = variantTreeMap.variantSample; - virtualVariant = variantTreeMap.virtualVariant; - context.virtualVariant = virtualVariant; + variantTree = variantTreeMap.variantTree + imageMap = variantTreeMap.variantSample + virtualVariant = variantTreeMap.virtualVariant + context.virtualVariant = virtualVariant if (variantTree) { - context.variantTree = variantTree; - context.variantTreeSize = variantTree.size(); + context.variantTree = variantTree + context.variantTreeSize = variantTree.size() } - unavailableVariants = variantTreeMap.unavailableVariants; + unavailableVariants = variantTreeMap.unavailableVariants if (unavailableVariants) { - context.unavailableVariants = unavailableVariants; + context.unavailableVariants = unavailableVariants } if (imageMap) { - context.variantSample = imageMap; - context.variantSampleKeys = imageMap.keySet(); - context.variantSampleSize = imageMap.size(); + context.variantSample = imageMap + context.variantSampleKeys = imageMap.keySet() + context.variantSampleSize = imageMap.size() } - context.featureSet = featureSet; + context.featureSet = featureSet if (variantTree) { - featureOrder = new LinkedList(featureSet); + featureOrder = new LinkedList(featureSet) featureOrder.each { featureKey -> - featureValue = from("ProductFeatureType").where("productFeatureTypeId", featureKey).cache(true).queryOne(); - fValue = featureValue.get("description") ?: featureValue.productFeatureTypeId; - featureTypes[featureKey] = fValue; + featureValue = from("ProductFeatureType").where("productFeatureTypeId", featureKey).cache(true).queryOne() + fValue = featureValue.get("description") ?: featureValue.productFeatureTypeId + featureTypes[featureKey] = fValue } } - context.featureTypes = featureTypes; - context.featureOrder = featureOrder; + context.featureTypes = featureTypes + context.featureOrder = featureOrder if (featureOrder) { - context.featureOrderFirst = featureOrder[0]; + context.featureOrderFirst = featureOrder[0] } if (variantTree && imageMap) { - jsBuf = new StringBuffer(); - jsBuf.append("<script language=\"JavaScript\" type=\"text/javascript\">"); - jsBuf.append("var DET = new Array(" + variantTree.size() + ");"); - jsBuf.append("var IMG = new Array(" + variantTree.size() + ");"); - jsBuf.append("var OPT = new Array(" + featureOrder.size() + ");"); - jsBuf.append("var VIR = new Array(" + virtualVariant.size() + ");"); - jsBuf.append("var detailImageUrl = null;"); + jsBuf = new StringBuffer() + jsBuf.append("<script language=\"JavaScript\" type=\"text/javascript\">") + jsBuf.append("var DET = new Array(" + variantTree.size() + ");") + jsBuf.append("var IMG = new Array(" + variantTree.size() + ");") + jsBuf.append("var OPT = new Array(" + featureOrder.size() + ");") + jsBuf.append("var VIR = new Array(" + virtualVariant.size() + ");") + jsBuf.append("var detailImageUrl = null;") featureOrder.eachWithIndex { feature, i -> - jsBuf.append("OPT[" + i + "] = \"FT" + feature + "\";"); + jsBuf.append("OPT[" + i + "] = \"FT" + feature + "\";") } virtualVariant.eachWithIndex { variant, i -> - jsBuf.append("VIR[" + i + "] = \"" + variant + "\";"); + jsBuf.append("VIR[" + i + "] = \"" + variant + "\";") } // build the top level - topLevelName = featureOrder[0]; - jsBuf.append("function list" + topLevelName + "() {"); - jsBuf.append("document.forms[\"addform\"].elements[\"FT" + topLevelName + "\"].options.length = 1;"); - jsBuf.append("document.forms[\"addform\"].elements[\"FT" + topLevelName + "\"].options[0] = new Option(\"" + featureTypes[topLevelName] + "\",\"\",true,true);"); + topLevelName = featureOrder[0] + jsBuf.append("function list" + topLevelName + "() {") + jsBuf.append("document.forms[\"addform\"].elements[\"FT" + topLevelName + "\"].options.length = 1;") + jsBuf.append("document.forms[\"addform\"].elements[\"FT" + topLevelName + "\"].options[0] = new Option(\"" + featureTypes[topLevelName] + "\",\"\",true,true);") if (variantTree) { featureOrder.each { featureKey -> - jsBuf.append("document.forms[\"addform\"].elements[\"FT" + featureKey + "\"].options.length = 1;"); + jsBuf.append("document.forms[\"addform\"].elements[\"FT" + featureKey + "\"].options.length = 1;") } - firstDetailImage = null; - firstLargeImage = null; - counter = 0; + firstDetailImage = null + firstLargeImage = null + counter = 0 variantTree.each { key, value -> - opt = null; + opt = null if (featureOrder.size() == 1) { - opt = value.iterator().next(); + opt = value.iterator().next() } else { - opt = counter as String; + opt = counter as String } // create the variant content wrapper - contentWrapper = new ProductContentWrapper(imageMap[key], request); + contentWrapper = new ProductContentWrapper(imageMap[key], request) // initial image paths - detailImage = contentWrapper.get("DETAIL_IMAGE_URL", "url") ?: productContentWrapper.get("DETAIL_IMAGE_URL", "url"); - largeImage = contentWrapper.get("LARGE_IMAGE_URL", "url") ?: productContentWrapper.get("LARGE_IMAGE_URL", "url"); + detailImage = contentWrapper.get("DETAIL_IMAGE_URL", "url") ?: productContentWrapper.get("DETAIL_IMAGE_URL", "url") + largeImage = contentWrapper.get("LARGE_IMAGE_URL", "url") ?: productContentWrapper.get("LARGE_IMAGE_URL", "url") // full image URLs - detailImageUrl = null; - largeImageUrl = null; + detailImageUrl = null + largeImageUrl = null // append the content prefix if (detailImage) { - detailImageUrl = (ContentUrlTag.getContentPrefix(request) + detailImage).toString(); + detailImageUrl = (ContentUrlTag.getContentPrefix(request) + detailImage).toString() } if (largeImage) { - largeImageUrl = ContentUrlTag.getContentPrefix(request) + largeImage; + largeImageUrl = ContentUrlTag.getContentPrefix(request) + largeImage } - jsBuf.append("document.forms[\"addform\"].elements[\"FT" + topLevelName + "\"].options[" + (counter+1) + "] = new Option(\"" + key + "\",\"" + opt + "\");"); - jsBuf.append("DET[" + counter + "] = \"" + detailImageUrl +"\";"); - jsBuf.append("IMG[" + counter + "] = \"" + largeImageUrl +"\";"); + jsBuf.append("document.forms[\"addform\"].elements[\"FT" + topLevelName + "\"].options[" + (counter+1) + "] = new Option(\"" + key + "\",\"" + opt + "\");") + jsBuf.append("DET[" + counter + "] = \"" + detailImageUrl +"\";") + jsBuf.append("IMG[" + counter + "] = \"" + largeImageUrl +"\";") if (!firstDetailImage) { - firstDetailImage = detailImageUrl; + firstDetailImage = detailImageUrl } if (!firstLargeImage) { - firstLargeImage = largeImage; + firstLargeImage = largeImage } - counter++; + counter++ } - context.firstDetailImage = firstDetailImage; - context.firstLargeImage = firstLargeImage; + context.firstDetailImage = firstDetailImage + context.firstLargeImage = firstLargeImage } - jsBuf.append("}"); + jsBuf.append("}") // build dynamic lists if (variantTree) { variantTree.values().eachWithIndex { varTree, topLevelKeysCt -> - cnt = "" + topLevelKeysCt; + cnt = "" + topLevelKeysCt if (varTree instanceof Map) { - jsBuf.append(buildNext(varTree, featureOrder, featureOrder[1], cnt, featureTypes)); + jsBuf.append(buildNext(varTree, featureOrder, featureOrder[1], cnt, featureTypes)) } } } // make a list of variant sku with requireAmount - variantsRes = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_VARIANT", checkViewAllow : true, prodCatalogId : currentCatalogId]); - variants = variantsRes.assocProducts; - variantPriceList = []; + variantsRes = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_VARIANT", checkViewAllow : true, prodCatalogId : currentCatalogId]) + variants = variantsRes.assocProducts + variantPriceList = [] if (variants) { - amt = new StringBuffer(); - amt.append("function checkAmtReq(sku) { "); + amt = new StringBuffer() + amt.append("function checkAmtReq(sku) { ") // Create the javascript to return the price for each variant - variantPriceJS = new StringBuffer(); - variantPriceJS.append("function getVariantPrice(sku) { "); + variantPriceJS = new StringBuffer() + variantPriceJS.append("function getVariantPrice(sku) { ") // Format to apply the currency code to the variant price in the javascript if (productStore) { - localeString = productStore.defaultLocaleString; + localeString = productStore.defaultLocaleString if (localeString) { - locale = UtilMisc.parseLocale(localeString); + locale = UtilMisc.parseLocale(localeString) } } variants.each { variantAssoc -> - variant = variantAssoc.getRelatedOne("AssocProduct", false); + variant = variantAssoc.getRelatedOne("AssocProduct", false) // Get the price for each variant. Reuse the priceContext already setup for virtual product above and replace the product - priceContext.product = variant; + priceContext.product = variant if (cart.isSalesOrder()) { // sales order: run the "calculateProductPrice" service - variantPriceMap = runService('calculateProductPrice', priceContext); - BigDecimal calculatedPrice = (BigDecimal)variantPriceMap.get("price"); + variantPriceMap = runService('calculateProductPrice', priceContext) + BigDecimal calculatedPrice = (BigDecimal)variantPriceMap.get("price") // Get the minimum quantity for variants if MINIMUM_ORDER_PRICE is set for variants. - variantPriceMap.put("minimumQuantity", ShoppingCart.getMinimumOrderQuantity(delegator, calculatedPrice, variant.get("productId"))); - Iterator treeMapIter = variantTree.entrySet().iterator(); + variantPriceMap.put("minimumQuantity", ShoppingCart.getMinimumOrderQuantity(delegator, calculatedPrice, variant.get("productId"))) + Iterator treeMapIter = variantTree.entrySet().iterator() while (treeMapIter.hasNext()) { - Map.Entry entry = treeMapIter.next(); + Map.Entry entry = treeMapIter.next() if (entry.getValue() instanceof Map) { - Iterator entryIter = entry.getValue().entrySet().iterator(); + Iterator entryIter = entry.getValue().entrySet().iterator() while (entryIter.hasNext()) { - Map.Entry innerentry = entryIter.next(); + Map.Entry innerentry = entryIter.next() if (variant.get("productId").equals(innerentry.getValue().get(0))) { - variantPriceMap.put("variantName", innerentry.getKey()); - variantPriceMap.put("secondVariantName", entry.getKey()); - break; + variantPriceMap.put("variantName", innerentry.getKey()) + variantPriceMap.put("secondVariantName", entry.getKey()) + break } } } else if (UtilValidate.isNotEmpty(entry.getValue())) { if (variant.get("productId").equals(entry.getValue().get(0))) { - variantPriceMap.put("variantName", entry.getKey()); - break; + variantPriceMap.put("variantName", entry.getKey()) + break } } } - variantPriceList.add(variantPriceMap); + variantPriceList.add(variantPriceMap) } else { - variantPriceMap = runService('calculatePurchasePrice', priceContext); + variantPriceMap = runService('calculatePurchasePrice', priceContext) } - amt.append(" if (sku == \"" + variant.productId + "\") return \"" + (variant.requireAmount ?: "N") + "\"; "); + amt.append(" if (sku == \"" + variant.productId + "\") return \"" + (variant.requireAmount ?: "N") + "\"; ") if (variantPriceMap && variantPriceMap.basePrice) { - variantPriceJS.append(" if (sku == \"" + variant.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "\"; "); + variantPriceJS.append(" if (sku == \"" + variant.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "\"; ") } // make a list of virtual variants sku with requireAmount - virtualVariantsRes = runService('getAssociatedProducts', [productIdTo : variant.productId, type : "ALTERNATIVE_PACKAGE", checkViewAllow : true, prodCatalogId : currentCatalogId]); - virtualVariants = virtualVariantsRes.assocProducts; + virtualVariantsRes = runService('getAssociatedProducts', [productIdTo : variant.productId, type : "ALTERNATIVE_PACKAGE", checkViewAllow : true, prodCatalogId : currentCatalogId]) + virtualVariants = virtualVariantsRes.assocProducts if(virtualVariants){ virtualVariants.each { virtualAssoc -> - virtual = virtualAssoc.getRelatedOne("MainProduct", false); + virtual = virtualAssoc.getRelatedOne("MainProduct", false) // Get price from a virtual product - priceContext.product = virtual; + priceContext.product = virtual if (cart.isSalesOrder()) { // sales order: run the "calculateProductPrice" service - virtualPriceMap = runService('calculateProductPrice', priceContext); - BigDecimal calculatedPrice = (BigDecimal)virtualPriceMap.get("price"); + virtualPriceMap = runService('calculateProductPrice', priceContext) + BigDecimal calculatedPrice = (BigDecimal)virtualPriceMap.get("price") // Get the minimum quantity for variants if MINIMUM_ORDER_PRICE is set for variants. - virtualPriceMap.put("minimumQuantity", ShoppingCart.getMinimumOrderQuantity(delegator, calculatedPrice, virtual.get("productId"))); - Iterator treeMapIter = variantTree.entrySet().iterator(); + virtualPriceMap.put("minimumQuantity", ShoppingCart.getMinimumOrderQuantity(delegator, calculatedPrice, virtual.get("productId"))) + Iterator treeMapIter = variantTree.entrySet().iterator() while (treeMapIter.hasNext()) { - Map.Entry entry = treeMapIter.next(); + Map.Entry entry = treeMapIter.next() if (entry.getValue() instanceof Map) { - Iterator entryIter = entry.getValue().entrySet().iterator(); + Iterator entryIter = entry.getValue().entrySet().iterator() while (entryIter.hasNext()) { - Map.Entry innerentry = entryIter.next(); + Map.Entry innerentry = entryIter.next() if (virtual.get("productId").equals(innerentry.getValue().get(0))) { - virtualPriceMap.put("variantName", innerentry.getKey()); - virtualPriceMap.put("secondVariantName", entry.getKey()); - break; + virtualPriceMap.put("variantName", innerentry.getKey()) + virtualPriceMap.put("secondVariantName", entry.getKey()) + break } } } else if (UtilValidate.isNotEmpty(entry.getValue())) { if (virtual.get("productId").equals(entry.getValue().get(0))) { - virtualPriceMap.put("variantName", entry.getKey()); - break; + virtualPriceMap.put("variantName", entry.getKey()) + break } } } - variantPriceList.add(virtualPriceMap); - variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "\"; "); + variantPriceList.add(virtualPriceMap) + variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "\"; ") } else { - virtualPriceMap = runService('calculatePurchasePrice', priceContext); - variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.price, currencyUomId, locale, 10) + "\"; "); + virtualPriceMap = runService('calculatePurchasePrice', priceContext) + variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.price, currencyUomId, locale, 10) + "\"; ") } } } } - amt.append(" } "); - variantPriceJS.append(" } "); + amt.append(" } ") + variantPriceJS.append(" } ") } - context.variantPriceList = variantPriceList; - jsBuf.append(amt.toString()); - jsBuf.append(variantPriceJS.toString()); - jsBuf.append("</script>"); + context.variantPriceList = variantPriceList + jsBuf.append(amt.toString()) + jsBuf.append(variantPriceJS.toString()) + jsBuf.append("</script>") - context.virtualJavaScript = jsBuf; + context.virtualJavaScript = jsBuf } } } } else { - context.minimumQuantity= ShoppingCart.getMinimumOrderQuantity(delegator, priceMap.price, productId); + context.minimumQuantity= ShoppingCart.getMinimumOrderQuantity(delegator, priceMap.price, productId) if(isAlternativePacking){ // get alternative product price when product doesn't have any feature - jsBuf = new StringBuffer(); - jsBuf.append("<script language=\"JavaScript\" type=\"text/javascript\">"); + jsBuf = new StringBuffer() + jsBuf.append("<script language=\"JavaScript\" type=\"text/javascript\">") // make a list of variant sku with requireAmount - virtualVariantsRes = runService('getAssociatedProducts', [productIdTo : productId, type : "ALTERNATIVE_PACKAGE", checkViewAllow : true, prodCatalogId : categoryId]); - virtualVariants = virtualVariantsRes.assocProducts; + virtualVariantsRes = runService('getAssociatedProducts', [productIdTo : productId, type : "ALTERNATIVE_PACKAGE", checkViewAllow : true, prodCatalogId : categoryId]) + virtualVariants = virtualVariantsRes.assocProducts // Format to apply the currency code to the variant price in the javascript if (productStore) { - localeString = productStore.defaultLocaleString; + localeString = productStore.defaultLocaleString if (localeString) { - locale = UtilMisc.parseLocale(localeString); + locale = UtilMisc.parseLocale(localeString) } } - virtualVariantPriceList = []; + virtualVariantPriceList = [] if(virtualVariants){ - amt = new StringBuffer(); + amt = new StringBuffer() // Create the javascript to return the price for each variant - variantPriceJS = new StringBuffer(); - variantPriceJS.append("function getVariantPrice(sku) { "); + variantPriceJS = new StringBuffer() + variantPriceJS.append("function getVariantPrice(sku) { ") virtualVariants.each { virtualAssoc -> - virtual = virtualAssoc.getRelatedOne("MainProduct", false); + virtual = virtualAssoc.getRelatedOne("MainProduct", false) // Get price from a virtual product - priceContext.product = virtual; + priceContext.product = virtual if (cart.isSalesOrder()) { // sales order: run the "calculateProductPrice" service - virtualPriceMap = runService('calculateProductPrice', priceContext); - BigDecimal calculatedPrice = (BigDecimal)virtualPriceMap.get("price"); + virtualPriceMap = runService('calculateProductPrice', priceContext) + BigDecimal calculatedPrice = (BigDecimal)virtualPriceMap.get("price") // Get the minimum quantity for variants if MINIMUM_ORDER_PRICE is set for variants. - virtualVariantPriceList.add(virtualPriceMap); - variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(virtualPriceMap.basePrice, currencyUomId, locale, 10) + "\"; "); + virtualVariantPriceList.add(virtualPriceMap) + variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(virtualPriceMap.basePrice, currencyUomId, locale, 10) + "\"; ") } else { - virtualPriceMap = runService('calculatePurchasePrice', priceContext); - variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(virtualPriceMap.price, currencyUomId, locale, 10) + "\"; "); + virtualPriceMap = runService('calculatePurchasePrice', priceContext) + variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(virtualPriceMap.price, currencyUomId, locale, 10) + "\"; ") } } - variantPriceJS.append(" } "); + variantPriceJS.append(" } ") - context.virtualVariantPriceList = virtualVariantPriceList; - jsBuf.append(amt.toString()); - jsBuf.append(variantPriceJS.toString()); - jsBuf.append("</script>"); - context.virtualVariantJavaScript = jsBuf; + context.virtualVariantPriceList = virtualVariantPriceList + jsBuf.append(amt.toString()) + jsBuf.append(variantPriceJS.toString()) + jsBuf.append("</script>") + context.virtualVariantJavaScript = jsBuf } } } - availableInventory = 0.0; + availableInventory = 0.0 // if the product is a MARKETING_PKG_AUTO/PICK, then also get the quantity which can be produced from components if (isMarketingPackage) { - resultOutput = runService('getMktgPackagesAvailable', [productId : productId]); - availableInventory = resultOutput.availableToPromiseTotal; + resultOutput = runService('getMktgPackagesAvailable', [productId : productId]) + availableInventory = resultOutput.availableToPromiseTotal } else { //get last inventory count from product facility for the product - facilities = from("ProductFacility").where("productId", product.productId).queryList(); + facilities = from("ProductFacility").where("productId", product.productId).queryList() if(facilities) { facilities.each { facility -> - lastInventoryCount = facility.lastInventoryCount; + lastInventoryCount = facility.lastInventoryCount if (lastInventoryCount != null) { - availableInventory += lastInventoryCount; + availableInventory += lastInventoryCount } } } } - context.availableInventory = availableInventory; + context.availableInventory = availableInventory // get product associations - alsoBoughtProducts = runService('getAssociatedProducts', [productId : productId, type : "ALSO_BOUGHT", checkViewAllow : true, prodCatalogId : currentCatalogId, bidirectional : false, sortDescending : true]); - context.alsoBoughtProducts = alsoBoughtProducts.assocProducts; + alsoBoughtProducts = runService('getAssociatedProducts', [productId : productId, type : "ALSO_BOUGHT", checkViewAllow : true, prodCatalogId : currentCatalogId, bidirectional : false, sortDescending : true]) + context.alsoBoughtProducts = alsoBoughtProducts.assocProducts - obsoleteProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_OBSOLESCENCE", checkViewAllow : true, prodCatalogId : currentCatalogId]); - context.obsoleteProducts = obsoleteProducts.assocProducts; + obsoleteProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_OBSOLESCENCE", checkViewAllow : true, prodCatalogId : currentCatalogId]) + context.obsoleteProducts = obsoleteProducts.assocProducts - crossSellProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_COMPLEMENT", checkViewAllow : true, prodCatalogId : currentCatalogId]); - context.crossSellProducts = crossSellProducts.assocProducts; + crossSellProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_COMPLEMENT", checkViewAllow : true, prodCatalogId : currentCatalogId]) + context.crossSellProducts = crossSellProducts.assocProducts - upSellProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_UPGRADE", checkViewAllow : true, prodCatalogId : currentCatalogId]); - context.upSellProducts = upSellProducts.assocProducts; + upSellProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_UPGRADE", checkViewAllow : true, prodCatalogId : currentCatalogId]) + context.upSellProducts = upSellProducts.assocProducts - obsolenscenseProducts = runService('getAssociatedProducts', [productIdTo : productId, type : "PRODUCT_OBSOLESCENCE", checkViewAllow : true, prodCatalogId : currentCatalogId]); - context.obsolenscenseProducts = obsolenscenseProducts.assocProducts; + obsolenscenseProducts = runService('getAssociatedProducts', [productIdTo : productId, type : "PRODUCT_OBSOLESCENCE", checkViewAllow : true, prodCatalogId : currentCatalogId]) + context.obsolenscenseProducts = obsolenscenseProducts.assocProducts - accessoryProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_ACCESSORY", checkViewAllow : true, prodCatalogId : currentCatalogId]); - context.accessoryProducts = accessoryProducts.assocProducts; + accessoryProducts = runService('getAssociatedProducts', [productId : productId, type : "PRODUCT_ACCESSORY", checkViewAllow : true, prodCatalogId : currentCatalogId]) + context.accessoryProducts = accessoryProducts.assocProducts // get the DIGITAL_DOWNLOAD related Content records to show the contentName/description - downloadProductContentAndInfoList = from("ProductContentAndInfo").where("productId", productId, "productContentTypeId", "DIGITAL_DOWNLOAD").cache(true).queryList(); - context.downloadProductContentAndInfoList = downloadProductContentAndInfoList; + downloadProductContentAndInfoList = from("ProductContentAndInfo").where("productId", productId, "productContentTypeId", "DIGITAL_DOWNLOAD").cache(true).queryList() + context.downloadProductContentAndInfoList = downloadProductContentAndInfoList // not the best to save info in an action, but this is probably the best place to count a view; it is done async - dispatcher.runAsync("countProductView", [productId : productId, weight : new Long(1)], false); + dispatcher.runAsync("countProductView", [productId : productId, weight : new Long(1)], false) //get product image from image management - productImageList = []; - productContentAndInfoImageManamentList = from("ProductContentAndInfo").where("productId", productId, "productContentTypeId", "IMAGE", "statusId", "IM_APPROVED", "drIsPublic", "Y").orderBy("sequenceNum").queryList(); + productImageList = [] + productContentAndInfoImageManamentList = from("ProductContentAndInfo").where("productId", productId, "productContentTypeId", "IMAGE", "statusId", "IM_APPROVED", "drIsPublic", "Y").orderBy("sequenceNum").queryList() if(productContentAndInfoImageManamentList) { productContentAndInfoImageManamentList.each { productContentAndInfoImageManament -> - contentAssocThumb = from("ContentAssoc").where("contentId", productContentAndInfoImageManament.contentId, "contentAssocTypeId", "IMAGE_THUMBNAIL").queryFirst(); + contentAssocThumb = from("ContentAssoc").where("contentId", productContentAndInfoImageManament.contentId, "contentAssocTypeId", "IMAGE_THUMBNAIL").queryFirst() if(contentAssocThumb) { - imageContentThumb = from("Content").where("contentId", contentAssocThumb.contentIdTo).queryOne(); + imageContentThumb = from("Content").where("contentId", contentAssocThumb.contentIdTo).queryOne() if(imageContentThumb) { - productImageThumb = from("ContentDataResourceView").where("contentId", imageContentThumb.contentId, "drDataResourceId", imageContentThumb.dataResourceId).queryOne(); - productImageMap = [:]; - productImageMap.productImageThumb = productImageThumb.drObjectInfo; - productImageMap.productImage = productContentAndInfoImageManament.drObjectInfo; - productImageList.add(productImageMap); + productImageThumb = from("ContentDataResourceView").where("contentId", imageContentThumb.contentId, "drDataResourceId", imageContentThumb.dataResourceId).queryOne() + productImageMap = [:] + productImageMap.productImageThumb = productImageThumb.drObjectInfo + productImageMap.productImage = productContentAndInfoImageManament.drObjectInfo + productImageList.add(productImageMap) } } } - context.productImageList = productImageList; + context.productImageList = productImageList } // get reservation start date for rental product if("ASSET_USAGE".equals(productTypeId) || "ASSET_USAGE_OUT_IN".equals(productTypeId)){ - context.startDate = UtilDateTime.addDaysToTimestamp(UtilDateTime.nowTimestamp(), 1).toString().substring(0,10); // should be tomorrow. + context.startDate = UtilDateTime.addDaysToTimestamp(UtilDateTime.nowTimestamp(), 1).toString().substring(0,10) // should be tomorrow. } // get product tags - productKeywords = from("ProductKeyword").where("productId": productId, "keywordTypeId" : "KWT_TAG", "statusId" : "KW_APPROVED").queryList(); - keywordMap = [:]; + productKeywords = from("ProductKeyword").where("productId": productId, "keywordTypeId" : "KWT_TAG", "statusId" : "KW_APPROVED").queryList() + keywordMap = [:] if (productKeywords) { for (productKeyword in productKeywords) { - productKeyWordCount = from("ProductKeyword").where("keyword", productKeyword.keyword, "keywordTypeId", "KWT_TAG", "statusId", "KW_APPROVED").queryCount(); - keywordMap.put(productKeyword.keyword,productKeyWordCount); + productKeyWordCount = from("ProductKeyword").where("keyword", productKeyword.keyword, "keywordTypeId", "KWT_TAG", "statusId", "KW_APPROVED").queryCount() + keywordMap.put(productKeyword.keyword,productKeyWordCount) } - context.productTags = keywordMap; + context.productTags = keywordMap } } Modified: ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy?rev=1767764&r1=1767763&r2=1767764&view=diff ============================================================================== --- ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy (original) +++ ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy Wed Nov 2 19:09:13 2016 @@ -22,214 +22,214 @@ * should not contain order component's specific code. */ -import org.apache.ofbiz.base.util.*; -import org.apache.ofbiz.entity.*; -import org.apache.ofbiz.entity.util.EntityQuery; -import org.apache.ofbiz.service.*; -import org.apache.ofbiz.product.product.ProductContentWrapper; -import org.apache.ofbiz.product.config.ProductConfigWorker; -import org.apache.ofbiz.product.catalog.*; -import org.apache.ofbiz.product.store.*; -import org.apache.ofbiz.order.shoppingcart.*; -import org.apache.ofbiz.product.product.ProductWorker; +import org.apache.ofbiz.base.util.* +import org.apache.ofbiz.entity.* +import org.apache.ofbiz.entity.util.EntityQuery +import org.apache.ofbiz.service.* +import org.apache.ofbiz.product.product.ProductContentWrapper +import org.apache.ofbiz.product.config.ProductConfigWorker +import org.apache.ofbiz.product.catalog.* +import org.apache.ofbiz.product.store.* +import org.apache.ofbiz.order.shoppingcart.* +import org.apache.ofbiz.product.product.ProductWorker import org.apache.ofbiz.webapp.website.WebSiteWorker -import java.text.NumberFormat; +import java.text.NumberFormat //either optProduct, optProductId or productId must be specified -product = request.getAttribute("optProduct"); -optProductId = request.getAttribute("optProductId"); -productId = product?.productId ?: optProductId ?: request.getAttribute("productId"); - -webSiteId = WebSiteWorker.getWebSiteId(request); -catalogId = CatalogWorker.getCurrentCatalogId(request); -cart = ShoppingCartEvents.getCartObject(request); -productStore = null; -productStoreId = null; -facilityId = null; +product = request.getAttribute("optProduct") +optProductId = request.getAttribute("optProductId") +productId = product?.productId ?: optProductId ?: request.getAttribute("productId") + +webSiteId = WebSiteWorker.getWebSiteId(request) +catalogId = CatalogWorker.getCurrentCatalogId(request) +cart = ShoppingCartEvents.getCartObject(request) +productStore = null +productStoreId = null +facilityId = null if (cart.isSalesOrder()) { - productStore = ProductStoreWorker.getProductStore(request); - productStoreId = productStore.productStoreId; - context.productStoreId = productStoreId; - facilityId = productStore.inventoryFacilityId; + productStore = ProductStoreWorker.getProductStore(request) + productStoreId = productStore.productStoreId + context.productStoreId = productStoreId + facilityId = productStore.inventoryFacilityId } if (!facilityId) { - productStoreFacility = EntityQuery.use(delegator).select("facilityId").from("ProductStoreFacility").where("productStoreId", productStoreId).queryFirst(); + productStoreFacility = EntityQuery.use(delegator).select("facilityId").from("ProductStoreFacility").where("productStoreId", productStoreId).queryFirst() if (productStoreFacility) { - facilityId = productStoreFacility.facilityId; + facilityId = productStoreFacility.facilityId } } -autoUserLogin = session.getAttribute("autoUserLogin"); -userLogin = session.getAttribute("userLogin"); +autoUserLogin = session.getAttribute("autoUserLogin") +userLogin = session.getAttribute("userLogin") -context.remove("daysToShip"); -context.remove("averageRating"); -context.remove("numRatings"); -context.remove("totalPrice"); +context.remove("daysToShip") +context.remove("averageRating") +context.remove("numRatings") +context.remove("totalPrice") // get the product entity if (!product && productId) { - product = from("Product").where("productId", productId).cache(true).queryOne(); + product = from("Product").where("productId", productId).cache(true).queryOne() } if (product) { //if order is purchase then don't calculate available inventory for product. if (cart.isSalesOrder()) { - resultOutput = runService('getInventoryAvailableByFacility', [productId : product.productId, facilityId : facilityId, useCache : true]); - totalAvailableToPromise = resultOutput.availableToPromiseTotal; + resultOutput = runService('getInventoryAvailableByFacility', [productId : product.productId, facilityId : facilityId, useCache : true]) + totalAvailableToPromise = resultOutput.availableToPromiseTotal if (totalAvailableToPromise && totalAvailableToPromise.doubleValue() > 0) { - productFacility = from("ProductFacility").where("productId", product.productId, "facilityId", facilityId).cache(true).queryOne(); + productFacility = from("ProductFacility").where("productId", product.productId, "facilityId", facilityId).cache(true).queryOne() if (productFacility?.daysToShip != null) { - context.daysToShip = productFacility.daysToShip; + context.daysToShip = productFacility.daysToShip } } } else { - supplierProduct = from("SupplierProduct").where("productId", product.productId).orderBy("-availableFromDate").cache(true).queryFirst(); + supplierProduct = from("SupplierProduct").where("productId", product.productId).orderBy("-availableFromDate").cache(true).queryFirst() if (supplierProduct?.standardLeadTimeDays != null) { - standardLeadTimeDays = supplierProduct.standardLeadTimeDays; - daysToShip = standardLeadTimeDays + 1; - context.daysToShip = daysToShip; + standardLeadTimeDays = supplierProduct.standardLeadTimeDays + daysToShip = standardLeadTimeDays + 1 + context.daysToShip = daysToShip } } // make the productContentWrapper - productContentWrapper = new ProductContentWrapper(product, request); - context.productContentWrapper = productContentWrapper; + productContentWrapper = new ProductContentWrapper(product, request) + context.productContentWrapper = productContentWrapper } -categoryId = null; -reviews = null; +categoryId = null +reviews = null if (product) { - categoryId = parameters.category_id ?: request.getAttribute("productCategoryId"); + categoryId = parameters.category_id ?: request.getAttribute("productCategoryId") // get the product price if (cart.isSalesOrder()) { // sales order: run the "calculateProductPrice" service priceContext = [product : product, currencyUomId : cart.getCurrency(), - autoUserLogin : autoUserLogin, userLogin : userLogin]; - priceContext.webSiteId = webSiteId; - priceContext.prodCatalogId = catalogId; - priceContext.productStoreId = productStoreId; - priceContext.agreementId = cart.getAgreementId(); - priceContext.partyId = cart.getPartyId(); // IMPORTANT: otherwise it'll be calculating prices using the logged in user which could be a CSR instead of the customer - priceContext.checkIncludeVat = "Y"; - priceMap = runService('calculateProductPrice', priceContext); + autoUserLogin : autoUserLogin, userLogin : userLogin] + priceContext.webSiteId = webSiteId + priceContext.prodCatalogId = catalogId + priceContext.productStoreId = productStoreId + priceContext.agreementId = cart.getAgreementId() + priceContext.partyId = cart.getPartyId() // IMPORTANT: otherwise it'll be calculating prices using the logged in user which could be a CSR instead of the customer + priceContext.checkIncludeVat = "Y" + priceMap = runService('calculateProductPrice', priceContext) - context.price = priceMap; + context.price = priceMap } else { // purchase order: run the "calculatePurchasePrice" service priceContext = [product : product, currencyUomId : cart.getCurrency(), - partyId : cart.getPartyId(), userLogin : userLogin]; - priceMap = runService('calculatePurchasePrice', priceContext); + partyId : cart.getPartyId(), userLogin : userLogin] + priceMap = runService('calculatePurchasePrice', priceContext) - context.price = priceMap; + context.price = priceMap } // get aggregated product totalPrice if ("AGGREGATED".equals(product.productTypeId)||"AGGREGATED_SERVICE".equals(product.productTypeId)) { - configWrapper = ProductConfigWorker.getProductConfigWrapper(productId, cart.getCurrency(), request); + configWrapper = ProductConfigWorker.getProductConfigWrapper(productId, cart.getCurrency(), request) if (configWrapper) { - configWrapper.setDefaultConfig(); - context.totalPrice = configWrapper.getTotalPrice(); + configWrapper.setDefaultConfig() + context.totalPrice = configWrapper.getTotalPrice() } } // get the product review(s) - reviews = product.getRelated("ProductReview", null, ["-postedDateTime"], true); + reviews = product.getRelated("ProductReview", null, ["-postedDateTime"], true) // get product variant for Box/Case/Each - productVariants = []; - boolean isAlternativePacking = ProductWorker.isAlternativePacking(delegator, product.productId, null); - mainProducts = []; + productVariants = [] + boolean isAlternativePacking = ProductWorker.isAlternativePacking(delegator, product.productId, null) + mainProducts = [] if(isAlternativePacking){ - productVirtualVariants = from("ProductAssoc").where("productIdTo", product.productId , "productAssocTypeId", "ALTERNATIVE_PACKAGE").cache(true).queryList(); + productVirtualVariants = from("ProductAssoc").where("productIdTo", product.productId , "productAssocTypeId", "ALTERNATIVE_PACKAGE").cache(true).queryList() if(productVirtualVariants){ productVirtualVariants.each { virtualVariantKey -> - mainProductMap = [:]; - mainProduct = virtualVariantKey.getRelatedOne("MainProduct", true); - quantityUom = mainProduct.getRelatedOne("QuantityUom", true); - mainProductMap.productId = mainProduct.productId; - mainProductMap.piecesIncluded = mainProduct.piecesIncluded; - mainProductMap.uomDesc = quantityUom.description; - mainProducts.add(mainProductMap); + mainProductMap = [:] + mainProduct = virtualVariantKey.getRelatedOne("MainProduct", true) + quantityUom = mainProduct.getRelatedOne("QuantityUom", true) + mainProductMap.productId = mainProduct.productId + mainProductMap.piecesIncluded = mainProduct.piecesIncluded + mainProductMap.uomDesc = quantityUom.description + mainProducts.add(mainProductMap) } } // get alternative product price when product doesn't have any feature - jsBuf = new StringBuffer(); - jsBuf.append("<script language=\"JavaScript\" type=\"text/javascript\">"); + jsBuf = new StringBuffer() + jsBuf.append("<script language=\"JavaScript\" type=\"text/javascript\">") // make a list of variant sku with requireAmount - virtualVariantsRes = runService('getAssociatedProducts', [productIdTo : productId, type : "ALTERNATIVE_PACKAGE", checkViewAllow : true, prodCatalogId : categoryId]); - virtualVariants = virtualVariantsRes.assocProducts; + virtualVariantsRes = runService('getAssociatedProducts', [productIdTo : productId, type : "ALTERNATIVE_PACKAGE", checkViewAllow : true, prodCatalogId : categoryId]) + virtualVariants = virtualVariantsRes.assocProducts // Format to apply the currency code to the variant price in the javascript if (productStore) { - localeString = productStore.defaultLocaleString; + localeString = productStore.defaultLocaleString if (localeString) { - locale = UtilMisc.parseLocale(localeString); + locale = UtilMisc.parseLocale(localeString) } } - variantPriceList = []; - numberFormat = NumberFormat.getCurrencyInstance(locale); + variantPriceList = [] + numberFormat = NumberFormat.getCurrencyInstance(locale) if(virtualVariants){ - amt = new StringBuffer(); + amt = new StringBuffer() // Create the javascript to return the price for each variant - variantPriceJS = new StringBuffer(); - variantPriceJS.append("function getVariantPrice(sku) { "); + variantPriceJS = new StringBuffer() + variantPriceJS.append("function getVariantPrice(sku) { ") virtualVariants.each { virtualAssoc -> - virtual = virtualAssoc.getRelatedOne("MainProduct", false); + virtual = virtualAssoc.getRelatedOne("MainProduct", false) // Get price from a virtual product - priceContext.product = virtual; + priceContext.product = virtual if (cart.isSalesOrder()) { // sales order: run the "calculateProductPrice" service - virtualPriceMap = runService('calculateProductPrice', priceContext); - BigDecimal calculatedPrice = (BigDecimal)virtualPriceMap.get("price"); + virtualPriceMap = runService('calculateProductPrice', priceContext) + BigDecimal calculatedPrice = (BigDecimal)virtualPriceMap.get("price") // Get the minimum quantity for variants if MINIMUM_ORDER_PRICE is set for variants. - variantPriceList.add(virtualPriceMap); + variantPriceList.add(virtualPriceMap) } else { - virtualPriceMap = runService('calculatePurchasePrice', priceContext); + virtualPriceMap = runService('calculatePurchasePrice', priceContext) } if (virtualPriceMap.basePrice) { - basePrice = numberFormat.format(virtualPriceMap.basePrice); + basePrice = numberFormat.format(virtualPriceMap.basePrice) } else { basePrice = UtilProperties.getResourceBundleMap("CommonUiLabels", locale).get("CommonNA") } - variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + basePrice + "\"; "); + variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + basePrice + "\"; ") } - variantPriceJS.append(" } "); + variantPriceJS.append(" } ") - context.variantPriceList = variantPriceList; - jsBuf.append(amt.toString()); - jsBuf.append(variantPriceJS.toString()); - jsBuf.append("</script>"); - context.virtualJavaScript = jsBuf; + context.variantPriceList = variantPriceList + jsBuf.append(amt.toString()) + jsBuf.append(variantPriceJS.toString()) + jsBuf.append("</script>") + context.virtualJavaScript = jsBuf } } - context.mainProducts = mainProducts; + context.mainProducts = mainProducts } // get the average rating if (reviews) { - totalProductRating = 0; - numRatings = 0; + totalProductRating = 0 + numRatings = 0 reviews.each { productReview -> - productRating = productReview.productRating; + productRating = productReview.productRating if (productRating) { - totalProductRating += productRating; - numRatings++; + totalProductRating += productRating + numRatings++ } } if (numRatings) { - context.averageRating = totalProductRating/numRatings; - context.numRatings = numRatings; + context.averageRating = totalProductRating/numRatings + context.numRatings = numRatings } } // an example of getting features of a certain type to show -sizeProductFeatureAndAppls = from("ProductFeatureAndAppl").where("productId", productId, "productFeatureTypeId", "SIZE").orderBy("sequenceNum", "defaultSequenceNum").cache(true).queryList(); +sizeProductFeatureAndAppls = from("ProductFeatureAndAppl").where("productId", productId, "productFeatureTypeId", "SIZE").orderBy("sequenceNum", "defaultSequenceNum").cache(true).queryList() -context.product = product; -context.categoryId = categoryId; -context.productReviews = reviews; -context.sizeProductFeatureAndAppls = sizeProductFeatureAndAppls; +context.product = product +context.categoryId = categoryId +context.productReviews = reviews +context.sizeProductFeatureAndAppls = sizeProductFeatureAndAppls Modified: ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductUomDropDownOnly.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductUomDropDownOnly.groovy?rev=1767764&r1=1767763&r2=1767764&view=diff ============================================================================== --- ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductUomDropDownOnly.groovy (original) +++ ofbiz/trunk/applications/order/groovyScripts/entry/catalog/ProductUomDropDownOnly.groovy Wed Nov 2 19:09:13 2016 @@ -17,23 +17,23 @@ * under the License. */ -import org.apache.ofbiz.base.util.*; +import org.apache.ofbiz.base.util.* -product = from("Product").where("productId", parameters.productId).queryOne(); +product = from("Product").where("productId", parameters.productId).queryOne() if (product) { - productVirtualVariants = from("ProductAssoc").where("productIdTo", product.productId , "productAssocTypeId", "ALTERNATIVE_PACKAGE").cache(true).queryList(); + productVirtualVariants = from("ProductAssoc").where("productIdTo", product.productId , "productAssocTypeId", "ALTERNATIVE_PACKAGE").cache(true).queryList() if(productVirtualVariants){ - def mainProducts = []; + def mainProducts = [] productVirtualVariants.each { virtualVariantKey -> - mainProductMap = [:]; - mainProduct = virtualVariantKey.getRelatedOne("MainProduct", true); - quantityUom = mainProduct.getRelatedOne("QuantityUom", true); - mainProductMap.productId = mainProduct.productId; - mainProductMap.piecesIncluded = mainProduct.piecesIncluded; - mainProductMap.uomDesc = quantityUom.description; - mainProducts.add(mainProductMap); + mainProductMap = [:] + mainProduct = virtualVariantKey.getRelatedOne("MainProduct", true) + quantityUom = mainProduct.getRelatedOne("QuantityUom", true) + mainProductMap.productId = mainProduct.productId + mainProductMap.piecesIncluded = mainProduct.piecesIncluded + mainProductMap.uomDesc = quantityUom.description + mainProducts.add(mainProductMap) } - context.mainProducts = mainProducts; + context.mainProducts = mainProducts } - context.product = product; + context.product = product } Modified: ofbiz/trunk/applications/order/groovyScripts/entry/catalog/QuickAdd.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/groovyScripts/entry/catalog/QuickAdd.groovy?rev=1767764&r1=1767763&r2=1767764&view=diff ============================================================================== --- ofbiz/trunk/applications/order/groovyScripts/entry/catalog/QuickAdd.groovy (original) +++ ofbiz/trunk/applications/order/groovyScripts/entry/catalog/QuickAdd.groovy Wed Nov 2 19:09:13 2016 @@ -22,29 +22,29 @@ * should not contain order component's specific code. */ -import java.lang.*; -import java.util.*; -import org.apache.ofbiz.base.util.*; -import org.apache.ofbiz.entity.*; -import org.apache.ofbiz.service.*; -import org.apache.ofbiz.product.catalog.*; +import java.lang.* +import java.util.* +import org.apache.ofbiz.base.util.* +import org.apache.ofbiz.entity.* +import org.apache.ofbiz.service.* +import org.apache.ofbiz.product.catalog.* -currentCatalogId = CatalogWorker.getCurrentCatalogId(request); -categoryId = parameters.category_id ?: CatalogWorker.getCatalogQuickaddCategoryPrimary(request); +currentCatalogId = CatalogWorker.getCurrentCatalogId(request) +categoryId = parameters.category_id ?: CatalogWorker.getCatalogQuickaddCategoryPrimary(request) -quickAddCategories = CatalogWorker.getCatalogQuickaddCategories(request); -context.quickAddCats = quickAddCategories; -context.categoryId = categoryId; +quickAddCategories = CatalogWorker.getCatalogQuickaddCategories(request) +context.quickAddCats = quickAddCategories +context.categoryId = categoryId if (categoryId) { fields = [productCategoryId : categoryId, defaultViewSize : 10, - limitView : false, prodCatalogId : currentCatalogId, checkViewAllow : true]; - result = runService('getProductCategoryAndLimitedMembers', fields); + limitView : false, prodCatalogId : currentCatalogId, checkViewAllow : true] + result = runService('getProductCategoryAndLimitedMembers', fields) if (result) { result.each { key, value -> - context[key] = value; + context[key] = value } } - productCategory = from("ProductCategory").where("productCategoryId", categoryId).queryOne(); - context.productCategory = productCategory; + productCategory = from("ProductCategory").where("productCategoryId", categoryId).queryOne() + context.productCategory = productCategory } Modified: ofbiz/trunk/applications/order/groovyScripts/entry/catalog/SideDeepCategory.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/groovyScripts/entry/catalog/SideDeepCategory.groovy?rev=1767764&r1=1767763&r2=1767764&view=diff ============================================================================== --- ofbiz/trunk/applications/order/groovyScripts/entry/catalog/SideDeepCategory.groovy (original) +++ ofbiz/trunk/applications/order/groovyScripts/entry/catalog/SideDeepCategory.groovy Wed Nov 2 19:09:13 2016 @@ -22,18 +22,18 @@ * should not contain order component's specific code. */ -import org.apache.ofbiz.base.util.*; -import org.apache.ofbiz.product.catalog.*; -import org.apache.ofbiz.product.category.*; +import org.apache.ofbiz.base.util.* +import org.apache.ofbiz.product.catalog.* +import org.apache.ofbiz.product.category.* -CategoryWorker.getRelatedCategories(request, "topLevelList", CatalogWorker.getCatalogTopCategoryId(request, CatalogWorker.getCurrentCatalogId(request)), true); -curCategoryId = parameters.category_id ?: parameters.CATEGORY_ID ?: ""; -request.setAttribute("curCategoryId", curCategoryId); -CategoryWorker.setTrail(request, curCategoryId); +CategoryWorker.getRelatedCategories(request, "topLevelList", CatalogWorker.getCatalogTopCategoryId(request, CatalogWorker.getCurrentCatalogId(request)), true) +curCategoryId = parameters.category_id ?: parameters.CATEGORY_ID ?: "" +request.setAttribute("curCategoryId", curCategoryId) +CategoryWorker.setTrail(request, curCategoryId) -categoryList = request.getAttribute("topLevelList"); +categoryList = request.getAttribute("topLevelList") if (categoryList) { - catContentWrappers = [:]; - CategoryWorker.getCategoryContentWrappers(catContentWrappers, categoryList, request); - context.catContentWrappers = catContentWrappers; + catContentWrappers = [:] + CategoryWorker.getCategoryContentWrappers(catContentWrappers, categoryList, request) + context.catContentWrappers = catContentWrappers } Modified: ofbiz/trunk/applications/order/groovyScripts/lookup/LookupAssociatedProducts.groovy URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/groovyScripts/lookup/LookupAssociatedProducts.groovy?rev=1767764&r1=1767763&r2=1767764&view=diff ============================================================================== --- ofbiz/trunk/applications/order/groovyScripts/lookup/LookupAssociatedProducts.groovy (original) +++ ofbiz/trunk/applications/order/groovyScripts/lookup/LookupAssociatedProducts.groovy Wed Nov 2 19:09:13 2016 @@ -17,28 +17,28 @@ * under the License. */ -import org.apache.ofbiz.base.util.UtilValidate; -import org.apache.ofbiz.entity.condition.EntityCondition; -import org.apache.ofbiz.entity.condition.EntityOperator; -import org.apache.ofbiz.entity.util.EntityUtil; +import org.apache.ofbiz.base.util.UtilValidate +import org.apache.ofbiz.entity.condition.EntityCondition +import org.apache.ofbiz.entity.condition.EntityOperator +import org.apache.ofbiz.entity.util.EntityUtil -productId = request.getParameter("productId"); +productId = request.getParameter("productId") if (productId != null) { - product = from("Product").where("productId", productId).queryOne(); - prodAssocs = product.getRelated("MainProductAssoc", null, null, false); + product = from("Product").where("productId", productId).queryOne() + prodAssocs = product.getRelated("MainProductAssoc", null, null, false) if (UtilValidate.isNotEmpty(prodAssocs)) { - products = EntityUtil.filterByAnd(prodAssocs, [EntityCondition.makeCondition("productAssocTypeId", EntityOperator.NOT_EQUAL, "PRODUCT_VARIANT")]); + products = EntityUtil.filterByAnd(prodAssocs, [EntityCondition.makeCondition("productAssocTypeId", EntityOperator.NOT_EQUAL, "PRODUCT_VARIANT")]) if (UtilValidate.isNotEmpty(products)) { - productList = []; + productList = [] products.each { product -> if (product != null) { - String productIdTo = product.getString("productIdTo"); - productList.add(from("Product").where("productId", productIdTo).queryFirst()); + String productIdTo = product.getString("productIdTo") + productList.add(from("Product").where("productId", productIdTo).queryFirst()) } } - context.put("productList",productList); + context.put("productList",productList) } } } |
Free forum by Nabble | Edit this page |