details:   https://code.openbravo.com/erp/devel/main/rev/589e663d698d
changeset: 14361:589e663d698d
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Wed Nov 23 15:52:11 2011 +0100
summary:   CI: merge back from main

details:   https://code.openbravo.com/erp/devel/main/rev/01090a96c0db
changeset: 14362:01090a96c0db
user:      Mikel Irurita <mikel.irurita <at> openbravo.com>
date:      Wed Nov 23 17:32:01 2011 +0100
summary:   Fixes issue 19112: Improve algorithm to match business partner when 
importing cuaderno43

details:   https://code.openbravo.com/erp/devel/main/rev/98907f0c5af2
changeset: 14363:98907f0c5af2
user:      RM packaging bot <staff.rm <at> openbravo.com>
date:      Fri Nov 25 16:10:49 2011 +0100
summary:   CI: update AD_MODULE to version 14362

diffstat:

 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml  
                                 |    2 +-
 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                        |    4 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
     |    2 +
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.srpt
 |    2 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.xml
  |    1 +
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java
      |  109 +++++++++-
 modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml       
                                 |    2 +-
 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                             |    2 +-
 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
                               |    2 +-
 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                    |    8 +-
 
modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE.xml
                                |    2 +-
 
modules/org.openbravo.client.htmlwidget/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                     |    2 +-
 modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE.xml   
                                 |    2 +-
 
modules/org.openbravo.client.kernel/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                         |    6 +-
 modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE.xml     
                                 |    2 +-
 
modules/org.openbravo.client.myob/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                           |    4 +-
 
modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE.xml 
                                |    2 +-
 
modules/org.openbravo.client.querylist/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                      |    2 +-
 modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE.xml  
                                 |    2 +-
 
modules/org.openbravo.client.widgets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                        |    2 +-
 
modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE.xml
                          |    2 +-
 
modules/org.openbravo.financial.paymentreport/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
               |    2 +-
 
modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE.xml
                   |    2 +-
 
modules/org.openbravo.reports.ordersawaitingdelivery/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
        |    2 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE.xml
                               |    2 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                    |   10 +-
 
modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE.xml
                       |    2 +-
 
modules/org.openbravo.service.integration.google/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
            |    4 +-
 
modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE.xml
                       |    2 +-
 
modules/org.openbravo.service.integration.openid/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
            |    2 +-
 modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE.xml    
                                 |    2 +-
 
modules/org.openbravo.service.json/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                          |    2 +-
 
modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE.xml
                           |    2 +-
 
modules/org.openbravo.userinterface.selector/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                |   12 +-
 
modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE.xml
                  |    2 +-
 
modules/org.openbravo.userinterface.skin.250to300Comp/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
       |    2 +-
 
modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE.xml
                        |    2 +-
 
modules/org.openbravo.userinterface.smartclient/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
             |    6 +-
 modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE.xml     
                                 |    2 +-
 
modules/org.openbravo.v3.datasets/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                           |    6 +-
 modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE.xml    
                                 |    2 +-
 
modules/org.openbravo.v3.framework/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                          |   24 +-
 modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE.xml              
                                 |    2 +-
 modules/org.openbravo.v3/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml   
                                 |   18 +-
 src-db/database/sourcedata/AD_MODULE.xml                                       
                                 |    2 +-
 45 files changed, 187 insertions(+), 89 deletions(-)

diffs (truncated from 1073 to 300 lines):

diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Fri Nov 25 16:10:49 2011 +0100
@@ -6,7 +6,7 @@
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <NAME><![CDATA[Advanced Payables and 
Receivables Mngmt]]></NAME>
-<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.14359]]></VERSION>
+<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.14362]]></VERSION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <DESCRIPTION><![CDATA[Managing your 
finances with an ERP does not have to be difficult. Enjoy a radically improved 
user experience that combines the power of an enterprise grade financial 
application with the simplicity and ease of a web 2.0 personal accounting 
service.]]></DESCRIPTION>
 <!--A918E3331C404B889D69AA9BFAFB23AC-->  <HELP><![CDATA[Advanced Payables and 
Receivables Management simplifies and automates the business processes around 
the management of financial accounts, from the receipt and issue of payment, to 
the reconciliation of those events with bank statements.
 If you would like to help shape this module you are welcome to take part in 
the forum discussions or register feature requests or issues in the 
corresponding (Forum and Bug Tracking) sections in the Advanced Payables and 
Receivable project in the OB Forge.]]></HELP>
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Fri Nov 25 16:10:49 2011 +0100
@@ -7,7 +7,7 @@
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[5EB4F15C80684ACA904756BDC12ADBE5]]></AD_DEPENDENT_MODULE_ID>
-<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.14359]]></STARTVERSION>
+<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.14362]]></STARTVERSION>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  <DEPENDANT_MODULE_NAME><![CDATA[User 
Interface Selector]]></DEPENDANT_MODULE_NAME>
 <!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
@@ -21,7 +21,7 @@
 <!--B97FC854C6DD41E692161585645A900F-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--B97FC854C6DD41E692161585645A900F-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--B97FC854C6DD41E692161585645A900F-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.14359]]></STARTVERSION>
+<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.14362]]></STARTVERSION>
 <!--B97FC854C6DD41E692161585645A900F-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
       Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransaction.java
       Fri Nov 25 16:10:49 2011 +0100
@@ -520,6 +520,8 @@
         FieldProviderFactory.setField(data[i], "bankLineBusinessPartner", 
FIN_BankStatementLines[i]
             .getBusinessPartner() != null ? 
FIN_BankStatementLines[i].getBusinessPartner()
             .getIdentifier() : FIN_BankStatementLines[i].getBpartnername());
+        FieldProviderFactory.setField(data[i], "textcolor",
+            FIN_BankStatementLines[i].getBusinessPartner() != null ? "bold" : 
"normal");
         FieldProviderFactory.setField(data[i], "bankLineReferenceNo",
             FIN_BankStatementLines[i].getReferenceNo());
         // CREDIT - DEBIT
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.srpt
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.srpt
   Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.srpt
   Fri Nov 25 16:10:49 2011 +0100
@@ -23,7 +23,7 @@
     <td class="DataGrid_Body_LineNoCell"></td>
     <!--input type="hidden" id="fieldBLId" name="inpRecordIdxx" 
value=""></input-->
     <td class="DataGrid_Body_Cell"><span 
id="fieldBLTransactionDate">xx01-07-2010</span></td>
-    <td class="DataGrid_Body_Cell"><span id="fieldBLBusinessPartner" 
title="">xxBP Name</span></td>
+    <td class="DataGrid_Body_Cell"><span id="fieldBLBusinessPartner" title="" 
style="font-weight: xx;">xxBP Name</span></td>
     <td class="DataGrid_Body_Cell"><span 
id="fieldBLReferenceNo">xx11100011</span></td>
     <td class="DataGrid_Body_Cell_Amount"><span 
id="fieldAmount">xx12233</span></td>
     <td class="DataGrid_Body_LineNoCell" style="background-color: xx;" 
id="inpMatchStyle_xx" name="inpMatchStyle_xx">
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.xml
    Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/MatchTransactionGrid.xml
    Fri Nov 25 16:10:49 2011 +0100
@@ -31,6 +31,7 @@
     <FIELD id="fieldBLTransactionDate">bankLineTransactionDate</FIELD>
     <FIELD id="fieldBLBusinessPartner">bankLineBusinessPartner</FIELD>
     <FIELD id="fieldBLBusinessPartner" 
attribute="title">bankLineDescription</FIELD>
+    <FIELD id="fieldBLBusinessPartner" attribute="style" 
replace="xx">textcolor</FIELD>
     <FIELD id="fieldBLReferenceNo">bankLineReferenceNo</FIELD>
     <FIELD id="inpBSAmount_xx" attribute="value" 
format="euroEdition">bankLineAmount</FIELD>
     <FIELD id="inpBSAmount_xx" attribute="id" 
