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 2016/03/28 13:14:24 UTC

svn commit: r1736868 [14/20] - in /ofbiz/trunk/applications/order: template/ template/entry/ template/entry/cart/ template/entry/catalog/ template/entry/order/ template/order/ template/product/ template/quote/ template/reports/ template/request/ templa...

Added: ofbiz/trunk/applications/order/template/product/productdetail.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/product/productdetail.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/product/productdetail.ftl (added)
+++ ofbiz/trunk/applications/order/template/product/productdetail.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,918 @@
+<#--
+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.
+-->
+<#-- variable setup -->
+<#assign price = priceMap! />
+<#assign productImageList = productImageList! />
+<#-- end variable setup -->
+
+<#-- virtual product javascript -->
+${virtualJavaScript!}
+${virtualVariantJavaScript!}
+<script type="text/javascript">
+//<![CDATA[
+    var detailImageUrl = null;
+    function setAddProductId(name) {
+        document.addform.add_product_id.value = name;
+        if (document.addform.quantity == null) return;
+        if (name == '' || name == 'NULL' || isVirtual(name) == true) {
+            document.addform.quantity.disabled = true;
+            var elem = document.getElementById('product_id_display');
+            var txt = document.createTextNode('');
+            if(elem.hasChildNodes()) {
+                elem.replaceChild(txt, elem.firstChild);
+            } else {
+                elem.appendChild(txt);
+            }
+        } else {
+            document.addform.quantity.disabled = false;
+            var elem = document.getElementById('product_id_display');
+            var txt = document.createTextNode(name);
+            if(elem.hasChildNodes()) {
+                elem.replaceChild(txt, elem.firstChild);
+            } else {
+                elem.appendChild(txt);
+            }
+        }
+    }
+    function setVariantPrice(sku) {
+        if (sku == '' || sku == 'NULL' || isVirtual(sku) == true) {
+            var elem = document.getElementById('variant_price_display');
+            var txt = document.createTextNode('');
+            if(elem.hasChildNodes()) {
+                elem.replaceChild(txt, elem.firstChild);
+            } else {
+                elem.appendChild(txt);
+            }
+        }
+        else {
+            var elem = document.getElementById('variant_price_display');
+            var price = getVariantPrice(sku);
+            var txt = document.createTextNode(price);
+            if(elem.hasChildNodes()) {
+                elem.replaceChild(txt, elem.firstChild);
+            } else {
+                elem.appendChild(txt);
+            }
+        }
+    }
+    function isVirtual(product) {
+        var isVirtual = false;
+        <#if virtualJavaScript??>
+        for (i = 0; i < VIR.length; i++) {
+            if (VIR[i] == product) {
+                isVirtual = true;
+            }
+        }
+        </#if>
+        return isVirtual;
+    }
+    function addItem() {
+       if (document.addform.add_product_id.value == 'NULL') {
+           showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonPleaseSelectAllRequiredOptions}");
+           return;
+       } else {
+           if (isVirtual(document.addform.add_product_id.value)) {
+               document.location = '<@o...@ofbizUrl>' + document.addform.add_product_id.value;
+               return;
+           } else {
+               document.addform.submit();
+           }
+       }
+    }
+
+    function popupDetail(specificDetailImageUrl) {
+        if( specificDetailImageUrl ) {
+            detailImageUrl = specificDetailImageUrl;
+        }
+        else {
+            var defaultDetailImage = "${firstDetailImage?default(mainDetailImageUrl?default("_NONE_"))}";
+            if (defaultDetailImage == null || defaultDetailImage == "null" || defaultDetailImage == "") {
+               defaultDetailImage = "_NONE_";
+            }
+
+            if (detailImageUrl == null || detailImageUrl == "null") {
+                detailImageUrl = defaultDetailImage;
+            }
+        }
+
+        if (detailImageUrl == "_NONE_") {
+            hack = document.createElement('span');
+            hack.innerHTML="${uiLabelMap.CommonNoDetailImageAvailableToDisplay}";
+            showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonNoDetailImageAvailableToDisplay}");
+            return;
+        }
+        detailImageUrl = detailImageUrl.replace(/\&\#47;/g, "/");
+        popUp("<@ofbizUrl>detailImage?detail=" + detailImageUrl + "</...@ofbizUrl>", 'detailImage', '600', '600');
+    }
+
+    function toggleAmt(toggle) {
+        if (toggle == 'Y') {
+            changeObjectVisibility("add_amount", "visible");
+        }
+
+        if (toggle == 'N') {
+            changeObjectVisibility("add_amount", "hidden");
+        }
+    }
+
+    function findIndex(name) {
+        for (i = 0; i < OPT.length; i++) {
+            if (OPT[i] == name) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+    function getList(name, index, src) {
+        currentFeatureIndex = findIndex(name);
+
+        if (currentFeatureIndex == 0) {
+            // set the images for the first selection
+            if (IMG[index] != null) {
+                if (document.images['mainImage'] != null) {
+                    document.images['mainImage'].src = IMG[index];
+                    detailImageUrl = DET[index];
+                }
+            }
+
+            // set the drop down index for swatch selection
+            document.forms["addform"].elements[name].selectedIndex = (index*1)+1;
+        }
+
+        if (currentFeatureIndex < (OPT.length-1)) {
+            // eval the next list if there are more
+            var selectedValue = document.forms["addform"].elements[name].options[(index*1)+1].value;
+            if (index == -1) {
+              <#if featureOrderFirst??>
+                var Variable1 = eval("list" + "${featureOrderFirst}" + "()");
+              </#if>
+            } else {
+                var Variable1 = eval("list" + OPT[(currentFeatureIndex+1)] + selectedValue + "()");
+            }
+            // set the product ID to NULL to trigger the alerts
+            setAddProductId('NULL');
+
+            // set the variant price to NULL
+            setVariantPrice('NULL');
+        } else {
+            // this is the final selection -- locate the selected index of the last selection
+            var indexSelected = document.forms["addform"].elements[name].selectedIndex;
+
+            // using the selected index locate the sku
+            var sku = document.forms["addform"].elements[name].options[indexSelected].value;
+            
+            // display alternative packaging dropdown
+            ajaxUpdateArea("product_uom", "<@o...@ofbizUrl>", "productId=" + sku);
+
+            // set the product ID
+            setAddProductId(sku);
+
+            // set the variant price
+            setVariantPrice(sku);
+
+            // check for amount box
+            toggleAmt(checkAmtReq(sku));
+        }
+    }
+
+    function validate(x){
+        var msg=new Array();
+        msg[0]="Please use correct date format [yyyy-mm-dd]";
+
+        var y=x.split("-");
+        if(y.length!=3){ showAlert(msg[0]);return false; }
+        if((y[2].length>2)||(parseInt(y[2])>31)) { showAlert(msg[0]); return false; }
+        if(y[2].length==1){ y[2]="0"+y[2]; }
+        if((y[1].length>2)||(parseInt(y[1])>12)){ showAlert(msg[0]); return false; }
+        if(y[1].length==1){ y[1]="0"+y[1]; }
+        if(y[0].length>4){ showAlert(msg[0]); return false; }
+        if(y[0].length<4) {
+            if(y[0].length==2) {
+                y[0]="20"+y[0];
+            } else {
+                showAlert(msg[0]);
+                return false;
+            }
+        }
+        return (y[0]+"-"+y[1]+"-"+y[2]);
+    }
+
+    function showAlert(msg){
+        showErrorAlert("${uiLabelMap.CommonErrorMessage2}", msg);
+    }
+
+    function additemSubmit(){
+        <#if product.productTypeId! == "ASSET_USAGE" || product.productTypeId! == "ASSET_USAGE_OUT_IN">
+        newdatevalue = validate(document.addform.reservStart.value);
+        if (newdatevalue == false) {
+            document.addform.reservStart.focus();
+        } else {
+            document.addform.reservStart.value = newdatevalue;
+            document.addform.submit();
+        }
+        <#else>
+        document.addform.submit();
+        </#if>
+    }
+
+    function addShoplistSubmit(){
+        <#if product.productTypeId! == "ASSET_USAGE" || product.productTypeId! == "ASSET_USAGE_OUT_IN">
+        if (document.addToShoppingList.reservStartStr.value == "") {
+            document.addToShoppingList.submit();
+        } else {
+            newdatevalue = validate(document.addToShoppingList.reservStartStr.value);
+            if (newdatevalue == false) {
+                document.addToShoppingList.reservStartStr.focus();
+            } else {
+                document.addToShoppingList.reservStartStr.value = newdatevalue;
+                // document.addToShoppingList.reservStart.value = ;
+                document.addToShoppingList.reservStartStr.value.slice(0,9)+" 00:00:00.000000000";
+                document.addToShoppingList.submit();
+            }
+        }
+        <#else>
+        document.addToShoppingList.submit();
+        </#if>
+    }
+
+    <#if product.virtualVariantMethodEnum! == "VV_FEATURETREE" && featureLists?has_content>
+        function checkRadioButton() {
+            var block1 = document.getElementById("addCart1");
+            var block2 = document.getElementById("addCart2");
+            <#list featureLists as featureList>
+                <#list featureList as feature>
+                    <#if feature_index == 0>
+                        var myList = document.getElementById("FT${feature.productFeatureTypeId}");
+                         if (myList.options[0].selected == true){
+                             block1.style.display = "none";
+                             block2.style.display = "block";
+                             return;
+                         }
+                        <#break>
+                    </#if>
+                </#list>
+            </#list>
+            block1.style.display = "block";
+            block2.style.display = "none";
+        }
+    </#if>
+    
+    function displayProductVirtualVariantId(variantId) {
+        if(variantId){
+            document.addform.product_id.value = variantId;
+        }else{
+            document.addform.product_id.value = '';
+            variantId = '';
+        }
+        
+        var elem = document.getElementById('product_id_display');
+        var txt = document.createTextNode(variantId);
+        if(elem.hasChildNodes()) {
+            elem.replaceChild(txt, elem.firstChild);
+        } else {
+            elem.appendChild(txt);
+        }
+        
+        var priceElem = document.getElementById('variant_price_display');
+        var price = getVariantPrice(variantId);
+        var priceTxt = null;
+        if(price){
+            priceTxt = document.createTextNode(price);
+        }else{
+            priceTxt = document.createTextNode('');
+        }
+        if(priceElem.hasChildNodes()) {
+            priceElem.replaceChild(priceTxt, priceElem.firstChild);
+        } else {
+            priceElem.appendChild(priceTxt);
+        }
+    }
+//]]>
+$(function(){
+    $('a[id^=productTag_]').click(function(){
+        var id = $(this).attr('id');
+        var ids = id.split('_');
+        var productTagStr = ids[1];
+        if (productTagStr) {
+            $('#productTagStr').val(productTagStr);
+            $('#productTagsearchform').submit();
+        }
+    });
+})
+ </script>
+
+<#macro showUnavailableVarients>
+  <#if unavailableVariants??>
+    <ul>
+      <#list unavailableVariants as prod>
+        <#assign features = prod.getRelated("ProductFeatureAppl", null, null, false)/>
+        <li>
+          <#list features as feature>
+            <em>${feature.getRelatedOne("ProductFeature", false).description}</em><#if feature_has_next>, </#if>
+          </#list>
+          <span>${uiLabelMap.ProductItemOutOfStock}</span>
+        </li>
+      </#list>
+    </ul>
+  </#if>
+</#macro>
+
+<div id="productdetail">
+    <#assign productAdditionalImage1 = productContentWrapper.get("ADDITIONAL_IMAGE_1", "url")! />
+    <#assign productAdditionalImage2 = productContentWrapper.get("ADDITIONAL_IMAGE_2", "url")! />
+    <#assign productAdditionalImage3 = productContentWrapper.get("ADDITIONAL_IMAGE_3", "url")! />
+    <#assign productAdditionalImage4 = productContentWrapper.get("ADDITIONAL_IMAGE_4", "url")! />
+    
+      <#-- Category next/previous -->
+      <#if category??>
+          <div id="paginationBox">
+            <#if previousProductId??>
+              <a href="<@ofbizCatalogAltUrl productCategoryId=categoryId! productId=previousProductId!/>" class="buttontext">${uiLabelMap.CommonPrevious}</a>&nbsp;|&nbsp;
+            </#if>
+            <a href="<@ofbizCatalogAltUrl productCategoryId=categoryId!/>" class="linktext">${(category.categoryName)?default(category.description)!}</a>
+            <#if nextProductId??>
+              &nbsp;|&nbsp;<a href="<@ofbizCatalogAltUrl productCategoryId=categoryId! productId=nextProductId!/>" class="buttontext">${uiLabelMap.CommonNext}</a>
+            </#if>
+          </div>
+      </#if>
+    
+    <hr />
+    <div id="productImageBox">
+        <#if productImageList?has_content>
+            <#-- Product image/name/price -->
+            <div id="detailImageBox">
+                <#assign productLargeImageUrl = productContentWrapper.get("LARGE_IMAGE_URL", "url")! />
+                <#-- remove the next two lines to always display the virtual image first (virtual images must exist) -->
+                <#if firstLargeImage?has_content>
+                    <#assign productLargeImageUrl = firstLargeImage />
+                </#if>
+                <#if productLargeImageUrl?string?has_content>
+                    <a href="javascript:popupDetail();"><img id="detailImage" src="<@o...@ofbizContentUrl>" name="mainImage" vspace="5" hspace="5" class="cssImgXLarge" alt="" /></a>
+                    <input type="hidden" id="originalImage" name="originalImage" value="<@o...@ofbizContentUrl>" />
+                </#if>
+                <#if !productLargeImageUrl?string?has_content>
+                    <img id="detailImage" src="/images/defaultImage.jpg" name="mainImage" alt="" />
+                </#if>
+            </div>
+            <#-- Show Image Approved -->
+            <div id="additionalImageBox">
+                <#if productImageList?has_content>
+                    <#list productImageList as productImage>
+                        <div class="additionalImage">
+                            <a href="javascript:void(0);" swapDetail="<@o...@ofbizContentUrl>"><img src="<@o...@ofbizContentUrl>" vspace="5" hspace="5" alt="" /></a>
+                        </div>
+                    </#list>
+                </#if>
+            </div>
+        <#else>
+            <#-- Product image/name/price -->
+            <div id="detailImageBox">
+                <#assign productLargeImageUrl = productContentWrapper.get("LARGE_IMAGE_URL", "url")! />
+                <#-- remove the next two lines to always display the virtual image first (virtual images must exist) -->
+                <#if firstLargeImage?has_content>
+                    <#assign productLargeImageUrl = firstLargeImage />
+                </#if>
+                <#if productLargeImageUrl?string?has_content>
+                    <a href="javascript:popupDetail();"><img id="detailImage" src="<@o...@ofbizContentUrl>" name="mainImage" vspace="5" hspace="5" class="cssImgXLarge" alt="" /></a>
+                    <input type="hidden" id="originalImage" name="originalImage" value="<@o...@ofbizContentUrl>" />
+                </#if>
+                <#if !productLargeImageUrl?string?has_content>
+                    <img id="detailImage" src="/images/defaultImage.jpg" name="mainImage" alt="" />
+                </#if>
+            </div>
+            <div id="additionalImageBox">
+                <#if productAdditionalImage1?string?has_content>
+                    <div class="additionalImage">
+                        <a href="javascript:void(0);" swapDetail="<@o...@ofbizContentUrl>"><img src="<@o...@ofbizContentUrl>" vspace="5" hspace="5" class="cssImgXLarge" alt="" /></a>
+                    </div>
+                </#if>
+                <#if productAdditionalImage2?string?has_content>
+                    <div class="additionalImage">
+                        <a href="javascript:void(0);" swapDetail="<@o...@ofbizContentUrl>"><img src="<@o...@ofbizContentUrl>" vspace="5" hspace="5" class="cssImgXLarge" alt="" /></a>
+                    </div>
+                </#if>
+                <#if productAdditionalImage3?string?has_content>
+                    <div class="additionalImage">
+                        <a href="javascript:void(0);" swapDetail="<@o...@ofbizContentUrl>"><img src="<@o...@ofbizContentUrl>" vspace="5" hspace="5" class="cssImgXLarge" alt="" /></a>
+                    </div>
+                </#if>
+                <#if productAdditionalImage4?string?has_content>
+                    <div class="additionalImage">
+                        <a href="javascript:void(0);" swapDetail="<@o...@ofbizContentUrl>"><img src="<@o...@ofbizContentUrl>" vspace="5" hspace="5" class="cssImgXLarge" alt="" /></a>
+                    </div>
+                </#if>
+            </div>
+        </#if>
+        
+        <div id="productDetailBox">
+          <h2>${productContentWrapper.get("PRODUCT_NAME", "html")!}</h2>
+          <div>${productContentWrapper.get("DESCRIPTION", "html")!}</div>
+          <div>${product.productId!}</div>
+          <#-- example of showing a certain type of feature with the product -->
+          <#if sizeProductFeatureAndAppls?has_content>
+            <div>
+              <#if (sizeProductFeatureAndAppls?size == 1)>
+                ${uiLabelMap.OrderSizeAvailableSingle}:
+              <#else>
+                ${uiLabelMap.OrderSizeAvailableMultiple}:
+              </#if>
+              <#list sizeProductFeatureAndAppls as sizeProductFeatureAndAppl>
+                ${sizeProductFeatureAndAppl.description?default(sizeProductFeatureAndAppl.abbrev?default(sizeProductFeatureAndAppl.productFeatureId))}<#if sizeProductFeatureAndAppl_has_next>,</#if>
+              </#list>
+            </div>
+          </#if>
+    
+          <#-- for prices:
+                  - if price < competitivePrice, show competitive or "Compare At" price
+                  - if price < listPrice, show list price
+                  - if price < defaultPrice and defaultPrice < listPrice, show default
+                  - if isSale show price with salePrice style and print "On Sale!"
+          -->
+          <#if price.competitivePrice?? && price.price?? && price.price &lt; price.competitivePrice>
+            <div>${uiLabelMap.ProductCompareAtPrice}: <span class="basePrice"><@ofbizCurrency amount=price.competitivePrice isoCode=price.currencyUsed /></span></div>
+          </#if>
+          <#if price.listPrice?? && price.price?? && price.price &lt; price.listPrice>
+            <div>${uiLabelMap.ProductListPrice}: <span class="basePrice"><@ofbizCurrency amount=price.listPrice isoCode=price.currencyUsed /></span></div>
+          </#if>
+          <#if price.listPrice?? && price.defaultPrice?? && price.price?? && price.price &lt; price.defaultPrice && price.defaultPrice &lt; price.listPrice>
+            <div>${uiLabelMap.ProductRegularPrice}: <span class="basePrice"><@ofbizCurrency amount=price.defaultPrice isoCode=price.currencyUsed /></span></div>
+          </#if>
+          <#if price.specialPromoPrice??>
+            <div>${uiLabelMap.ProductSpecialPromoPrice}: <span class="basePrice"><@ofbizCurrency amount=price.specialPromoPrice isoCode=price.currencyUsed /></span></div>
+          </#if>
+          <div>
+            <strong>
+              <#if price.isSale?? && price.isSale>
+                <span class="salePrice">${uiLabelMap.OrderOnSale}!</span>
+                <#assign priceStyle = "salePrice" />
+              <#else>
+                <#assign priceStyle = "regularPrice" />
+              </#if>
+                ${uiLabelMap.OrderYourPrice}: <#if "Y" = product.isVirtual!> ${uiLabelMap.CommonFrom} </#if><span class="${priceStyle}"><@ofbizCurrency amount=price.price isoCode=price.currencyUsed /></span>
+                 <#if product.productTypeId! == "ASSET_USAGE" || product.productTypeId! == "ASSET_USAGE_OUT_IN">
+                <#if product.reserv2ndPPPerc?? && product.reserv2ndPPPerc != 0><br /><span class="${priceStyle}">${uiLabelMap.ProductReserv2ndPPPerc}<#if !product.reservNthPPPerc?? || product.reservNthPPPerc == 0>${uiLabelMap.CommonUntil} ${product.reservMaxPersons!1}</#if> <@ofbizCurrency amount=product.reserv2ndPPPerc*price.price/100 isoCode=price.currencyUsed /></span></#if>
+                <#if product.reservNthPPPerc?? &&product.reservNthPPPerc != 0><br /><span class="${priceStyle}">${uiLabelMap.ProductReservNthPPPerc} <#if !product.reserv2ndPPPerc?? || product.reserv2ndPPPerc == 0>${uiLabelMap.ProductReservSecond} <#else> ${uiLabelMap.ProductReservThird} </#if> ${uiLabelMap.CommonUntil} ${product.reservMaxPersons!1}, ${uiLabelMap.ProductEach}: <@ofbizCurrency amount=product.reservNthPPPerc*price.price/100 isoCode=price.currencyUsed /></span></#if>
+                <#if (!product.reserv2ndPPPerc?? || product.reserv2ndPPPerc == 0) && (!product.reservNthPPPerc?? || product.reservNthPPPerc == 0)><br />${uiLabelMap.ProductMaximum} ${product.reservMaxPersons!1} ${uiLabelMap.ProductPersons}.</#if>
+                 </#if>
+             </strong>
+          </div>
+          <#if price.listPrice?? && price.price?? && price.price &lt; price.listPrice>
+            <#assign priceSaved = price.listPrice - price.price />
+            <#assign percentSaved = (priceSaved / price.listPrice) * 100 />
+            <div>${uiLabelMap.OrderSave}: <span class="basePrice"><@ofbizCurrency amount=priceSaved isoCode=price.currencyUsed /> (${percentSaved?int}%)</span></div>
+          </#if>
+          <#-- show price details ("showPriceDetails" field can be set in the screen definition) -->
+          <#if (showPriceDetails?? && showPriceDetails?default("N") == "Y")>
+              <#if price.orderItemPriceInfos??>
+                  <#list price.orderItemPriceInfos as orderItemPriceInfo>
+                      <div>${orderItemPriceInfo.description!}</div>
+                  </#list>
+              </#if>
+          </#if>
+    
+          <#-- Included quantities/pieces -->
+          <#if product.piecesIncluded?? && product.piecesIncluded?long != 0>
+            <div>
+              ${uiLabelMap.OrderPieces}: ${product.piecesIncluded}
+            </div>
+          </#if>
+          <#if (product.quantityIncluded?? && product.quantityIncluded != 0) || product.quantityUomId?has_content>
+            <#assign quantityUom = product.getRelatedOne("QuantityUom", true)! />
+            <div>
+              ${uiLabelMap.CommonQuantity}: ${product.quantityIncluded!} ${((quantityUom.abbreviation)?default(product.quantityUomId))!}
+            </div>
+          </#if>
+    
+          <#if (product.productWeight?? && product.productWeight != 0) || product.weightUomId?has_content>
+            <#assign weightUom = product.getRelatedOne("WeightUom", true)! />
+            <div>
+              ${uiLabelMap.CommonWeight}: ${product.productWeight!} ${((weightUom.abbreviation)?default(product.weightUomId))!}
+            </div>
+          </#if>
+          <#if (product.productHeight?? && product.productHeight != 0) || product.heightUomId?has_content>
+            <#assign heightUom = product.getRelatedOne("HeightUom", true)! />
+            <div>
+              ${uiLabelMap.CommonHeight}: ${product.productHeight!} ${((heightUom.abbreviation)?default(product.heightUomId))!}
+            </div>
+          </#if>
+          <#if (product.productWidth?? && product.productWidth != 0) || product.widthUomId?has_content>
+            <#assign widthUom = product.getRelatedOne("WidthUom", true)! />
+            <div>
+              ${uiLabelMap.CommonWidth}: ${product.productWidth!} ${((widthUom.abbreviation)?default(product.widthUomId))!}
+            </div>
+          </#if>
+          <#if (product.productDepth?? && product.productDepth != 0) || product.depthUomId?has_content>
+            <#assign depthUom = product.getRelatedOne("DepthUom", true)! />
+            <div>
+              ${uiLabelMap.CommonDepth}: ${product.productDepth!} ${((depthUom.abbreviation)?default(product.depthUomId))!}
+            </div>
+          </#if>
+    
+          <#if daysToShip??>
+            <div><strong>${uiLabelMap.ProductUsuallyShipsIn} ${daysToShip} ${uiLabelMap.CommonDays}!</strong></div>
+          </#if>
+    
+          <#-- show tell a friend details only in ecommerce application -->
+          <div>&nbsp;</div>
+          <div>
+              <a href="javascript:popUpSmall('<@ofbizUrl>tellafriend?productId=${product.productId}<#if categoryId??>&categoryId=${categoryId}/</#...@ofbizUrl>','tellafriend');" class="buttontext">${uiLabelMap.CommonTellAFriend}</a>
+          </div>
+    
+          <#if disFeatureList?? && 0 &lt; disFeatureList.size()>
+          <p>&nbsp;</p>
+            <#list disFeatureList as currentFeature>
+                <#assign disFeatureType = currentFeature.getRelatedOne("ProductFeatureType", true) />
+                <div>
+                    <#if disFeatureType.description??>${disFeatureType.get("description", locale)}<#else>${currentFeature.productFeatureTypeId}</#if>:&nbsp;${currentFeature.description}
+                </div>
+            </#list>
+                <div>&nbsp;</div>
+          </#if>
+        </div>
+    
+        <div id="addItemForm">
+          <form method="post" action="<@o...@ofbizUrl>" name="addform"  style="margin: 0;">
+          <fieldset>
+            <#assign inStock = true />
+            <#assign commentEnable = Static["org.ofbiz.entity.util.EntityUtilProperties"].getPropertyValue("order", "order.item.comment.enable", delegator)>
+            <#if commentEnable.equals("Y")>
+                <#assign orderItemAttr = Static["org.ofbiz.entity.util.EntityUtilProperties"].getPropertyValue("order", "order.item.attr.prefix", delegator)>
+                ${uiLabelMap.CommonComment}&nbsp;<input type="text" name="${orderItemAttr}comment"/>
+            </#if>
+            <#-- Variant Selection -->
+            <#if product.isVirtual!?upper_case == "Y">
+              <#if product.virtualVariantMethodEnum! == "VV_FEATURETREE" && featureLists?has_content>
+                <#list featureLists as featureList>
+                    <#list featureList as feature>
+                        <#if feature_index == 0>
+                            <div>${feature.description}: <select id="FT${feature.productFeatureTypeId}" name="FT${feature.productFeatureTypeId}" onchange="javascript:checkRadioButton();">
+                            <option value="select" selected="selected">${uiLabelMap.EcommerceSelectOption}</option>
+                        <#else>
+                            <option value="${feature.productFeatureId}">${feature.description} <#if feature.price??>(+ <@ofbizCurrency amount=feature.price?string isoCode=feature.currencyUomId />)</#if></option>
+                        </#if>
+                    </#list>
+                    </select>
+                    </div>
+                </#list>
+                  <input type="hidden" name="add_product_id" value="${product.productId}" />
+                <div id="addCart1" style="display:none;">
+                  <span style="white-space: nowrap;"><strong>${uiLabelMap.CommonQuantity}:</strong></span>&nbsp;
+                  <input type="text" size="5" name="quantity" value="1" />
+                  <a href="javascript:javascript:addItem();" class="buttontext"><span style="white-space: nowrap;">${uiLabelMap.OrderAddToCart}</span></a>
+                  &nbsp;
+                </div>
+                <div id="addCart2" style="display:block;">
+                  <span style="white-space: nowrap;"><strong>${uiLabelMap.CommonQuantity}:</strong></span>&nbsp;
+                  <input type="text" size="5" value="1" disabled="disabled" />
+                  <a href="javascript:showErrorAlert("${uiLabelMap.CommonErrorMessage2}","${uiLabelMap.CommonPleaseSelectAllFeaturesFirst}");" class="buttontext"><span style="white-space: nowrap;">${uiLabelMap.OrderAddToCart}</span></a>
+                  &nbsp;
+                </div>
+              </#if>
+              <#if !product.virtualVariantMethodEnum?? || product.virtualVariantMethodEnum == "VV_VARIANTTREE">
+               <#if variantTree?? && (variantTree.size() &gt; 0)>
+                <#list featureSet as currentType>
+                  <div>
+                    <select name="FT${currentType}" onchange="javascript:getList(this.name, (this.selectedIndex-1), 1);">
+                      <option>${featureTypes.get(currentType)}</option>
+                    </select>
+                  </div>
+                </#list>
+                <span id="product_uom"></span>
+                <input type="hidden" name="product_id" value="${product.productId}"/>
+                <input type="hidden" name="add_product_id" value="NULL"/>
+                <div>
+                  <strong><span id="product_id_display"> </span></strong>
+                  <strong><div id="variant_price_display"> </div></strong>
+                </div>
+              <#else>
+                <input type="hidden" name="add_product_id" value="NULL"/>
+                <#assign inStock = false />
+              </#if>
+             </#if>
+            <#else>
+              <input type="hidden" name="add_product_id" value="${product.productId}" />
+              <#if mainProducts?has_content>
+                <input type="hidden" name="product_id" value=""/>
+                <select name="productVariantId" onchange="javascript:displayProductVirtualVariantId(this.value);">
+                    <option value="">Select Unit Of Measure</option>
+                    <#list mainProducts as mainProduct>
+                        <option value="${mainProduct.productId}">${mainProduct.uomDesc} : ${mainProduct.piecesIncluded}</option>
+                    </#list>
+                </select><br/>
+                <div>
+                  <strong><span id="product_id_display"> </span></strong>
+                  <strong><div id="variant_price_display"> </div></strong>
+                </div>
+              </#if>
+              <#if (availableInventory??) && (availableInventory <= 0) && product.requireAmount?default("N") == "N">
+                <#assign inStock = false />
+              </#if>
+            </#if>
+            <#-- check to see if introductionDate hasnt passed yet -->
+            <#if product.introductionDate?? && nowTimestamp.before(product.introductionDate)>
+            <p>&nbsp;</p>
+              <div style="color: red;">${uiLabelMap.ProductProductNotYetMadeAvailable}.</div>
+            <#-- check to see if salesDiscontinuationDate has passed -->
+            <#elseif product.salesDiscontinuationDate?? && nowTimestamp.after(product.salesDiscontinuationDate)>
+              <div style="color: red;">${uiLabelMap.ProductProductNoLongerAvailable}.</div>
+            <#-- check to see if the product requires inventory check and has inventory -->
+            <#elseif product.virtualVariantMethodEnum! != "VV_FEATURETREE">
+              <#if inStock>
+                <#if product.requireAmount?default("N") == "Y">
+                  <#assign hiddenStyle = "visible" />
+                <#else>
+                  <#assign hiddenStyle = "hidden"/>
+                </#if>
+                <div id="add_amount" class="${hiddenStyle}">
+                  <span style="white-space: nowrap;"><strong>${uiLabelMap.CommonAmount}:</strong></span>&nbsp;
+                  <input type="text" size="5" name="add_amount" value=""/>
+                </div>
+                <#if product.productTypeId! == "ASSET_USAGE" || product.productTypeId! == "ASSET_USAGE_OUT_IN">
+                  <div>
+                    <label>Start Date(yyyy-mm-dd)</label><@htmlTemplate.renderDateTimeField event="" action="" name="reservStart" className="" alert="" title="Format: yyyy-MM-dd HH:mm:ss.SSS" value="${startDate}" size="25" maxlength="30" id="reservStart1" dateType="date" shortDateInput=true timeDropdownParamName="" defaultDateTimeString="" localizedIconTitle="" timeDropdown="" timeHourName="" classString="" hour1="" hour2="" timeMinutesName="" minutes="" isTwelveHour="" ampmName="" amSelected="" pmSelected="" compositeType="" formName=""/>
+                  </div>
+                  <div>
+                    <#--td nowrap="nowrap" align="right">Number<br />of days</td><td><input type="textt" size="4" name="reservLength"/></td></tr><tr><td>&nbsp;</td><td align="right" nowrap="nowrap">&nbsp;</td-->
+                    Number of days<input type="text" size="4" name="reservLength" value=""/>
+                    Number of persons<input type="text" size="4" name="reservPersons" value="2"/>
+                    Number of rooms<input type="text" size="5" name="quantity" value="1"/>
+                  </div>
+                  <a href="javascript:addItem()" class="buttontext"><span style="white-space: nowrap;">${uiLabelMap.OrderAddToCart}</span></a>
+                <#else>
+                  <span><input name="quantity" id="quantity" value="1" size="4" maxLength="4" type="text" <#if product.isVirtual!?upper_case == "Y">disabled="disabled"</#if> /></span><a href="javascript:addItem()" id="addToCart" name="addToCart" class="buttontext">${uiLabelMap.OrderAddToCart}</a>
+                  <@showUnavailableVarients/>
+                </#if>
+                <#else>
+                  <#if productStore??>
+                    <#if productStore.requireInventory?? && productStore.requireInventory == "N">
+                      <span><input name="quantity" id="quantity" value="1" size="4" maxLength="4" type="text" <#if product.isVirtual!?upper_case == "Y">disabled="disabled"</#if> /></span><a href="javascript:addItem()" id="addToCart" name="addToCart" class="buttontext">${uiLabelMap.OrderAddToCart}</a>
+                      <@showUnavailableVarients/>
+                    <#else>
+                      <span><input name="quantity" id="quantity" value="1" size="4" maxLength="4" type="text" disabled="disabled" /></span><a href="javascript:void(0);" disabled="disabled" class="buttontext">${uiLabelMap.OrderAddToCart}</a><br />
+                      <span>${uiLabelMap.ProductItemOutOfStock}<#if product.inventoryMessage??>&mdash; ${product.inventoryMessage}</#if></span>
+                    </#if>
+                  </#if>
+              </#if>
+            </#if>
+            <#if variantPriceList??>
+              <#list variantPriceList as vpricing>
+                <#assign variantName = vpricing.get("variantName")!>
+                <#assign secondVariantName = vpricing.get("secondVariantName")!>
+                <#assign minimumQuantity = vpricing.get("minimumQuantity")>
+                <#if minimumQuantity &gt; 0>
+                  <div>minimum order quantity for ${secondVariantName!} ${variantName!} is ${minimumQuantity!}</div>
+                </#if>
+              </#list>
+            <#elseif minimumQuantity?? && minimumQuantity?has_content && minimumQuantity &gt; 0>
+               <div>minimum order quantity for ${productContentWrapper.get("PRODUCT_NAME", "html")!} is ${minimumQuantity!}</div>
+            </#if>
+            </fieldset>
+          </form>
+        </div>
+        <div>
+          <#if sessionAttributes.userLogin?has_content && sessionAttributes.userLogin.userLoginId != "anonymous">
+            <hr />
+            <form name="addToShoppingList" method="post" action="<@ofbizUrl>addItemToShoppingList<#if requestAttributes._CURRENT_VIEW_??>/${requestAttributes._CURRENT_VIEW_}</#...@ofbizUrl>">
+              <fieldset>
+              <input type="hidden" name="productId" value="${product.productId}" />
+              <input type="hidden" name="product_id" value="${product.productId}" />
+              <input type="hidden" name="productStoreId" value="${productStoreId}" />
+              <input type="hidden" name="reservStart" value= "" />
+              <select name="shoppingListId">
+                <#if shoppingLists?has_content>
+                  <#list shoppingLists as shoppingList>
+                    <option value="${shoppingList.shoppingListId}">${shoppingList.listName}</option>
+                  </#list>
+                </#if>
+                <option value="">---</option>
+                <option value="">${uiLabelMap.OrderNewShoppingList}</option>
+              </select>
+              &nbsp;&nbsp;
+              <#--assign nowDate = Static["org.ofbiz.base.util.UtilDateTime"].nowDateString("yyyy-MM-dd")-->
+              <#if product.productTypeId! == "ASSET_USAGE">
+                  &nbsp;${uiLabelMap.CommonStartDate} (yyyy-mm-dd)<@htmlTemplate.renderDateTimeField name="reservStartStr" event="" action="" value="${startDate}" className="" alert="" title="Format: yyyy-MM-dd HH:mm:ss.SSS" size="15" maxlength="30" id="reservStartStr" dateType="date" shortDateInput=false timeDropdownParamName="" defaultDateTimeString="" localizedIconTitle="" timeDropdown="" timeHourName="" classString="" hour1="" hour2="" timeMinutesName="" minutes="" isTwelveHour="" ampmName="" amSelected="" pmSelected="" compositeType="" formName=""/>&nbsp;Number of&nbsp;days&nbsp;&nbsp;<input type="text" size="4" name="reservLength" />&nbsp;<br/>Number of&nbsp;persons&nbsp;&nbsp;<input type="text" size="4" name="reservPersons" value="1" />&nbsp;&nbsp;Qty&nbsp;&nbsp;<input type="text" size="5" name="quantity" value="1" />
+              <#elseif product.productTypeId! == "ASSET_USAGE_OUT_IN">
+                &nbsp;${uiLabelMap.CommonStartDate} (yyyy-mm-dd)&nbsp;&nbsp;&nbsp;<@htmlTemplate.renderDateTimeField name="reservStartStr" event="" action="" value="${startDate}" className="" alert="" title="Format: yyyy-MM-dd HH:mm:ss.SSS" size="15" maxlength="30" id="reservStartStr" dateType="date" shortDateInput=false timeDropdownParamName="" defaultDateTimeString="" localizedIconTitle="" timeDropdown="" timeHourName="" classString="" hour1="" hour2="" timeMinutesName="" minutes="" isTwelveHour="" ampmName="" amSelected="" pmSelected="" compositeType="" formName=""/>&nbsp;&nbsp;Number of&nbsp;days&nbsp;&nbsp;<input type="text" size="4" name="reservLength" /><input type="hidden" size="4" name="reservPersons" value="1" /><br/>
+                Qty&nbsp;<input type="text" size="5" name="quantity" value="1" />
+              <#else>
+                  <input type="text" size="5" name="quantity" value="1" />
+                  <input type="hidden" name="reservStartStr" value= "" />
+              </#if>
+              <a href="javascript:addShoplistSubmit();" class="buttontext">${uiLabelMap.OrderAddToShoppingList}</a>
+              </fieldset>
+            </form>
+          <#else> <br />
+            ${uiLabelMap.OrderYouMust} <a href="<@o...@ofbizUrl>" class="buttontext">${uiLabelMap.CommonBeLogged}</a>
+            ${uiLabelMap.OrderToAddSelectedItemsToShoppingList}.&nbsp;
+          </#if>
+          </div>
+          <#-- Prefill first select box (virtual products only) -->
+          <#if variantTree?? && 0 &lt; variantTree.size()>
+            <script type="text/javascript">eval("list" + "${featureOrderFirst}" + "()");</script>
+          </#if>
+    
+          <#-- Swatches (virtual products only) -->
+          <#if variantSample?? && 0 &lt; variantSample.size()>
+            <#assign imageKeys = variantSample.keySet() />
+            <#assign imageMap = variantSample />
+            <p>&nbsp;</p>
+                <#assign maxIndex = 7 />
+                <#assign indexer = 0 />
+                <#list imageKeys as key>
+                  <#assign swatchProduct = imageMap.get(key) />
+                  <#if swatchProduct?has_content && indexer &lt; maxIndex>
+                    <#assign imageUrl = Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(swatchProduct, "SMALL_IMAGE_URL", request, "url")! />
+                    <#if !imageUrl?string?has_content>
+                      <#assign imageUrl = productContentWrapper.get("SMALL_IMAGE_URL", "url")! />
+                    </#if>
+                    <#if !imageUrl?string?has_content>
+                      <#assign imageUrl = "/images/defaultImage.jpg" />
+                    </#if>
+                      <a href="javascript:getList('FT${featureOrderFirst}','${indexer}',1);" class="linktext">${key}</a>
+                      <a href="javascript:getList('FT${featureOrderFirst}','${indexer}',1);"><img src="<@o...@ofbizContentUrl>" class="cssImgSmall" alt="" /></a>
+                      <br />
+                  </#if>
+                  <#assign indexer = indexer + 1 />
+                </#list>
+                <#if (indexer > maxIndex)>
+                  <div><strong>${uiLabelMap.ProductMoreOptions}</strong></div>
+                </#if>
+          </#if>
+    
+      <#-- Digital Download Files Associated with this Product -->
+      <#if downloadProductContentAndInfoList?has_content>
+        <div id="download-files">
+          <div>${uiLabelMap.OrderDownloadFilesTitle}:</div>
+          <#list downloadProductContentAndInfoList as downloadProductContentAndInfo>
+            <div>${downloadProductContentAndInfo.contentName!}<#if downloadProductContentAndInfo.description?has_content> - ${downloadProductContentAndInfo.description}</#if></div>
+          </#list>
+        </div>
+      </#if>
+    
+      <#-- Long description of product -->
+      <div id="long-description">
+          <div>${productContentWrapper.get("LONG_DESCRIPTION", "html")!}</div>
+          <div>${productContentWrapper.get("WARNINGS", "html")!}</div>
+      </div>
+    
+      <#-- Any attributes/etc may go here -->
+    
+      <#-- Product Reviews -->
+        <div id="reviews">
+          <div>${uiLabelMap.OrderCustomerReviews}:</div>
+          <#if averageRating?? && (averageRating &gt; 0) && numRatings?? && (numRatings &gt; 1)>
+              <div>${uiLabelMap.OrderAverageRating}: ${averageRating} <#if numRatings??>(${uiLabelMap.CommonFrom} ${numRatings} ${uiLabelMap.OrderRatings})</#if></div>
+          </#if>
+    <hr />
+          <#if productReviews?has_content>
+            <#list productReviews as productReview>
+              <#assign postedUserLogin = productReview.getRelatedOne("UserLogin", false) />
+              <#assign postedPerson = postedUserLogin.getRelatedOne("Person", false)! />
+                        <div><strong>${uiLabelMap.CommonBy}: </strong><#if productReview.postedAnonymous?default("N") == "Y"> ${uiLabelMap.OrderAnonymous}<#else> ${postedPerson.firstName} ${postedPerson.lastName}&nbsp;</#if></div>
+                        <div><strong>${uiLabelMap.CommonAt}: </strong>${productReview.postedDateTime!}&nbsp;</div>
+                        <div><strong>${uiLabelMap.OrderRanking}: </strong>${productReview.productRating!?string}</div>
+                        <div>&nbsp;</div>
+                        <div>${productReview.productReview!}</div>
+                    <hr />
+            </#list>
+            <div>
+                <a href="<@o...@ofbizUrl>" class="linktext">${uiLabelMap.ProductReviewThisProduct}!</a>
+            </div>
+          <#else>
+            <div>${uiLabelMap.ProductProductNotReviewedYet}.</div>
+            <div>
+                <a href="<@o...@ofbizUrl>" class="linktext">${uiLabelMap.ProductBeTheFirstToReviewThisProduct}</a>
+            </div>
+        </div>
+      </#if>
+    <#-- Upgrades/Up-Sell/Cross-Sell -->
+      <#macro associated assocProducts beforeName showName afterName formNamePrefix targetRequestName>
+      <#assign pageProduct = product />
+      <#assign targetRequest = "product" />
+      <#if targetRequestName?has_content>
+        <#assign targetRequest = targetRequestName />
+      </#if>
+      <#if assocProducts?has_content>
+        <h2>${beforeName!}<#if showName == "Y">${productContentWrapper.get("PRODUCT_NAME", "html")!}</#if>${afterName!}</h2>
+    
+        <div class="productsummary-container">
+        <#list assocProducts as productAssoc>
+            <#if productAssoc.productId == product.productId>
+                <#assign assocProductId = productAssoc.productIdTo />
+            <#else>
+                <#assign assocProductId = productAssoc.productId />
+            </#if>
+            <div>
+              <a href="<@ofbizUrl>${targetRequest}/<#if categoryId??>~category_id=${categoryId}/</#...@ofbizUrl>" class="buttontext">
+                ${assocProductId}
+              </a>
+            <#if productAssoc.reason?has_content>
+              - <strong>${productAssoc.reason}</strong>
+            </#if>
+            </div>
+          ${setRequestAttribute("optProductId", assocProductId)}
+          ${setRequestAttribute("listIndex", listIndex)}
+          ${setRequestAttribute("formNamePrefix", formNamePrefix)}
+          <#if targetRequestName?has_content>
+            ${setRequestAttribute("targetRequestName", targetRequestName)}
+          </#if>
+              ${screens.render(productsummaryScreen)}
+          <#assign product = pageProduct />
+          <#local listIndex = listIndex + 1 />
+        </#list>
+        </div>
+    
+        ${setRequestAttribute("optProductId", "")}
+        ${setRequestAttribute("formNamePrefix", "")}
+        ${setRequestAttribute("targetRequestName", "")}
+      </#if>
+    </#macro>
+    
+    <#assign productValue = product />
+    <#assign listIndex = 1 />
+    ${setRequestAttribute("productValue", productValue)}
+    <div id="associated-products">
+        <#-- also bought -->
+        <@associated assocProducts=alsoBoughtProducts beforeName="" showName="N" afterName="${uiLabelMap.ProductAlsoBought}" formNamePrefix="albt" targetRequestName="" />
+        <#-- obsolete -->
+        <@associated assocProducts=obsoleteProducts beforeName="" showName="Y" afterName=" ${uiLabelMap.ProductObsolete}" formNamePrefix="obs" targetRequestName="" />
+        <#-- cross sell -->
+        <@associated assocProducts=crossSellProducts beforeName="" showName="N" afterName="${uiLabelMap.ProductCrossSell}" formNamePrefix="cssl" targetRequestName="crosssell" />
+        <#-- up sell -->
+        <@associated assocProducts=upSellProducts beforeName="${uiLabelMap.ProductUpSell} " showName="Y" afterName=":" formNamePrefix="upsl" targetRequestName="upsell" />
+        <#-- obsolescence -->
+        <@associated assocProducts=obsolenscenseProducts beforeName="" showName="Y" afterName=" ${uiLabelMap.ProductObsolescense}" formNamePrefix="obce" targetRequestName="" />
+    </div>
+    
+    <#-- special cross/up-sell area using commonFeatureResultIds (from common feature product search) -->
+    <#if commonFeatureResultIds?has_content>
+        <h2>${uiLabelMap.ProductSimilarProducts}</h2>
+    
+        <div class="productsummary-container">
+            <#list commonFeatureResultIds as commonFeatureResultId>
+                ${setRequestAttribute("optProductId", commonFeatureResultId)}
+                ${setRequestAttribute("listIndex", commonFeatureResultId_index)}
+                ${setRequestAttribute("formNamePrefix", "cfeatcssl")}
+                <#-- ${setRequestAttribute("targetRequestName", targetRequestName)} -->
+                ${screens.render(productsummaryScreen)}
+            </#list>
+        </div>
+    </#if>
+    <div class="product-tags">
+        <p class="titleProductTags"><h3>${uiLabelMap.EcommerceProductTags}</h3></p>
+        <#if productTags??>
+            <p class="titleAddTags"><strong>${uiLabelMap.EcommerceProductTagsDetail}:</strong></p>
+            <p>
+                <ul>
+                    <li>
+                    <#assign no = 0 />
+                    <#list productTags?keys?sort as productTag>
+                        <#assign tagValue = productTags.get(productTag)!/>
+                        <#if tagValue?has_content>
+                              <span><a href="javascript:void(0);" id="productTag_${productTag}">${productTag}</a> (${tagValue}) <#if no < (productTags.size() - 1)> | </#if></span>
+                              <#assign no = no + 1 />
+                        </#if>
+                    </#list>
+                    </li>
+                </ul>
+            </p>
+        </#if>
+        
+        <p class="titleAddTags"><strong>${uiLabelMap.EcommerceAddYourTags}:</strong></p>
+        <p>
+            <form method="post" action="<@o...@ofbizUrl>" name="addProductTags">
+                <input type="hidden" name="productId" value="${product.productId!}"/>
+                <input class="inputProductTags" type="text" value="" name="productTags" id="productTags" size="40"/>
+                <input class="buttonProductTags" type="submit" value="${uiLabelMap.EcommerceAddTags}" name="addTag"/>
+            </form>
+            <span>${uiLabelMap.EcommerceAddTagsDetail}</span>
+        </p>
+    </div>
+    <hr />
+    <form action="<@o...@ofbizUrl>" method="post" name="productTagsearchform" id="productTagsearchform">
+        <input type="hidden" name="keywordTypeId" value="KWT_TAG"/>
+        <input type="hidden" name="statusId" value="KW_APPROVED"/>
+        <input type="hidden" name="clearSearch" value="Y"/>
+        <input type="hidden" name="VIEW_SIZE" value="10"/>
+        <input type="hidden" name="PAGING" value="Y"/>
+        <input type="hidden" name="SEARCH_STRING" id="productTagStr"/>
+    </form>
+    </div>
+</div>

Propchange: ofbiz/trunk/applications/order/template/product/productdetail.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/product/productdetail.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/product/productdetail.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,33 @@
+<#--
+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.
+-->
+<#if quote??>
+<form action="<@o...@ofbizUrl>" method="post">
+    <input type="hidden" name="quoteId" value="${quoteId}"/>
+    <div>
+        <span class="label">${uiLabelMap.OrderCopyQuote}</span>
+        ${uiLabelMap.OrderOrderQuoteItems}&nbsp;<input type="checkbox" name="copyQuoteItems" value="Y" checked="checked" />
+        ${uiLabelMap.OrderOrderQuoteAdjustments}&nbsp;<input type="checkbox" name="copyQuoteAdjustments" value="Y" checked="checked" />
+        ${uiLabelMap.OrderOrderQuoteRoles}&nbsp;<input type="checkbox" name="copyQuoteRoles" value="Y" checked="checked" />
+        ${uiLabelMap.OrderOrderQuoteAttributes}&nbsp;<input type="checkbox" name="copyQuoteAttributes" value="Y" checked="checked" />
+        ${uiLabelMap.OrderOrderQuoteCoefficients}&nbsp;<input type="checkbox" name="copyQuoteCoefficients" value="Y" checked="checked" />
+        ${uiLabelMap.OrderOrderQuoteTerms}&nbsp;<input type="checkbox" name="copyQuoteTerms" value="Y" checked="checked" />
+    </div>
+    <input type="submit" class="smallSubmit" value="${uiLabelMap.CommonCopy}"/>
+</form>
+</#if>
\ No newline at end of file

Propchange: ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/CopyQuote.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,26 @@
+<#--
+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.
+-->
+<span class="label">${uiLabelMap.OrderOrderQuoteCoefficients}</span>
+<br />
+<#list quoteCoefficients as quoteCoefficient>
+    <div>${quoteCoefficient.coeffName}&nbsp;${quoteCoefficient.coeffValue}</div>
+</#list>
+<br />
+<div><span class="label">${uiLabelMap.CommonTotalCostMult}</span>&nbsp;${costMult}</div>
+<div><span class="label">${uiLabelMap.CommonTotalCostToPriceMult}</span>&nbsp;${costToPriceMult}</div>
\ No newline at end of file

Propchange: ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/ManageQuotePrices.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,22 @@
+<#--
+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.
+-->
+<br />
+<div><span class="label">${uiLabelMap.CommonTotalCost}</span>&nbsp;${totalCost}</div>
+<div><span class="label">${uiLabelMap.CommonTotalPrice}</span>&nbsp;${totalPrice}</div>
+<div><span class="label">${uiLabelMap.CommonTotalCostMult}</span>&nbsp;${totalCostMult}</div>
\ No newline at end of file

Propchange: ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/ManageQuotePricesTotals.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,159 @@
+<#--
+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.
+-->
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <div class="boxlink">
+            <#if maySelectItems?default("N") == "Y">
+                <a href="javascript:document.addCommonToCartForm.add_all.value='true';document.addCommonToCartForm.submit()" class="buttontext">${uiLabelMap.OrderAddAllToCart}</a>
+            </#if>
+        </div>
+        <div class="h3">${uiLabelMap.OrderOrderQuoteItems}</div>
+    </div>
+    <div class="screenlet-body">
+        <table cellspacing="0" class="basic-table">
+            <tr valign="bottom" class="header-row">
+                <td width="15%">${uiLabelMap.ProductItem}</td>
+                <td width="20%">${uiLabelMap.ProductProduct}</td>
+                <td width="10%" align="right">${uiLabelMap.ProductQuantity}</td>
+                <td width="10%" align="right">${uiLabelMap.OrderSelAmount}</td>
+                <td width="5%" align="right">&nbsp;</td>
+                <td width="10%" align="right">${uiLabelMap.OrderOrderQuoteUnitPrice}</td>
+                <td width="10%" align="right">${uiLabelMap.OrderAdjustments}</td>
+                <td width="10%" align="right">${uiLabelMap.CommonSubtotal}</td>
+            </tr>
+            <tr valign="bottom" class="header-row">
+                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${uiLabelMap.OrderOrderTermType}</td>
+                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${uiLabelMap.OrderOrderTermValue}</td>
+                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${uiLabelMap.OrderOrderTermDays}</td>
+                <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${uiLabelMap.OrderQuoteTermDescription}</td>
+                <td></td>
+                <td></td>
+                <td></td>
+                <td align="right">&nbsp;</td>
+            </tr>
+            <#assign totalQuoteAmount = 0.0>
+            <#assign alt_row = false/>
+            <#list quoteItems as quoteItem>
+                <#assign selectedAmount = quoteItem.selectedAmount?default(1)>
+                <#if selectedAmount == 0>
+                    <#assign selectedAmount = 1/>
+                </#if>
+                <#assign quoteItemAmount = quoteItem.quoteUnitPrice?default(0) * quoteItem.quantity?default(0) * selectedAmount>
+                <#assign quoteItemAdjustments = quoteItem.getRelated("QuoteAdjustment", null, null, false)>
+                <#assign totalQuoteItemAdjustmentAmount = 0.0>
+                <#list quoteItemAdjustments as quoteItemAdjustment>
+                    <#assign totalQuoteItemAdjustmentAmount = quoteItemAdjustment.amount?default(0) + totalQuoteItemAdjustmentAmount>
+                </#list>
+                <#assign totalQuoteItemAmount = quoteItemAmount + totalQuoteItemAdjustmentAmount>
+                <#assign totalQuoteAmount = totalQuoteAmount + totalQuoteItemAmount>
+                
+                <tr <#if alt_row>class="alternate-row" </#if>>
+                    <td >
+                        <div>
+                        <#if showQuoteManagementLinks?? && quoteItem.isPromo?default("N") == "N" && quote.statusId=="QUO_CREATED">
+                            <a href="<@o...@ofbizUrl>" class="buttontext">${quoteItem.quoteItemSeqId}</a>
+                        <#else>
+                            ${quoteItem.quoteItemSeqId}
+                        </#if>
+                        </div>
+                        <#assign quoteTerms = delegator.findByAnd("QuoteTerm", {"quoteId" : quoteItem.quoteId, "quoteItemSeqId" : quoteItem.quoteItemSeqId}, null, false)>
+                    </td>
+                    <td valign="top">
+                        <div>
+                            <#if quoteItem.productId??>
+                              <#assign product = quoteItem.getRelatedOne("Product", false)/>
+                              ${(product.internalName)!}&nbsp;
+                            </#if>
+                            <#if showQuoteManagementLinks??>
+                                <a href="/catalog/control/EditProduct?productId=${quoteItem.productId!}" class="buttontext">
+                                  <#if quoteItem.productId??>
+                                    ${quoteItem.productId}
+                                  <#else>
+                                    ${uiLabelMap.ProductCreateProduct}
+                                  </#if>
+                                </a>
+                            <#else>
+                                <a href="<@o...@ofbizUrl>" class="buttontext">${quoteItem.productId!}</a>
+                            </#if>
+                        </div>
+                    </td>
+                    <td align="right" valign="top">${quoteItem.quantity!}</td>
+                    <td align="right" valign="top">${quoteItem.selectedAmount!}</td>
+                    <td></td>
+                    <td align="right" valign="top"><@ofbizCurrency amount=quoteItem.quoteUnitPrice isoCode=quote.currencyUomId/></td>
+                    <td align="right" valign="top"><@ofbizCurrency amount=totalQuoteItemAdjustmentAmount isoCode=quote.currencyUomId/></td>
+                    <td align="right" valign="top"><@ofbizCurrency amount=totalQuoteItemAmount isoCode=quote.currencyUomId/></td>
+                </tr>
+                <#list quoteTerms as quoteTerm>
+                <#assign termDescription = delegator.findOne("TermType",{"termTypeId":quoteTerm.termTypeId}, false)>
+                <tr <#if alt_row>class="alternate-row" </#if>>
+                    <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${termDescription.description!}</td>
+                    <td valign="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${quoteTerm.termValue!}</td>
+                    <td valign="top"><#if quoteTerm.termDays??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${quoteTerm.termDays!}</#if></td>
+                    <td valign="top"><#if quoteTerm.description??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${quoteTerm.description}</#if></td>
+                    <td align="right" valign="top"></td>
+                    <td align="right" valign="top"></td>
+                    <td align="right" valign="top"></td>
+                    <td align="right" valign="top"></td>
+                </tr>
+                </#list>
+                <#-- now show adjustment details per line item -->
+                <#list quoteItemAdjustments as quoteItemAdjustment>
+                    <#assign adjustmentType = quoteItemAdjustment.getRelatedOne("OrderAdjustmentType", false)>
+                    <tr <#if alt_row>class="alternate-row" </#if>>
+                        <td align="right" colspan="6"><span class="label">${adjustmentType.get("description",locale)!}</span></td>
+                        <td align="right"><@ofbizCurrency amount=quoteItemAdjustment.amount isoCode=quote.currencyUomId/></td>
+                        <td>&nbsp;</td>
+                    </tr>
+                </#list>
+                <#-- toggle the row color -->
+                <#assign alt_row = !alt_row>
+            </#list>
+            <tr><td colspan="10"><hr /></td></tr>
+            <tr>
+                <td align="right" colspan="7" class="label">${uiLabelMap.CommonSubtotal}</td>
+                <td align="right"><@ofbizCurrency amount=totalQuoteAmount isoCode=quote.currencyUomId/></td>
+            </tr>
+            <tr><td colspan="5"></td><td colspan="6"><hr /></td></tr>
+            <#assign totalQuoteHeaderAdjustmentAmount = 0.0>
+            <#assign findAdjustment = false>
+            <#list quoteAdjustments as quoteAdjustment>
+                <#assign adjustmentType = quoteAdjustment.getRelatedOne("OrderAdjustmentType", false)>
+                <#if !quoteAdjustment.quoteItemSeqId??>
+                    <#assign totalQuoteHeaderAdjustmentAmount = quoteAdjustment.amount?default(0) + totalQuoteHeaderAdjustmentAmount>
+                    <tr>
+                      <td align="right" colspan="6"><span class="label">${adjustmentType.get("description",locale)!}</span></td>
+                      <td align="right"><@ofbizCurrency amount=quoteAdjustment.amount isoCode=quote.currencyUomId/></td>
+                    </tr>
+                </#if>
+                <#assign findAdjustment = true>
+            </#list>
+            <#assign grandTotalQuoteAmount = totalQuoteAmount + totalQuoteHeaderAdjustmentAmount>
+            <#if findAdjustment>
+            <tr><td colspan="5"></td><td colspan="6"><hr /></td></tr>
+            </#if>
+            <tr>
+                <td align="right" colspan="7" class="label">${uiLabelMap.OrderGrandTotal}</td>
+                <td align="right">
+                    <@ofbizCurrency amount=grandTotalQuoteAmount isoCode=quote.currencyUomId/>
+                </td>
+            </tr>
+        </table>
+    </div>
+</div>

Propchange: ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/ViewQuoteItemInfo.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,32 @@
+<#--
+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.
+-->
+<span class="label">${uiLabelMap.OrderOrderQuoteCoefficients}</span>
+<#list quoteCoefficients as quoteCoefficient>
+    <div>${quoteCoefficient.coeffName}:&nbsp;${quoteCoefficient.coeffValue}</div>
+</#list>
+<br />
+<div><span class="label">${uiLabelMap.CommonTotalCostMult}</span>&nbsp;${costMult}</div>
+<div><span class="label">${uiLabelMap.CommonTotalCostToPriceMult}</span>&nbsp;${costToPriceMult}</div>
+<br />
+<div><span class="label">${uiLabelMap.CommonTotalCost}</span>&nbsp;<@ofbizCurrency amount=totalCost isoCode=quote.currencyUomId/></div>
+<div><span class="label">${uiLabelMap.CommonTotalAmount}</span>&nbsp;<@ofbizCurrency amount=totalPrice isoCode=quote.currencyUomId/></div>
+<br />
+<div><span class="label">${uiLabelMap.CommonTotalProfit}</span>&nbsp;<@ofbizCurrency amount=totalProfit isoCode=quote.currencyUomId/></div>
+<div><span class="label">${uiLabelMap.CommonTotalPercProfit}</span>&nbsp;${totalPercProfit}%</div>
+<br />
\ No newline at end of file

Propchange: ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/ViewQuoteProfit.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/quoteDate.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/quoteDate.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/quoteDate.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/quoteDate.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,56 @@
+<#--
+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.
+-->
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <div class="h3">${uiLabelMap.CommonDate}</div>
+    </div>
+    <div class="screenlet-body">
+        <table cellspacing="0" class="basic-table">
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.OrderOrderQuoteIssueDate}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${(quote.issueDate.toString())!}
+                </td>
+            </tr>
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.CommonValidFromDate}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${(quote.validFromDate.toString())!}
+                </td>
+            </tr>
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.CommonValidThruDate}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${(quote.validThruDate.toString())!}
+                </td>
+            </tr>
+        </table>
+    </div>
+</div>

