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® 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