details:   /erp/devel/int/rev/bfe69bdc3de1
changeset: 6650:bfe69bdc3de1
user:      Iván Perdomo <ivan.perdomo <at> openbravo.com>
date:      Tue Mar 09 13:20:12 2010 +0100
summary:   Fixes issue 12382: Added dateTimeFormat in db calls

details:   /erp/devel/int/rev/dbfe99032a08
changeset: 6651:dbfe99032a08
user:      Sivaraman Rajagopal <sivaraman.rajagopal <at> openbravo.com>
date:      Tue Mar 09 17:59:31 2010 +0530
summary:   Fixes issue 12431: It is not possible to execute Project 
profitability

details:   /erp/devel/int/rev/05a1d98291f0
changeset: 6652:05a1d98291f0
user:      Iván Perdomo <ivan.perdomo <at> openbravo.com>
date:      Tue Mar 09 16:05:35 2010 +0100
summary:   Rollback changeset bfe69bdc3de1

details:   /erp/devel/int/rev/2b0ab921b30a
changeset: 6653:2b0ab921b30a
user:      Antonio Moreno <antonio.moreno <at> openbravo.com>
date:      Tue Mar 09 17:41:29 2010 +0100
summary:   Related to issue 12212. Fixed corner case (column belonging to one 
module added to a table which belongs to a different module). The messages will 
also show the table name when relevant.

details:   /erp/devel/int/rev/c843163bc254
changeset: 6654:c843163bc254
user:      Adrián Romero <adrianromero <at> openbravo.com>
date:      Tue Mar 09 20:52:58 2010 +0100
summary:   Fixes issue 0012356: Enterprise module management: Behaviour not 
correct

details:   /erp/devel/int/rev/adc5e7ac99da
changeset: 6655:adc5e7ac99da
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Wed Mar 10 00:02:08 2010 +0100
summary:   Fixes bug 0012625: Performance issue on Payment monitor process

diffstat:

 src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java                  |  
 7 +-
 src/org/openbravo/erpCommon/ad_process/PaymentMonitorProcess.java           |  
10 +-
 src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql |  
42 +++++---
 src/org/openbravo/erpCommon/modules/ModuleReferenceDataOrgTree.java         |  
46 ++++++++++
 src/org/openbravo/service/system/DatabaseValidator.java                     |  
23 +++-
 5 files changed, 104 insertions(+), 24 deletions(-)

diffs (285 lines):

diff -r 08c31c4416ab -r adc5e7ac99da 
src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java
--- a/src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java        Tue Mar 
09 11:07:27 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_process/PaymentMonitor.java        Wed Mar 
10 00:02:08 2010 +0100
@@ -12,6 +12,7 @@
 import org.apache.log4j.Logger;
 import org.hibernate.criterion.Expression;
 import org.openbravo.base.session.OBPropertiesProvider;
+import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
@@ -70,7 +71,11 @@
     final OBQuery<DebtPayment> obqParameters = 
OBDal.getInstance().createQuery(DebtPayment.class,
         whereClause);
     obqParameters.setNamedParameter("invoice", invoice.getId());
-
+    // For Background process execution at system level
+    if (OBContext.getOBContext().isInAdministratorMode()) {
+      obqParameters.setFilterOnReadableClients(false);
+      obqParameters.setFilterOnReadableOrganization(false);
+    }
     final List<DebtPayment> payments = obqParameters.list();
     ArrayList<Long> allDaysToDue = new ArrayList<Long>();
     for (DebtPayment payment : payments) {
diff -r 08c31c4416ab -r adc5e7ac99da 
src/org/openbravo/erpCommon/ad_process/PaymentMonitorProcess.java
--- a/src/org/openbravo/erpCommon/ad_process/PaymentMonitorProcess.java Tue Mar 
09 11:07:27 2010 +0100
+++ b/src/org/openbravo/erpCommon/ad_process/PaymentMonitorProcess.java Wed Mar 
10 00:02:08 2010 +0100
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.hibernate.LockMode;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
@@ -33,10 +34,17 @@
       }
       final List<Invoice> invoices = obqParameters.list();
       for (Invoice invoice : invoices) {
+        OBDal.getInstance().getSession().lock(Invoice.ENTITY_NAME, invoice, 
LockMode.NONE);
         PaymentMonitor.updateInvoice(invoice);
         counter++;
+        OBDal.getInstance().getSession().flush();
+        OBDal.getInstance().getSession().clear();
+        if (counter % 50 == 0) {
+          logger.log("Invoices updated: " + counter + "\n");
+        }
       }