Propchange: ofbiz/trunk/applications/order/template/quote/quoteDate.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/quoteDate.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/quoteDate.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl?rev=1736868&view=auto
==============================================================================
--- ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl (added)
+++ ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl Mon Mar 28 11:14:22 2016
@@ -0,0 +1,125 @@
+<#--
+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.
+-->
+<div class="screenlet">
+    <div class="screenlet-title-bar">
+        <div class="h3">${uiLabelMap.OrderOrderQuoteId}&nbsp;${quote.quoteId}&nbsp;${uiLabelMap.CommonInformation}</div>
+    </div>
+    <div class="screenlet-body">
+        <table cellspacing="0" class="basic-table">
+            <#-- quote header information -->
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.CommonType}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${(quoteType.get("description",locale))?default(quote.quoteTypeId!)}
+                </td>
+            </tr>
+            <tr><td colspan="3"><hr /></td></tr>
+
+            <#-- quote Channel information -->
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.OrderSalesChannel}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${(salesChannel.get("description",locale))?default(quote.salesChannelEnumId!)}
+                </td>
+            </tr>
+            <tr><td colspan="3"><hr /></td></tr>
+
+            <#-- quote status information -->
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.CommonStatus}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${(statusItem.get("description", locale))?default(quote.statusId!)}
+                </td>
+            </tr>
+            <#-- party -->
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.PartyParty}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    <#-- Party name, as a convenience. -->
+                    <#if toParty?has_content>
+                        <#if toParty.groupName?has_content>
+                            ${toParty.groupName}
+                        <#elseif toParty.firstName?has_content && toParty.lastName?has_content>
+                            ${toParty.firstName} ${toParty.lastName}
+                        </#if>
+                    </#if>
+                    <#-- Link to the party in Party Manager -->
+                    <a href="/partymgr/control/viewprofile?partyId=${quote.partyId}" class="buttontext">(${quote.partyId?if_exists})</a>
+                </td>
+            </tr>
+            <#-- quote name -->
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.OrderOrderQuoteName}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${quote.quoteName!}
+                </td>
+            </tr>
+            <#-- quote description -->
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.CommonDescription}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    ${quote.description!}
+                </td>
+            </tr>
+            <#-- quote currency -->
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.CommonCurrency}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    <#if currency??>${currency.get("description",locale)?default(quote.currencyUomId!)}</#if>
+                </td>
+            </tr>
+            <#-- quote currency -->
+            <tr><td colspan="3"><hr /></td></tr>
+            <tr>
+                <td align="right" valign="top" width="15%" class="label">
+                    &nbsp;${uiLabelMap.ProductProductStore}
+                </td>
+                <td width="5%">&nbsp;</td>
+                <td valign="top" width="80%">
+                    <#if store??>${store.storeName?default(quote.productStoreId!)}</#if>
+                </td>
+            </tr>
+        </table>
+    </div>
+</div>

Propchange: ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/order/template/quote/quoteInfo.ftl
------------------------------------------------------------------------------
    svn:mime-type = text/plain