1 19 20 package org.openbravo.erpCommon.ws.externalSales; 21 22 import java.text.SimpleDateFormat ; 23 import java.util.Vector ; 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 javaDateFormat; 35 static Logger log4j = Logger.getLogger(ExternalSales.class); 36 37 38 public ExternalSalesImpl() { 39 if (log4j.isDebugEnabled()) log4j.debug("ExternalSales"); 40 initPool(); 41 } 42 43 private boolean access(String username, String password) { 44 try { 45 return !ExternalSalesOrderData.access(pool, username,password).equals("0"); 46 } catch (Exception e) { 47 return false; 48 } 49 50 } 51 52 public String test2(String p){ 53 return p; 54 } 55 public String test(){ 56 return "testing..."; 57 } 58 59 public Product[] getProductsCatalog( int ClientID, int organizationId, int salesChannel, String username, String 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 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){ 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 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 username, String 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 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 dateFormat = new SimpleDateFormat (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 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 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 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 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 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 username, String 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 dateFormat = new SimpleDateFormat (javaDateFormat); 226 227 initPool(); 228 Vector <Order> vOrders = new Vector <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 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 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 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 |