-      logger.log("Invoices updated: " + counter + "\n");
+      if (counter % 50 != 0)
+        logger.log("Invoices updated: " + counter + "\n");
     } catch (Exception e) {
       // catch any possible exception and throw it as a Quartz
       // JobExecutionException
diff -r 08c31c4416ab -r adc5e7ac99da 
src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql
--- 
a/src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql   
    Tue Mar 09 11:07:27 2010 +0100
+++ 
b/src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql   
    Wed Mar 10 00:02:08 2010 +0100
@@ -71,11 +71,13 @@
                   ELSE COALESCE(C_CURRENCY_CONVERT(ila.amt, ia.C_CURRENCY_ID, 
?, TO_DATE(COALESCE(ia.DATEINVOICED, NOW())), NULL, ila.AD_CLIENT_ID, 
ila.AD_ORG_ID),0) * 
                   (1 + (CASE WHEN ia.totallines IS NULL OR disc.dis_amt IS 
NULL THEN 0 ELSE (COALESCE(disc.dis_amt,0)/(C_CURRENCY_CONVERT(ia.totallines, 
ia.C_CURRENCY_ID, ?, TO_DATE(COALESCE(ia.DATEINVOICED, NOW())), NULL, 
ia.AD_CLIENT_ID, ia.AD_ORG_ID) - disc.dis_amt)) END)) END AS amount
            FROM M_Product p, C_InvoiceLine il LEFT JOIN 
C_InvoiceLine_AcctDimension ila on il.C_InvoiceLine_ID = ila.C_InvoiceLine_ID,
-             C_Invoice ia left join (SELECT il.c_invoice_id, 
sum(C_CURRENCY_CONVERT(il.linenetamt, ia.C_CURRENCY_ID, ?, 
TO_DATE(COALESCE(ia.DATEINVOICED, NOW())), NULL, il.AD_CLIENT_ID, 
il.AD_ORG_ID)) as dis_amt
-                                         FROM c_invoiceline il, c_invoice ia
-                                        WHERE il.c_invoice_discount_id IS NOT 
NULL
-                                        AND il.c_invoice_id= ia.c_invoice_id
-                                        GROUP BY il.c_invoice_id) disc ON 
ia.C_Invoice_ID = disc.C_Invoice_ID
+             C_Invoice ia left join (SELECT il1.c_invoice_id, 
sum(C_CURRENCY_CONVERT(il1.linenetamt, ia.C_CURRENCY_ID, ?, 
TO_DATE(COALESCE(ia.DATEINVOICED, NOW())), NULL, il1.AD_CLIENT_ID, 
il1.AD_ORG_ID)) as dis_amt
+                                         FROM c_invoiceline il1, c_invoice ia
+                                        WHERE il1.c_invoice_discount_id IS NOT 
NULL
+                                        AND il1.c_invoice_id= ia.c_invoice_id
+                                        AND il1.AD_Org_ID IN ('10')
+                                        AND il1.AD_Client_ID IN ('10')
+                                        GROUP BY il1.c_invoice_id) disc ON 
ia.C_Invoice_ID = disc.C_Invoice_ID
            WHERE ia.C_Invoice_ID = il.C_Invoice_ID
              AND il.M_Product_ID = p.M_Product_ID
              AND ia.issotrx = 'Y'
@@ -96,11 +98,13 @@
                   ELSE COALESCE(C_CURRENCY_CONVERT(ila.amt, ib.C_CURRENCY_ID, 
?, TO_DATE(COALESCE(ib.DATEINVOICED, NOW())), NULL, ila.AD_CLIENT_ID, 
ila.AD_ORG_ID),0) * 
                   (1 + (CASE WHEN ib.totallines IS NULL OR disc.dis_amt IS 
NULL THEN 0 ELSE (COALESCE(disc.dis_amt,0)/(C_CURRENCY_CONVERT(ib.totallines, 
ib.C_CURRENCY_ID, ?, TO_DATE(COALESCE(ib.DATEINVOICED, NOW())), NULL, 
ib.AD_CLIENT_ID, ib.AD_ORG_ID) - disc.dis_amt)) END)) END AS amount
            FROM M_Product p, C_InvoiceLine il LEFT JOIN 
C_InvoiceLine_AcctDimension ila on il.C_InvoiceLine_ID = ila.C_InvoiceLine_ID,
-             C_Invoice ib left join (SELECT il.c_invoice_id, 
sum(C_CURRENCY_CONVERT(il.linenetamt, ib.C_CURRENCY_ID, ?, 
TO_DATE(COALESCE(ib.DATEINVOICED, NOW())), NULL, il.AD_CLIENT_ID, 
il.AD_ORG_ID)) as dis_amt
-                                         FROM c_invoiceline il, c_invoice ib 
-                                        WHERE il.c_invoice_discount_id IS NOT 
NULL
-                                        AND il.c_invoice_id= ib.c_invoice_id
-                                        GROUP BY il.c_invoice_id) disc ON 
ib.C_Invoice_ID = disc.C_Invoice_ID
+             C_Invoice ib left join (SELECT il2.c_invoice_id, 
sum(C_CURRENCY_CONVERT(il2.linenetamt, ib.C_CURRENCY_ID, ?, 
TO_DATE(COALESCE(ib.DATEINVOICED, NOW())), NULL, il2.AD_CLIENT_ID, 
il2.AD_ORG_ID)) as dis_amt
+                                         FROM c_invoiceline il2, c_invoice ib 
+                                        WHERE il2.c_invoice_discount_id IS NOT 
NULL
+                                        AND il2.c_invoice_id= ib.c_invoice_id
+                                        AND il2.AD_Org_ID IN ('11')
+                                        AND il2.AD_Client_ID IN ('11')
+                                        GROUP BY il2.c_invoice_id) disc ON 
ib.C_Invoice_ID = disc.C_Invoice_ID
            WHERE ib.C_Invoice_ID = il.C_Invoice_ID
              AND il.M_Product_ID = p.M_Product_ID
              AND ib.issotrx = 'Y'
@@ -122,11 +126,13 @@
                   ELSE COALESCE(C_CURRENCY_CONVERT(ila.amt, ic.C_CURRENCY_ID, 
?, TO_DATE(COALESCE(ic.DATEINVOICED, NOW())), NULL, ila.AD_CLIENT_ID, 
ila.AD_ORG_ID),0) * 
                   (1 + (CASE WHEN ic.totallines IS NULL OR disc.dis_amt IS 
NULL THEN 0 ELSE (COALESCE(disc.dis_amt,0)/(C_CURRENCY_CONVERT(ic.totallines, 
ic.C_CURRENCY_ID, ?, TO_DATE(COALESCE(ic.DATEINVOICED, NOW())), NULL, 
ic.AD_CLIENT_ID, ic.AD_ORG_ID) - disc.dis_amt)) END)) END AS amount
            FROM M_Product p, C_InvoiceLine il LEFT JOIN 
C_InvoiceLine_AcctDimension ila on il.C_InvoiceLine_ID = ila.C_InvoiceLine_ID,
-             C_Invoice ic left join (SELECT il.c_invoice_id, 
sum(C_CURRENCY_CONVERT(il.linenetamt, ic.C_CURRENCY_ID, ?, 
TO_DATE(COALESCE(ic.DATEINVOICED, NOW())), NULL, il.AD_CLIENT_ID, 
il.AD_ORG_ID)) as dis_amt
-                                      FROM c_invoiceline il, c_invoice ic 
-                                      WHERE il.c_invoice_discount_id IS NOT 
NULL
-                                      AND il.c_invoice_id= ic.c_invoice_id
-                                      GROUP BY il.c_invoice_id) disc ON 
ic.C_Invoice_ID = disc.C_Invoice_ID
+             C_Invoice ic left join (SELECT il3.c_invoice_id, 
sum(C_CURRENCY_CONVERT(il3.linenetamt, ic.C_CURRENCY_ID, ?, 
TO_DATE(COALESCE(ic.DATEINVOICED, NOW())), NULL, il3.AD_CLIENT_ID, 
il3.AD_ORG_ID)) as dis_amt
+                                      FROM c_invoiceline il3, c_invoice ic 
+                                      WHERE il3.c_invoice_discount_id IS NOT 
NULL
+                                      AND il3.c_invoice_id= ic.c_invoice_id
+                                      AND il3.AD_Org_ID IN ('12')
+                                      AND il3.AD_Client_ID IN ('12')
+                                      GROUP BY il3.c_invoice_id) disc ON 
ic.C_Invoice_ID = disc.C_Invoice_ID
            WHERE ic.C_Invoice_ID = il.C_Invoice_ID
              AND il.M_Product_ID = p.M_Product_ID
              AND ic.processed = 'Y'
@@ -207,6 +213,8 @@
     <Parameter name="cCurrencyConv"/>
     <Parameter name="cCurrencyConv"/>
     <Parameter name="cCurrencyConv"/>
+    <Parameter name="org" optional="true" type="replace" after="AND 
il1.AD_Org_ID IN (" text="'10'"/>
+    <Parameter name="client" optional="true" type="replace" after="AND 
il1.AD_Client_ID IN (" text="'10'"/>    
     <Parameter name="datefrom2" optional="true" after="AND 2=2"><![CDATA[ AND 
ia.dateinvoiced >= to_date(?) ]]></Parameter>
     <Parameter name="dateto2" optional="true" after="AND 2=2"><![CDATA[ AND 
ia.dateinvoiced  < to_date(?) ]]></Parameter>
     <Parameter name="org" optional="true" type="replace" after="AND 
ia.AD_Org_ID IN (" text="'1'"/>
@@ -216,6 +224,8 @@
     <Parameter name="cCurrencyConv"/>
     <Parameter name="cCurrencyConv"/>
     <Parameter name="cCurrencyConv"/>
+    <Parameter name="org" optional="true" type="replace" after="AND 
il2.AD_Org_ID IN (" text="'11'"/>
+    <Parameter name="client" optional="true" type="replace" after="AND 
il2.AD_Client_ID IN (" text="'11'"/>        
     <Parameter name="datefrom2" optional="true" after="AND 3=3"><![CDATA[ AND 
ib.dateinvoiced >= to_date(?) ]]></Parameter>
     <Parameter name="dateto2" optional="true" after="AND 3=3"><![CDATA[ AND 
ib.dateinvoiced  < to_date(?) ]]></Parameter>
     <Parameter name="org" optional="true" type="replace" after="AND 
ib.AD_Org_ID IN (" text="'2'"/>
@@ -226,6 +236,8 @@
     <Parameter name="cCurrencyConv"/>
     <Parameter name="cCurrencyConv"/>
     <Parameter name="cCurrencyConv"/>
+    <Parameter name="org" optional="true" type="replace" after="AND 
il3.AD_Org_ID IN (" text="'12'"/>
+    <Parameter name="client" optional="true" type="replace" after="AND 
il3.AD_Client_ID IN (" text="'12'"/>       
     <Parameter name="datefrom2" optional="true" after="AND 4=4"><![CDATA[ AND 
ic.dateinvoiced >= to_date(?) ]]></Parameter>
     <Parameter name="dateto2" optional="true" after="AND 4=4"><![CDATA[ AND 
ic.dateinvoiced  < to_date(?) ]]></Parameter>
     <Parameter name="org" optional="true" type="replace" after="AND 
ic.AD_Org_ID IN (" text="'3'"/>
diff -r 08c31c4416ab -r adc5e7ac99da 
src/org/openbravo/erpCommon/modules/ModuleReferenceDataOrgTree.java
--- a/src/org/openbravo/erpCommon/modules/ModuleReferenceDataOrgTree.java       
Tue Mar 09 11:07:27 2010 +0100
+++ b/src/org/openbravo/erpCommon/modules/ModuleReferenceDataOrgTree.java       
Wed Mar 10 00:02:08 2010 +0100
@@ -18,9 +18,14 @@
  */
 package org.openbravo.erpCommon.modules;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Map;
 import javax.servlet.ServletException;
 
 import org.openbravo.base.HttpBaseServlet;
+import org.openbravo.data.FieldProvider;
 import org.openbravo.erpCommon.utility.Utility;
 import org.openbravo.xmlEngine.XmlDocument;
 
@@ -115,6 +120,7 @@
     try {
       data = ModuleReferenceDataOrgTreeData.selectOrg(conn, (lang.equals("") ? 
"en_US" : lang),
           strClient, strOrg);
+      cleanData();
       if (bAddLinks)
         addLinks();
       setLevel(0);
@@ -125,6 +131,46 @@
     }
   }
 
+
+  private void cleanData() {
+
+      // this function removes duplicates in data. Fixes issue 0012356: 
Enterprise module management: Behaviour not correct
+
+      Map<String, ModuleReferenceDataOrgTreeData> mappeddata = new 
java.util.HashMap<String, ModuleReferenceDataOrgTreeData>();
+
+      for (FieldProvider f : data) {
+          if (mappeddata.get(f.getField("node_id")) == null
+                || "Y".equals(f.getField("update_available"))) {
+              mappeddata.put(f.getField("node_id"), 
(ModuleReferenceDataOrgTreeData) f);
+          }
+      }
+
+      ArrayList<ModuleReferenceDataOrgTreeData> l = new 
ArrayList<ModuleReferenceDataOrgTreeData>();
+      l.addAll(mappeddata.values());
+      Collections.sort(l, new Comparator<ModuleReferenceDataOrgTreeData>()  {
+
+            @Override
+            public int compare(ModuleReferenceDataOrgTreeData o1, 
ModuleReferenceDataOrgTreeData o2) {
+                return getSeqNo(o1).compareTo(getSeqNo(o2));
+            }
+
+            private Integer getSeqNo(ModuleReferenceDataOrgTreeData o) {
+
+                try {
+                    return Integer.valueOf(o.getField("seqno"));
+                } catch (NumberFormatException e) {
+                    return 0;
+                }
+            }
+        });
+
+
+      data = l.toArray(new ModuleReferenceDataOrgTreeData[l.size()]);
+
+
+  }
+
+
   /**
    * Adds links to the current sets of nodes, these links can be Update or 
Apply.
    */
diff -r 08c31c4416ab -r adc5e7ac99da 
src/org/openbravo/service/system/DatabaseValidator.java
--- a/src/org/openbravo/service/system/DatabaseValidator.java   Tue Mar 09 
11:07:27 2010 +0100
+++ b/src/org/openbravo/service/system/DatabaseValidator.java   Wed Mar 10 
00:02:08 2010 +0100
@@ -21,6 +21,7 @@
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -99,8 +100,16 @@
       }
     }
 
+    // We need to check both in the full tables added by the module, and in 
the objects which are
+    // added by this module to tables which belong to a different module
+    ArrayList<org.apache.ddlutils.model.Table> tables = new 
ArrayList<org.apache.ddlutils.model.Table>();
     for (int j = 0; j < db.getTableCount(); j++) {
-      org.apache.ddlutils.model.Table dbTable = db.getTable(j);
+      tables.add(db.getTable(j));
+    }
+    for (int j = 0; j < db.getModifiedTableCount(); j++) {
+      tables.add(db.getModifiedTable(j));
+    }
+    for (org.apache.ddlutils.model.Table dbTable : tables) {
       if (dbTable.getName().length() > 30) {
         
result.addError(SystemValidationResult.SystemValidationType.INCORRECT_NAME_LENGTH,
             "Name of table " + dbTable.getName() + " is too long. Only 30 
characters allowed.");
@@ -108,35 +117,35 @@
       for (int i = 0; i < dbTable.getColumnCount(); i++) {
         if (dbTable.getColumn(i).getName().length() > 30) {
           
result.addError(SystemValidationResult.SystemValidationType.INCORRECT_NAME_LENGTH,
-              "Name of column " + dbTable.getForeignKey(i).getName()
+              "Name of column " + dbTable.getColumn(i).getName() + "for table 
" + dbTable.getName()
                   + " is too long. Only 30 characters allowed.");
         }
       }
       for (int i = 0; i < dbTable.getCheckCount(); i++) {
         if (dbTable.getCheck(i).getName().length() > 30) {
           
result.addError(SystemValidationResult.SystemValidationType.INCORRECT_NAME_LENGTH,
-              "Name of Check " + dbTable.getCheck(i).getName()
+              "Name of Check " + dbTable.getCheck(i).getName() + "for table " 
+ dbTable.getName()
                   + " is too long. Only 30 characters allowed.");
         }
       }
       for (int i = 0; i < dbTable.getForeignKeyCount(); i++) {
         if (dbTable.getForeignKey(i).getName().length() > 30) {
           
result.addError(SystemValidationResult.SystemValidationType.INCORRECT_NAME_LENGTH,
-              "Name of ForeignKey " + dbTable.getForeignKey(i).getName()
-                  + " is too long. Only 30 characters allowed.");
+              "Name of ForeignKey " + dbTable.getForeignKey(i).getName() + 
"for table "
+                  + dbTable.getName() + " is too long. Only 30 characters 
allowed.");
         }
       }
       for (int i = 0; i < dbTable.getIndexCount(); i++) {
         if (dbTable.getIndex(i).getName().length() > 30) {
           
result.addError(SystemValidationResult.SystemValidationType.INCORRECT_NAME_LENGTH,
-              "Name of Index " + dbTable.getIndex(i).getName()
+              "Name of Index " + dbTable.getIndex(i).getName() + "for table " 
+ dbTable.getName()
                   + " is too long. Only 30 characters allowed.");
         }
       }
       for (int i = 0; i < dbTable.getUniqueCount(); i++) {
         if (dbTable.getUnique(i).getName().length() > 30) {
           
result.addError(SystemValidationResult.SystemValidationType.INCORRECT_NAME_LENGTH,
-              "Name of Unique " + dbTable.getUnique(i).getName()
+              "Name of Unique " + dbTable.getUnique(i).getName() + "for table 
" + dbTable.getName()
                   + " is too long. Only 30 characters allowed.");
         }
       }

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to