1 package com.dotmarketing.cms.product.action; 2 3 4 import java.util.List ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 import javax.servlet.http.HttpSession ; 9 10 import org.apache.struts.action.ActionForm; 11 import org.apache.struts.action.ActionForward; 12 import org.apache.struts.action.ActionMapping; 13 import org.apache.struts.actions.DispatchAction; 14 15 import com.dotmarketing.cms.product.model.Holder; 16 import com.dotmarketing.cms.product.model.ShoppingCart; 17 import com.dotmarketing.portlets.discountcode.model.DiscountCode; 18 import com.dotmarketing.portlets.order_manager.struts.OrderForm; 19 import com.dotmarketing.portlets.product.model.ProductFormat; 20 import com.dotmarketing.portlets.product.model.ProductPrice; 21 import com.dotmarketing.util.CalculateShippingAndHandling; 22 import com.dotmarketing.util.Config; 23 import com.dotmarketing.util.UtilMethods; 24 import com.dotmarketing.util.WebKeys; 25 import com.dotmarketing.viewtools.ProductWebAPI; 26 27 public class ReviewOrderAction extends DispatchAction 28 { 29 protected ActionForward unspecified(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception 30 { 31 ActionForward af = mapping.findForward("reviewOrder"); 32 return af; 33 } 34 35 public ActionForward loadAmounts(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception 36 { 37 HttpSession session = request.getSession(); 38 boolean isPartner = false; 40 if (session.getAttribute("isPartner") != null && 41 session.getAttribute("isPartner").equals("true")) 42 { 43 isPartner = true; 44 } 45 46 OrderForm orderForm =(OrderForm) lf; 47 48 ShoppingCart shoppingCart = (ShoppingCart)session.getAttribute(WebKeys.SHOPPING_CART); 49 if (shoppingCart == null) 50 { 51 shoppingCart = new ShoppingCart(); 52 session.setAttribute(WebKeys.SHOPPING_CART,shoppingCart); 53 } 54 List <Holder> holders = shoppingCart.getHolders(); 55 List <DiscountCode> discounts = shoppingCart.getDiscountCodes(); 56 float orderSubTotal = 0F; 58 for(Holder holder : holders) 59 { 60 ProductFormat format = holder.getFormat(); 61 int quantity = holder.getQuantity(); 62 ProductPrice productPrice = format.getQuantityPrice(quantity,discounts); 63 float price = (isPartner) ? productPrice.getPartnerPrice() : productPrice.getRetailPrice(); 64 holder.setPrice(price); 66 float lineTotal = quantity * price; 67 orderSubTotal += lineTotal; 68 holder.setLineTotal(lineTotal); 69 } 70 orderForm.setOrderSubTotal(orderSubTotal); 71 String discountCodes = ""; 72 for(DiscountCode discount : discounts) 73 { 74 discountCodes += discount.getCodeId() + ":"; 75 } 76 if (UtilMethods.isSet(discountCodes)) 77 { 78 discountCodes = discountCodes.substring(0,discountCodes.lastIndexOf(":")); 79 } 80 81 orderForm.setDiscountCodes(discountCodes); 82 83 float orderDiscount = 0; 85 ProductWebAPI pwa = new ProductWebAPI(); 86 orderDiscount = pwa.getTotalApplicableDiscount(holders,discounts,isPartner); 87 orderForm.setOrderDiscount(orderDiscount); 88 89 float orderSubTotalDiscount = orderSubTotal - orderDiscount; 91 orderSubTotalDiscount = (orderSubTotalDiscount < 0 ? 0 : orderSubTotalDiscount); 92 orderForm.setOrderSubTotalDiscount(orderSubTotalDiscount); 93 orderForm.setOrderSubTotalDiscount(orderSubTotalDiscount); 95 float orderTax = 0; 97 if (orderForm.getBillingState() != null){ 98 if (orderForm.getBillingState().equals("FL") && !UtilMethods.isSet(orderForm.getTaxExemptNumber())) 99 { 100 orderTax = ((float) Math.round(orderSubTotalDiscount * 6.5)) / ((float) 100); 101 } 102 } 103 orderForm.setOrderTax(orderTax); 104 105 float orderShippingValue = _shippingValue(mapping,lf,request,response); 107 orderForm.setOrderShipping(orderShippingValue); 108 109 if (orderForm.getShippingCountry() != null){ 111 if (!(orderForm.getShippingCountry().equals(Config.getStringProperty("DEFAULT_COUNTRY_CODE")))){ 112 orderForm.setIsShippingZero(true); 113 } 114 } 115 else 116 orderForm.setIsShippingZero(_calculateShipping(mapping,lf,request,response)); 117 118 float orderTotal = orderSubTotalDiscount + orderTax + orderShippingValue; 120 orderForm.setOrderTotal(orderTotal); 121 122 generateToken(request); 124 saveToken(request); 125 126 ActionForward af = mapping.findForward("reviewOrder"); 127 return af; 128 } 129 130 public ActionForward validate(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception 131 { 132 return loadAmounts(mapping,lf,request,response); 133 } 134 135 136 private float _shippingValue(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception 137 { 138 OrderForm orderForm = (OrderForm) lf; 139 float shippingValue = 0; 140 141 ShoppingCart shoppingCart = (ShoppingCart) request.getSession().getAttribute(WebKeys.SHOPPING_CART); 142 if (orderForm.getShippingCountry() != null){ 143 if (orderForm.getShippingCountry().equals(Config.getStringProperty("DEFAULT_COUNTRY_CODE"))) 144 shippingValue = CalculateShippingAndHandling.calculateShippingAndHandling(shoppingCart, orderForm.getOrderShipType(),orderForm.getShippingZip()); 145 else 146 { 147 shippingValue = CalculateShippingAndHandling.calculateHandling(shoppingCart); 148 orderForm.setIsShippingZero(true); 149 } 150 } 151 else 152 shippingValue = CalculateShippingAndHandling.calculateShippingAndHandling(shoppingCart, orderForm.getOrderShipType(), orderForm.getShippingZip()); 153 154 return shippingValue; 155 } 156 157 private boolean _calculateShipping(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception 158 { 159 OrderForm orderForm = (OrderForm) lf; 160 float shippingValue = 0; 161 boolean retVal = false; 162 163 ShoppingCart shoppingCart = (ShoppingCart) request.getSession().getAttribute(WebKeys.SHOPPING_CART); 164 shippingValue = CalculateShippingAndHandling.calculateShipping(shoppingCart, orderForm.getOrderShipType(), orderForm.getShippingZip()); 165 166 if (shippingValue == 0.0) 167 retVal = true; 168 return retVal; 169 } 170 } 171 | Popular Tags |