|
Author: ashish
Date: Mon Nov 30 13:41:56 2009 New Revision: 885425 URL: http://svn.apache.org/viewvc?rev=885425&view=rev Log: Applied patch from jira issue - OFBIZ-3249 - Shopping cart on checkout page does not gets update when a gift item is added in cart after applying coupon code. Patch for update cart on one page checkout page when a gift item a added in cart after applying valid coupon code. Steps to test: 1. Create a new product promo for 'Gift With Purchase' action with require coupon code. 2. Go to ecommerce -> main 3. Purchase X product and go for one page checkout page. 4. Enter coupon code 5 If this coupon code is valid according to condition given in promotion then a you will get Y product as gift in cart with 0.0 price. Thanks Arun for the contribution. Added: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl (with props) Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js ofbiz/trunk/specialpurpose/ecommerce/widget/CartScreens.xml Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml?rev=885425&r1=885424&r2=885425&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml Mon Nov 30 13:41:56 2009 @@ -295,6 +295,10 @@ <response name="success" type="view" value="showcart"/> <response name="error" type="view" value="showcart"/> </request-map> + <request-map uri="UpdateCart"> + <security https="false" auth="false"/> + <response name="success" type="view" value="UpdateCart"/> + </request-map> <request-map uri="setDesiredAlternateGwpProductId"> <security https="false" auth="false"/> @@ -1903,6 +1907,7 @@ <!--view-map name="showcart" type="screen" page="component://ecommerce/widget/CartScreens.xml#showcart" no-cache="true"/--><!-- to be used to avoid "conflicts" when someone use the same machine with different user logins --> <view-map name="showAllPromotions" type="screen" page="component://ecommerce/widget/CartScreens.xml#showAllPromotions"/> <view-map name="showPromotionDetails" type="screen" page="component://ecommerce/widget/CartScreens.xml#showPromotionDetails"/> + <view-map name="UpdateCart" type="screen" page="component://ecommerce/widget/CartScreens.xml#UpdateCart"/> <!-- Catalog Views --> <view-map name="quickadd" type="screen" page="component://ecommerce/widget/CatalogScreens.xml#quickadd"/> Added: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl?rev=885425&view=auto ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl (added) +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl Mon Nov 30 13:41:56 2009 @@ -0,0 +1,184 @@ +<#-- +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 shoppingCart?has_content && shoppingCart.size() > 0> + <h3>${uiLabelMap.EcommerceStep} 1: ${uiLabelMap.PageTitleShoppingCart}</h3> + <div id="cartSummaryPanel" style="display: none;"> + <a href="javascript:void(0);" id="openCartPanel" class="button">${uiLabelMap.EcommerceClickHereToEdit}</a> + <table id="cartSummaryPanel_cartItems" summary="This table displays the list of item added into Shopping Cart."> + <thead> + <tr> + <th id="orderItem">${uiLabelMap.OrderItem}</th> + <th id="description">${uiLabelMap.CommonDescription}</th> + <th id="unitPrice">${uiLabelMap.EcommerceUnitPrice}</th> + <th id="quantity">${uiLabelMap.OrderQuantity}</th> + <th id="adjustment">${uiLabelMap.EcommerceAdjustments}</th> + <th id="itemTotal">${uiLabelMap.EcommerceItemTotal}</th> + </tr> + </thead> + <tfoot> + <tr id="completedCartSubtotalRow"> + <th id="subTotal" scope="row" colspan="5">${uiLabelMap.CommonSubtotal}</th> + <td headers="subTotal" id="completedCartSubTotal"><@ofbizCurrency amount=shoppingCart.getSubTotal() isoCode=shoppingCart.getCurrency() /></td> + </tr> + <#assign orderAdjustmentsTotal = 0 /> + <#list shoppingCart.getAdjustments() as cartAdjustment> + <#assign orderAdjustmentsTotal = orderAdjustmentsTotal + Static["org.ofbiz.order.order.OrderReadHelper"].calcOrderAdjustment(cartAdjustment, shoppingCart.getSubTotal()) /> + </#list> + <tr id="completedCartDiscountRow"> + <th id="productDiscount" scope="row" colspan="5">${uiLabelMap.ProductDiscount}</th> + <td headers="productDiscount" id="completedCartDiscount"><input type="hidden" value="${orderAdjustmentsTotal}" id="initializedCompletedCartDiscount" /><@ofbizCurrency amount=orderAdjustmentsTotal isoCode=shoppingCart.getCurrency() /></td> + </tr> + <tr> + <th id="shippingAndHandling" scope="row" colspan="5">${uiLabelMap.OrderShippingAndHandling}</th> + <td headers="shippingAndHandling" id="completedCartTotalShipping"><@ofbizCurrency amount=shoppingCart.getTotalShipping() isoCode=shoppingCart.getCurrency() /></td> + </tr> + <tr> + <th id="salesTax" scope="row" colspan="5">${uiLabelMap.OrderSalesTax}</th> + <td headers="salesTax" id="completedCartTotalSalesTax"><@ofbizCurrency amount=shoppingCart.getTotalSalesTax() isoCode=shoppingCart.getCurrency() /></td> + </tr> + <tr> + <th id="grandTotal" scope="row" colspan="5">${uiLabelMap.OrderGrandTotal}</th> + <td headers="grandTotal" id="completedCartDisplayGrandTotal"><@ofbizCurrency amount=shoppingCart.getDisplayGrandTotal() isoCode=shoppingCart.getCurrency() /></td> + </tr> + </tfoot> + <tbody> + <#list shoppingCart.items() as cartLine> + <#if cartLine.getProductId()?exists> + <#if cartLine.getParentProductId()?exists> + <#assign parentProductId = cartLine.getParentProductId() /> + <#else> + <#assign parentProductId = cartLine.getProductId() /> + </#if> + <#assign smallImageUrl = Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(cartLine.getProduct(), "SMALL_IMAGE_URL", locale, dispatcher)?if_exists /> + <#if !smallImageUrl?string?has_content><#assign smallImageUrl = "" /></#if> + </#if> + <tr id="cartItemDisplayRow_${cartLine_index}"> + <td headers="orderItem"><img src="<@ofbizContentUrl>${requestAttributes.contentPathPrefix?if_exists}${smallImageUrl}</@ofbizContentUrl>" alt = "Product Image" /></td> + <td headers="description">${cartLine.getName()?if_exists}</td> + <td headers="unitPrice">${cartLine.getDisplayPrice()}</td> + <td headers="quantity"><span id="completedCartItemQty_${cartLine_index}">${cartLine.getQuantity()?string.number}</span></td> + <td headers="adjustment"><span id="completedCartItemAdjustment_${cartLine_index}"><@ofbizCurrency amount=cartLine.getOtherAdjustments() isoCode=shoppingCart.getCurrency() /></span></td> + <td headers="itemTotal" align="right"><span id="completedCartItemSubTotal_${cartLine_index}"><@ofbizCurrency amount=cartLine.getDisplayItemSubTotal() isoCode=shoppingCart.getCurrency() /></span></td> + </tr> + </#list> + </tbody> + </table> + </div> + <div id="editCartPanel"> + <form id="cartForm" method="post" action="<@ofbizUrl></@ofbizUrl>"> + <fieldset> + <input type="hidden" name="removeSelected" value="false" /> + <div id="cartFormServerError" class="errorMessage"></div> + <table id="editCartPanel_cartItems"> + <thead> + <tr> + <th id="editOrderItem">${uiLabelMap.OrderItem}</th> + <th id="editDescription">${uiLabelMap.CommonDescription}</th> + <th id="editUnitPrice">${uiLabelMap.EcommerceUnitPrice}</th> + <th id="editQuantity">${uiLabelMap.OrderQuantity}</th> + <th id="editAdjustment">${uiLabelMap.EcommerceAdjustments}</th> + <th id="editItemTotal">${uiLabelMap.EcommerceItemTotal}</th> + <th id="removeItem">${uiLabelMap.FormFieldTitle_removeButton}</th> + </tr> + </thead> + <tfoot> + <tr> + <th scope="row" colspan="6">${uiLabelMap.CommonSubtotal}</th> + <td id="cartSubTotal"><@ofbizCurrency amount=shoppingCart.getSubTotal() isoCode=shoppingCart.getCurrency() /></td> + </tr> + <tr> + <th scope="row" colspan="6">${uiLabelMap.ProductDiscount}</th> + <td id="cartDiscountValue"> + <#assign orderAdjustmentsTotal = 0 /> + <#list shoppingCart.getAdjustments() as cartAdjustment> + <#assign orderAdjustmentsTotal = orderAdjustmentsTotal + Static["org.ofbiz.order.order.OrderReadHelper"].calcOrderAdjustment(cartAdjustment, shoppingCart.getSubTotal()) /> + </#list> + <@ofbizCurrency amount=orderAdjustmentsTotal isoCode=shoppingCart.getCurrency() /> + </td> + </tr> + <tr> + <th scope="row" colspan="6">${uiLabelMap.OrderShippingAndHandling}</th> + <td id="cartTotalShipping"><@ofbizCurrency amount=shoppingCart.getTotalShipping() isoCode=shoppingCart.getCurrency() /></td> + </tr> + <tr> + <th scope="row" colspan="6">${uiLabelMap.OrderSalesTax}</th> + <td id="cartTotalSalesTax"><@ofbizCurrency amount=shoppingCart.getTotalSalesTax() isoCode=shoppingCart.getCurrency() /></td> + </tr> + <tr> + <th scope="row" colspan="6">${uiLabelMap.OrderGrandTotal}</th> + <td id="cartDisplayGrandTotal"><@ofbizCurrency amount=shoppingCart.getDisplayGrandTotal() isoCode=shoppingCart.getCurrency() /></td> + </tr> + </tfoot> + <tbody id="updateBody"> + <#list shoppingCart.items() as cartLine> + <tr id="cartItemRow_${cartLine_index}"> + <td headers="editOrderItem"> + <#if cartLine.getProductId()?exists> + <#if cartLine.getParentProductId()?exists> + <#assign parentProductId = cartLine.getParentProductId() /> + <#else> + <#assign parentProductId = cartLine.getProductId() /> + </#if> + <#assign smallImageUrl = Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(cartLine.getProduct(), "SMALL_IMAGE_URL", locale, dispatcher)?if_exists /> + <#if !smallImageUrl?string?has_content><#assign smallImageUrl = "" /></#if> + <#if smallImageUrl?string?has_content> + <img src="<@ofbizContentUrl>${requestAttributes.contentPathPrefix?if_exists}${smallImageUrl}</@ofbizContentUrl>" alt="Product Image" /> + </#if> + </#if> + </td> + <td headers="editDescription">${cartLine.getName()?if_exists}</td> + <td headers="editUnitPrice" id="itemUnitPrice_${cartLine_index}"><@ofbizCurrency amount=cartLine.getDisplayPrice() isoCode=shoppingCart.getCurrency() /></td> + <td headers="editQuantity"> + <#if cartLine.getIsPromo()> + ${cartLine.getQuantity()?string.number} + <#else> + <input type="hidden" name="cartLineProductId" id="cartLineProductId_${cartLine_index}" value="${cartLine.getProductId()}" /> + <input type="text" name="update${cartLine_index}" id="qty_${cartLine_index}" value="${cartLine.getQuantity()?string.number}" class="required validate-number" /> + <span id="advice-required-qty_${cartLine_index}" style="display:none;" class="errorMessage"> (required)</span> + <span id="advice-validate-number-qty_${cartLine_index}" style="display:none;" class="errorMessage"> (${uiLabelMap.CommonPleaseEnterValidNumberInThisField}) </span> + </#if> + </td> + <#if !cartLine.getIsPromo()> + <td headers="editAdjustment" id="addPromoCode_${cartLine_index}"><@ofbizCurrency amount=cartLine.getOtherAdjustments() isoCode=shoppingCart.getCurrency() /></td> + <#else> + <td headers="editAdjustment"><@ofbizCurrency amount=cartLine.getOtherAdjustments() isoCode=shoppingCart.getCurrency() /></td> + </#if> + <td headers="editItemTotal" id="displayItem_${cartLine_index}"><@ofbizCurrency amount=cartLine.getDisplayItemSubTotal() isoCode=shoppingCart.getCurrency() /></td> + <#if !cartLine.getIsPromo()> + <td><a id="removeItemLink_${cartLine_index}" href="javascript:void(0);"><img id="remove_${cartLine_index}" src="<@ofbizContentUrl>/ecommerce/images/remove.png</@ofbizContentUrl>" alt="Remove Item Image" /></a></td> + </#if> + </tr> + </#list> + </tbody> + </table> + </fieldset> + <fieldset id="productPromoCodeFields"> + <div> + <label for="productPromoCode">${uiLabelMap.EcommerceEnterPromoCode}</label> + <input id="productPromoCode" name="productPromoCode" type="text" value="" /> + </div> + </fieldset> + <fieldset> + <a href="javascript:void(0);" class="button" id="updateShoppingCart" >${uiLabelMap.EcommerceContinueToStep} 2</a> + <a style="display: none" class="button" href="javascript:void(0);" id="processingShipping">${uiLabelMap.EcommercePleaseWait}....</a> + </fieldset> + </form> + </div> +</#if> \ No newline at end of file Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/cart/UpdateCart.ftl ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js?rev=885425&r1=885424&r2=885425&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js (original) +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/images/checkoutProcess.js Mon Nov 30 13:41:56 2009 @@ -382,6 +382,11 @@ function initCartProcessObservers() { var cartForm = $('cartForm'); Event.observe($('productPromoCode'), 'change', addPromoCode); + Event.observe($('updateShoppingCart'), 'click', showEditShippingPanel); + Event.observe($('openCartPanel'), 'click', function() { + showEditCartPanel(); + updateShippingSummary(); + }); var inputs = cartForm.getInputs('text'); inputs.each(function(e) { if(e.id != 'productPromoCode') { @@ -479,8 +484,14 @@ $('googleCheckoutDisabled').show(); $('microCartPayPalCheckout').hide(); } else { - // Used for edit cart - $('microCartQuantity').update(data.totalQuantity); + // Replace whole cart panel with updated cart values for updating line item in case of gift item is added or remove in cart after applying coupon code + // No need to calculate indivisual value for shopping cart when whole cart is updating + new Ajax.Updater($('cartPanel'), 'UpdateCart', {evalScripts: true, method: '', onComplete:function() + { + initCartProcessObservers(); + } + }); + /*$('microCartQuantity').update(data.totalQuantity); $('cartSubTotal').update(data.subTotalCurrencyFormatted); $('cartDiscountValue').update(data.displayOrderAdjustmentsTotalCurrencyFormatted); $('cartTotalShipping').update(data.totalShippingCurrencyFormatted); @@ -519,7 +530,7 @@ var completedCartItemSubTotalId = elementId.sub('qty_','completedCartItemSubTotal_'); $(completedCartItemSubTotalId).update(lineItemTotal); } - } + }*/ } }, parameters: formValues Modified: ofbiz/trunk/specialpurpose/ecommerce/widget/CartScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/widget/CartScreens.xml?rev=885425&r1=885424&r2=885425&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/widget/CartScreens.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/widget/CartScreens.xml Mon Nov 30 13:41:56 2009 @@ -122,4 +122,20 @@ </widgets> </section> </screen> + + <screen name="UpdateCart"> + <section> + <actions> + <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/> + <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/> + <script location="component://ecommerce/webapp/ecommerce/WEB-INF/actions/cart/ShowCart.groovy"/> + </actions> + <widgets> + <platform-specific><html><html-template location="component://ecommerce/webapp/ecommerce/cart/UpdateCart.ftl"/></html></platform-specific> + </widgets> + </section> + </screen> </screens> |
| Free forum by Nabble | Edit this page |
