⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orderservlet.java

📁 Java写的ERP系统
💻 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 + -