KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > ad_process > ImportProduct


1 /*
2  ******************************************************************************
3  * The contents of this file are subject to the Compiere License Version 1.1
4  * ("License"); You may not use this file except in compliance with the License
5  * You may obtain a copy of the License at http://www.compiere.org/license.html
6  * Software distributed under the License is distributed on an "AS IS" basis,
7  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
8  * the specific language governing rights and limitations under the License.
9  * The Original Code is Compiere ERP & CRM Business Solution
10  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
11  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
12  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
13  * Contributor(s): Openbravo SL
14  * Contributions are Copyright (C) 2001-2006 Openbravo S.L.
15  ******************************************************************************
16 */

17 package org.openbravo.erpCommon.ad_process;
18
19 import org.openbravo.erpCommon.utility.*;
20 import org.openbravo.base.secureApp.VariablesSecureApp;
21
22 import javax.servlet.*;
23 import org.apache.log4j.Logger ;
24
25 // imports for transactions
26
import org.openbravo.database.ConnectionProvider;
27 import java.sql.Connection JavaDoc;
28
29
30 public class ImportProduct extends ImportProcess {
31   static Logger log4j = Logger.getLogger(ImportProduct.class);
32
33   private String JavaDoc m_AD_Process_ID = "";
34   private String JavaDoc m_Record_ID = "";
35   private boolean m_deleteOldImported;
36
37   public ImportProduct(ConnectionProvider conn, String JavaDoc AD_Process_ID, boolean deleteOld) {
38     super(conn);
39     m_AD_Process_ID = AD_Process_ID;
40     m_deleteOldImported = deleteOld;
41   }
42
43   protected String JavaDoc getAD_Process_ID() {
44     return m_AD_Process_ID;
45   }
46
47   protected String JavaDoc getRecord_ID() {
48     return "0";
49   }
50
51   protected void createInstanceParams(VariablesSecureApp vars) throws ServletException {
52     if (log4j.isDebugEnabled()) log4j.debug("Creating parameters");
53   }
54
55   protected boolean doIt(VariablesSecureApp vars) throws ServletException {
56     int no = 0;
57     ConnectionProvider conn = null;
58         Connection JavaDoc con = null;
59         String JavaDoc strcTaxcategoryId = null;
60         try {
61       conn = getConnection();
62             con = conn.getTransactionConnection();
63             if(m_deleteOldImported) {
64                 no = ImportProductData.deleteOld(con, conn, getAD_Client_ID());
65                 if (log4j.isDebugEnabled()) log4j.debug("Delete Old Imported = " + no);
66             }
67             // Set Client, Org, IaActive, Created/Updated, ProductType
68
no = ImportProductData.updateRecords(con, conn, getAD_Client_ID());
69             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Reset = " + no);
70
71             // Set Optional BPartner
72
no = ImportProductData.updateBPartner(con, conn, getAD_Client_ID());
73             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct BPartner = " + no);
74
75             //
76
no = ImportProductData.updateBPartnerError(con, conn, getAD_Client_ID());
77             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid BPartner = " + no);
78
79             // EAN/UPC
80
no = ImportProductData.updateProductByUPC(con, conn, getAD_Client_ID());
81             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Product Existing UPC = " + no);
82
83             // Value
84
no = ImportProductData.updateProductByValue(con, conn, getAD_Client_ID());
85             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Product Existing Value = " + no);
86
87             // BP ProdNo
88
no = ImportProductData.updateProductByVendor(con, conn, getAD_Client_ID());
89             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Product Existing Vendor ProductNo = " + no);
90
91             // Copy From Product if Import does not have value
92
String JavaDoc[] strFields = new String JavaDoc[] {"Value", "Name", "Description", "DocumentNote", "Help", "UPC", "SKU", "Classification", "ProductType", "Discontinued", "DiscontinuedBy", "ImageURL", "DescriptionURL"};
93             for (int i = 0; i < strFields.length; i++){
94                 no = ImportProductData.updateProductField(con, conn, strFields[i], getAD_Client_ID());
95                 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + strFields[i] + " Default from existing Product=" + no);
96             }
97             String JavaDoc[] numFields = new String JavaDoc[] {"C_UOM_ID","M_Product_Category_ID","Volume","Weight","ShelfWidth","ShelfHeight","ShelfDepth","UnitsPerPallet"};
98             for (int i = 0; i < numFields.length; i++){
99                 no = ImportProductData.updateProductNumField(con, conn, numFields[i], getAD_Client_ID());
100                 if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + numFields[i] + " Default from existing Product=" + no);
101             }
102
103             // Copy From Product_PO if Import does not have value
104
String JavaDoc[] strFieldsPO = new String JavaDoc[] {"UPC",
105                 "PriceEffective","VendorProductNo","VendorCategory","Manufacturer","Discontinued","DiscontinuedBy"};
106             for (int i = 0; i < strFieldsPO.length; i++){
107                 no = ImportProductData.updateProductFieldPO(con, conn, strFieldsPO[i], getAD_Client_ID());
108                 if (no != 0)
109                     if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + strFieldsPO[i] + " Default from existing Product=" + no);
110             }
111             String JavaDoc[] numFieldsPO = new String JavaDoc[] {"C_UOM_ID","C_Currency_ID","PriceList","PricePO","RoyaltyAmt","Order_Min","Order_Pack","CostPerOrder","DeliveryTime_Promised"};
112             for (int i = 0; i < numFieldsPO.length; i++){
113                 no = ImportProductData.updateProductNumFieldPO(con, conn, numFieldsPO[i], getAD_Client_ID());
114                 if (no != 0)
115                     if (log4j.isDebugEnabled()) log4j.debug("ImportProduct" + numFieldsPO[i] + " Default from existing Product=" + no);
116             }
117
118             // Set UOM (System/own)
119
no = ImportProductData.updateX12DE355(con, conn, getAD_Client_ID());
120             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set UOM Default=" + no);
121             //
122
no = ImportProductData.updateProductUOM(con, conn, getAD_Client_ID());
123             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set UOM =" + no);
124             //
125
no = ImportProductData.updateProductInvalidUOM(con, conn, getAD_Client_ID());
126             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid UOM =" + no);
127
128             // Set Product Logger (own)
129
no = ImportProductData.updateProductCategoryDefault(con, conn, getAD_Client_ID());
130             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Product Category Default =" + no);
131             //
132
no = ImportProductData.updateProductCategory(con, conn, getAD_Client_ID());
133             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Product Category =" + no);
134             //
135
no = ImportProductData.updateInvalidCategory(con, conn, getAD_Client_ID());
136             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid Product Category =" + no);
137
138             // Set Currency
139
no = ImportProductData.updateCurrencyDefault(con, conn, getAD_Client_ID());
140             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Currency Default =" + no);
141             //
142
no = ImportProductData.updateCurrency(con, conn, getAD_Client_ID());
143             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Set Currency =" + no);
144             //
145
no = ImportProductData.updateInvalidCurrency(con, conn, getAD_Client_ID());
146             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid Currency =" + no);
147
148             // Verify ProductType
149
no = ImportProductData.updateInvalidProductType(con, conn, getAD_Client_ID());
150             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Invalid ProductType =" + no);
151
152             // Unique UPC/Value
153
no = ImportProductData.updateNotUniqueValue(con, conn, getAD_Client_ID());
154             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Not Unique Value =" + no);
155             //
156
no = ImportProductData.updateNotUniqueUPC(con, conn, getAD_Client_ID());
157             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Not Unique UPC =" + no);
158
159             // Mandatory Value
160
no = ImportProductData.updateNoMandatoryValue(con, conn, getAD_Client_ID());
161             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct No Mandatory Value =" + no);
162
163             // Vendor Product No
164
no = ImportProductData.updateVendorProductNoSetToValue(con, conn, getAD_Client_ID());
165             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct VendorProductNo Set to Value =" + no);
166             //
167
no = ImportProductData.updateNotUniqueVendorProductNo(con, conn, getAD_Client_ID());
168             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct Not Unique VendorProductNo =" + no);
169
170             // Get Default Tax Category
171
strcTaxcategoryId = ImportProductData.selectTaxCategory(conn, getAD_Client_ID());
172             if (log4j.isDebugEnabled()) log4j.debug("ImportProduct C_TaxCategory_ID =" + strcTaxcategoryId);
173
174             conn.releaseCommitConnection(con);
175         } catch (Exception JavaDoc se) {
176       try {
177         conn.releaseRollbackConnection(con);
178       } catch (Exception JavaDoc ignored) {}
179             se.printStackTrace();
180             addLog(Utility.messageBD(conn, "ProcessRunError", vars.getLanguage()));
181             return false;
182         }
183     // till here, the edition of the I_ImportProduct table
184
// now, the insertion from I_ImportProduct table in M_Product, M_Product_PO...
185