replace="xx">finBankLineId</FIELD>
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java
        Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_BankStatementImport.java
        Fri Nov 25 16:10:49 2011 +0100
@@ -24,13 +24,16 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.StringTokenizer;
 
 import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.lang.StringUtils;
 import org.openbravo.advpaymentmngt.dao.AdvPaymentMngtDao;
 import org.openbravo.advpaymentmngt.process.FIN_AddPayment;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.secureApp.VariablesSecureApp;
 import org.openbravo.dal.core.OBContext;
+import org.openbravo.dal.security.OrganizationStructureProvider;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
 import org.openbravo.database.ConnectionProvider;
@@ -38,6 +41,7 @@
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.model.common.businesspartner.BusinessPartner;
 import org.openbravo.model.common.enterprise.DocumentType;
+import org.openbravo.model.common.enterprise.Organization;
 import org.openbravo.model.financialmgmt.payment.FIN_BankStatement;
 import org.openbravo.model.financialmgmt.payment.FIN_BankStatementLine;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
@@ -182,8 +186,14 @@
   private int saveFINBankStatementLines(List<FIN_BankStatementLine> 
bankStatementLines) {
     int counter = 0;
     for (FIN_BankStatementLine bankStatementLine : bankStatementLines) {
-      bankStatementLine
-          
.setBusinessPartner(matchBusinessPartner(bankStatementLine.getBpartnername()));
+      BusinessPartner businessPartner;
+      try {
+        businessPartner = 
matchBusinessPartner(bankStatementLine.getBpartnername(),
+            bankStatementLine.getOrganization(), 
bankStatementLine.getBankStatement().getAccount());
+      } catch (Exception e) {
+        businessPartner = null;
+      }
+      bankStatementLine.setBusinessPartner(businessPartner);
       OBDal.getInstance().save(bankStatementLine);
       counter++;
     }
@@ -211,16 +221,21 @@
 
   }
 
