KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > wstore > OrderServlet


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Smart Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2003 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

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 /**
32  * Web Order.
33  *
34  * @author Jorg Janke
35  * @version $Id: OrderServlet.java,v 1.16 2003/09/05 04:55:42 jjanke Exp $
36  */

37 public class OrderServlet extends HttpServlet
38 {
39     /** Logging */
40     private Logger log = Logger.getLogger(getClass());
41     private static Logger s_log = Logger.getLogger(OrderServlet.class);
42
43     /** Name */
44     static public final String JavaDoc NAME = "orderServlet";
45
46     /**
47      * Initialize global variables
48      *
49      * @param config Configuration
50      * @throws ServletException
51      */

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     } // init
59

60     /**
61      * Get Servlet information
62      * @return Info
63      */

64     public String JavaDoc getServletInfo()
65     {
66         return "Compiere Web Order Servlet";
67     } // getServletInfo
68

69     /**
70      * Clean up resources
71      */

72     public void destroy()
73     {
74         log.debug("destroy");
75     } // destroy
76

77     /*************************************************************************/
78
79     /**
80      * Process the HTTP Get request.
81      * (logout, deleteCookie)
82      * Sends Web Request Page
83      *
84      * @param request request
85      * @param response response
86      * @throws ServletException
87      * @throws IOException
88      */

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     } // doGet
95

96     /**
97      * Process the HTTP Post request
98      *
99      * @param request request
100      * @param response response
101      * @throws ServletException
102      * @throws IOException
103      */

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         // Web User/Basket
113
WebUser wu = (WebUser)session.getAttribute(WebUser.NAME);
114         WebBasket wb = (WebBasket)session.getAttribute(WebBasket.NAME);
115
116         String JavaDoc url = "paymentInfo.jsp";
117         // Not logged in
118
if (wu == null || !wu.isLoggedIn())
119         {
120             session.setAttribute("CheckOut", "Y"); // indicate checkout
121
url = "login.jsp";
122         }
123         // Process Existing Order
124
else if (processOrder(request, ctx, wu))
125             url = "orders.jsp";
126         // Nothing in basket
127
else if (wb == null || wb.getLineCount() == 0)
128             url = "basket.jsp";
129         // Create Order & Payment Info
130
else
131         {
132             WebOrder wo = new WebOrder(wu, wb, ctx);
133             // We have an order - do delete basket & checkout indicator
134
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 the Order is negative, don't create a payment
141
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     } // doPost
163

164     /*************************************************************************/
165
166     /**
167      * Create Payment, but don't save it
168      * @param session session
169      * @param ctx context
170      * @param wu web user
171      * @param wo Order
172      * @return Payment
173      */

174     private MPayment createPayment(HttpSession session, Properties ctx,
175         WebUser wu, WebOrder wo)
176     {
177         // See PaymentServlet.doGet
178
MPayment p = new MPayment(ctx, 0);
179         p.setIsSelfService(true);
180         p.setAmount (wo.getC_Currency_ID(), wo.getGrandTotal ()); // for CC selection
181
p.setIsOnline (true);
182         // Sales CC Trx
183
p.setC_DocType_ID(true);
184         p.setTrxType(MPayment.TRXTYPE_Sales);
185         p.setTenderType(MPayment.TENDERTYPE_CreditCard);
186         // Order Info
187
// p.setC_Invoice_ID(wo.getInvoice_ID());
188
// BP Info
189
p.setBP_BankAccount(wu.getBankAccount());
190         //
191
return p;
192     } // createPayment
193

194     /**
195      * Process Order
196      * @param request request
197      * @param ctx context
198      * @param wu web user
199      * @return true if processed
200      */

201     private boolean processOrder (HttpServletRequest request, Properties ctx, WebUser wu)
202     {
203         String JavaDoc para = request.getParameter("C_Order_ID");
204         String JavaDoc 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 JavaDoc ex)
213         {
214         }
215         if (C_Order_ID == 0)
216             return false;
217
218         // We have a Order No & DocAction
219
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     // if (order.isSelfService())
227
order.process(DocAction);
228
229         return true;
230     } // processOrder
231

232
233     /**
234      * Send Order EMail.
235      * @param request request
236      * @param ctx context
237      * @param wo web order
238      * @param wu web user
239      */

240     private void sendEMail (HttpServletRequest request, Properties ctx, WebOrder wo, WebUser wu)
241     {
242         String JavaDoc subject = "Compiere Web - Order " + wo.getDocumentNo();
243         String JavaDoc 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         //
249
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                 } // line
262
} // lines
263
} // order
264

265         String JavaDoc SMTPHost = ctx.getProperty("SMTPHost", "localhost");
266         String JavaDoc RequestEMail = ctx.getProperty("RequestEMail");
267         String JavaDoc RequestUser = ctx.getProperty("RequestUser");
268         String JavaDoc RequestUserPw = ctx.getProperty("RequestUserPw");
269         //
270
EMail em = new EMail(SMTPHost, RequestEMail, wu.getEmail(), subject, message.toString());
271         em.setEMailUser(RequestUser, RequestUserPw);
272         //
273
String JavaDoc webOrderEMail = ctx.getProperty("webOrderEMail");
274         em.addBcc(webOrderEMail);
275         //
276
em.send();
277     } // sendEMail
278

279
280 } // OrderServlet
281
Popular Tags