1 19 package org.openbravo.erpCommon.ad_actionButton; 20 21 import org.openbravo.erpCommon.utility.SequenceIdData; 22 import org.openbravo.erpCommon.utility.Utility; 23 import org.openbravo.utils.FormatUtilities; 24 import org.openbravo.base.secureApp.HttpSecureAppServlet; 25 import org.openbravo.base.secureApp.VariablesSecureApp; 26 import org.openbravo.xmlEngine.XmlDocument; 27 import java.io.*; 28 import javax.servlet.*; 29 import javax.servlet.http.*; 30 31 import java.sql.Connection ; 32 33 public class ImportProduct extends HttpSecureAppServlet { 34 35 36 public void init (ServletConfig config) { 37 super.init(config); 38 boolHist = false; 39 } 40 41 public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException { 42 VariablesSecureApp vars = new VariablesSecureApp(request); 43 44 if (vars.commandIn("DEFAULT")) { 45 String strProcessId = vars.getStringParameter("inpProcessId"); 46 String strWindow = vars.getStringParameter("inpwindowId"); 47 String strTab = vars.getStringParameter("inpTabId"); 48 String strKey = vars.getRequiredGlobalVariable("inpadClientId", strWindow + "|AD_Client_ID"); 49 printPage(response, vars, strKey, strWindow, strTab, strProcessId); 50 } else if (vars.commandIn("SAVE")) { 51 String strWindow = vars.getStringParameter("inpwindowId"); 52 String strDeleteOldImported = vars.getStringParameter("inpDeleteOldImported", ""); 53 String strKey = vars.getRequiredGlobalVariable("inpadClientId", strWindow + "|AD_Client_ID"); 54 String strTab = vars.getStringParameter("inpTabId"); 55 ActionButtonDefaultData[] tab = ActionButtonDefaultData.windowName(this, strTab); 56 String strWindowPath="", strTabName=""; 57 if (tab!=null && tab.length!=0) { 58 strTabName = FormatUtilities.replace(tab[0].name); 59 strWindowPath = "../" + FormatUtilities.replace(tab[0].description) + "/" + strTabName + "_Relation.html"; 60 } else strWindowPath = strDefaultServlet; 61 String messageResult = processButton(vars, strKey, strDeleteOldImported); 62 vars.setSessionValue(strWindow + "|" + strTabName + ".message", messageResult); 63 printPageClosePopUp(response, vars, strWindowPath); 64 } else pageErrorPopUp(response); 65 } 66 67 String processButton(VariablesSecureApp vars, String strKey, String strDeleteOldImported) { 68 Connection conn = null; 69 try { 70 conn = this.getTransactionConnection(); 71 int no=0; 73 if (strDeleteOldImported.equals("Y")){ 74 no = ImportProductData.deleteOld(conn,this, strKey); 75 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Delete ld Imported = " + no); 76 } 77 78 no = ImportProductData.updateRecords(conn,this, strKey); 80 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Reset = " + no); 81 82 no = ImportProductData.updateBPartner(conn,this, strKey); 84 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct BPartner = " + no); 85 86 no = ImportProductData.updateIsImported(conn,this, strKey); 88 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid BPartner = " + no); 89 90 no = ImportProductData.updateProductExistingUPC(conn,this, strKey); 93 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Product Existing UPC = " + no); 94 95 97 no = ImportProductData.updateProductExistingValue(conn,this, strKey); 98 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Product Existing Value = " + no); 99 100 no = ImportProductData.updateProductExistingVendor(conn,this, strKey); 102 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Product Existing Vendor ProductNo = " + no); 103 104 String [] strFields = new String [] {"Value","Name","Description","DocumentNote","Help", 106 "UPC","SKU","Classification","ProductType", 107 "Discontinued","DiscontinuedBy","ImageURL","DescriptionURL"}; 108 for (int i = 0; i < strFields.length; i++){ 109 no = ImportProductData.updateProductField(conn,this, strFields[i], strKey); 110 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + strFields[i] + " Default from existing Product=" + no); 111 } 112 String [] numFields = new String [] {"C_UOM_ID","M_Product_Category_ID", 113 "Volume","Weight","ShelfWidth","ShelfHeight","ShelfDepth","UnitsPerPallet"}; 114 for (int i = 0; i < numFields.length; i++){ 115 no = ImportProductData.updateProductNumField(conn,this, numFields[i], strKey); 116 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + numFields[i] + " Default from existing Product=" + no); 117 } 118 119 String [] strFieldsPO = new String [] {"UPC", 121 "PriceEffective","VendorProductNo","VendorCategory","Manufacturer", 122 "Discontinued","DiscontinuedBy"}; 123 for (int i = 0; i < strFieldsPO.length; i++){ 124 no = ImportProductData.updateProductFieldPO(conn,this, strFieldsPO[i], strKey); 125 if (no != 0) 126 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + strFieldsPO[i] + " Default from existing Product=" + no); 127 } 128 String [] numFieldsPO = new String [] {"C_UOM_ID","C_Currency_ID", 129 "PriceList","PricePO","RoyaltyAmt", 130 "Order_Min","Order_Pack","CostPerOrder","DeliveryTime_Promised"}; 131 for (int i = 0; i < numFieldsPO.length; i++){ 132 no = ImportProductData.updateProductNumFieldPO(conn,this, numFieldsPO[i], strKey); 133 if (no != 0) 134 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + numFieldsPO[i] + " Default from existing Product=" + no); 135 } 136 137 138 no = ImportProductData.updateX12DE355(conn,this, strKey); 140 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set UOM Default=" + no); 141 no = ImportProductData.updateProductUOM(conn,this, strKey); 143 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set UOM =" + no); 144 no = ImportProductData.updateProductInvalidUOM(conn,this, strKey); 146 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid UOM =" + no); 147 148 no = ImportProductData.updateProductCategoryDefault(conn,this, strKey); 150 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Logger Default =" + no); 151 no = ImportProductData.updateProductCategory(conn,this, strKey); 153 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Logger =" + no); 154 no = ImportProductData.updateInvalidCategory(conn,this, strKey); 156 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid Logger =" + no); 157 158 no = ImportProductData.updateCurrencyDefault(conn,this, strKey); 160 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Currency Default =" + no); 161 no = ImportProductData.updateCurrency(conn,this, strKey); 163 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Currency =" + no); 164 no = ImportProductData.updateInvalidCurrency(conn,this, strKey); 166 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid Currency =" + no); 167 168 no = ImportProductData.updateInvalidProductType(conn,this, strKey); 170 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid ProductType =" + no); 171 172 no = ImportProductData.updateNotUniqueValue(conn,this, strKey); 174 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Not Unique Value =" + no); 175 no = ImportProductData.updateNotUniqueUPC(conn,this, strKey); 177 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Not Unique UPC =" + no); 178 179 no = ImportProductData.updateNoMandatoryValue(conn,this, strKey); 181 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct No Mandatory Value =" + no); 182 183 no = ImportProductData.updateVendorProductNoSetToValue(conn,this, strKey); 185 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct VendorProductNo Set to Value =" + no); 186 no = ImportProductData.updateNotUniqueVendorProductNo(conn,this, strKey); 188 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Not Unique VendorProductNo =" + no); 189 190 String strcTaxcategoryId = ImportProductData.selectTaxCategory(this, strKey); 192 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct C_TaxCategory_ID =" + strcTaxcategoryId); 193 194 releaseCommitConnection(conn); 195 196 197 int noInsert = 0; 199 int noUpdate = 0; 200 int noInsertPO = 0; 201 int noUpdatePO = 0; 202 203 ImportProductData [] data = ImportProductData.selectRecords(this, strKey); 205 for(int i =0;i<data.length;i++){ 206 String I_Product_ID = data[i].iProductId; 207 String M_Product_ID = data[i].mProductId; 208 String C_BPartner_ID = data[i].cBpartnerId; 209 conn = this.getTransactionConnection(); 210 boolean newProduct = M_Product_ID.equals(""); 211 if (newProduct){ M_Product_ID = SequenceIdData.getSequence(this, "M_Product", vars.getClient()); 214 try { 215 no = ImportProductData.insertProductImport(conn,this, M_Product_ID, strcTaxcategoryId, I_Product_ID); 216 if (log4j.isDebugEnabled()) log4j.debug("Insert Product = " + no); 217 noInsert++; 218 } 219 catch (ServletException ex){ 220 if (log4j.isDebugEnabled()) log4j.debug("Insert Product - " + ex.toString()); 221 releaseRollbackConnection(conn); 222 conn = this.getTransactionConnection(); 223 ImportProductData.insertProductError(this, ex.toString(), I_Product_ID); 224 continue; 225 } 226 }else { try { 228 no = ImportProductData.updateProductImport(conn,this, I_Product_ID, M_Product_ID); 229 if (log4j.isDebugEnabled()) log4j.debug("Update Product = " + no); 230 noUpdate++; 231 } 232 catch (ServletException ex){ 233 if (log4j.isDebugEnabled()) log4j.debug("Update Product - " + ex.toString()); 234 releaseRollbackConnection(conn); 235 ImportProductData.updateProductError(this, ex.toString(), I_Product_ID); 236 continue; 237 } 238 } 239 if (C_BPartner_ID.equals("")){ 241 no = 0; 242 if (!newProduct){ 244 try{ 245 no = ImportProductData.updateProductPOImport(conn,this, I_Product_ID, M_Product_ID, C_BPartner_ID); 246 if (log4j.isDebugEnabled()) log4j.debug("Update Product_PO = " + no); 247 noUpdatePO++; 248 } 249 catch (ServletException ex){ 250 if (log4j.isDebugEnabled()) log4j.debug("Update Product_PO - " + ex.toString()); 251 noUpdate--; 252 releaseRollbackConnection(conn); 253 ImportProductData.updateProductPOError(this, ex.toString(), I_Product_ID); 254 continue; 255 } 256 } 257 if (no == 0){ try{ 259 no = ImportProductData.insertProductPOImport(conn,this, M_Product_ID, C_BPartner_ID, I_Product_ID); 260 if (log4j.isDebugEnabled()) log4j.debug("Insert Product_PO = " + no); 261 noInsertPO++; 262 } 263 catch (ServletException ex){ 264 if (log4j.isDebugEnabled()) log4j.debug("Insert Product_PO - " + ex.toString()); 265 noInsert--; releaseRollbackConnection(conn); 267 ImportProductData.insertProductPOError(this, ex.toString(), I_Product_ID); 268 continue; 269 } 270 } 271 } no = ImportProductData.updateProductSetImportY(conn,this, M_Product_ID, I_Product_ID); 274 releaseCommitConnection(conn); } 277 ImportProductData.updateNotImported(this,strKey); 279 if (log4j.isDebugEnabled()) log4j.debug("@Errors@ = " + no); 280 if (log4j.isDebugEnabled()) log4j.debug("@M_Product_ID@: @Inserted@ = " + noInsert); 281 if (log4j.isDebugEnabled()) log4j.debug("@M_Product_ID@: @Updated@ = " + noUpdate); 282 if (log4j.isDebugEnabled()) log4j.debug("@M_Product_ID@ @Purchase@: @Inserted@ = " + noInsertPO); 283 if (log4j.isDebugEnabled()) log4j.debug("@M_Product_ID@ @Purchase@: @Updated@ = " + noUpdatePO); 284 return ""; 285 } catch (Exception e) { 286 log4j.warn(e); 287 try { 288 releaseRollbackConnection(conn); 289 } catch (Exception ignored) {} 290 return Utility.messageBD(this, "ProcessRunError", vars.getLanguage()); 291 } 292 } 293 294 295 296 void printPage(HttpServletResponse response, VariablesSecureApp vars, String strKey, String windowId, String strTab, String strProcessId) throws IOException, ServletException { 297 if (log4j.isDebugEnabled()) log4j.debug("Output: Button import product"); 298 299 ActionButtonDefaultData[] data = null; 300 String strHelp="", strDescription=""; 301 if (vars.getLanguage().equals("en_US")) data = ActionButtonDefaultData.select(this, strProcessId); 302 else data = ActionButtonDefaultData.selectLanguage(this, vars.getLanguage(), strProcessId); 303 304 if (data!=null && data.length!=0) { 305 strDescription = data[0].description; 306 strHelp = data[0].help; 307 } 308 String [] discard = {""}; 309 if (strHelp.equals("")) discard[0] = new String ("helpDiscard"); 310 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/erpCommon/ad_actionButton/ImportProduct", discard).createXmlDocument(); 311 xmlDocument.setParameter("key", strKey); 312 xmlDocument.setParameter("window", windowId); 313 xmlDocument.setParameter("tab", strTab); 314 xmlDocument.setParameter("language", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";"); 315 xmlDocument.setParameter("question", Utility.messageBD(this, "StartProcess?", vars.getLanguage())); 316 xmlDocument.setParameter("direction", "var baseDirection = \"" + strReplaceWith + "/\";\n"); 317 xmlDocument.setParameter("description", strDescription); 318 xmlDocument.setParameter("help", strHelp); 319 320 xmlDocument.setData("reportadClientId", "liststructure", ImportProductData.selectClient(this)); 321 322 response.setContentType("text/html; charset=UTF-8"); 323 PrintWriter out = response.getWriter(); 324 out.println(xmlDocument.print()); 325 out.close(); 326 } 327 328 public String getServletInfo() { 329 return "Servlet Import Product"; 330 } } 332 333 | Popular Tags |