186       int noInsert = 0;
187       int noUpdate = 0;
188       int noInsertPO = 0;
189       int noUpdatePO = 0;
190
191             try {
192                 // Go through Records
193
ImportProductData [] data = ImportProductData.selectRecords(conn, getAD_Client_ID());
194                 for(int i =0;i<data.length;i++){
195                     String JavaDoc I_Product_ID = data[i].iProductId;
196                     String JavaDoc M_Product_ID = data[i].mProductId;
197                     String JavaDoc C_BPartner_ID = data[i].cBpartnerId;
198                     con = conn.getTransactionConnection();
199                     boolean newProduct = M_Product_ID.equals("");
200                     // Product
201
if (newProduct){ // Insert new Product
202
M_Product_ID = SequenceIdData.getSequence(conn, "M_Product", vars.getClient());
203                         try {
204                             if (log4j.isDebugEnabled()) log4j.debug("before insert");
205                             no = ImportProductData.insertProductImport(con, conn, M_Product_ID, strcTaxcategoryId, I_Product_ID);
206                             if (log4j.isDebugEnabled()) log4j.debug("Insert Product = " + no);
207                             noInsert++;
208                         }
209                         catch (ServletException ex){
210                             if (log4j.isDebugEnabled()) log4j.debug("Insert Product - " + ex.toString());
211                             conn.releaseRollbackConnection(con);
212                             ImportProductData.insertProductError(conn, ex.toString(), I_Product_ID);
213                             continue;
214                         }
215                     }else { // Update Product
216
try {
217                             no = ImportProductData.updateProductImport(con,conn, I_Product_ID, M_Product_ID);
218                             if (log4j.isDebugEnabled()) log4j.debug("Update Product = " + no);
219                             noUpdate++;
220                         }
221                         catch (ServletException ex){
222                             if (log4j.isDebugEnabled()) log4j.debug("Update Product - " + ex.toString());
223                             conn.releaseRollbackConnection(con);
224                             ImportProductData.updateProductError(conn, ex.toString(), I_Product_ID);
225                             continue;
226                         }
227                     }
228                     // Do we have PO Info
229
if (!C_BPartner_ID.equals("")){
230                         no = 0;
231                         // If Product existed, Try to Update first
232
if (!newProduct){
233                             try{
234                                 no = ImportProductData.updateProductPOImport(con, conn, I_Product_ID, M_Product_ID, C_BPartner_ID);
235                                 if (log4j.isDebugEnabled()) log4j.debug("Update Product_PO = " + no);
236                                 noUpdatePO++;
237                             }
238                             catch (ServletException ex){
239                                 if (log4j.isDebugEnabled()) log4j.debug("Update Product_PO - " + ex.toString());
240                                 noUpdate--;
241                                 conn.releaseRollbackConnection(con);
242                                 ImportProductData.updateProductPOError(conn, ex.toString(), I_Product_ID);
243                                 continue;
244                             }
245                         }
246                         try{
247                             if (no == 0) { // Insert PO
248
no = ImportProductData.insertProductPOImport(con, conn, M_Product_ID, C_BPartner_ID, I_Product_ID);
249                                 if (log4j.isDebugEnabled()) log4j.debug("Insert Product_PO = " + no);
250                                 noInsertPO++;
251                             }
252                         } catch (ServletException ex) {
253                             if (log4j.isDebugEnabled()) log4j.debug("Insert Product_PO - " + ex.toString());
254                             noInsert--; // assume that product also did not exist
255
ImportProductData.insertProductPOError(conn, ex.toString(), I_Product_ID);
256                             conn.releaseRollbackConnection(con);
257                             continue;
258                         }
259                     } // C_BPartner_ID != 0
260
conn.releaseCommitConnection(con);
261                     // Update I_Product
262
if (log4j.isDebugEnabled()) log4j.debug("before update: " + M_Product_ID + " -- " + I_Product_ID);
263                     no = ImportProductData.updateProductSetImportY(conn, M_Product_ID, I_Product_ID);
264                     if (log4j.isDebugEnabled()) log4j.debug("after update: " + M_Product_ID + " -- " + I_Product_ID);
265                 } // for all I_Product
266
} catch (Exception JavaDoc se) {
267                 se.printStackTrace();
268                 addLog(Utility.messageBD(conn, "ProcessRunError", vars.getLanguage()));
269                 return false;
270             }
271
272       // Set Error to indicator to not imported
273
no = ImportProductData.updateNotImported(conn, getAD_Client_ID());
274       if (log4j.isDebugEnabled()) log4j.debug("Errors = " + no);
275             addLog(Utility.messageBD(conn, "Errors", vars.getLanguage()) + ": " + no + "\\n");
276             addLog("Product inserted: " + noInsert + "\\n");
277             addLog("Product updated: " + noUpdate + "\\n");
278             addLog("ProductPO inserted: " + noInsertPO + "\\n");
279             addLog("ProductPO updated: " + noUpdatePO);
280       return true;
281   }
282 }
283
Popular Tags