You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2020/08/30 12:14:50 UTC
[ofbiz-framework] branch trunk updated: Fixed: display/selection of
unit of measure is broken (OFBIZ-11955)
This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 9a957eb Fixed: display/selection of unit of measure is broken (OFBIZ-11955)
9a957eb is described below
commit 9a957eb7a7d330873401887658b3d26113ea7908
Author: Jacques Le Roux <ja...@les7arts.com>
AuthorDate: Sun Aug 30 14:08:35 2020 +0200
Fixed: display/selection of unit of measure is broken
(OFBIZ-11955)
This fixes in in order component
Thanks: Alex
---
.../entry/catalog/InlineProductDetail.groovy | 7 +++
.../entry/catalog/ProductDetail.groovy | 11 +++++
.../entry/catalog/ProductSummary.groovy | 7 +++
.../order/template/entry/catalog/ProductDetail.ftl | 14 ++++++
.../template/entry/catalog/ProductSummary.ftl | 14 +++---
.../template/entry/catalog/ProductVariantJS.ftl | 51 ++++++++++++++++++++++
.../widget/ordermgr/OrderEntryCatalogScreens.xml | 8 ++++
7 files changed, 107 insertions(+), 5 deletions(-)
diff --git a/applications/order/groovyScripts/entry/catalog/InlineProductDetail.groovy b/applications/order/groovyScripts/entry/catalog/InlineProductDetail.groovy
index fce3ed8..46b2865 100644
--- a/applications/order/groovyScripts/entry/catalog/InlineProductDetail.groovy
+++ b/applications/order/groovyScripts/entry/catalog/InlineProductDetail.groovy
@@ -102,6 +102,9 @@ if (inlineProduct) {
featureTypes = [:]
featureOrder = []
+ variantInfoJS = new StringBuffer()
+ variantInfoJS.append("<script language=\"JavaScript\" type=\"text/javascript\">\n \$(document).ready(function(\$) {\n")
+
// make the productContentWrapper
productContentWrapper = new ProductContentWrapper(inlineProduct, request)
context.productContentWrapper = productContentWrapper
@@ -284,7 +287,9 @@ if (inlineProduct) {
variantPriceMap = runService('calculateProductPrice', priceContext)
}
amt.append(" if (sku == \"" + variant.productId + "\") return \"" + (variant.requireAmount ?: "N") + "\"; ")
+ variantInfoJS.append(" variantReqAmounts['" + variant.productId + "'] = '" + (variant.requireAmount ?: "N") + "';\n")
variantPriceJS.append(" if (sku == \"" + variant.productId + "\") return \"" + numberFormat.format(variantPriceMap.basePrice) + "\"; ")
+ variantInfoJS.append(" variantPrices['" + variant.productId + "'] = '" + numberFormat.format(variantPriceMap.basePrice) + "';\n")
}
amt.append(" } ")
variantPriceJS.append(" } ")
@@ -298,4 +303,6 @@ if (inlineProduct) {
}
}
}
+ variantInfoJS.append(" });\n</script>\n")
+ context.variantInfoJavaScript = variantInfoJS
}
diff --git a/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy b/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy
index 8690fef..5b338a3 100644
--- a/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy
+++ b/applications/order/groovyScripts/entry/catalog/ProductDetail.groovy
@@ -106,6 +106,9 @@ if (product) {
featureTypes = [:]
featureOrder = []
+ variantInfoJS = new StringBuffer()
+ variantInfoJS.append("<script language=\"JavaScript\" type=\"text/javascript\">\n \$(document).ready(function(\$) {\n")
+
// 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")
@@ -440,8 +443,10 @@ if (product) {
variantPriceMap = runService('calculatePurchasePrice', priceContext)
}
amt.append(" if (sku == \"" + variant.productId + "\") return \"" + (variant.requireAmount ?: "N") + "\"; ")
+ variantInfoJS.append(" variantReqAmounts['" + variant.productId + "'] = '" + (variant.requireAmount ?: "N") + "';\n")
if (variantPriceMap && variantPriceMap.basePrice) {
variantPriceJS.append(" if (sku == \"" + variant.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "\"; ")
+ variantInfoJS.append(" variantPrices['" + variant.productId + "'] = '" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "';\n")
}
// make a list of virtual variants sku with requireAmount
@@ -481,9 +486,11 @@ if (product) {
}
variantPriceList.add(virtualPriceMap)
variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "\"; ")
+ variantInfoJS.append(" variantPrices['" + virtual.productId + "'] = '" + UtilFormatOut.formatCurrency(variantPriceMap.basePrice, currencyUomId, locale, 10) + "';\n")
} else {
virtualPriceMap = runService('calculatePurchasePrice', priceContext)
variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(variantPriceMap.price, currencyUomId, locale, 10) + "\"; ")
+ variantInfoJS.append(" variantPrices['" + virtual.productId + "'] = '" + UtilFormatOut.formatCurrency(variantPriceMap.price, currencyUomId, locale, 10) + "';\n")
}
}
@@ -537,9 +544,11 @@ if (product) {
// 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) + "\"; ")
+ variantInfoJS.append(" variantPrices['" + virtual.productId + "'] = '" + UtilFormatOut.formatCurrency(virtualPriceMap.basePrice, currencyUomId, locale, 10) + "';\n")
} else {
virtualPriceMap = runService('calculatePurchasePrice', priceContext)
variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + UtilFormatOut.formatCurrency(virtualPriceMap.price, currencyUomId, locale, 10) + "\"; ")
+ variantInfoJS.append(" variantPrices['" + virtual.productId + "'] = '" + UtilFormatOut.formatCurrency(virtualPriceMap.price, currencyUomId, locale, 10) + "';\n")
}
}
variantPriceJS.append(" } ")
@@ -552,6 +561,8 @@ if (product) {
}
}
}
+ variantInfoJS.append(" });\n</script>\n")
+ context.variantInfoJavaScript = variantInfoJS
availableInventory = 0.0
diff --git a/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy b/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy
index 3ae64ef..9e07931 100644
--- a/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy
+++ b/applications/order/groovyScripts/entry/catalog/ProductSummary.groovy
@@ -99,6 +99,9 @@ reviews = null
if (product) {
categoryId = parameters.category_id ?: request.getAttribute("productCategoryId")
+ variantInfoJS = new StringBuffer()
+ variantInfoJS.append("<script language=\"JavaScript\" type=\"text/javascript\">\n jQuery(document).ready(function(jQuery) {\n")
+
// get the product price
if (cart.isSalesOrder()) {
// sales order: run the "calculateProductPrice" service
@@ -194,6 +197,7 @@ if (product) {
basePrice = UtilProperties.getResourceBundleMap("CommonUiLabels", locale).get("CommonNA")
}
variantPriceJS.append(" if (sku == \"" + virtual.productId + "\") return \"" + basePrice + "\"; ")
+ variantInfoJS.append(" variantPrices['" + virtual.productId + "'] = '" + basePrice + "';\n")
}
variantPriceJS.append(" } ")
@@ -204,6 +208,9 @@ if (product) {
context.virtualJavaScript = jsBuf
}
}
+ variantInfoJS.append(" });\n</script>\n")
+ context.variantInfoJavaScript = variantInfoJS
+
context.mainProducts = mainProducts
}
diff --git a/applications/order/template/entry/catalog/ProductDetail.ftl b/applications/order/template/entry/catalog/ProductDetail.ftl
index ef2275b..8c6aa9f 100644
--- a/applications/order/template/entry/catalog/ProductDetail.ftl
+++ b/applications/order/template/entry/catalog/ProductDetail.ftl
@@ -279,6 +279,8 @@ ${virtualJavaScript!}
}
</script>
+${screens.render("component://order/widget/ordermgr/OrderEntryCatalogScreens.xml#productvariantjs")}
+${variantInfoJavaScript!}
<div id="productdetail">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
@@ -496,6 +498,18 @@ ${virtualJavaScript!}
<#else>
<input type="hidden" name="product_id" value="${product.productId}"/>
<input type="hidden" name="add_product_id" value="${product.productId}"/>
+ <#if mainProducts?has_content>
+ <select name="productVariantId" class="form-control" onchange="javascript:variantUomSelection(this);">
+ <option value="">${uiLabelMap.CommonSelect} ${uiLabelMap.ProductUnitOfMeasure}</option>
+ <#list mainProducts as mainProduct>
+ <option value="${mainProduct.productId}">${mainProduct.uomDesc} : ${mainProduct.piecesIncluded}</option>
+ </#list>
+ </select><br/>
+ <div class="variant-price" style="display: none;">
+ <strong><span class="product_id_display"> </span></strong>
+ <strong><span class="variant_price_display"> </span></strong>
+ </div>
+ </#if>
<#if productStoreId??>
<#assign isStoreInventoryNotAvailable = !(Static["org.apache.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryAvailable(request, product, 1.0?double))>
<#assign isStoreInventoryRequired = Static["org.apache.ofbiz.product.store.ProductStoreWorker"].isStoreInventoryRequired(request, product)>
diff --git a/applications/order/template/entry/catalog/ProductSummary.ftl b/applications/order/template/entry/catalog/ProductSummary.ftl
index a563798..564129e 100644
--- a/applications/order/template/entry/catalog/ProductSummary.ftl
+++ b/applications/order/template/entry/catalog/ProductSummary.ftl
@@ -49,6 +49,8 @@ ${virtualJavaScript!}
}
}
</script>
+${screens.render("component://order/widget/ordermgr/OrderEntryCatalogScreens.xml#productvariantjs")}
+${variantInfoJavaScript!}
<#if product??>
<#-- variable setup -->
<#if "Y" == backendPath?default("N")>
@@ -92,6 +94,7 @@ ${virtualJavaScript!}
</table>
</div>
<script type="application/javascript">
+ jQuery(document).ready(function(jQuery) {
jQuery("#${productInfoLinkId}").attr('title', jQuery("#${productDetailId}").remove().html());
jQuery("#${productInfoLinkId}").tooltip({
content: function(){
@@ -100,6 +103,7 @@ ${virtualJavaScript!}
tooltipClass: "popup",
track: true
});
+ });
</script>
<div class="productbuy">
<#-- check to see if introductionDate hasn't passed yet -->
@@ -131,15 +135,15 @@ ${virtualJavaScript!}
<a href="javascript:document.the${requestAttributes.formNamePrefix!}${requestAttributes.listIndex!}form.submit()" class="buttontext">${uiLabelMap.OrderAddToCart}</a>
<#if mainProducts?has_content>
<input type="hidden" name="product_id" value=""/>
- <select name="productVariantId" onchange="javascript:displayProductVirtualId(this.value, '${product.productId}', this.form);">
- <option value="">Select Unit Of Measure</option>
+ <select name="productVariantId" onchange="javascript:variantUomSelection(this);" style="width: 100%;">
+ <option value="">${uiLabelMap.CommonSelect} ${uiLabelMap.ProductUnitOfMeasure}</option>
<#list mainProducts as mainProduct>
<option value="${mainProduct.productId}">${mainProduct.uomDesc} : ${mainProduct.piecesIncluded}</option>
</#list>
</select>
- <div style="display: inline-block;">
- <strong><span id="product_id_display"> </span></strong>
- <strong><span id="variant_price_display"> </span></strong>
+ <div class="variant-price" style="display: none;">
+ <strong><span class="product_id_display"> </span></strong>
+ <strong><span class="variant_price_display"> </span></strong>
</div>
</#if>
</form>
diff --git a/applications/order/template/entry/catalog/ProductVariantJS.ftl b/applications/order/template/entry/catalog/ProductVariantJS.ftl
new file mode 100644
index 0000000..0912299
--- /dev/null
+++ b/applications/order/template/entry/catalog/ProductVariantJS.ftl
@@ -0,0 +1,51 @@
+<#--
+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.
+-->
+<script language="JavaScript" type="text/javascript">
+if (typeof(checkAmtReq2) == 'undefined') {
+
+ var variantReqAmounts = {};
+ function checkAmtReq2(sku) {
+ return variantReqAmounts[sku];
+ }
+
+ var variantPrices = {};
+ function getVariantPrice2(sku) {
+ return variantPrices[sku];
+ }
+
+ function variantUomSelection (select) {
+ var $select = $(select);
+ var form = $select.closest('form');
+ var price_div = $('.variant-price', form);
+ var variantId = $select.val() || '';
+ $("[name='product_id']", form).val(variantId);
+ $('.product_id_display', price_div).text(variantId);
+
+ var price = getVariantPrice2(variantId);
+ if (price) {
+ $('.variant_price_display', price_div).text(price);
+ price_div.css('display', 'inline-block');
+ }
+ else {
+ price_div.hide();
+ }
+ }
+
+}
+</script>
diff --git a/applications/order/widget/ordermgr/OrderEntryCatalogScreens.xml b/applications/order/widget/ordermgr/OrderEntryCatalogScreens.xml
index fd59224..d25af12 100644
--- a/applications/order/widget/ordermgr/OrderEntryCatalogScreens.xml
+++ b/applications/order/widget/ordermgr/OrderEntryCatalogScreens.xml
@@ -66,6 +66,14 @@ under the License.
</section>
</screen>
+ <screen name="productvariantjs">
+ <section>
+ <widgets>
+ <platform-specific><html><html-template location="component://order/template/entry/catalog/ProductVariantJS.ftl"/></html></platform-specific>
+ </widgets>
+ </section>
+ </screen>
+
<screen name="breadcrumbs">
<section>
<actions>