@RequestMapping(value = BoUrls.PRODUCT_MARKETING_EDIT_URL, method = RequestMethod.GET)
  public ModelAndView productMarketingEdit(
      final HttpServletRequest request, final HttpServletResponse response, ModelMap modelMap)
      throws Exception {
    ModelAndViewThemeDevice modelAndView =
        new ModelAndViewThemeDevice(
            getCurrentVelocityPath(request), BoUrls.PRODUCT_MARKETING_EDIT.getVelocityPage());

    final MarketArea currentMarketArea = requestUtil.getCurrentMarketArea(request);
    final Retailer currentRetailer = requestUtil.getCurrentRetailer(request);

    final String productMarketingCode =
        request.getParameter(RequestConstants.REQUEST_PARAMETER_PRODUCT_MARKETING_CODE);
    final ProductMarketing productMarketing =
        productMarketingService.getProductMarketingByCode(
            currentMarketArea.getId(), currentRetailer.getId(), productMarketingCode);

    // "business.product.marketing.edit";

    initProductMarketingModelAndView(request, modelAndView, productMarketing);
    modelAndView.addObject(
        "productMarketingForm", formFactory.buildProductMarketingForm(request, productMarketing));
    initSpecificSeo(request, modelAndView, "", productMarketing.getBusinessName());

    //		modelAndView.addObject("productMarketingDetails",
    // viewBeanFactory.buildUserEditViewBean(request, currentLocalization, user));

    return modelAndView;
  }
  @RequestMapping(value = BoUrls.PRODUCT_MARKETING_EDIT_URL, method = RequestMethod.POST)
  public ModelAndView productMarketingEdit(
      final HttpServletRequest request,
      final HttpServletResponse response,
      @Valid ProductMarketingForm productMarketingForm,
      BindingResult result,
      ModelMap modelMap)
      throws Exception {
    final MarketArea currentMarketArea = requestUtil.getCurrentMarketArea(request);
    final Retailer currentRetailer = requestUtil.getCurrentRetailer(request);
    final String productMarketingCode = productMarketingForm.getCode();

    String urlRedirect =
        backofficeUrlService.generateUrl(BoUrls.HOME, requestUtil.getRequestData(request));

    if (StringUtils.isNotEmpty(productMarketingCode)) {
      if (result.hasErrors()) {
        return productMarketingEdit(request, response, modelMap);
      }

      // SANITY CHECK
      final ProductMarketing productMarketing =
          productMarketingService.getProductMarketingByCode(
              currentMarketArea.getId(), currentRetailer.getId(), productMarketingCode);
      if (productMarketing != null) {
        // UPDATE PRODUCT MARKETING
        webBackofficeService.updateProductMarketing(productMarketing, productMarketingForm);

      } else {
        // CREATE PRODUCT MARKETING
        webBackofficeService.createProductMarketing(productMarketing, productMarketingForm);
      }

      urlRedirect =
          backofficeUrlService.generateUrl(
              BoUrls.PRODUCT_MARKETING_DETAILS,
              requestUtil.getRequestData(request),
              productMarketing);
    }

    return new ModelAndView(new RedirectView(urlRedirect));
  }
  @RequestMapping(value = BoUrls.PRODUCT_MARKETING_DETAILS_URL, method = RequestMethod.GET)
  public ModelAndView productMarketingDetails(
      final HttpServletRequest request, final HttpServletResponse response) throws Exception {
    ModelAndViewThemeDevice modelAndView =
        new ModelAndViewThemeDevice(
            getCurrentVelocityPath(request), BoUrls.PRODUCT_MARKETING_DETAILS.getVelocityPage());

    final MarketArea currentMarketArea = requestUtil.getCurrentMarketArea(request);
    final Retailer currentRetailer = requestUtil.getCurrentRetailer(request);
    final String productMarketingCode =
        request.getParameter(RequestConstants.REQUEST_PARAMETER_PRODUCT_MARKETING_CODE);
    final ProductMarketing productMarketing =
        productMarketingService.getProductMarketingByCode(
            currentMarketArea.getId(), currentRetailer.getId(), productMarketingCode);

    // "business.product.marketing.details";
    initProductMarketingModelAndView(request, modelAndView, productMarketing);
    initSpecificSeo(request, modelAndView, "", productMarketing.getBusinessName());

    return modelAndView;
  }