KickJava   Java API By Example, From Geeks To Geeks.

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


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 java.util.*;
17 import java.sql.*;
18 import java.math.*;
19
20 import org.apache.log4j.Logger;
21
22 import org.compiere.model.*;
23 import org.compiere.util.DB;
24 import org.compiere.util.Env;
25 import org.compiere.www.*;
26
27 /**
28  * Web Order
29  *
30  * @author Jorg Janke
31  * @version $Id: WebOrder.java,v 1.16 2003/09/07 06:15:16 jjanke Exp $
32  */

33 public class WebOrder
34 {
35     /**
36      * Constructor
37      * @param wu web User
38      * @param wb web basket
39      * @param ctx context
40      */

41     public WebOrder(WebUser wu, WebBasket wb, Properties ctx)
42     {
43         m_ctx = ctx;
44         createOrder (wu, wb);
45     } // WebOrder
46

47     /** Attribute Name */
48     public static final String JavaDoc NAME = "webOrder";
49     /** Logging */
50     private Logger log = Logger.getLogger(getClass());
51     /** Order */
52     private MOrder m_order;
53     /** Context */
54     private Properties m_ctx;
55
56
57     /**
58      * Create Order from Basket
59      * @param wu web User
60      * @param wb web basket
61      * @return true if created & processed
62      */

63     private boolean createOrder (WebUser wu, WebBasket wb)
64     {
65         log.debug("createOrder");
66         //
67
m_order = new MOrder (m_ctx, 0);
68         log.debug("createOrder - AD_Client_ID=" + m_order.getAD_Client_ID()
69             + ",AD_Org_ID=" + m_order.getAD_Org_ID() + " - " + m_ctx + " - " + m_order);
70         //
71
m_order.setC_DocTypeTarget_ID(MOrder.DocSubTypeSO_Prepay);
72         m_order.setPaymentRule(MOrder.PAYMENTRULE_CreditCard);
73         m_order.setDeliveryRule(MOrder.DELIVERYRULE_AfterReceipt);
74         m_order.setInvoiceRule(MOrder.INVOICERULE_Immediate);
75         m_order.setIsSelfService(true);
76         if (wb.getM_PriceList_ID() > 0)
77             m_order.setM_PriceList_ID(wb.getM_PriceList_ID());
78
79         // BPartner
80
m_order.setC_BPartner_ID(wu.getC_BPartner_ID());
81         m_order.setBillTo_ID(wu.getC_BPartner_Location_ID());
82         m_order.setC_BPartner_Location_ID(wu.getC_BPartner_Location_ID());
83         m_order.setAD_User_ID(wu.getAD_User_ID());
84         //
85
m_order.setSendEMail(true);
86         m_order.setDocAction(MOrder.DOCACTION_Process);
87         m_order.save();
88         log.debug ("createOrder - ID=" + m_order.getC_Order_ID()
89             + ", DocNo=" + m_order.getDocumentNo());
90
91         ArrayList lines = wb.getLines();
92         for (int i = 0; i < lines.size(); i++)
93         {
94             WebBasketLine wbl = (WebBasketLine)lines.get(i);
95             MOrderLine ol = new MOrderLine(m_order);
96             ol.setM_Product_ID(wbl.getM_Product_ID());
97             ol.setQtyOrdered(wbl.getQuantity());
98             ol.setPrice();
99             ol.setPriceActual(wbl.getPrice());
100             ol.setTax();
101             ol.save();
102         } // for all lines
103
boolean ok = m_order.process(MOrder.DOCACTION_Process);
104
105         // Web User = Customer
106
if (!wu.isCustomer())
107         {
108         // log.info("-------------------------------------- " + wu.isCustomer());
109
wu.setIsCustomer(true);
110             wu.save();
111         // log.info("-------------------------------------- " + wu.isCustomer());
112
}
113         BigDecimal amt = m_order.getGrandTotal();
114         log.info("createOrder " + amt);
115         return ok;
116     } // createOrder
117

118
119     /**
120      * String Representation
121      * @return info
122      */

123     public String JavaDoc toString()
124     {
125         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("WebOrder[");
126         sb.append(m_order)
127             .append("]");
128         return sb.toString();
129     } // toString
130

131     /**
132      * Process/Complete Order
133      * @return true if processed
134      */

135     public boolean process()
136     {
137         if (m_order == null)
138             return false;
139         return m_order.process(MOrder.DOCACTION_Complete);
140     } // process
141

142     /**
143      * Is order processed
144      * @return true if processed
145      */

146     public boolean isProcessed()
147     {
148         if (m_order == null)
149             return false;
150         return m_order.isProcessed();
151     } // isProcessed
152

153     /**
154      * Is order in progress
155      * @return true if in progress
156      */

157     public boolean isInProgress()
158     {
159         if (m_order == null)
160             return false;
161         return MOrder.DOCSTATUS_InProgress.equals(m_order.getDocStatus());
162     } // isInProgress
163

164
165     /*************************************************************************/
166
167     /**
168      * Get Document No
169      * @return Document No
170      */

171     public String JavaDoc getDocumentNo()
172     {
173         return m_order.getDocumentNo();
174     }
175
176     public BigDecimal getTotalLines()
177     {
178         return m_order.getTotalLines();
179     }
180
181     public BigDecimal getFreightAmt()
182     {
183         return m_order.getFreightAmt();
184     }
185
186     public BigDecimal getTaxAmt()
187     {
188         return m_order.getGrandTotal()
189             .subtract(m_order.getTotalLines())
190             .subtract(m_order.getFreightAmt());
191     }
192
193     public BigDecimal getGrandTotal()
194     {
195         return m_order.getGrandTotal();
196     }
197
198     protected MOrder getOrder()
199     {
200         return m_order;
201     }
202
203     /*************************************************************************/
204
205     private String JavaDoc m_invoiceInfo = null;
206     private int m_C_Invoice_ID = -1;
207
208     /**
209      * Get Invoice Info
210      * @return invoice document no
211      */

212     public String JavaDoc getInvoiceInfo()
213     {
214         if (m_invoiceInfo == null)
215         {
216             MInvoice[] invoices = m_order.getInvoices();
217             int length = invoices.length;
218             if (length > 0) // get last invoice
219
{
220                 m_C_Invoice_ID = invoices[length-1].getC_Invoice_ID();
221                 m_invoiceInfo = invoices[length-1].getDocumentNo();
222             }
223         }
224         return m_invoiceInfo;
225     }
226
227     /**
228      * Get Invoice ID
229      * @return C_ Invoice_ID
230      */

231     public int getInvoice_ID()
232     {
233         if (m_C_Invoice_ID == -1)
234             getInvoiceInfo();
235         return m_C_Invoice_ID;
236     } // getInvoice_ID
237

238     /**
239      * Get Currency id
240      * @return Currency id
241      */

242     public int getC_Currency_ID()
243     {
244         if (m_order == null)
245             return 0;
246         return m_order.getC_Currency_ID();
247     } // getC_Currency_ID
248

249     /**
250      * Get ISO Code of Currency
251      * @return Currency ISO
252      */

253     public String JavaDoc getCurrencyISO()
254     {
255         if (m_order == null)
256             return "";
257         return MCurrency.getISO_Code (m_ctx, m_order.getC_Currency_ID());
258     } // getCurrencyISO
259

260 } // WebOrder
261
Popular Tags