KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > ws > externalSales > ExternalSalesImpl


1 /*
2  *************************************************************************
3  * The contents of this file are subject to the Openbravo Public License
4  * Version 1.0 (the "License"), being the Mozilla Public License
5  * Version 1.1 with a permitted attribution clause; you may not use this
6  * file except in compliance with the License. You may obtain a copy of
7  * the License at http://www.openbravo.com/legal/license.html
8  * Software distributed under the License is distributed on an "AS IS"
9  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10  * License for the specific language governing rights and limitations
11  * under the License.
12  * The Original Code is Openbravo ERP.
13  * The Initial Developer of the Original Code is Openbravo SL
14  * All portions are Copyright (C) 2001-2006 Openbravo SL
15  * All Rights Reserved.
16  * Contributor(s): ______________________________________.
17  ************************************************************************
18 */

19
20 package org.openbravo.erpCommon.ws.externalSales;
21
22 import java.text.SimpleDateFormat JavaDoc;
23 import java.util.Vector JavaDoc;
24
25 import org.openbravo.database.ConnectionProviderImpl;
26 import org.openbravo.base.HttpBaseServlet;
27 import org.openbravo.erpCommon.utility.SequenceIdData;
28
29 import org.apache.log4j.Logger ;
30
31
32 public class ExternalSalesImpl implements ExternalSales{
33     protected static ConnectionProviderImpl pool;
34     protected static String JavaDoc javaDateFormat;
35     static Logger log4j = Logger.getLogger(ExternalSales.class);
36
37     /** Creates a new instance of ExternalSalesImpl */
38     public ExternalSalesImpl() {
39       if (log4j.isDebugEnabled()) log4j.debug("ExternalSales");
40       initPool();
41     }
42     
43     private boolean access(String JavaDoc username, String JavaDoc password) {
44      try {
45         return !ExternalSalesOrderData.access(pool, username,password).equals("0");
46       } catch (Exception JavaDoc e) {
47         return false;
48       }
49       
50     }
51
52    public String JavaDoc test2(String JavaDoc p){
53     return p;
54     }
55    public String JavaDoc test(){
56      return "testing...";
57    }
58
59     public Product[] getProductsCatalog( int ClientID, int organizationId, int salesChannel, String JavaDoc username, String JavaDoc password)
60     {
61     if (!access(username, password)) {
62       if (log4j.isDebugEnabled()) log4j.debug("Access denied for user: " + username + " - password: " + password);
63        return null;
64     }
65     if (log4j.isDebugEnabled()) log4j.debug("getProductsCatalog"+" ClientID "+ClientID+" organizationId "+organizationId+" salesChannel "+ salesChannel);
66       try {
67
68         //Select
69
ExternalSalesProductData[] data = ExternalSalesProductData.select(pool, Integer.toString(ClientID), Integer.toString(salesChannel));
70
71
72         if (data != null && data.length > 0){
73           int i = 0;
74           if (log4j.isDebugEnabled()) log4j.debug("data.length "+data.length);
75           Product [] products = new org.openbravo.erpCommon.ws.externalSales.Product[data.length];
76
77           while (i<data.length) {
78             if (log4j.isDebugEnabled()) log4j.debug("getProductsCatalog data[i].id "+data[i].id+" data[i].name "+data[i].name);
79             products[i] = new org.openbravo.erpCommon.ws.externalSales.Product();
80             products[i].setId((Integer.valueOf(data[i].id)).intValue());
81             products[i].setName(data[i].name);
82             products[i].setNumber(data[i].number1);
83             products[i].setDescription(data[i].description);
84             products[i].setListPrice((Double.valueOf(data[i].listPrice)).doubleValue());
85             products[i].setPurchasePrice((Double.valueOf(data[i].purchasePrice)).doubleValue());
86             Tax tax = new org.openbravo.erpCommon.ws.externalSales.Tax();
87             tax.setId((Integer.valueOf(data[i].taxId)).intValue());
88             tax.setName(data[i].taxName);
89             tax.setPercentage((Double.valueOf(data[i].percentage)).doubleValue());
90             products[i].setTax(tax);
91             products[i].setImageUrl(data[i].imageUrl);
92             products[i].setEan(data[i].ean);
93             Category category = new org.openbravo.erpCommon.ws.externalSales.Category();
94             category.setId((Integer.valueOf(data[i].mProductCategoryId)).intValue());
95             category.setName(data[i].mProductCategoryName);
96             category.setDescription(data[i].mProductCategoryDescription);
97             products[i].setCategory(category);
98             i++;
99           }
100           return products;
101         }
102         else if (data != null && data.length == 0){ //In case that don't return data, return an empty array
103
if (log4j.isDebugEnabled()) log4j.debug("data.length "+data.length);
104           Product [] products = new org.openbravo.erpCommon.ws.externalSales.Product[0];
105           return products;
106         }
107       } catch (Exception JavaDoc e) {
108           log4j.error("Error : getProductsCatalog");
109           e.printStackTrace();
110       }
111
112       destroyPool();
113       return null;
114     }
115
116     public void uploadOrders(int ClientID, int organizationId, int salesChannel, Order[] newOrders, String JavaDoc username, String JavaDoc password)
117     {
118     if (!access(username, password)) {
119        if (log4j.isDebugEnabled()) log4j.debug("Access denied");
120        return;
121     }
122
123     try {
124
125     if (log4j.isDebugEnabled()) log4j.debug("uploadOrders"+" ClientID "+ClientID+"organizationId "+organizationId+" sales channel"+salesChannel+" order 1 "+newOrders[0].getOrderId());
126       initPool();
127       int i = 0;
128       while (newOrders != null && i < newOrders.length) {
129
130           ExternalSalesIOrderData[] data = ExternalSalesIOrderData.set();
131
132           //Reading default parameters
133
ExternalSalesData[] externalPOS = ExternalSalesData.select(pool, Integer.toString(ClientID), Integer.toString(organizationId), Integer.toString(salesChannel));
134
135           if (externalPOS != null && externalPOS.length >0) {
136             data[0].adClientId = externalPOS[0].adClientId;
137             data[0].adOrgId = externalPOS[0].adOrgId;
138             data[0].salesrepId = externalPOS[0].salesrepId;
139             data[0].mShipperId = externalPOS[0].mShipperId;
140             data[0].mPricelistId = externalPOS[0].mPricelistId;
141             data[0].cBpartnerId = externalPOS[0].cBpartnerId;
142             data[0].cDoctypeId = externalPOS[0].cDoctypeId;
143             data[0].mWarehouseId = externalPOS[0].mWarehouseId;
144             data[0].cBpartnerLocationId = externalPOS[0].cBpartnerLocationId;
145             data[0].billtoId = externalPOS[0].billtoId;
146             data[0].performPost = externalPOS[0].performPost;
147           }
148
149           if (newOrders[i].getOrderId() != null)
150           {
151             data[0].orderReferenceno = newOrders[i].getOrderId().getDocumentNo();
152             SimpleDateFormat JavaDoc dateFormat = new SimpleDateFormat JavaDoc(javaDateFormat);
153             data[0].dateordered = ""+dateFormat.format(newOrders[i].getOrderId().getDateNew());
154           }
155           if (newOrders[i].getBusinessPartner() != null)
156           {
157             data[0].bpartnervalue = newOrders[i].getBusinessPartner().getId();
158             data[0].name = newOrders[i].getBusinessPartner().getName();
159             data[0].countrycode = newOrders[i].getBusinessPartner().getCountry();
160             data[0].regionname = newOrders[i].getBusinessPartner().getRegion();
161             data[0].city = newOrders[i].getBusinessPartner().getCity();
162             data[0].postal = newOrders[i].getBusinessPartner().getPostal();
163             data[0].address1 = newOrders[i].getBusinessPartner().getAddress1();
164             data[0].address2 = newOrders[i].getBusinessPartner().getAddress2();
165           }
166           int k = 1;
167           if (newOrders[i].getPayment() != null)
168           {
169             //At this time we only permit two different paymentrule.
170
//Second payment will sumaryze the rest of payments
171
//This could change in the future
172
if (newOrders[i].getPayment() != null && newOrders[i].getPayment().length>= 1) {
173               data[0].paymentamount1 = Double.toString(newOrders[i].getPayment()[0].getAmount());
174               data[0].paymentrule1 = newOrders[i].getPayment()[0].getPaymentType();
175             }
176             int amount = 0;
177             while (newOrders[i].getPayment() != null && k < newOrders[i].getPayment().length) {
178               amount += newOrders[i].getPayment()[1].getAmount();
179               data[0].paymentrule2 = newOrders[i].getPayment()[1].getPaymentType();
180               k++;
181             }
182             data[0].paymentamount2 = Integer.toString(amount);
183           }
184           int j = 0;
185           if (newOrders[i].getLines() != null)
186           {
187             //Insert lines
188
while (newOrders[i].getLines() != null && j < newOrders[i].getLines().length) {
189               data[0].mProductId = Integer.toString(newOrders[i].getLines()[j].getProductId());
190               data[0].qtyordered = Double.toString(newOrders[i].getLines()[j].getUnits());
191               data[0].priceactual = ""+newOrders[i].getLines()[j].getPrice();
192               data[0].cTaxId = Integer.toString(newOrders[i].getLines()[j].getTaxId());
193               String JavaDoc sequence = SequenceIdData.getSequence(pool, "I_Order", Integer.toString(ClientID));
194               data[0].iOrderId = sequence;
195               if (log4j.isDebugEnabled()) log4j.debug("sequence"+data[0].iOrderId+" data[0].paymentamount1"+data[0].paymentamount1+" data[0].paymentrule1"+data[0].paymentrule1+
196                                                " data[0].paymentamount2"+data[0].paymentamount2+" data[0].paymentrule2"+data[0].paymentrule2);
197               data[0].insert(pool);
198               j++;
199             }
200           }
201           else{
202             String JavaDoc sequence = SequenceIdData.getSequence(pool, "I_ORDER", Integer.toString(ClientID));
203             data[0].iOrderId = sequence;
204             if (log4j.isDebugEnabled()) log4j.debug("sequence"+data[0].iOrderId+" data[0].paymentamount1"+data[0].paymentamount1+" data[0].paymentrule1"+data[0].paymentrule1+
205                                                " data[0].paymentamount2"+data[0].paymentamount2+" data[0].paymentrule2"+data[0].paymentrule2);
206             data[0].insert(pool);
207           }
208         i++;
209         }
210         } catch (Exception JavaDoc e) {
211             log4j.error("Error : uploadOrders");
212             e.printStackTrace();
213       }
214       destroyPool();
215     }
216
217     public Order[] getOrders(int ClientID, int organizationId, OrderIdentifier[] orderIds, String JavaDoc username, String JavaDoc password)
218     {
219     if (!access(username, password)) {
220        if (log4j.isDebugEnabled()) log4j.debug("Access denied");
221        return null;
222     }
223
224     if (log4j.isDebugEnabled()) log4j.debug("getOrders");
225       SimpleDateFormat JavaDoc dateFormat = new SimpleDateFormat JavaDoc(javaDateFormat);
226
227       initPool();
228       Vector JavaDoc<Order> vOrders = new Vector JavaDoc<Order>();
229       Order[] orders = null;
230
231       int cont = 0;
232       while (orderIds != null && cont < orderIds.length)
233       {
234         if (log4j.isDebugEnabled()) log4j.debug("ClientID "+ClientID+" organizationId "+organizationId+" orderIds "+ orderIds[cont].getDocumentNo()+" - "+dateFormat.format(orderIds[cont].getDateNew()).toString());
235
236         try {
237           //Select
238

239           ExternalSalesOrderData[] data = ExternalSalesOrderData.select(pool, Integer.toString(ClientID), dateFormat.format(orderIds[cont].getDateNew()).toString(), orderIds[cont].getDocumentNo());
240           if ((data == null) || (data.length == 0))
241             data = ExternalSalesOrderData.selectIOrder(pool, Integer.toString(ClientID), dateFormat.format(orderIds[cont].getDateNew()).toString(), orderIds[cont].getDocumentNo());
242           
243           if (data != null && data.length > 0){
244             if (log4j.isDebugEnabled()) log4j.debug("data.length "+data.length);
245             Order order = new org.openbravo.erpCommon.ws.externalSales.Order();
246
247             int i = 0;
248             while (i<data.length) {
249               if (log4j.isDebugEnabled()) log4j.debug("getOrders data[i].id "+data[i].id);
250               OrderIdentifier orderIdentifier = new org.openbravo.erpCommon.ws.externalSales.OrderIdentifier();
251               orderIdentifier.setDocumentNo(orderIds[cont].getDocumentNo());
252               orderIdentifier.setDateNew(orderIds[cont].getDateNew());
253               order.setOrderId(orderIdentifier);
254               
255               ExternalSalesOrderData[] dataLines = null;
256               if ((data[i].id != null) && (!data[i].id.equals(""))){
257                 dataLines = ExternalSalesOrderData.selectLines(pool, Integer.toString(ClientID), data[i].id);
258               } else {
259                 if (log4j.isDebugEnabled()) log4j.debug("ClientID "+Integer.toString(ClientID)+" orderIds "+ orderIds[cont].getDocumentNo()+" - "+dateFormat.format(orderIds[cont].getDateNew()).toString());
260                 dataLines = ExternalSalesOrderData.selectLinesIOrder(pool, Integer.toString(ClientID), dateFormat.format(orderIds[cont].getDateNew()).toString(), orderIds[cont].getDocumentNo());
261               }
262               
263               OrderLine [] orderLines = null;
264               if (dataLines != null && dataLines.length > 0){
265                 if (log4j.isDebugEnabled()) log4j.debug("getOrders dataLines.length "+dataLines.length);
266                 orderLines = new org.openbravo.erpCommon.ws.externalSales.OrderLine[dataLines.length];
267                 int j = 0;
268                 while (j<dataLines.length) {
269                   OrderLine orderLine = new org.openbravo.erpCommon.ws.externalSales.OrderLine();
270                   orderLine.setOrderLineId((!dataLines[j].orderLineId.equals(""))?(Integer.valueOf(dataLines[j].orderLineId)).intValue():0);
271                   orderLine.setProductId((Integer.valueOf(dataLines[j].productId)).intValue());
272                   orderLine.setUnits((Double.valueOf(dataLines[j].units)).doubleValue());
273                   orderLine.setPrice((Double.valueOf(dataLines[j].price)).doubleValue());
274                   orderLine.setTaxId((Integer.valueOf(dataLines[j].taxId)).intValue());
275                   orderLines[j] = orderLine;
276                   j++;
277                 }
278               }
279               order.setLines(orderLines);
280               order.setState((Integer.valueOf(data[i].status)).intValue());
281               BPartner bpartner = new org.openbravo.erpCommon.ws.externalSales.BPartner();
282               if (log4j.isDebugEnabled()) log4j.debug("data[i].bpartnervalue "+data[i].bpartnervalue+" data[i].cBpartnerName "+data[i].cBpartnerName);
283               bpartner.setId(data[i].bpartnervalue);
284               bpartner.setName(data[i].cBpartnerName);
285               order.setBusinessPartner(bpartner);
286               
287               ExternalSalesOrderData[] dataPayments = null;
288               if ((data[i].id != null) && (!data[i].id.equals("")))
289                 dataPayments = ExternalSalesOrderData.selectPayment(pool, Integer.toString(ClientID), data[i].id);
290               else {
291                 if (log4j.isDebugEnabled()) log4j.debug("ClientID "+Integer.toString(ClientID)+" orderIds "+ orderIds[cont].getDocumentNo()+" - "+dateFormat.format(orderIds[cont].getDateNew()).toString());
292                 dataPayments = ExternalSalesOrderData.selectPaymentIOrder(pool, Integer.toString(ClientID), dateFormat.format(orderIds[cont].getDateNew()).toString(), orderIds[cont].getDocumentNo());
293               }
294               
295               Payment [] payments = null;
296               if (dataPayments != null && dataPayments.length > 0){
297                 if (log4j.isDebugEnabled()) log4j.debug("getOrders dataPayments.length "+dataPayments.length);
298                 payments = new org.openbravo.erpCommon.ws.externalSales.Payment[dataPayments.length];
299                 int k = 0;
300                 while (k<dataPayments.length) {
301                   Payment payment = new org.openbravo.erpCommon.ws.externalSales.Payment();
302                   payment.setAmount((Double.valueOf(dataPayments[k].amount)).doubleValue());
303                   payment.setPaymentType(dataPayments[k].paymentrule);
304                   payments[k] = payment;
305                   k++;
306                 }
307               }
308               order.setPayment(payments);
309               i++;
310             }
311             vOrders.addElement(order);
312           }
313         } catch (Exception JavaDoc e) {
314             log4j.error("Error : getOrders");
315             e.printStackTrace();
316         }
317         cont++;
318       }
319       orders = new Order[vOrders.size()];
320       vOrders.copyInto(orders);
321       destroyPool();
322       return orders;
323     }
324
325     private void initPool () {
326       if (log4j.isDebugEnabled()) log4j.debug("init");
327        try{
328          pool = HttpBaseServlet.getPoolWS();
329          javaDateFormat = HttpBaseServlet.getJavaDateTimeFormat();
330          log4j.info("Java Date Format : "+javaDateFormat);
331        } catch (Exception JavaDoc e) {
332           log4j.error("Error : initPool");
333           e.printStackTrace();
334        }
335     }
336
337     private void destroyPool() {
338       if (log4j.isDebugEnabled()) log4j.debug("destroy");
339     }
340
341 }
342
Popular Tags