@RequestMapping(value = "/viewCart.htm", params = "addPromo", method = RequestMethod.POST)
  public String addPromoCode(
      @ModelAttribute(value = "cartSummary") CartSummary cartSummary,
      ModelMap model,
      HttpServletRequest request)
      throws PricingException {
    Order currentCartOrder = retrieveCartOrder(request, model);

    if (cartSummary.getPromoCode() != null) {
      OfferCode code = offerService.lookupOfferCodeByCode(cartSummary.getPromoCode());

      if (code != null) {
        try {
          currentCartOrder = cartService.addOfferCode(currentCartOrder, code, true);
        } catch (OfferMaxUseExceededException e) {
          model.addAttribute("error", "Promotion Max Uses Exceeded");
        }
        currentCartOrder = updateFulfillmentGroups(cartSummary, currentCartOrder);
      } else {
        model.addAttribute("promoError", "Invalid promo code entered.");
      }
    }

    cartSummary.setPromoCode(null);
    model.addAttribute("currentCartOrder", currentCartOrder);
    model.addAttribute("cartSummary", cartSummary);
    return cartView;
  }