<iscontent type="text/html" charset="UTF-8" compact="true"/> <isdecorate template="checkout/cart/pt_cart"> <isinclude template="util/modules" /> <isscript>var productheadernumber="discountedproduct"; </isscript> <isinclude template="util/reporting/ReportBasket.isml" /> <isinclude template="checkout/cart/giftsetpromo.isml" /> <isset name="enableCheckout" value="${pdict.EnableCheckout}" scope="page" /> <isset name="bonusMsgAlreadyDisplayed" value="false" scope="page"/> <isset name="triggeredActionFormId" value="${!empty(pdict.TriggeredAction)} ? ${pdict.TriggeredAction.formId} : ''" scope="page" /> <isset name="templateName" value="cart" scope="page" /> <isif condition="${triggeredActionFormId == 'deleteProduct'}"> <isset name="productId" value="" scope="page" /> <isset name="miniFlyoutAction" value="" scope="page" /> <iselse> <isset name="productIds" value="${pdict.CurrentHttpParameterMap.prodid.stringValue}" scope="page" /> <isif condition="${productIds != null && !empty(productIds)}"> <isscript> var prodIdsArray : dw.util.ArrayList = new dw.util.ArrayList(); if(productIds != null && !empty(productIds)){ prodIdsArray = productIds.split(':'); } </isscript> <input name="prodid" type="hidden" value="${productIds}" /> </isif> <isset name="miniFlyoutAction" value="${pdict.CurrentHttpParameterMap.miniflyout.stringValue}" scope="page" /> </isif> <isset name="isShowGiftSlot" value="${0}" scope="page"/> <isif condition="${dw.system.Site.getCurrent().getCustomPreferenceValue('enableStorePickUp')}"> <isset name="store" value="${dw.catalog.StoreMgr.getStore(pdict.CurrentSession.custom.storeId)}" scope="page" /> </isif> <isslot id="cart-banner" description="Banner for Cart page" context="global" /> <isif condition="${miniFlyoutAction == 'addToCart'}"> <h1 class="cart-heading">${Resource.msg('cart.addedheader','checkout',null)}</h1> <iselse/> <h1 class="cart-heading">${Resource.msg('cart.header','checkout',null)}</h1> </isif> <isif condition="${miniFlyoutAction != 'addToCart'}"> <isif condition="${pdict.clubOnlyError == true}"> <div class="cartClubOnlyError" style="margin-bottom: 10px;"> <iscontentasset aid="club-only-basket-error" /> </div> </isif> </isif> <isif condition="${!empty(pdict.Basket)&&!empty(pdict.Basket.bonusDiscountLineItems[0])}"> <isscript>var selectedBonusProductQty = 0;var bonusProductIds="";</isscript> <isloop items="${pdict.Basket.bonusDiscountLineItems[0].bonusProductLineItems}" var="bonusProductLineItems"> <isscript>selectedBonusProductQty = selectedBonusProductQty + bonusProductLineItems.quantity.value;</isscript> <isscript>bonusProductIds = bonusProductIds + bonusProductLineItems.product.ID;</isscript> </isloop> <input id="selected-bonus-product" type="hidden" value="${parseInt(selectedBonusProductQty)}"/> <input id="remaining-bonus-product" type="hidden" value="${parseInt(pdict.Basket.bonusDiscountLineItems[0].maxBonusItems - selectedBonusProductQty)}"/> </isif> <iscomment>Check for discounted promo AC439</iscomment> <isset name="activeCustomerPromos" value="${dw.campaign.PromotionMgr.activeCustomerPromotions}" scope="page" /> <isscript> CustomPromotionUtil = require("app_fspandora/cartridge/scripts/cart/CustomPromotionUtil.ds"); var specialPromoObj = CustomPromotionUtil.getSpecialPromoObj(pdict.Basket); var specialpromo = specialPromoObj.specialpromo; var isspecialpromo = specialPromoObj.isspecialpromo; var hideOverlayFlag : Boolean = false; if(specialpromo != null && !empty(specialpromo)) { hideOverlayFlag = CustomPromotionUtil.getHideOverlayFlag(pdict.Basket,specialpromo); } </isscript> <isif condition="${(pdict.Basket.productLineItems != null) && (!empty(pdict.Basket.productLineItems))}"> <isloop items="${pdict.Basket.productLineItems}" var="lineitem"> <isset name="promos" value="${dw.campaign.PromotionMgr.activeCustomerPromotions.getProductPromotions(lineitem.product)}" scope="page" /> <isloop items="${promos}" var="promo"> <isif condition="${promo.custom.promotionBuyMinPrice != null && !empty(promo.custom.promotionBuyMinPrice)}"> <isif condition="${!empty(promo.custom.discountProdPromoPrice) && activeCustomerPromos.getProductPromotionsForQualifyingProduct(lineitem.product).contains(promo)}"> <isset name="specialpromodisc" value="${promo}" scope="page" /> <isset name="isspecialpromodisc" value="true" scope="page" /> <isbreak> </isif> </isif> </isloop> </isloop> </isif> <isif condition="${isspecialpromodisc && !empty(specialpromodisc)}"> <isset name="totalqual" value="${0}" scope="page"> <isset name="isWithNumb" value="${specialpromodisc.custom.isWithNumberOfQualifingProduct}" scope="page"> <isif condition="${(pdict.Basket.productLineItems != null) && (!empty(pdict.Basket.productLineItems))}"> <isloop items="${pdict.Basket.productLineItems}" var="lip"> <isif condition="${activeCustomerPromos.getProductPromotionsForQualifyingProduct(lip.product).contains(specialpromodisc)}"> <isif condition="${!isWithNumb}"> <isscript>totalqual += lip.adjustedPrice.getValue();</isscript> <iselse> <isscript>totalqual += Number(lip.quantityValue);</isscript> </isif> </isif> </isloop> </isif> <isif condition="${totalqual >= specialpromodisc.custom.promotionBuyMinPrice }"> <isset name="specialpromo" value="${specialpromodisc}" scope="page" /> <isset name="isspecialpromo" value="true" scope="page" /> </isif> </isif> <isscript>var hideOverlayFlag : Boolean = false;</isscript> <isif condition="${specialpromo != null && !empty(specialpromo)}"> <isscript> for each(var plineitem in pdict.Basket.productLineItems) { var strpromoprice : String = specialpromo.custom.discountProdPromoPrice; var ArryPidValpair : dw.util.Collection = new dw.util.ArrayList(strpromoprice.split("|")); for(var i=0; i < ArryPidValpair.length; i++) { var ArryPids : dw.util.Collection = new dw.util.ArrayList(ArryPidValpair[i].split(":")); if(plineitem.product.ID == ArryPids[0]) { hideOverlayFlag = true; } else if(plineitem.product.isVariant()) { if(plineitem.product.masterProduct.ID==ArryPids[0]) { hideOverlayFlag = true; } } } } </isscript> </isif> <iscomment>Check for discounted promo ends </iscomment> <isif condition="${miniFlyoutAction != 'addToCart'}"> <iscomment>Display approaching order and shipping promotions.</iscomment> <isinclude template="checkout/components/approachingdiscounts"/> </isif> <isif condition="${pdict.Basket != null && (!empty(pdict.Basket.productLineItems) || !empty(pdict.Basket.giftCertificateLineItems))}"> <div class="continueshopping"> <form class="cart-action-continue-shopping cart-empty-continue-shopping hideeurope" action="${URLUtils.httpContinue()}" method="post" name="${pdict.CurrentForms.cart.dynamicHtmlName}" id="continue-shopping"> <fieldset> <button class="button-text" type="submit" value="${Resource.msg('global.continueshopping','locale',null)}" name="${pdict.CurrentForms.cart.continueShopping.htmlName}"> < ${Resource.msg('global.continueshopping','locale',null)} </button> </fieldset> </form> </div> <div class="cart-actions top"> <iscomment>continue shop url is a non-secure but checkout needs a secure and that is why separate forms!</iscomment> <form class="cart-action-checkout hidedesktop" action="${URLUtils.httpsContinue()}" method="post" name="${pdict.CurrentForms.cart.dynamicHtmlName}" id="checkout-form"> <fieldset> <isif condition="${miniFlyoutAction != 'addToCart'}"> <input type="hidden" name="${pdict.CurrentForms.cart.multipleGiftees.htmlName}" value="${pdict.CurrentForms.cart.multipleGiftees.value}"/> <isif condition="${enableCheckout}"> <iscomment>Dummy div overlay over checkout botton</iscomment> <div class="dummy-bonus-overlay-holder"> <isif condition="${!hideOverlayFlag && specialpromo!=null && specialpromo.ID!=null}"> <div class="continuecheckout_overlay"></div> </isif> </div> <isif condition="${pdict.clubOnlyError != true}"> <button class="button-fancy-large checkoutButton" type="submit" value="${Resource.msg('global.checkout','locale',null)}" name="${pdict.CurrentForms.cart.checkoutCart.htmlName}"> <span class="text-button">${Resource.msg('global.checkout','locale',null)}</span> <span></span> </button> </isif> <iselse/> <isif condition="${pdict.clubOnlyError != true}"> <button class="button-fancy-large checkoutButton" disabled="disabled" type="submit" value="${Resource.msg('global.checkout','locale',null)}" name="${pdict.CurrentForms.cart.checkoutCart.htmlName}"> <span class="text-button">${Resource.msg('global.checkout','locale',null)}</span> <span></span> </button> </isif> </isif> </isif> </fieldset> </form> </div> </isif> <iscomment>Display selected bonus products Order Promotion message</iscomment> <isif condition="${!(pdict.Basket == null)}"> <isloop items="${pdict.Basket.bonusDiscountLineItems}" var="bonusDiscountLineItem"> <isset name="bonusheadingerror" value="${('bonusHeading' in bonusDiscountLineItem.getPromotion().custom && !empty(bonusDiscountLineItem.getPromotion().custom.bonusHeading)) ? bonusDiscountLineItem.getPromotion().custom.bonusHeading : 'Complimentary'}" scope="page" /> <isif condition="${bonusDiscountLineItem.getPromotion().getPromotionClass() == dw.campaign.Promotion.PROMOTION_CLASS_ORDER && bonusDiscountLineItem.getBonusProductLineItems().size() == 0}"> <div class="bonus-item-promo"> <iscomment>Display appropriate text based on status of bonus discount and number of selected bonus products.</iscomment> <isset name="bonusheading" value="${('bonusHeading' in bonusDiscountLineItem.getPromotion().custom && !empty(bonusDiscountLineItem.getPromotion().custom.bonusHeading)) ? bonusDiscountLineItem.getPromotion().custom.bonusHeading : 'Complimentary'}" scope="page" /> <isif condition="${bonusDiscountLineItem.getBonusProductLineItems().size() > 0}"> <isif condition="${bonusDiscountLineItem.getMaxBonusItems() > 1}"> <isset name="bonusButtonText" value="${Resource.msg('cart.updatebonusproducts','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproducts','checkout',null)}" scope="page" /> <iselse/> <isset name="bonusButtonText" value="${Resource.msg('cart.updatebonusproduct','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproduct','checkout',null)}" scope="page" /> </isif> <iselse/> <isif condition="${bonusDiscountLineItem.getMaxBonusItems() > 1}"> <isset name="bonusButtonText" value="${Resource.msg('cart.selectbonusproducts','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproducts1','checkout',null)}" scope="page" /> <iselse/> <isset name="bonusButtonText" value="${Resource.msg('cart.selectbonusproduct','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproduct1','checkout',null)}" scope="page" /> </isif> </isif> <div class="bonus-item-details approachingpromo"> <isprint value="${bonusDiscountLineItem.getPromotion().custom.promotionGranted}" /> <iscomment> <isprint value="${bonusDiscountLineItem.getPromotion().getCalloutMsg()}" encoding="off"/> <a class="tooltip" href="#"> ${Resource.msg('product.promotiondetails','product',null)} <div class="tooltip-content" data-layout="small"> <isprint value="${bonusDiscountLineItem.getPromotion().getDetails()}" /> <br /> ${StringUtils.format(Resource.msg('cart.bonusmaxitems','checkout',null),bonusDiscountLineItem.getMaxBonusItems())} ${StringUtils.format(Resource.msg('cart.bonusnumselected','checkout',null),bonusDiscountLineItem.getBonusProductLineItems().size())} </div> </a> </iscomment> </div> <iscomment><div class="bonus-products"> <a href="${URLUtils.url('Product-GetBonusProducts','bonusDiscountLineItemUUID', bonusDiscountLineItem.UUID)}" title="${bonusButtonText}"> ${bonusButtonText} </a> </div> </iscomment> </div> </isif> </isloop> </isif> <isif condition="${pdict.Basket == null || (empty(pdict.Basket.productLineItems) && empty(pdict.Basket.giftCertificateLineItems))}"> <div class="cart-empty"> <isslot id="cart-empty-content" description="Empty Cart Page" context="global"/> </div> <form class="cart-action-continue-shopping cart-empty-continue-shopping" action="${URLUtils.httpContinue()}" method="post" name="${pdict.CurrentForms.cart.dynamicHtmlName}" id="continue-shopping"> <fieldset> <button class="button-text" type="submit" value="${Resource.msg('global.continueshopping','locale',null)}" name="${pdict.CurrentForms.cart.continueShopping.htmlName}"> << ${Resource.msg('global.continueshopping','locale',null)} </button> </fieldset> </form> <iselse/> <iscomment>prevent checkout if any product price is N/A or if invalid coupons</iscomment> <isif condition="${pdict.BasketStatus != null && pdict.BasketStatus.error && miniFlyoutAction != 'addToCart'}"> <div class="error-form generic-errormsg"> <isif condition="${pdict.BasketStatus.code != null && pdict.BasketStatus.code=='CouponError'}"> ${Resource.msg('cart.cartcouponinvalid','checkout',null)} <iselseif condition="${pdict.BasketStatus.code != null && pdict.BasketStatus.code=='TaxError'}"> ${Resource.msg('cart.taxinvalid','checkout',null)} <iselse/> <iscomment> ${pdict.BasketStatus.code} </iscomment> ${Resource.msg('global.error','locale',null)} ${Resource.msg('cart.carterror','checkout',null)} </isif> </div> </isif> <div class="error-form bounsproductnotavailable-errormsg hideeurope hideussite"> ${Resource.msg('cart.cartbonuserror1','checkout',null)} <span class="bonusheadingerror">${bonusheadingerror}</span> ${Resource.msg('cart.cartbonuserror2','checkout',null)} </div> <isif condition="${miniFlyoutAction != 'addToCart'}"> <iscomment>Special Promo approaching msg </iscomment> <isif condition="${isspecialpromo}"> <div class="promodiscountprodlink"> <isif condition="${specialpromo!=null && specialpromo.custom.promotionGranted != null && !empty(specialpromo.custom.promotionGranted)}"> <input type="hidden" id="hidpromoenabled" value="${true}" /> <isprint value="${specialpromo.custom.promotionGranted}" encoding = "off"></isprint> <a id="discountedProductslist" class="special_discount_promo_link" href="${URLUtils.url('PromotionDet-Start','specialpromoid',specialpromo.ID)}" title="${specialpromo.calloutMsg}" ></a> </isif> </div> <iselse> <isset name="allPromos" value="${dw.campaign.PromotionMgr.activeCustomerPromotions.getProductPromotions()}" scope="page"> <isset name="discountedpromo" value="${null}" scope="page"> <isloop items="${allPromos}" var="dpromo"> <isif condition="${!empty(dpromo.custom.discountProdPromoPrice)}"> <isset name="discountedpromo" value="${dpromo}" scope="page"> <isbreak> </isif> </isloop> <isset name="totalprice" value="${0}" scope="page"> <isset name="isWithNumber" value="${true}" scope="page"> <isif condition="${discountedpromo != null && !empty(discountedpromo)}"> <isset name="isWithNumber" value="${discountedpromo.custom.isWithNumberOfQualifingProduct}" scope="page"> </isif> <isif condition="${!isWithNumber}"> <isif condition="${(pdict.Basket.productLineItems != null) && (!empty(pdict.Basket.productLineItems))}"> <isloop items="${pdict.Basket.productLineItems}" var="plidsc"> <isif condition="${activeCustomerPromos.getProductPromotionsForQualifyingProduct(plidsc.product).contains(discountedpromo)}"> <isscript>totalprice += plidsc.adjustedPrice.getValue();</isscript> </isif> </isloop> </isif> <isif condition="${totalprice < discountedpromo.custom.promotionBuyMinPrice }"> <isset name="approachingdiscount" value="${(Number(discountedpromo.custom.promotionBuyMinPrice) - Number(totalprice))}" scope="page" /> </isif> <isif condition="${discountedpromo != null && discountedpromo.custom.alertMessage != null && !empty(discountedpromo.custom.alertMessage) && !empty(approachingdiscount)}"> <isscript> importScript( "common/libPricing.ds" ); var pricing = Pricing.formatPriceValue(approachingdiscount); var alertMessage : String = ''; alertMessage = discountedpromo.custom.alertMessage.toString(); var pattern : String = "[[AMOUNT]]"; alertMessage = alertMessage.replace(pattern,pricing); </isscript> <isif condition="${alertMessage}"> <div class="approachingpromo spl-promo-alert"> <isprint value="${alertMessage}" encoding="off" /> </div> </isif> </isif> <iselse/> <div class="spl-promo-alert"> <isif condition="${!empty(discountedpromo)}"> <isprint value="${discountedpromo.custom.alertMessage}" encoding="off" /> </isif> </div> </isif> </isif> <iscomment>Special Promo approaching msg ends </iscomment> </isif> <div class="shipping-limitation hide-mobile hide-tablet"> <iscontentasset aid="shipping-country-message" /> </div> <form action="${URLUtils.httpContinue()}" method="post" name="${pdict.CurrentForms.cart.htmlName}" id="cart-items-form"> <fieldset> <input name="miniflyout" type="hidden" value=${miniFlyoutAction} /> <isset name="bundleAvaliable" value="" scope="page" /> <isloop items="${pdict.CurrentForms.cart.shipments}" var="Shipment" status="loopstate"> <isloop items="${Shipment.items}" alias="FormLi" status="loopstate"> <isset name="lineItem" value="${FormLi.object}" scope="page" /> <isif condition="${lineItem.product.bundle || lineItem.priceAdjustments.length > 0}"> <isset name="bundleAvaliable" value=" bundleAvailable" scope="page" /> </isbreak> </isif> </isloop> </isloop> <iscomment>This button is hidden but required to ensure that update cart is called whenever the "enter" key is pressed in an input field</iscomment> <button class="visually-hidden" type="submit" value="${pdict.CurrentForms.cart.updateCart.htmlName}" name="${pdict.CurrentForms.cart.updateCart.htmlName}"></button> <div class="products hide-mobile hideussite">${Resource.msg('global.product','locale',null)}</div> <table id="cart-table" class="item-list${bundleAvaliable}"> <thead> <isif condition="${!empty(pdict.Basket.custom['gift_box_config'])}"> <isset name="isShowMainHead" value="${!(JSON.parse(pdict.Basket.custom['gift_box_config'])['allSet'])}" scope="page" /> </isif> <isif condition="${pdict.Basket.custom['gift_box_config'] == null}"> <tr> <th class="section-header sl-no image"><span class='hideeurope'>Item</span></th> <th class="section-header products product">${Resource.msg('global.product','locale',null)}</th> <isif condition="${dw.system.Site.getCurrent().getCustomPreferenceValue('enableStorePickUp')}"> <th class="section-header deliveroption">${Resource.msg('cart.store.deliveryoptions','storepickup',null)}</th> </isif> <th class="section-header qty">${Resource.msg('cartheader.qty','locale',null)}</th> <th class="section-header header-total-price price">${Resource.msg('global.price','locale',null)}</th> </tr> </isif> </thead> <tbody> <iscomment> LOOP TO SEPARATE DIFFERENT SHIPMENTS ex: Gift Registry Shipments Etc.</iscomment> <isscript>var packagesShown = [];</isscript> <isset name="isbonusadded" value="${'no'}" scope="page"/> <isloop items="${pdict.CurrentForms.cart.shipments}" var="Shipment" status="loopstate"> <isif condition="${pdict.Basket.custom['gift_box_config'] != null}"> <isscript> var configObject = JSON.parse(pdict.Basket.custom['gift_box_config']); var boxname :dw.util.SortedSet=new dw.util.SortedSet(); </isscript> <isloop items="${Object.keys(configObject.products)}" var="currentLineItemUUID" status="loopstate"> <isif condition="${empty(Object.keys(configObject.products[currentLineItemUUID]))}"> <isloop items="${Shipment.items}" alias="FormLi"> <isif condition="${FormLi.object.UUID == currentLineItemUUID}"> <isinclude template="checkout/cart/showproductlineitem"/> </isif> </isloop> <iselse/> <isloop items="${Object.keys(configObject.products[currentLineItemUUID])}" var="box"> <isscript>boxname.add(box)</isscript> </isloop> </isif> </isloop> <iscomment>Render gift box product first in order</iscomment> <isloop items="${boxname}" var="boxname" status="loopstate"> <isloop items="${Object.keys(configObject.products)}" var="currentLineItemUUID" status="loopstate"> <isloop items="${Object.keys(configObject.products[currentLineItemUUID])}" var="box"> <isif condition="${box==boxname}"> <isloop items="${Shipment.items}" alias="FormLi"> <isif condition="${FormLi.object.UUID == currentLineItemUUID}"> <isinclude template="checkout/cart/showproductlineitem"/> </isif> </isloop> </isif> </isloop> </isloop> </isloop> <iscomment>Render remaining product from basket after rendering productline item from gift box</iscomment> <isloop items="${Shipment.items}" alias="FormLi" status="loopstate"> <isif condition="${JSON.stringify(Object.keys(configObject.products)).indexOf(FormLi.object.UUID)<0}"> <isinclude template="checkout/cart/showproductlineitem"/> </isif> </isloop> <iselse> <isloop items="${Shipment.items}" alias="FormLi" status="loopstate"> <isinclude template="checkout/cart/showproductlineitem"/> </isloop> </isif> <iscomment>Gift Certificates</iscomment> <isloop items="${Shipment.giftcerts}" var="GiftCertificate" status="loopstate"> <tr class="rowgiftcert"> <td class="item-image"> <img src="${URLUtils.staticURL('/images/gift_cert.gif')}" alt="${GiftCertificate.object.lineItemText}" /> </td> <td class="item-details"> <div class="name"> <isprint value="${GiftCertificate.object.lineItemText}" /> </div> <p class="gift-cert-delivery"> ${Resource.msg('cart.giftcertdelivery','checkout',null)} </p> <div class="giftcertamount clearfix"> <span class="label"> ${Resource.msg('global.price','locale',null)}: </span> <span class="value"> <isprint value="${GiftCertificate.object.basePrice}" /> </span> </div> <div class="attribute"> <isif condition="${GiftCertificate.object.recipientName!=null}"> <span class="label"> ${Resource.msg('global.to','locale',null)}: </span> <span class="value"> <isprint value="${GiftCertificate.object.recipientName}" />, <isprint value="${GiftCertificate.object.recipientEmail}" /> </span> </isif> </div> <div class="attribute"> <isif condition="${GiftCertificate.object.senderName!=null}"> <span class="label"> ${Resource.msg('global.from','locale',null)}: </span> <span class="value"> <isprint value="${GiftCertificate.object.senderName}" /> </span> </isif> </div> <iscomment>product list info</iscomment> <isif condition="${GiftCertificate.object.productListItem != null}"> <span class="product-list-item"> <isif condition="${GiftCertificate.object.productListItem.list.type == dw.customer.ProductList.TYPE_WISH_LIST}"> <a href="${URLUtils.url('Wishlist-ShowOther','WishListID', GiftCertificate.object.productListItem.list.ID)}" title="${Resource.msg('cart.wishlistitem','checkout',null)}"> ${Resource.msg('displayliproduct.wishlistitem','product',null)} </a> <iselseif condition="${GiftCertificate.object.productListItem.list.type == dw.customer.ProductList.TYPE_GIFT_REGISTRY}"> <a href="${URLUtils.https('GiftRegistryCustomer-Show','ID', GiftCertificate.object.productListItem.list.ID)}" title="${Resource.msg('cart.registryitem','checkout',null)}"> ${Resource.msg('cart.registryitem','checkout',null)} </a> </isif> </span> </isif> </td> <isif condition="${dw.system.Site.getCurrent().getCustomPreferenceValue('enableStorePickUp')}"> <td class="item-delivery-options"> </td> </isif> <td class="item-quantity">1</td> <td class="item-quantity-details"> <div class="item-user-actions"> <button class="button-text" type="submit" value="${Resource.msg('global.remove','locale',null)}" name="${GiftCertificate.deleteGiftCertificate.htmlName}"> ${Resource.msg('global.remove','locale',null)} </button> <a href="${URLUtils.url('GiftCert-Edit','GiftCertificateLineItemID', GiftCertificate.object.UUID)}" title="${Resource.msg('global.editdetails','locale',null)}" >${Resource.msg('global.editdetails','locale',null)}</a> </div> </td> <td class="item-total"> <isprint value="${GiftCertificate.object.price}" /> </td> </tr> </isloop> </isloop> <iscomment>Coupons</iscomment> <isif condition="${miniFlyoutAction != 'addToCart'}"> <isloop items="${pdict.CurrentForms.cart.coupons}" var="FormCoupon" status="loopstateCoupons"> <tr class="rowcoupons"> <td class="item-details" colspan= "2"> <div class="cartcoupon clearfix"> <isif condition="${dw.system.Site.getCurrent().getCustomPreferenceValue('isEndToEndMerchant') && 'cssProvidedPromotion' in FormCoupon.object.custom && FormCoupon.object.custom.cssProvidedPromotion == true}"> <span class="value"> ${Resource.msg('cart.csspromotion','checkout',null)}</span> <iselse/> <span class="label">${Resource.msg('cart.couponcode','checkout',null)}</span> <span class="value"> <isprint value="${FormCoupon.object.couponCode}" /> </span> </isif> </div> <isloop items="${FormCoupon.object.priceAdjustments}" var="Promo" status="loopstate"> <div class="discount"> <span class="label"> <isprint value="${Promo.lineItemText}" /> </span> <span class="value">(<isprint value="${Promo.price}" />)</span> </div> </isloop> <isif condition="${!FormCoupon.object.valid}"> <span class="not-applied">${Resource.msg('cart.couponinvalid','checkout',null)}</span> </isif> <div class="item-user-actions coupon-actions"> <button class="textbutton" type="submit" value="${Resource.msg('global.remove','locale',null)}" name="${FormCoupon.deleteCoupon.htmlName}"> <img src="${URLUtils.staticURL('/images/cart/pandora-remove.png')}" class="hideeurope"/><span>${Resource.msg('global.remove','locale',null)}</span> </button> </div> </td> <td class="item-quantity"> <div class="item-user-actions coupon-actions"> <button class="textbutton" type="submit" value="${Resource.msg('global.remove','locale',null)}" name="${FormCoupon.deleteCoupon.htmlName}"> <img src="${URLUtils.staticURL('/images/cart/pandora-remove.png')}" class="hideeurope"/><span>${Resource.msg('global.remove','locale',null)}</span> </button> </div> </td> <td class="item-total"> <isif condition="${FormCoupon.object.applied}"> <span class="bonus-item">${Resource.msg('global.applied','locale',null)}</span> <iselse/> <span class="bonus-item">${Resource.msg('global.notapplied','locale',null)}</span> </isif> <div class="item-user-actions coupon-actions"> <button class="textbutton" type="submit" value="${Resource.msg('global.remove','locale',null)}" name="${FormCoupon.deleteCoupon.htmlName}"> <span>${Resource.msg('global.remove','locale',null)}</span> </button> </div> </td> </tr> </isloop> </isif> <isloop items="${pdict.Basket.bonusDiscountLineItems}" var="bonusProductLineItem"> <isif condition="${typeof('promoCategoryDisplayName')!='undefined' && !empty(promoCategoryDisplayName)}"> <isset name="promoCategoryDisplayName" value="${promoCategoryDisplayName+'/'+('bonusCategoryName' in bonusProductLineItem.getPromotion().custom && !empty(bonusProductLineItem.getPromotion().custom.bonusCategoryName)) ? bonusProductLineItem.getPromotion().custom.bonusCategoryName : 'Free Product(s)'}" scope="page" /> <iselse> <isset name="promoCategoryDisplayName" value="${('bonusCategoryName' in bonusProductLineItem.getPromotion().custom && !empty(bonusProductLineItem.getPromotion().custom.bonusCategoryName)) ? bonusProductLineItem.getPromotion().custom.bonusCategoryName : 'Free Product(s)'}" scope="page" /> </isif> </isloop> <input type="hidden" name="promoCategoryDisplayName" value="${promoCategoryDisplayName}" id="promoCategoryDisplayName"/> <iscomment>Bonus discount line items</iscomment> <iscomment>Set variable to 'no' to indicate bonus product is added to cart </iscomment> <isloop items="${pdict.Basket.bonusDiscountLineItems}" var="bonusDiscountLineItem" status="loopstate"> <iscomment>Display appropriate text based on status of bonus discount and number of selected bonus products.</iscomment> <isset name="bonusheading" value="${('bonusHeading' in bonusDiscountLineItem.getPromotion().custom && !empty(bonusDiscountLineItem.getPromotion().custom.bonusHeading)) ? bonusDiscountLineItem.getPromotion().custom.bonusHeading : 'Complimentary'}" scope="page" /> <isif condition="${bonusDiscountLineItem.getBonusProductLineItems().size() > 0}"> <isif condition="${bonusDiscountLineItem.getMaxBonusItems() > 1}"> <isset name="bonusButtonText" value="${Resource.msg('cart.updatebonusproducts','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproducts','checkout',null)}" scope="page" /> <iselse/> <isset name="bonusButtonText" value="${Resource.msg('cart.updatebonusproduct','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproduct','checkout',null)}" scope="page" /> </isif> <iselse/> <isif condition="${bonusDiscountLineItem.getMaxBonusItems() > 1}"> <isset name="bonusButtonText" value="${Resource.msg('cart.selectbonusproducts','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproducts1','checkout',null)}" scope="page" /> <iselse/> <isset name="bonusButtonText" value="${Resource.msg('cart.selectbonusproducts','checkout',null) +' '+bonusheading+' '+Resource.msg('cart.bonusproduct1','checkout',null)}" scope="page" /> </isif> </isif> <iscomment> Display the selected bonus products for this bonus discount line item. This requires looping through all form items and matching by UUID. Note: we display these bonus products outside of any shipment even though each one is contained in a shipment. This display does not make sense in multiple-shipment scenario. </iscomment> <isif condition="${miniFlyoutAction != 'addToCart'}"> <isloop items="${pdict.CurrentForms.cart.shipments}" var="Shipment" status="loopstate"> <isscript> var bonusproductheader="bonusproductheader"</isscript> <isloop items="${Shipment.items}" alias="FormLi" status="loopstate"> <isset name="lineItem" value="${FormLi.object}" scope="page" /> <isif condition="${lineItem.getBonusDiscountLineItem() != null && empty(lineItem.custom['gift_box_name']) &&lineItem.getBonusDiscountLineItem().getUUID().equals(bonusDiscountLineItem.getUUID())}"> <isif condition="${bonusproductheader=='bonusproductheader' && productheadernumber =='discountedproduct'}"> <tr class="cartbonusgiftbox"> <td class="section-header sl-no image desktop-heading"><span class='hideeurope'>Item</span></td> <td class="section-header products product desktop-heading">${Resource.msg('global.product','locale',null)}</td> <td class="section-header qty desktop-heading">${Resource.msg('cartheader.qty','locale',null)}</td> <td class="section-header header-total-price price desktop-heading">${Resource.msg('global.price','locale',null)}</td> </tr> </isif> <isscript>bonusproductheader="";</isscript> <tr class="discounteditem"> <td class="item-image"> <isset name="imageLIObject" value="${imgProvider.getProductImage('small', lineItem.product, 0)}" scope="page"/> <img src="${imageLIObject.getURL()}" alt="${imageLIObject.alt}" title="${imageLIObject.title}" /> </td> <td class="item-details"> <iscomment>Call module to render product</iscomment> <isdisplayliproduct p_productli="${lineItem}" p_formli="${FormLi}" p_editable="${false}" p_hideprice="${true}" p_hidepromo="${true}" /> </td> <isif condition="${dw.system.Site.getCurrent().getCustomPreferenceValue('enableStorePickUp')}"> <td class="item-delivery-options"> <isinclude template="checkout/cart/storepickup/deliveryoptions" /> </td> </isif> <td class="item-quantity item-quantity-details"> <div class="qty-select bouns-qty hide-desktop hidemobile"> <isprint value="${lineItem.quantity}" /> </div> <div class="item-user-actions"> <iscomment>Delete product **************************** </iscomment> <button class="button-text" type="submit" value="${Resource.msg('global.remove','locale',null)}" name="${FormLi.deleteProduct.htmlName}"> <img src="${URLUtils.staticURL('/images/cart/pandora-remove.png')}" class="hideeurope"/><span>${Resource.msg('global.remove','locale',null)}</span> </button> <iscomment>Add to wish list **************************** </iscomment> <isif condition="${empty(pdict.ProductAddedToWishlist) || pdict.ProductAddedToWishlist != lineItem.productID}"> <isif condition="${!isInWishList}"> <a class="add-to-wishlist" href="${URLUtils.https('Cart-AddToWishlist', 'pid', lineItem.productID, 'Quantity', lineItem.quantity.value)}" title="${Resource.msg('global.addtowishlist','locale',null)}"> <img src="${URLUtils.staticURL('/images/cart/heart.jpg')}" class="hideeurope"/><span>${Resource.msg('global.addtowishlist','locale',null)}</span> </a> </isif> <iselse/> <div class="in-wishlist"> ${Resource.msg('global.iteminwishlist','locale',null)} </div> </isif> <iscomment>Item Availability **************************** </iscomment> <iscomment>Product Existence and Product Availability</iscomment> <isif condition="${lineItem.product == null}"> <span class="not-available"> ${Resource.msg('cart.removeditem','checkout',null)} </span> <iselse/> <isset name="product" value="${lineItem.product}" scope="page" /> <isset name="quantity" value="${pdict.Basket.getAllProductQuantities().get(lineItem.product).value}" scope="page" /> <isinclude template="checkout/cart/cartavailability" /> </isif> </div> </td> <td class="item-total"> <span class="bonus-item"> ${Resource.msg('global.bonus','locale',null)} </span> <isif condition="${lineItem.bonusProductLineItem}"> <button class="button-text hide-mobile remove" type="submit" value="${Resource.msg('global.remove','locale',null)}" name="${FormLi.deleteProduct.htmlName}"> <span>${Resource.msg('global.remove','locale',null)}</span> </button> </isif> </td> </tr> <iscomment>Bundles</iscomment> <isif condition="${lineItem.bundledProductLineItems.size() > 0}"> <isloop items="${lineItem.bundledProductLineItems}" var="bli"> <iscomment>same color</iscomment> <tr class="row-bundle"> <td class="item-image"><!-- Blank to create bundle indent --></td> <td class="item-details"> <isset name="imagebli1Object" value="${imgProvider.getProductImage('small', bli.product, 0)}" scope="page"/> <a href="${URLUtils.url('Product-Show','pid', bli.productID,'src',cart)}" title="${bli.productName}"> <img src="${imagebli1Object.getURL()}" alt="${imagebli1Object.alt}" title="${imagebli1Object.title}" /> </a> <div class="name"> <a href="${URLUtils.url('Product-Show','pid', bli.productID,'src',cart)}" title="${bli.productName}"> <isprint value="${bli.lineItemText}" /> </a> </div> <div class="sku"> <span class="label"> ${Resource.msg('global.itemno','locale',null)} </span> <span class="value"> <isprint value="${bli.productID}" /> </span> </div> </td> <isif condition="${dw.system.Site.getCurrent().getCustomPreferenceValue('enableStorePickUp')}"> <td class="item-delivery-options"> <isinclude template="checkout/cart/storepickup/deliveryoptions" /> </td> </isif> <td class="item-quantity item-quantity-details"> <isprint value="${bli.quantity}" /> ${Resource.msg('global.included','locale',null)} <iscomment>Product Existence and Product Availability</iscomment> <isif condition="${!bli.bonusProductLineItem}"> <isif condition="${bli.product == null}"> <span class="not-available"> ${Resource.msg('cart.removeditem','checkout',null)} </span> <iselse/> <isset name="product" value="${bli.product}" scope="page" /> <isset name="quantity" value="${pdict.Basket.getAllProductQuantities().get(bli.product).value}" scope="page" /> <isinclude template="checkout/cart/cartavailability" /> </isif> </isif> </td> <td class="item-total"><!-- ITEMTOTAL COLUMN --></td> </tr> </isloop> </isif> <iscomment>Set variable to yes to indicate bonus product is added to cart </iscomment> <isset name="isbonusadded" value="${'yes'}" scope="page" /> </isif> </isloop> </isloop> </isif> <iscomment>Done looping selected bonus products.</iscomment> <isif condition="${bonusMsgAlreadyDisplayed == 'false'}"> <isset name="bonusMsgAlreadyDisplayed" value="true" scope="page"/> <tr class="cart-promo"> <td colspan="2" class="bonus-item-details"> <isprint value="${bonusDiscountLineItem.getPromotion().getName()}" /> <iscomment> <isprint value="${bonusDiscountLineItem.getPromotion().getCalloutMsg()}" encoding="off"/> <a class="tooltip" href="#"> ${Resource.msg('product.promotiondetails','product',null)} <div class="tooltip-content" data-layout="small"> <isprint value="${bonusDiscountLineItem.getPromotion().getDetails()}" /> <br /> ${StringUtils.format(Resource.msg('cart.bonusmaxitems','checkout',null), bonusDiscountLineItem.getMaxBonusItems())} ${StringUtils.format(Resource.msg('cart.bonusnumselected','checkout',null),bonusDiscountLineItem.getBonusProductLineItems().size())} </div> </a> </iscomment> </td> <td colspan="3" class="bonus-item-actions"> <a class="select-bonus" href="${URLUtils.url('Product-GetBonusProducts','bonusDiscountLineItemUUID', bonusDiscountLineItem.UUID)}" title="${bonusButtonText}"> ${bonusButtonText} </a> </td> </tr> </isif> </isloop> <iscomment>Done looping selected bonus discount line items.</iscomment> <isif condition="${isbonusadded=='yes'}"> <input type="hidden" id="hidisbonuseligible" name="hidisbonuseligible" value="yes"> </isif> <isif condition="${!empty(pdict.Basket) && ( (pdict.Basket.productLineItems.size() > 1) || (isShowGiftSlot > 1) )}"> <tr class="cartmultisplit"> <td colspan="5"> <div class="quickviewbutton"> <isif condition="${!empty(pdict.Basket.custom['gift_box_config'])}"> <isslot id="fsgiftwrap-selector-basket-config" description="Config Giftwrap Packages" context="global"/> <iselse/> <isslot id="fsgiftwrap-selector-basket" description="Giftwrap Selector Basket" context="global"/> </isif> </div> </td> </tr> </isif> </tbody> <tfoot> <isloop items="${pdict.Basket.priceAdjustments}" var="priceAdjustment" status="cliloopstate"> <tr> <td colspan="6" class="cart-promo"> <div class="discount-message"> <span class="label">${Resource.msg('summary.orderdiscount','checkout',null)}</span> <span class="value"> <isprint value="${priceAdjustment.lineItemText}" encoding="off" /> </span> </div> </td> </tr> </isloop> </tfoot> </table> <div class="cart-footer"> <input type="hidden" name="${pdict.CurrentForms.cart.updateCart.htmlName}" value="${pdict.CurrentForms.cart.updateCart.htmlName}"/> <div class="cart-coupon-code"> <label for="${pdict.CurrentForms.cart.couponCode.htmlName}"> ${Resource.msg('cart.entercouponcode','checkout',null)} </label> <input type="text" name="${pdict.CurrentForms.cart.couponCode.htmlName}" id="${pdict.CurrentForms.cart.couponCode.htmlName}" /> <button type="submit" value="${pdict.CurrentForms.cart.addCoupon.htmlName}" name="${pdict.CurrentForms.cart.addCoupon.htmlName}" id="add-coupon"> <span class="hideussite">${Resource.msg('cart.applycouponcode','checkout',null)}</span> </button> <isif condition="${pdict.CouponError=='COUPON_CODE_MISSING'}"> <div class="error"> ${Resource.msg('cart.COUPON_CODE_MISSING','checkout', null)} </div> <iselseif condition="${pdict.CouponStatus != null && pdict.CouponStatus.error}"> <div class="error"> ${Resource.msgf('cart.' + pdict.CouponStatus.code,'checkout', null, pdict.CurrentForms.cart.couponCode.htmlValue)} </div> </isif> </div> <div class="cart-order-totals"> <div class="update-cart-button"> <isif condition="${miniFlyoutAction != 'addToCart'}"> <button type="submit" value="${pdict.CurrentForms.cart.updateCart.htmlName}" name="${pdict.CurrentForms.cart.updateCart.htmlName}" id="update-cart"> ${Resource.msg('global.updatecart','locale',null)} </button> <iselse/> <button type="submit" value="${pdict.CurrentForms.cart.updateCart.htmlName}" name="${pdict.CurrentForms.cart.updateCart.htmlName}" id="update-cart" class="update-in-flyout-cart"> ${Resource.msg('global.updatecart','locale',null)} </button> </isif> </div> <isordertotals p_lineitemctnr="${pdict.Basket}" p_totallabel="${Resource.msg('gloabl.carttotallabel','locale',null)}" p_iscart="${true}" /> </div> </div> <iscomment> Fix for Able to proceed to checkout flow with more than instock qty by clicking on Go straight to checkout in the Mini cart. Commented second error message. <isif condition="${!enableCheckout}"> <div class="error-message"> ${Resource.msg('cart.limited','checkout',null)}: ${Resource.msg('cart.limitedQuantity','checkout',null)} </div> </isif> </iscomment> </fieldset> </form> <div class="cart-actions"> <iscomment>continue shop url is a non-secure but checkout needs a secure and that is why separate forms!</iscomment> <isif condition="${miniFlyoutAction != 'addToCart'}"> <form class="cart-action-checkout" action="${URLUtils.httpsContinue()}" method="post" name="${pdict.CurrentForms.cart.dynamicHtmlName}" id="checkout-form"> <fieldset> <isif condition="${enableCheckout}"> <input type="hidden" name="${pdict.CurrentForms.cart.multipleGiftees.htmlName}" value="${pdict.CurrentForms.cart.multipleGiftees.value}"/> <iscomment>Dummy div overlay over checkout botton</iscomment> <div class="dummy-bonus-overlay-holder"> <isif condition="${!hideOverlayFlag && specialpromo!=null && specialpromo.ID!=null}"> <div class="continuecheckout_overlay"></div> </isif> </div> <isif condition="${pdict.clubOnlyError != true}"> <button class="button-fancy-large checkoutButton" type="submit" value="${Resource.msg('global.checkout','locale',null)}" name="${pdict.CurrentForms.cart.checkoutCart.htmlName}"> <span class="text-button">${Resource.msg('global.checkout','locale',null)}</span> <span></span> </button> </isif> <iselse/> <isif condition="${pdict.clubOnlyError != true}"> <button class="button-fancy-large checkoutButton" disabled="disabled" type="submit" value="${Resource.msg('global.checkout','locale',null)}" name="${pdict.CurrentForms.cart.checkoutCart.htmlName}"> <span class="text-button">${Resource.msg('global.checkout','locale',null)}</span> <span></span> </button> </isif> </isif> </fieldset> </form> <iselse/> <a class="button-fancy-large flyout-checkout" href="${URLUtils.url('Cart-Show')}"> <span class="text-button">${Resource.msg('global.checkout1','locale',null)}</span> <span></span> </a> </isif> <form class="cart-action-continue-shopping" action="${URLUtils.httpContinue()}" method="post" name="${pdict.CurrentForms.cart.dynamicHtmlName}" id="continue-shopping"> <fieldset> <button class="button-text" type="submit" value="${Resource.msg('global.continueshopping','locale',null)}" name="${pdict.CurrentForms.cart.continueShopping.htmlName}"> < ${Resource.msg('global.continueshopping','locale',null)} </button> </fieldset> </form> <isif condition="${miniFlyoutAction == 'addToCart'}"> <div class="addedToBag"><iscontentasset aid="addedToBag"></div> </isif> <iscomment>Added for paypal</iscomment> <isif condition="${dw.system.Site.getCurrent().preferences.custom.PayPalActive}"> <isinclude template="includes/cartinclude" /> </isif> </div> <div class="cart-footer"> <isslot id="cart-footer" description="Footer for Cart page" context="global" /> </div> <isif condition="${miniFlyoutAction == 'addToCart'}"> <isset name="analyticsProviders" value="${require('bc_providerAPI').getAnalyticsProvider()}" scope="page" /> <isloop items="${analyticsProviders}" var="analyticsProvider"> <isscript> var providerObj = new (analyticsProvider); </isscript> <isloop items="${providerObj.getFooterTemplate()}" var="footerTemplate" status="loopstate"> <isinclude template="${footerTemplate}"/> </isloop> </isloop> </isif> </isif> </isdecorate>