-  BusinessPartner matchBusinessPartner(String partnername) {
+  private BusinessPartner matchBusinessPartner(String partnername, 
Organization organization,
+      FIN_FinancialAccount account) {
     // TODO extend with other matching methods. It will make it easier to 
later reconcile
-    BusinessPartner bp = matchBusinessPartnerByName(partnername);
+    BusinessPartner bp = matchBusinessPartnerByName(partnername, organization, 
account);
     if (bp == null) {
-      bp = finBPByName(partnername);
+      bp = finBPByName(partnername, organization);
+    }
+    if (bp == null) {
+      bp = matchBusinessPartnerByNameTokens(partnername, organization);
     }
     return bp;
   }
 
-  BusinessPartner matchBusinessPartnerByName(String partnername) {
+  private BusinessPartner matchBusinessPartnerByName(String partnername, 
Organization organization,
+      FIN_FinancialAccount account) {
     if (partnername == null || "".equals(partnername)) {
       return null;
     }
@@ -232,11 +247,18 @@
       whereClause.append(" where bsl." + 
FIN_BankStatementLine.PROPERTY_BPARTNERNAME + " = ?");
       whereClause.append(" and bsl." + 
FIN_BankStatementLine.PROPERTY_BUSINESSPARTNER
           + " is not null");
+      whereClause.append(" and bsl." + 
FIN_BankStatementLine.PROPERTY_BANKSTATEMENT + ".");
+      whereClause.append(FIN_BankStatement.PROPERTY_ACCOUNT + ".id = ?");
+      parameters.add(account.getId());
+      whereClause.append(" and bsl." + 
FIN_BankStatementLine.PROPERTY_ORGANIZATION + ".id in (");
+      whereClause.append(FIN_Utility.getInStrSet(new 
OrganizationStructureProvider()
+          .getNaturalTree(organization.getId())) + ") ");
       whereClause.append(" and bsl.bankStatement.processed = 'Y'");
       whereClause.append(" order by bsl." + 
FIN_BankStatementLine.PROPERTY_CREATIONDATE + " desc");
       parameters.add(partnername);
       final OBQuery<FIN_BankStatementLine> bsl = 
OBDal.getInstance().createQuery(
           FIN_BankStatementLine.class, whereClause.toString(), parameters);
+      bsl.setFilterOnReadableOrganization(false);
       List<FIN_BankStatementLine> matchedLines = bsl.list();
       if (matchedLines.size() == 0)
         return null;
@@ -248,7 +270,7 @@
     }
   }
 
-  BusinessPartner finBPByName(String partnername) {
+  private BusinessPartner finBPByName(String partnername, Organization 
organization) {
     if (partnername == null || "".equals(partnername)) {
       return null;
     }
@@ -260,8 +282,12 @@
       whereClause.append(" as bp ");
       whereClause.append(" where bp." + BusinessPartner.PROPERTY_NAME + " = 
?");
       parameters.add(partnername);
+      whereClause.append(" and bp." + BusinessPartner.PROPERTY_ORGANIZATION + 
".id in (");
+      whereClause.append(FIN_Utility.getInStrSet(new 
OrganizationStructureProvider()
+          .getNaturalTree(organization.getId())) + ") ");
       final OBQuery<BusinessPartner> bp = 
OBDal.getInstance().createQuery(BusinessPartner.class,
           whereClause.toString(), parameters);
+      bp.setFilterOnReadableOrganization(false);
       List<BusinessPartner> matchedBP = bp.list();
       if (matchedBP.size() == 0)
         return null;
@@ -276,4 +302,73 @@
   public abstract List<FIN_BankStatementLine> loadFile(InputStream in,
       FIN_BankStatement targetBankStatement);
 
+  private BusinessPartner matchBusinessPartnerByNameTokens(String partnername,
+      Organization organization) {
+    if (partnername == null || "".equals(partnername)) {
+      return null;
+    }
+    StringTokenizer st = new StringTokenizer(partnername);
+    List<String> list = new ArrayList<String>();
+    while (st.hasMoreTokens()) {
+      String token = st.nextToken();
+      if (token.length() > 3) {
+        list.add(token);
+      }
+    }
+    if (list.isEmpty()) {
+      return null;
+    }
+    final StringBuilder whereClause = new StringBuilder();
+    List<Object> parameters = new ArrayList<Object>();
+    OBContext.setAdminMode();
+    try {
+      whereClause.append(" as b ");
+      whereClause.append(" where (");
+      for (String token : list) {
+        whereClause.append(" lower(b." + BusinessPartner.PROPERTY_NAME + ") 
like lower(?) or ");
+        parameters.add("%" + token + "%");
+      }
+      whereClause.delete(whereClause.length() - 3, 
whereClause.length()).append(")");
+      whereClause.append(" and b." + BusinessPartner.PROPERTY_ORGANIZATION + 
".id in (");
+      whereClause.append(FIN_Utility.getInStrSet(new 
OrganizationStructureProvider()
+          .getNaturalTree(organization.getId())) + ") ");
+      final OBQuery<BusinessPartner> bl = 
OBDal.getInstance().createQuery(BusinessPartner.class,
+          whereClause.toString(), parameters);
+      bl.setFilterOnReadableOrganization(false);
+      List<BusinessPartner> businessPartners = bl.list();
+      if (businessPartners.size() == 0) {
+        return null;
+      } else if (businessPartners.size() == 1) {
+        return businessPartners.get(0);
+      } else {
+        return closest(businessPartners, partnername);
+      }
+
+    } finally {
+      OBContext.restorePreviousMode();
+    }
+  }
+
+  private BusinessPartner closest(List<BusinessPartner> businessPartners, 
String partnername) {
+    BusinessPartner targetBusinessPartner = businessPartners.get(0);
+    int distance = StringUtils.getLevenshteinDistance(partnername, 
businessPartners.get(0)
+        .getName());
+    for (BusinessPartner bp : businessPartners) {
+      // Calculates distance between two strings meaning number of changes 
required for a string to
+      // convert in another string
+      int bpDistance = StringUtils.getLevenshteinDistance(partnername, 
bp.getName());
+      if (bpDistance < distance) {
+        distance = bpDistance;
+        targetBusinessPartner = bp;
+      }
+    }
+    // Tolerance: discard business partners where number of changes needed to 
match is higher than
+    // half of its length
+    if (distance > (partnername.length() / 2)) {
+      return null;
+    } else {
+      return targetBusinessPartner;
+    }
+  }
+
 }
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml
--- a/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml  
Wed Nov 23 15:41:19 2011 +0100
+++ b/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE.xml  
Fri Nov 25 16:10:49 2011 +0100
@@ -6,7 +6,7 @@
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <NAME><![CDATA[JBoss Weld]]></NAME>
-<!--C70732EA90A14EC0916078B85CC33D2D-->  
<VERSION><![CDATA[1.1.14359]]></VERSION>
+<!--C70732EA90A14EC0916078B85CC33D2D-->  
<VERSION><![CDATA[1.1.14362]]></VERSION>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <DESCRIPTION><![CDATA[JBoss 
Weld]]></DESCRIPTION>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  <HELP><![CDATA[Provides the JBoss 
Weld framework: Java Contexts and Dependency Injection for the Java EE platform 
(CDI). For more information see http://seamframework.org/Weld]]></HELP>
 <!--C70732EA90A14EC0916078B85CC33D2D-->  
<URL><![CDATA[http://forge.openbravo.com/projects/weld]]></URL>
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
       Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.base.weld/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
       Fri Nov 25 16:10:49 2011 +0100
@@ -7,7 +7,7 @@
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<AD_MODULE_ID><![CDATA[C70732EA90A14EC0916078B85CC33D2D]]></AD_MODULE_ID>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[0]]></AD_DEPENDENT_MODULE_ID>
-<!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<STARTVERSION><![CDATA[3.0.14359]]></STARTVERSION>
+<!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<STARTVERSION><![CDATA[3.0.14362]]></STARTVERSION>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<DEPENDANT_MODULE_NAME><![CDATA[Core]]></DEPENDANT_MODULE_NAME>
 <!--8BDE81545C1A43EAAC4BA3C5ED754DC8-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
--- 
a/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
 Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE.xml
 Fri Nov 25 16:10:49 2011 +0100
@@ -6,7 +6,7 @@
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <NAME><![CDATA[User Interface 
Application]]></NAME>
-<!--9BA0836A3CD74EE4AB48753A47211BCC-->  
<VERSION><![CDATA[2.1.14359]]></VERSION>
+<!--9BA0836A3CD74EE4AB48753A47211BCC-->  
<VERSION><![CDATA[2.1.14362]]></VERSION>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <DESCRIPTION><![CDATA[Provides the 
main application components for the openbravo user interface]]></DESCRIPTION>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  <HELP><![CDATA[Provides the main 
application components for the openbravo user interface. The main layout 
incorporates a navigation bar and a main view area.]]></HELP>
 <!--9BA0836A3CD74EE4AB48753A47211BCC-->  
<URL><![CDATA[http://forge.openbravo.com/projects/clientapplication]]></URL>
diff -r 19e910a4cbc4 -r 98907f0c5af2 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
--- 
a/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
      Wed Nov 23 15:41:19 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
      Fri Nov 25 16:10:49 2011 +0100
@@ -7,7 +7,7 @@
 <!--15D7CE8D95D043189162DBABA54A1F61-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  
<AD_DEPENDENT_MODULE_ID><![CDATA[A44B9BA75C354D8FB2E3F7D6EB6BFDC4]]></AD_DEPENDENT_MODULE_ID>
-<!--15D7CE8D95D043189162DBABA54A1F61-->  
<STARTVERSION><![CDATA[2.1.14359]]></STARTVERSION>
+<!--15D7CE8D95D043189162DBABA54A1F61-->  
<STARTVERSION><![CDATA[2.1.14362]]></STARTVERSION>
 <!--15D7CE8D95D043189162DBABA54A1F61-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to