📄 orderservlet.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2003 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.wstore;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import org.apache.ecs.*;
import org.apache.ecs.xhtml.*;
import org.apache.log4j.Logger;
import org.compiere.util.*;
import org.compiere.model.*;
import org.compiere.www.*;
/**
* Web Order.
*
* @author Jorg Janke
* @version $Id: OrderServlet.java,v 1.8 2003/05/04 06:47:27 jjanke Exp $
*/
public class OrderServlet extends HttpServlet
{
/** Logging */
private Logger log = Logger.getLogger(getClass());
private static Logger s_log = Logger.getLogger(OrderServlet.class);
/** Name */
static public final String NAME = "orderServlet";
public static final String BANKACCOUNT_ATTR = "bankAccount";
/**
* Initialize global variables
*
* @param config Configuration
* @throws ServletException
*/
public void init(ServletConfig config)
throws ServletException
{
super.init(config);
if (!WEnv.initWeb(config))
throw new ServletException("OrderServlet.init");
} // init
/**
* Get Servlet information
* @return Info
*/
public String getServletInfo()
{
return "Compiere Web Order Servlet";
} // getServletInfo
/**
* Clean up resources
*/
public void destroy()
{
log.debug("destroy");
} // destroy
/*************************************************************************/
/**
* Process the HTTP Get request.
* (logout, deleteCookie)
* Sends Web Request Page
*
* @param request request
* @param response response
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
log.info("doGet from " + request.getRemoteHost() + " - " + request.getRemoteAddr());
doPost (request, response);
} // doGet
/**
* Process the HTTP Post request
*
* @param request request
* @param response response
* @throws ServletException
* @throws IOException
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
log.info("doPost from " + request.getRemoteHost() + " - " + request.getRemoteAddr());
Properties ctx = JSPEnv.getCtx(request);
HttpSession session = request.getSession(true);
// Web User/Basket
WebUser wu = (WebUser)session.getAttribute(WebUser.NAME);
WebBasket wb = (WebBasket)session.getAttribute(WebBasket.NAME);
String url = "paymentInfo.jsp";
// Nothing in basket
if (wb == null || wb.getLineCount() == 0)
url = "basket.jsp";
// Not logged in
else if (wu == null || !wu.isLoggedIn())
{
session.setAttribute("CheckOut", "Y"); // indicate checkout
url = "login.jsp";
}
// Create Order & Payment Info
else
{
WebOrder wo = new WebOrder(wu, wb, ctx);
session.setAttribute(WebOrder.NAME, wo);
// We have an order - do delete basket & checkout indicator
if (wo.isProcessed())
{
session.removeAttribute(CheckOutServlet.ATTR_CHECKOUT);
session.removeAttribute(WebBasket.NAME);
sendEMail(request, ctx, wo, wu);
}
//
createPayment(session, ctx, wu, wo);
}
log.info ("doPost - Forward to " + url);
RequestDispatcher dispatcher = getServletContext ().getRequestDispatcher (url);
dispatcher.forward (request, response);
} // doPost
/**
* Create Payment
* @param session session
* @param ctx context
* @param wu web user
* @param wo Order
*/
private void createPayment(HttpSession session, Properties ctx, WebUser wu,
WebOrder wo)
{
// See PaymentServlet.doGet
MPayment p = new MPayment(ctx, 0);
// Bank Account
MBankAccount ba = getBankAccount(session, ctx);
ba.setPayAmt(wo.getGrandTotal()); // for CC selection
p.setC_BankAccount_ID(ba.getC_BankAccount_ID());
p.setC_Currency_ID(ba.getC_Currency_ID());
p.setOnline(true);
// Sales CC Trx
p.setC_DocType_ID(true);
p.setTrxType(MPayment.TRX_SALES);
p.setTenderType(MPayment.TENDER_CREDITCARD);
// Order Info
p.setPayAmt(wo.getGrandTotal());
p.setC_Invoice_ID(wo.getInvoice_ID());
// BP Info
p.setBP_BankAccount(wu.getBankAccount());
//
// p.save();
session.setAttribute (PaymentServlet.ATTR_PAYMENT, p);
} // createPayment
/**
* Get Bank Account
* @param session session
* @param ctx context
* @return bank account
*/
static protected MBankAccount getBankAccount(HttpSession session, Properties ctx)
{
MBankAccount ba = (MBankAccount)session.getAttribute(BANKACCOUNT_ATTR);
if (ba != null)
return ba;
int AD_Client_ID = Env.getContextAsInt(ctx, "#AD_Client_ID");
int C_BankAccount_ID = Env.getContextAsInt(ctx, "#C_BankAccount_ID");
if (C_BankAccount_ID != 0)
ba = new MBankAccount (ctx, C_BankAccount_ID);
else
{
String sql = "SELECT * FROM C_BankAccount ba "
+ "WHERE ba.AD_Client_ID=?"
+ " AND EXISTS (SELECT * FROM C_PaymentProcessor pp WHERE ba.C_BankAccount_ID=pp.C_BankAccount_ID)"
+ " AND ba.IsActive='Y'";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql);
pstmt.setInt(1, AD_Client_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
ba = new MBankAccount (ctx, rs);
rs.close();
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
s_log.error("setBankAccount", e);
}
finally
{
try
{
if (pstmt != null)
pstmt.close ();
}
catch (Exception e)
{}
pstmt = null;
}
}
s_log.debug("getBankAccount - " + ba + " - AD_Client_ID=" + AD_Client_ID);
session.setAttribute (BANKACCOUNT_ATTR, ba);
return ba;
} // setBankAccount
/**
* Send Order EMail.
* @param request request
* @param ctx context
* @param wo web order
* @param wu web user
*/
private void sendEMail (HttpServletRequest request, Properties ctx, WebOrder wo, WebUser wu)
{
String subject = "Compiere Web - Order " + wo.getDocumentNo();
StringBuffer message = new StringBuffer("Thank you for your purchase.\nYou can view your order, invoices and open amounts at\nhttp://")
.append(request.getServerName()).append(request.getContextPath())
.append("/\n\nOrder ").append(wo.getDocumentNo())
.append(" - Amount ").append(wo.getGrandTotal())
.append("\n");
//
MOrder mo = wo.getOrder();
if (mo != null)
{
MOrderLine[] ol = mo.getLines();
if (ol != null)
{
for (int i = 0; i < ol.length; i++)
{
message.append("\n").append(ol[i].getQtyOrdered()).append(" * ")
.append(ol[i].getName());
if (ol[i].getDescription() != null)
message.append(" - ").append(ol[i].getDescription());
message.append(" (").append(ol[i].getPriceActual())
.append(") ").append(ol[i].getLineNetAmt());
} // line
} // lines
} // order
String SMTPHost = ctx.getProperty("SMTPHost", "localhost");
String RequestEMail = ctx.getProperty("RequestEMail");
String RequestUser = ctx.getProperty("RequestUser");
String RequestUserPw = ctx.getProperty("RequestUserPw");
//
EMail em = new EMail(SMTPHost, RequestEMail, wu.getEmail(), subject, message.toString());
em.setEMailUser(RequestUser, RequestUserPw);
//
String webOrderEMail = ctx.getProperty("webOrderEMail");
em.addBcc(webOrderEMail);
//
em.send();
/**
Name=GardenWorld
webDir=compiere,
Description=GardenWorld
**/
} // sendEMail
} // OrderServlet
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -