diff -r 168533e0e5a1 src/org/openbravo/erpCommon/ad_process/ImportProduct.java
--- a/src/org/openbravo/erpCommon/ad_process/ImportProduct.java	Wed Jan 06 17:26:14 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_process/ImportProduct.java	Mon Feb 01 16:17:07 2010 +0530
@@ -178,7 +178,7 @@
         log4j.debug("ImportProduct Invalid ProductType =" + no);
 
       // Unique UPC/Value
-      no = ImportProductData.updateNotUniqueValue(con, conn, getAD_Client_ID());
+      // no = ImportProductData.updateNotUniqueValue(con, conn, getAD_Client_ID());
       if (log4j.isDebugEnabled())
         log4j.debug("ImportProduct Not Unique Value =" + no);
       //
@@ -243,46 +243,59 @@
         String I_Product_ID = data[i].iProductId;
         String M_Product_ID = data[i].mProductId;
         String C_BPartner_ID = data[i].cBpartnerId;
+        String Ad_Org_Id = data[i].adOrgId;
+        String Ad_Client_Id = data[i].adClientId;
+        String Name = data[i].name;
+        String Value = data[i].value;
         con = conn.getTransactionConnection();
-        boolean newProduct = M_Product_ID.equals("");
-        // Product
-        if (newProduct) { // Insert new Product
-          M_Product_ID = SequenceIdData.getUUID();
-          try {
-            if (log4j.isDebugEnabled())
-              log4j.debug("before insert");
-            no = ImportProductData.insertProductImport(con, conn, M_Product_ID, strcTaxcategoryId,
-                I_Product_ID);
-            if (log4j.isDebugEnabled())
-              log4j.debug("Insert Product = " + no);
-            noInsert++;
-          } catch (ServletException ex) {
-            if (log4j.isDebugEnabled())
-              log4j.debug("Insert Product - " + ex.toString());
-            conn.releaseRollbackConnection(con);
-            ImportProductData.insertProductError(conn, ex.toString(), I_Product_ID);
-            continue;
+        boolean newProduct = false;
+        String productid = ImportProductData.checkProduct(conn, Name, Value, Ad_Org_Id,
+            Ad_Client_Id);
+        if (productid == null || productid.equals("")) {
+          newProduct = M_Product_ID.equals("");
+
+          // Product
+          if (newProduct) { // Insert new Product
+            M_Product_ID = SequenceIdData.getUUID();
+            try {
+              if (log4j.isDebugEnabled())
+                log4j.debug("before insert");
+              no = ImportProductData.insertProductImport(con, conn, M_Product_ID,
+                  strcTaxcategoryId, I_Product_ID);
+              if (log4j.isDebugEnabled())
+                log4j.debug("Insert Product = " + no);
+              noInsert++;
+            } catch (ServletException ex) {
+              if (log4j.isDebugEnabled())
+                log4j.debug("Insert Product - " + ex.toString());
+              conn.releaseRollbackConnection(con);
+              ImportProductData.insertProductError(conn, ex.toString(), I_Product_ID);
+              continue;
+            }
+          } else { // Update Product
+            try {
+              no = ImportProductData.updateProductImport(con, conn, I_Product_ID, M_Product_ID);
+              if (log4j.isDebugEnabled())
+                log4j.debug("Update Product = " + no);
+              noUpdate++;
+            } catch (ServletException ex) {
+              if (log4j.isDebugEnabled())
+                log4j.debug("Update Product - " + ex.toString());
+              conn.releaseRollbackConnection(con);
+              ImportProductData.updateProductError(conn, ex.toString(), I_Product_ID);
+              continue;
+            }
           }
-        } else { // Update Product
-          try {
-            no = ImportProductData.updateProductImport(con, conn, I_Product_ID, M_Product_ID);
-            if (log4j.isDebugEnabled())
-              log4j.debug("Update Product = " + no);
-            noUpdate++;
-          } catch (ServletException ex) {
-            if (log4j.isDebugEnabled())
-              log4j.debug("Update Product - " + ex.toString());
-            conn.releaseRollbackConnection(con);
-            ImportProductData.updateProductError(conn, ex.toString(), I_Product_ID);
-            continue;
-          }
+        } else {
+          M_Product_ID = productid;
         }
         // Do we have PO Info
         if (!C_BPartner_ID.equals("")) {
           no = 0;
           // If Product existed, Try to Update first
-          if (!newProduct) {
+          if (!newProduct && productid == null) {
             try {
+
               no = ImportProductData.updateProductPOImport(con, conn, I_Product_ID, M_Product_ID,
                   C_BPartner_ID);
               if (log4j.isDebugEnabled())
@@ -298,7 +311,15 @@
             }
           }
           try {
+            boolean checkPartner = false;
+            String Bpartner_Id = ImportProductData.checkBPartner(conn, M_Product_ID, C_BPartner_ID,
+                Ad_Org_Id, Ad_Client_Id);
+            if (Bpartner_Id != null) {
+              checkPartner = true;
+              noInsert++;
+            }
             if (no == 0) { // Insert PO
+
               no = ImportProductData.insertProductPOImport(con, conn, M_Product_ID, C_BPartner_ID,
                   I_Product_ID);
               if (log4j.isDebugEnabled())
diff -r 168533e0e5a1 src/org/openbravo/erpCommon/ad_process/ImportProduct_data.xsql
--- a/src/org/openbravo/erpCommon/ad_process/ImportProduct_data.xsql	Wed Jan 06 17:26:14 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_process/ImportProduct_data.xsql	Mon Feb 01 16:17:07 2010 +0530
@@ -23,7 +23,7 @@
     <SqlMethodComment></SqlMethodComment>
     <Sql>
       <![CDATA[
-      SELECT I_Product_ID, M_Product_ID, C_BPartner_ID, '0' as C_TaxCategory_ID, '' AS ID, '' AS NAME
+      SELECT I_Product_ID, M_Product_ID, C_BPartner_ID, '0' as C_TaxCategory_ID, '' AS ID, '' AS NAME, '' AS Value, '' AS Ad_Org_Id, '' AS Ad_Client_Id
       FROM I_Product WHERE I_IsImported='N'
       AND AD_Client_ID = ?
       ]]>
@@ -428,12 +428,44 @@
     <SqlMethodComment></SqlMethodComment>
     <Sql>
       <![CDATA[
-      SELECT I_Product_ID, M_Product_ID, C_BPartner_ID 
+      SELECT I_Product_ID, M_Product_ID, C_BPartner_ID, Value, Name, Ad_Org_Id, Ad_Client_Id
       FROM I_Product WHERE I_IsImported='N'
       AND AD_Client_ID = ?
       ]]>
     </Sql>
     <Parameter name="ad_client_id"/>
+  </SqlMethod>  
+  <SqlMethod name="checkProduct" type="preparedStatement" return="String">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql>
+      <![CDATA[
+      SELECT M_Product_ID 
+      FROM M_Product WHERE Name= ?
+      AND Value= ?
+      AND AD_Org_Id = ?
+      AND AD_Client_ID = ?
+      ]]>
+    </Sql>
+    <Parameter name="name"/>
+    <Parameter name="value"/>
+    <Parameter name="ad_org_id"/>
+    <Parameter name="ad_client_id"/>
+  </SqlMethod>
+  <SqlMethod name="checkBPartner" type="preparedStatement" return="String">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql>
+      <![CDATA[
+      SELECT C_Bpartner_Id 
+      FROM M_Product_PO WHERE M_Product_ID = ?
+      AND C_Bpartner_Id = ?
+      AND AD_Org_Id = ?
+      AND AD_Client_ID = ?
+      ]]>
+    </Sql>
+    <Parameter name="Product_Id"/>
+    <Parameter name="Bpartner_Id"/>
+    <Parameter name="ad_org_id"/>
+    <Parameter name="ad_client_id"/>
   </SqlMethod>
   <SqlMethod name="insertProductImport" type="preparedStatement" connection="true" return="rowcount">
     <SqlMethodComment></SqlMethodComment>

