1 14 package org.compiere.wstore; 15 16 import javax.servlet.*; 17 import javax.servlet.http.*; 18 import java.io.*; 19 import java.util.*; 20 import java.sql.*; 21 22 import org.apache.ecs.*; 23 import org.apache.ecs.xhtml.*; 24 import org.apache.log4j.Logger; 25 26 import org.compiere.util.*; 27 import org.compiere.model.*; 28 import org.compiere.www.*; 29 30 31 37 public class OrderServlet extends HttpServlet 38 { 39 40 private Logger log = Logger.getLogger(getClass()); 41 private static Logger s_log = Logger.getLogger(OrderServlet.class); 42 43 44 static public final String NAME = "orderServlet"; 45 46 52 public void init(ServletConfig config) 53 throws ServletException 54 { 55 super.init(config); 56 if (!WEnv.initWeb(config)) 57 throw new ServletException("OrderServlet.init"); 58 } 60 64 public String getServletInfo() 65 { 66 return "Compiere Web Order Servlet"; 67 } 69 72 public void destroy() 73 { 74 log.debug("destroy"); 75 } 77 78 79 89 public void doGet(HttpServletRequest request, HttpServletResponse response) 90 throws ServletException, IOException 91 { 92 log.info("doGet from " + request.getRemoteHost() + " - " + request.getRemoteAddr()); 93 doPost (request, response); 94 } 96 104 public void doPost (HttpServletRequest request, HttpServletResponse response) 105 throws ServletException, IOException 106 { 107 log.info("doPost from " + request.getRemoteHost() + " - " + request.getRemoteAddr()); 108 Properties ctx = JSPEnv.getCtx(request); 109 HttpSession session = request.getSession(true); 110 session.removeAttribute(JSPEnv.HDR_MESSAGE); 111 112 WebUser wu = (WebUser)session.getAttribute(WebUser.NAME); 114 WebBasket wb = (WebBasket)session.getAttribute(WebBasket.NAME); 115 116 String url = "paymentInfo.jsp"; 117 if (wu == null || !wu.isLoggedIn()) 119 { 120 session.setAttribute("CheckOut", "Y"); url = "login.jsp"; 122 } 123 else if (processOrder(request, ctx, wu)) 125 url = "orders.jsp"; 126 else if (wb == null || wb.getLineCount() == 0) 128 url = "basket.jsp"; 129 else 131 { 132 WebOrder wo = new WebOrder(wu, wb, ctx); 133 if (wo.isInProgress() || wo.isProcessed()) 135 { 136 session.removeAttribute(CheckOutServlet.ATTR_CHECKOUT); 137 session.removeAttribute(WebBasket.NAME); 138 sendEMail(request, ctx, wo, wu); 139 } 140 if (wo.getGrandTotal().compareTo(Env.ZERO) > 0) 142 { 143 session.setAttribute(WebOrder.NAME, wo); 144 MPayment p = createPayment (session, ctx, wu, wo); 145 if (p == null) 146 { 147 WUtil.createForwardPage(response, "Payment could not be created", "orders.jsp"); 148 return; 149 } 150 else 151 session.setAttribute (PaymentServlet.ATTR_PAYMENT, p); 152 } 153 else 154 { 155 url = "orders.jsp"; 156 } 157 } 158 159 log.info ("doPost - Forward to " + url); 160 RequestDispatcher dispatcher = getServletContext ().getRequestDispatcher (url); 161 dispatcher.forward (request, response); 162 } 164 165 166 174 private MPayment createPayment(HttpSession session, Properties ctx, 175 WebUser wu, WebOrder wo) 176 { 177 MPayment p = new MPayment(ctx, 0); 179 p.setIsSelfService(true); 180 p.setAmount (wo.getC_Currency_ID(), wo.getGrandTotal ()); p.setIsOnline (true); 182 p.setC_DocType_ID(true); 184 p.setTrxType(MPayment.TRXTYPE_Sales); 185 p.setTenderType(MPayment.TENDERTYPE_CreditCard); 186 p.setBP_BankAccount(wu.getBankAccount()); 190 return p; 192 } 194 201 private boolean processOrder (HttpServletRequest request, Properties ctx, WebUser wu) 202 { 203 String para = request.getParameter("C_Order_ID"); 204 String DocAction = request.getParameter("DocAction"); 205 if (para == null || para.length() == 0 || DocAction == null || DocAction.length() == 0) 206 return false; 207 int C_Order_ID = 0; 208 try 209 { 210 C_Order_ID = Integer.parseInt (para); 211 } 212 catch (NumberFormatException ex) 213 { 214 } 215 if (C_Order_ID == 0) 216 return false; 217 218 log.debug("processOrder - C_Order_ID=" + C_Order_ID + ", DocAction=" + DocAction); 220 if (!(MOrder.DOCACTION_Complete.equals(DocAction) || MOrder.DOCACTION_Void.equals(DocAction))) 221 { 222 log.warn("processOrder - C_Order_ID=" + C_Order_ID + ", Invalid DocAction=" + DocAction); 223 return true; 224 } 225 MOrder order = new MOrder (ctx, C_Order_ID); 226 order.process(DocAction); 228 229 return true; 230 } 232 233 240 private void sendEMail (HttpServletRequest request, Properties ctx, WebOrder wo, WebUser wu) 241 { 242 String subject = "Compiere Web - Order " + wo.getDocumentNo(); 243 String message = "Thank you for your purchase." 244 + "\nYou can view your order, invoices and open amounts at" 245 + "\nhttp://" + request.getServerName() + request.getContextPath() + "/" 246 + "\n\nOrder " + wo.getDocumentNo() + " - Amount " + wo.getGrandTotal() 247 + "\n"; 248 MOrder mo = wo.getOrder(); 250 if (mo != null) 251 { 252 MOrderLine[] ol = mo.getLines(); 253 if (ol != null) 254 { 255 for (int i = 0; i < ol.length; i++) 256 { 257 message += "\n" + ol[i].getQtyOrdered() + " * " + ol[i].getName(); 258 if (ol[i].getDescription() != null) 259 message += " - " + ol[i].getDescription(); 260 message += " (" + ol[i].getPriceActual() + ") = " + ol[i].getLineNetAmt(); 261 } } } 265 String SMTPHost = ctx.getProperty("SMTPHost", "localhost"); 266 String RequestEMail = ctx.getProperty("RequestEMail"); 267 String RequestUser = ctx.getProperty("RequestUser"); 268 String RequestUserPw = ctx.getProperty("RequestUserPw"); 269 EMail em = new EMail(SMTPHost, RequestEMail, wu.getEmail(), subject, message.toString()); 271 em.setEMailUser(RequestUser, RequestUserPw); 272 String webOrderEMail = ctx.getProperty("webOrderEMail"); 274 em.addBcc(webOrderEMail); 275 em.send(); 277 } 279 280 } | Popular Tags |