package it.acxent.cart.servlet; import it.acxent.cart.AcCartObject; import it.acxent.cart.Cart; import it.acxent.cart.CartStatus; import it.acxent.common.Users; import it.acxent.db.ResParm; import it.acxent.servlet.LogonSvlt; import it.acxent.servlet.SavedHttpRequest; import it.acxent.util.AbMessages; import java.util.StringTokenizer; import javax.servlet.RequestDispatcher; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public abstract class AcCartSvlt extends LogonSvlt { protected static String ACT_ADD_ONE = "one"; protected static String ACT_CHECK_OUT = "checkOut"; protected static String ACT_LOGIN = "login"; public static String CAL_CR = "cr"; public static String CAL_MD = "md"; public static String CAL_CAT = "cat"; protected static String JSP_CART = "cart.jsp"; protected static String ATTR_THE_PAGE = "thePage"; protected static String JSP_CHECKOUT = "checkOut.jsp"; protected static String JSP_CHECKOUT_NO_REG = "checkOutNoReg.jsp"; protected static String JSP_HOME = "index.jsp"; public static String JSP_LOSTPASSWORD = "lostPwd.jsp"; protected static String JSP_ORDER = "order.jsp"; protected static String JSP_ORDER_NO_REG = "orderNoReg.jsp"; protected static String ACT_LOSTPWD = "lostPwd"; public static String ATTR_CART = "cart"; public static String ATTR_CART_STATUS = "cartStatus"; public static String CMD_ADD_ITEMS = "addItems"; protected static String DEFAULT_CATALOG_SVLT = "/Catalogo.abl"; protected static String CMD_CHECK_CART = "checkCart"; protected static String CMD_CHECKOUT = "checkOut"; protected static String CMD_LOGOUT = "logout"; protected static String CMD_DELETE_CART = "deleteCart"; public static String CMD_DELETE_ITEM = "deleteItem"; protected static String CMD_MODIFY_ITEM = "modifyItem"; protected static String CMD_MODIFY_ITEMS = "modifyItems"; protected static String CMD_UPDATE_CART = "updateCart"; public static String PROP_ORDER = "bean"; public static String CMD_LOSTPWD = "lostPwd"; public static String ATTR_LOSTPWDEMAIL = "lostPwdEmail"; public static String CMD_ADD_ITEM = "addItem"; protected static String CMD_LOGON = "logon"; protected static String ACT_CHECK_OUT_NO_LOGIN = "checkOutNL"; protected static String CMD_CHECKOUT_NO_REG = "checkOutNoReg"; protected void addItems(HttpServletRequest req, HttpServletResponse res) {} protected void callJsp(HttpServletRequest req, HttpServletResponse res) { if (!getCal(req).isEmpty()) { setJspPageRelative(getCal(req), req); } else { setJspPageRelative("cart.jsp", req); } try { RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req)); rd.forward((ServletRequest)req, (ServletResponse)res); } catch (Exception e) { handleDebug(e); } } protected void checkCart(HttpServletRequest req, HttpServletResponse res) { try { Cart cart = getCart(req); if (cart.getNumberOfItems() == 0L) { String msg = "CheckCart: Il carrello è vuoto!"; handleDebug(msg); sendMessage(req, msg); callJsp(req, res); } else { Users utente = getLoginUser(req); if (utente != null && utente.getId_userProfile() == utente.getIdUserProfileNoReg()) { req.getSession().removeAttribute("utenteLogon"); req.getSession().removeAttribute("loginUser_id"); } afterCheckCart(req, res); } } catch (Exception e) { handleDebug(e); } } protected void checkOut(HttpServletRequest req, HttpServletResponse res) { CartStatus cartStatus = new CartStatus(); try { Cart cart = getCart(req); if (getAct(req).equals(ATTR_CART)) { if (cart.getNumberOfItems() == 0L) { String msg = "CheckOut: Si è tentato di utilizzare un carrello vuoto!!!!"; handleDebug(msg); forceMessage(req, msg); cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR); req.setAttribute(ATTR_CART_STATUS, cartStatus); setCart(req, cart); afterCheckCart(req, res); } else { cartStatus.setStatus(CartStatus.ST_OK); fillObject(req, cart); req.setAttribute(ATTR_CART, cart); req.setAttribute(ATTR_CART_STATUS, cartStatus); afterCheckOut(req, res); } } else if (getAct(req).equals(ACT_LOGIN)) { if (!getLogin(req).equals("")) if (checkLoginName(req, res) >= 5L) { if (!isFirstAccess(req)) { cartStatus.setStatus(CartStatus.ST_OK); } else { SavedHttpRequest shr = (SavedHttpRequest)req.getSession().getAttribute("savedHttpRequest"); if (shr == null) { shr = new SavedHttpRequest(); shr.setCompleteRequestedURI(req.getRequestURI()); shr.setServletPath(req.getServletPath()); shr.setAllParametersNAttributes(req); req.getSession().setAttribute("savedHttpRequest", shr); } forceJspPageRelative(getCheckCCPage(), req); RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req)); rd.forward((ServletRequest)req, (ServletResponse)res); } } else { sendMessage(req, AbMessages.getMessage(getLang(req), "LOGIN_FAIL")); } req.setAttribute(ATTR_CART_STATUS, cartStatus); getCart(req); afterCheckOut(req, res); } else if (getAct(req).equals(ACT_LOSTPWD)) { ResParm rp = sendLostPasswordMessage(req, res); if (!rp.getStatus()) sendMessage(req, rp.getMsg()); afterCheckOut(req, res); } else if (getAct(req).equals(ACT_CHECK_OUT)) { if (getLoginUser(req) != null) { if (cart.getNumberOfItems() == 0L) { handleDebug(AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY")); sendMessage(req, AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY")); cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR); req.setAttribute(ATTR_CART_STATUS, cartStatus); setCart(req, cart); afterCheckOut(req, res); } else if (checkAvailability(req) && !cart.areAllItemsAvailable()) { String msg = "CheckOut: Attenzione! Alcuni articoli non sono più disponibili!!!"; handleDebug(msg); forceMessage(req, msg); cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR); req.setAttribute(ATTR_CART_STATUS, cartStatus); setCart(req, cart); afterCheckCart(req, res); } else { fillObject(req, cart); setCart(req, cart); ResParm rp = recordOrder(req, res); if (rp.getStatus()) { if (sendCheckOutMessage(req, res).getStatus()) { cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK); } else { cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK_NO_MAIL); sendMessage(req, rp.getMsg()); } req.setAttribute(ATTR_CART_STATUS, cartStatus); removeCart(req); afterOrderRecorded(req, res); } else { sendMessage(req, rp.getMsg()); setJspPageRelative(getJspCheckOutPage(req), req); callJsp(req, res); } } } else { sendMessage(req, AbMessages.getMessage(getLang(req), "CART_NEED_LOGIN")); afterCheckOut(req, res); } } else if (getAct(req).equals(ACT_CHECK_OUT_NO_LOGIN)) { if (cart.getNumberOfItems() == 0L) { handleDebug(AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY")); sendMessage(req, AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY")); cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR); req.setAttribute(ATTR_CART_STATUS, cartStatus); setCart(req, cart); afterCheckOut(req, res); } else { fillObject(req, cart); setCart(req, cart); ResParm rp = recordOrder(req, res); if (rp.getStatus()) { if (sendCheckOutMessage(req, res).getStatus()) { cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK); } else { cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK_NO_MAIL); sendMessage(req, rp.getMsg()); } req.setAttribute(ATTR_CART_STATUS, cartStatus); removeCart(req); afterOrderRecorded(req, res); } else { sendMessage(req, rp.getMsg()); afterCheckOut(req, res); } } } } catch (Exception e) { handleDebug(e); sendMessage(req, e.getMessage()); callJsp(req, res); } } protected void logOut(HttpServletRequest req, HttpServletResponse res) { try { req.getSession().removeAttribute("utenteLogon"); req.getSession().removeAttribute("loginUser_id"); setJspPageRelative(JSP_HOME, req); _updateCart(req); callJsp(req, res); } catch (Exception e) { handleDebug(e); sendMessage(req, e.getMessage()); callJsp(req, res); } } protected void lostPasword(HttpServletRequest req, HttpServletResponse res) { try { CartStatus cs = new CartStatus(); ResParm rp = sendLostPasswordMessage(req, res); if (!rp.getStatus()) { forceMessage(req, rp.getMsg()); cs.setStatus(CartStatus.ST_LOSTPWD_SEND_ERROR); req.setAttribute(ATTR_CART_STATUS, cs); } else { forceMessage(req, rp.getMsg()); cs.setStatus(CartStatus.ST_LOSTPWD_SEND_OK); req.setAttribute(ATTR_CART_STATUS, cs); } req.setAttribute(ATTR_THE_PAGE, getRequestParameter(req, ATTR_THE_PAGE)); setJspPageRelative(getJspLostPasswordPage(req), req); callJsp(req, res); } catch (Exception e) { handleDebug(e); sendMessage(req, e.getMessage()); callJsp(req, res); } } protected void deleteCart(HttpServletRequest req, HttpServletResponse res) { try { removeCart(req); afterDeleteCart(req, res); } catch (Exception e) { handleDebug(e); } } protected void deleteItem(HttpServletRequest req, HttpServletResponse res) { try { AcCartObject aco = getCartObject(req); Cart cart = getCart(req); cart.remove(aco); setCart(req, cart); if (cart.getNumberOfItems() == 0L) { String msg = "Il carrello è vuoto!"; handleDebug(msg); sendMessage(req, msg); } afterDeleteItem(req, res); callJsp(req, res); } catch (Exception e) { handleDebug(e); } } protected String getAfterAddItemServlet(HttpServletRequest req) { return DEFAULT_CATALOG_SVLT; } protected Cart getCart(HttpServletRequest req) { HttpSession session = req.getSession(true); Cart cart = null; if (session.getAttribute(ATTR_CART) != null) { cart = (Cart)session.getAttribute(ATTR_CART); cart.setApplParmFull(getApFull(req)); updateDeliveryCost(cart, req); } else { cart = new Cart(getApFull(req)); updateDeliveryCost(cart, req); } if (cart != null) setCart(req, cart); return cart; } protected String getJspCartPage(HttpServletRequest req) { return JSP_CART; } protected String getJspCheckOutPage(HttpServletRequest req) { return JSP_CHECKOUT; } protected String getJspCheckOutNoRegPage(HttpServletRequest req) { return JSP_CHECKOUT_NO_REG; } protected String getJspHomePage(HttpServletRequest req) { return JSP_HOME; } protected String getJspLostPasswordPage(HttpServletRequest req) { return JSP_LOSTPASSWORD; } protected String getJspOrderPage(HttpServletRequest req) { return JSP_ORDER; } protected String getJspOrderPageNoReg(HttpServletRequest req) { return JSP_ORDER_NO_REG; } public abstract AcCartObject getCartObject(HttpServletRequest paramHttpServletRequest) throws Exception; protected String getCheckOutMailMessage() { return getParm(Cart.P_CHECKOUTMSG).getTesto(); } protected String getCheckOutMailMessage(String lang) { String temp = getParm(Cart.P_CHECKOUTMSG).getTesto(); if (lang != null && !lang.isEmpty()) { int dot = temp.lastIndexOf("."); if (dot > 0) temp = temp.substring(0, dot) + "_" + temp.substring(0, dot) + lang.toLowerCase(); } return temp; } protected String getLostPasswordMailMessage() { return getParm(Cart.P_CHECKOUTMSG).getTesto(); } protected boolean isUsePriceWithVat(HttpServletRequest req) { return !(getParm(Cart.P_USE_PRICE_WITH_VAT).getNumeroInt() == 0); } protected double getDeliveryCost(HttpServletRequest req, Cart cart) { return getParm(Cart.P_DELIVERY_COST).getNumeroDouble(); } protected boolean isCostoSpedizioneFull() { return getParm("CC_COSTO_SPED_FULL").isTrue(); } protected long getDeliveryIvaId(HttpServletRequest req) { return getParm(Cart.P_DELIVERY_IVA_ID).getNumeroLong(); } protected double getDeliveryIvaAliquota(HttpServletRequest req) { return getParm(Cart.P_DELIVERY_IVA_ALIQUOTA).getNumeroDouble(); } protected void modifyItem(HttpServletRequest req, HttpServletResponse res) { try { AcCartObject aco = getCartObject(req); Cart cart = getCart(req); if (aco.getId().equals("")); ResParm rp = cart.add(aco, checkAvailability(req)); if (!rp.getStatus()) sendMessage(req, rp.getMsg()); setCart(req, cart); afterModifyItems(req, res); } catch (Exception e) { handleDebug(e); } } protected void modifyItems(HttpServletRequest req, HttpServletResponse res) { try { AcCartObject aco = null; String l_id = ""; double l_quantita = 1.0D; Cart cart = getCart(req); String l_id_itemsVector = getRequestParameter(req, "id_itemsVector"); l_id_itemsVector = l_id_itemsVector.replace('\'', ' '); StringTokenizer st = new StringTokenizer(l_id_itemsVector, ","); while (st.hasMoreTokens()) { l_id = st.nextToken().trim(); req.setAttribute("id", l_id); aco = getCartObject(req); if (req.getParameter("qt_" + l_id) != null && !req.getParameter("qt_" + l_id).equals("")) l_quantita = getRequestDoubleParameter(req, "qt_" + l_id); aco.setQuantity(l_quantita); ResParm rp = cart.add(aco, checkAvailability(req)); if (!rp.getStatus()) sendMessage(req, rp.getMsg()); } setCart(req, cart); afterModifyItems(req, res); } catch (Exception e) { handleDebug(e); } } protected void otherCommands(HttpServletRequest req, HttpServletResponse res) { checkCart(req, res); } protected void processRequest(HttpServletRequest req, HttpServletResponse res) { String cmd = getCmd(req); forceJspPage("", req); if (cmd.equals(CMD_ADD_ITEM)) { addItem(req, res); } else if (cmd.equals(CMD_ADD_ITEMS)) { addItems(req, res); } else if (cmd.equals(CMD_MODIFY_ITEM)) { modifyItem(req, res); } else if (cmd.equals(CMD_MODIFY_ITEMS)) { modifyItems(req, res); } else if (cmd.equals(CMD_DELETE_ITEM)) { deleteItem(req, res); } else if (cmd.equals(CMD_DELETE_CART)) { deleteCart(req, res); } else if (cmd.equals(CMD_CHECK_CART)) { checkCart(req, res); } else if (cmd.startsWith(CMD_CHECKOUT_NO_REG)) { checkOutNoReg(req, res); } else if (cmd.startsWith(CMD_CHECKOUT)) { checkOut(req, res); } else if (cmd.equals(CMD_LOGOUT)) { logOut(req, res); } else if (cmd.equals(CMD_LOGON)) { logOn(req, res); } else if (cmd.equals(CMD_LOSTPWD)) { lostPasword(req, res); } else if (cmd.equals(CMD_UPDATE_CART)) { _updateCart(req); } else { ResParm rp = callCmdMethod(req, res); if (!rp.getStatus()) { if (!rp.getMsg().isEmpty()) sendMessage(req, rp.getMsg()); otherCommands(req, res); } } } protected abstract ResParm recordOrder(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse); protected void removeCart(HttpServletRequest req) { req.getSession(true).removeAttribute(ATTR_CART); } protected abstract ResParm sendCheckOutMessage(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse); protected abstract ResParm sendLostPasswordMessage(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse); protected void setCart(HttpServletRequest req, Cart cart) { cart.setApplParmFull(getApFull(req)); cart.setDeliveryCostSetted(false); req.getSession(true).setAttribute(ATTR_CART, cart); } protected void afterAddItem(HttpServletRequest req, HttpServletResponse res) { try { if (getCal(req).equals(CAL_CR)) { req.setAttribute("cmd", "search"); req.setAttribute("act", CAL_CR); RequestDispatcher rd = getServletContext().getRequestDispatcher(getAfterAddItemServlet(req)); rd.forward((ServletRequest)req, (ServletResponse)res); } else { req.setAttribute("cmd", "md"); req.setAttribute("act", CMD_ADD_ITEM); RequestDispatcher rd = getServletContext().getRequestDispatcher(getAfterAddItemServlet(req)); rd.forward((ServletRequest)req, (ServletResponse)res); } } catch (Exception e) { handleDebug(e); } } protected void afterCheckCart(HttpServletRequest req, HttpServletResponse res) { setJspPageRelative(getJspCartPage(req), req); try { callJsp(req, res); } catch (Exception e) { handleDebug(e); } } protected void afterCheckOut(HttpServletRequest req, HttpServletResponse res) { setJspPageRelative(getJspCheckOutPage(req), req); callJsp(req, res); } protected void afterDeleteCart(HttpServletRequest req, HttpServletResponse res) { setJspPageRelative(getJspHomePage(req), req); try { RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req)); rd.forward((ServletRequest)req, (ServletResponse)res); } catch (Exception e) { handleDebug(e); } } protected void afterDeleteItem(HttpServletRequest req, HttpServletResponse res) { try { checkCart(req, res); } catch (Exception e) { handleDebug(e); } } protected void afterModifyItems(HttpServletRequest req, HttpServletResponse res) { try { checkCart(req, res); } catch (Exception e) { handleDebug(e); } } protected void afterOrderRecorded(HttpServletRequest req, HttpServletResponse res) { setJspPageRelative(getJspOrderPage(req), req); callJsp(req, res); } protected void afterOrderRecordedNoReg(HttpServletRequest req, HttpServletResponse res) { setJspPageRelative(getJspOrderPageNoReg(req), req); callJsp(req, res); } protected boolean useControlCodeAccess() { return false; } protected boolean usePriceWithVat() { return true; } protected boolean useDeliveryCostOnUser() { return true; } protected boolean checkControlCode(HttpServletRequest req) { try { Users ute = (Users)req.getSession().getAttribute("utenteCC"); if (ute == null) return false; ute.findByPrimaryKey(new Long(ute.getId_users())); String controlCode = ""; if (req.getParameter("controlCode") != null && !req.getParameter("controlCode").equals("")) controlCode = req.getParameter("controlCode"); if (!ute.getControlCode().equals(controlCode)) { sendMessage(req, AbMessages.getMessage(getLocale(req), "CONTROL_CODE_FAIL")); handleDebug(AbMessages.getMessage(getLocale(req), "CONTROL_CODE_FAIL"), 2); setJspPageRelative(getCheckCCPage(), req); return false; } sendMessage(req, AbMessages.getMessage(getLocale(req), "CONTROL_CODE_OK")); handleDebug(AbMessages.getMessage(getLocale(req), "CONTROL_CODE_OK")); ute.setControlCode(""); ute.save(); req.getSession().removeAttribute("utenteCC"); req.getSession().setAttribute("utenteLogon", ute); req.getSession().setAttribute("loginUser_id", new Long(ute.getId_users())); return true; } catch (Exception e) { handleDebug(e); return false; } } protected String getCheckCCPage() { if (!getWebappResource("controlCodePage").equals("")) return getWebappResource("controlCodePage"); return "controlCode.jsp"; } protected boolean isFirstAccess(HttpServletRequest req) { if (useControlCodeAccess()) try { Users ute = (Users)req.getSession().getAttribute("utenteLogon"); ute.findByPrimaryKey(new Long(ute.getId_users())); if (!ute.getControlCode().equals("")) { req.getSession().removeAttribute("loginUser_id"); req.getSession().removeAttribute("utenteLogon"); req.getSession().setAttribute("utenteCC", ute); return true; } return false; } catch (Exception e) { handleDebug(e); return false; } return false; } protected double getMoreCost(HttpServletRequest req) { return getParm(Cart.P_MORE_COST).getNumeroDouble(); } protected void addItem(HttpServletRequest req, HttpServletResponse res) { try { AcCartObject aco = getCartObject(req); Cart cart = getCart(req); CartStatus cartStatus = new CartStatus(); String act = getAct(req); if (act.equals(ACT_ADD_ONE)) { ResParm rp = cart.quantityIncrement(aco, checkAvailability(req)); if (!rp.getStatus()) { sendMessage(req, rp.getMsg()); cartStatus.setStatus(22L); } else { cartStatus.setStatus(21L); } } else { ResParm rp = cart.add(aco, checkAvailability(req)); if (!rp.getStatus()) { sendMessage(req, rp.getMsg()); cartStatus.setStatus(22L); } else { cartStatus.setStatus(21L); } } req.setAttribute(ATTR_CART_STATUS, cartStatus); updateDeliveryCost(cart, req); setCart(req, cart); afterAddItem(req, res); } catch (Exception e) { handleDebug(e); } } protected double getDeliveryWarnCost(HttpServletRequest req) { return getParm(Cart.P_DELIVERY_WARN_COST).getNumeroDouble(); } protected void logOn(HttpServletRequest req, HttpServletResponse res) { try { String jspPage = getCal(req); if (jspPage.isEmpty()) jspPage = getJspHomePage(req); if (!getLogin(req).isEmpty()) if (checkLoginName(req, res) >= 5L) { _updateCart(req); if (isFirstAccess(req)) { SavedHttpRequest shr = (SavedHttpRequest)req.getSession().getAttribute("savedHttpRequest"); if (shr == null) { shr = new SavedHttpRequest(); shr.setCompleteRequestedURI(req.getRequestURI()); shr.setServletPath(req.getServletPath()); shr.setAllParametersNAttributes(req); req.getSession().setAttribute("savedHttpRequest", shr); } forceJspPageRelative(getCheckCCPage(), req); RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req)); rd.forward((ServletRequest)req, (ServletResponse)res); } else { setJspPageRelative(jspPage, req); callJsp(req, res); } } else { _updateCart(req); sendMessage(req, AbMessages.getMessage(getLang(req), "LOGIN_FAIL")); setJspPageRelative(jspPage, req); callJsp(req, res); } } catch (Exception e) { handleDebug(e); sendMessage(req, e.getMessage()); setJspPageRelative(getCal(req), req); callJsp(req, res); } } protected boolean checkAvailability(HttpServletRequest req) { return true; } public void _updateCart(HttpServletRequest req, HttpServletResponse res) { HttpSession session = req.getSession(true); session.setAttribute(ATTR_CART, getCart(req)); setJspPage(getLoginPage(req, res), req); RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req)); try { rd.forward((ServletRequest)req, (ServletResponse)res); } catch (Exception e) { handleDebug(e); e.printStackTrace(); } } protected void checkOutNoReg(HttpServletRequest req, HttpServletResponse res) { CartStatus cartStatus = new CartStatus(); try { Cart cart = getCart(req); if (getAct(req).equals(ATTR_CART)) { if (cart.getNumberOfItems() == 0L) { String msg = "CheckOut: Si è tentato di utilizzare un carrello vuoto!!!!"; handleDebug(msg); forceMessage(req, msg); cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR); req.setAttribute(ATTR_CART_STATUS, cartStatus); setCart(req, cart); forceJspPageRelative(getJspCheckOutPage(req), req); afterCheckCart(req, res); } else { cartStatus.setStatus(CartStatus.ST_OK); fillObject(req, cart); req.setAttribute(ATTR_CART, cart); req.setAttribute(ATTR_CART_STATUS, cartStatus); afterCheckOutNoReg(req, res); } } else if (getAct(req).equals(ACT_CHECK_OUT)) { if (cart.getNumberOfItems() == 0L) { handleDebug(AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY")); sendMessage(req, AbMessages.getMessage(getLang(req), "CART_SUBMIT_EMPTY")); cartStatus.setStatus(CartStatus.ST_CHECK_OUT_ERROR); req.setAttribute(ATTR_CART_STATUS, cartStatus); setCart(req, cart); afterCheckOut(req, res); } else { fillObject(req, cart); setCart(req, cart); ResParm rp = recordOrderNoReg(req, res); if (rp.getStatus()) { if (sendCheckOutMessage(req, res).getStatus()) { cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK); } else { cartStatus.setStatus(CartStatus.ST_CHECK_OUT_OK_NO_MAIL); sendMessage(req, rp.getMsg()); } req.setAttribute(ATTR_CART_STATUS, cartStatus); removeCart(req); afterOrderRecorded(req, res); } else { sendMessage(req, rp.getMsg()); forceJspPageRelative(getJspCheckOutNoRegPage(req), req); afterCheckOutNoReg(req, res); } } } } catch (Exception e) { handleDebug(e); sendMessage(req, e.getMessage()); callJsp(req, res); } } protected void afterCheckOutNoReg(HttpServletRequest req, HttpServletResponse res) { setJspPageRelative(getJspCheckOutNoRegPage(req), req); callJsp(req, res); } protected abstract ResParm recordOrderNoReg(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse); public void updateDeliveryCost(Cart cart, HttpServletRequest req) { Users users = getLoginUser(req); if (users == null || users.getId_users() == 0L) { cart.setId_users(0L); resetDeliveryIva(); cart.setDeliveryCost(getDeliveryCost(req, cart)); cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req)); cart.setId_ivaDelivery(getDeliveryIvaId(req)); } else { cart.setId_users(users.getId_users()); resetDeliveryIva(); if (useDeliveryCostOnUser()) { if (getLoginUserId(req) != null && getLoginUserId(req) != 0L) { cart.setDeliveryCost(getDeliveryCost(req, cart)); cart.setId_ivaDelivery(getDeliveryIvaId(req)); cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req)); cart.setDeliveryCostSetted(true); cart.setUsePriceWithVat(isUsePriceWithVat(req)); } System.out.println("updateDeliveryCost2: " + cart.getDeliveryCost()); } else { cart.setDeliveryCost(getDeliveryCost(req, cart)); cart.setId_ivaDelivery(getDeliveryIvaId(req)); cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req)); cart.setDeliveryCostSetted(true); cart.setUsePriceWithVat(isUsePriceWithVat(req)); } } } protected Cart getCartOldConDeliveryCostDentro(HttpServletRequest req) { HttpSession session = req.getSession(true); Cart cart = null; if (session.getAttribute(ATTR_CART) != null) { cart = (Cart)session.getAttribute(ATTR_CART); cart.setApplParmFull(getApFull(req)); if (useDeliveryCostOnUser()) { if (getLoginUserId(req) != null && getLoginUserId(req) != 0L) { cart.setDeliveryCost(getDeliveryCost(req, cart)); cart.setDeliveryCostSetted(true); cart.setId_ivaDelivery(getDeliveryIvaId(req)); cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req)); } } else { cart.setDeliveryCost(getDeliveryCost(req, cart)); cart.setId_ivaDelivery(getDeliveryIvaId(req)); cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req)); cart.setDeliveryCostSetted(true); cart.setUsePriceWithVat(isUsePriceWithVat(req)); } } else { cart = new Cart(getApFull(req)); if (!cart.isDeliveryCostSetted() && getDeliveryCost(req, cart) > 0.0D) { cart.setDeliveryCost(getDeliveryCost(req, cart)); cart.setId_ivaDelivery(getDeliveryIvaId(req)); cart.setAliquotaIvaDelivery(getDeliveryIvaAliquota(req)); cart.setDeliveryCostSetted(true); } } if (cart != null) { Users users = getLoginUser(req); if (users == null || users.getId_users() == 0L) { cart.setId_users(0L); cart.setDeliveryCost(0.0D); cart.setMoreCost(0.0D); cart.setDeliveryWarnCost(0.0D); cart.setId_ivaDelivery(0L); } else { cart.setId_users(users.getId_users()); } setCart(req, cart); } return cart; } public void _updateCart(HttpServletRequest req) { HttpSession session = req.getSession(true); session.setAttribute(ATTR_CART, getCart(req)); } public void _updateCartAfterLogin(HttpServletRequest req, HttpServletResponse res) { HttpSession session = req.getSession(true); session.setAttribute(ATTR_CART, getCart(req)); setJspPage(getLoginPage(req, res), req); RequestDispatcher rd = getServletContext().getRequestDispatcher(getJspPage(req)); try { rd.forward((ServletRequest)req, (ServletResponse)res); } catch (Exception e) { handleDebug(e); e.printStackTrace(); } } protected void resetDeliveryIva() {} }