details: https://code.openbravo.com/erp/devel/pi/rev/8845de885b87
changeset: 22327:8845de885b87
user: David Miguelez <david.miguelez <at> openbravo.com>
date: Mon Mar 03 11:06:05 2014 +0100
summary: Fixes Issue 24405. Fixes problem with more than 1000 Pending Trx.
diffstat:
src-db/database/model/tables/M_TRANSACTION.xml
| 5 +
src-db/database/sourcedata/AD_COLUMN.xml
| 34 +++++++
src-db/database/sourcedata/AD_ELEMENT.xml
| 12 ++
src-db/database/sourcedata/AD_FIELD.xml
| 26 +++++
src-util/modulescript/build/classes/org/openbravo/modulescript/UpdateMTransactionCostingStatus.class
| 0
src-util/modulescript/src/org/openbravo/modulescript/UpdateMTransactionCostingStatus.java
| 2 +
src/org/openbravo/costing/CostingBackground.java
| 44 ++++++---
7 files changed, 106 insertions(+), 17 deletions(-)
diffs (245 lines):
diff -r ab571092c694 -r 8845de885b87
src-db/database/model/tables/M_TRANSACTION.xml
--- a/src-db/database/model/tables/M_TRANSACTION.xml Mon Mar 03 10:04:32
2014 +0100
+++ b/src-db/database/model/tables/M_TRANSACTION.xml Mon Mar 03 11:06:05
2014 +0100
@@ -121,6 +121,10 @@
<default><![CDATA[Y]]></default>
<onCreateDefault/>
</column>
+ <column name="ISPROCESSED" primaryKey="false" required="true"
type="CHAR" size="1" autoIncrement="false">
+ <default><![CDATA[N]]></default>
+ <onCreateDefault><![CDATA['N']]></onCreateDefault>
+ </column>
<foreign-key foreignTable="M_INTERNAL_CONSUMPTIONLINE"
name="M_INTL_CONSUMP_MTRANSACTION">
<reference local="M_INTERNAL_CONSUMPTIONLINE_ID"
foreign="M_INTERNAL_CONSUMPTIONLINE_ID"/>
</foreign-key>
@@ -188,5 +192,6 @@
<check name="M_TRANSACTION_CURRENCY"><![CDATA[(TRANSACTIONCOST IS NULL)
OR ((TRANSACTIONCOST IS NOT NULL) AND (C_CURRENCY_ID IS NOT NULL))]]></check>
<check name="M_TRANSACTION_ISACTIVE_CHECK"><![CDATA[ISACTIVE IN ('Y',
'N')]]></check>
<check name="M_TRANSACTION_ISCOSTCALC_TRX"><![CDATA[ISCOSTCALCULATED IN
('Y', 'N')]]></check>
+ <check name="M_TRANSACTION_ISPROCESSED"><![CDATA[ISPROCESSED IN ('Y',
'N')]]></check>
</table>
</database>
diff -r ab571092c694 -r 8845de885b87 src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml Mon Mar 03 10:04:32 2014 +0100
+++ b/src-db/database/sourcedata/AD_COLUMN.xml Mon Mar 03 11:06:05 2014 +0100
@@ -304701,6 +304701,40 @@
<!--BB367F44E4854CBDAAB25CC57E82B464-->
<ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
<!--BB367F44E4854CBDAAB25CC57E82B464--></AD_COLUMN>
+<!--BB403BFE8561486BB3B12F188C8256CE--><AD_COLUMN>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<AD_COLUMN_ID><![CDATA[BB403BFE8561486BB3B12F188C8256CE]]></AD_COLUMN_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <NAME><![CDATA[Is Processed]]></NAME>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<COLUMNNAME><![CDATA[Isprocessed]]></COLUMNNAME>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<AD_TABLE_ID><![CDATA[329]]></AD_TABLE_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<FIELDLENGTH><![CDATA[1]]></FIELDLENGTH>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<DEFAULTVALUE><![CDATA[N]]></DEFAULTVALUE>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <SEQNO><![CDATA[93]]></SEQNO>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<AD_ELEMENT_ID><![CDATA[4BF0322B8D3841F089368309E30F2D87]]></AD_ELEMENT_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <POSITION><![CDATA[31]]></POSITION>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--BB403BFE8561486BB3B12F188C8256CE--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--BB403BFE8561486BB3B12F188C8256CE-->
<ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--BB403BFE8561486BB3B12F188C8256CE--></AD_COLUMN>
+
<!--BB466480BFAC492AA36E5495EC72BD44--><AD_COLUMN>
<!--BB466480BFAC492AA36E5495EC72BD44-->
<AD_COLUMN_ID><![CDATA[BB466480BFAC492AA36E5495EC72BD44]]></AD_COLUMN_ID>
<!--BB466480BFAC492AA36E5495EC72BD44-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ab571092c694 -r 8845de885b87 src-db/database/sourcedata/AD_ELEMENT.xml
--- a/src-db/database/sourcedata/AD_ELEMENT.xml Mon Mar 03 10:04:32 2014 +0100
+++ b/src-db/database/sourcedata/AD_ELEMENT.xml Mon Mar 03 11:06:05 2014 +0100
@@ -22156,6 +22156,18 @@
<!--4B4FE5FD9E234FC3A704B77C67C8ECFB--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
<!--4B4FE5FD9E234FC3A704B77C67C8ECFB--></AD_ELEMENT>
+<!--4BF0322B8D3841F089368309E30F2D87--><AD_ELEMENT>
+<!--4BF0322B8D3841F089368309E30F2D87-->
<AD_ELEMENT_ID><![CDATA[4BF0322B8D3841F089368309E30F2D87]]></AD_ELEMENT_ID>
+<!--4BF0322B8D3841F089368309E30F2D87-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--4BF0322B8D3841F089368309E30F2D87--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--4BF0322B8D3841F089368309E30F2D87--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--4BF0322B8D3841F089368309E30F2D87-->
<COLUMNNAME><![CDATA[Isprocessed]]></COLUMNNAME>
+<!--4BF0322B8D3841F089368309E30F2D87--> <NAME><![CDATA[Is Processed]]></NAME>
+<!--4BF0322B8D3841F089368309E30F2D87--> <PRINTNAME><![CDATA[Is
Processed]]></PRINTNAME>
+<!--4BF0322B8D3841F089368309E30F2D87-->
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--4BF0322B8D3841F089368309E30F2D87--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
+<!--4BF0322B8D3841F089368309E30F2D87--></AD_ELEMENT>
+
<!--4C86EEDF992E4136B9870F6042A3330F--><AD_ELEMENT>
<!--4C86EEDF992E4136B9870F6042A3330F-->
<AD_ELEMENT_ID><![CDATA[4C86EEDF992E4136B9870F6042A3330F]]></AD_ELEMENT_ID>
<!--4C86EEDF992E4136B9870F6042A3330F-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ab571092c694 -r 8845de885b87 src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml Mon Mar 03 10:04:32 2014 +0100
+++ b/src-db/database/sourcedata/AD_FIELD.xml Mon Mar 03 11:06:05 2014 +0100
@@ -183408,6 +183408,32 @@
<!--1D534D626BB1488DBEBDB4B6E0C70A8B-->
<EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--1D534D626BB1488DBEBDB4B6E0C70A8B--></AD_FIELD>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--><AD_FIELD>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<AD_FIELD_ID><![CDATA[1D58EC15C6BC4732951AB9B55332BFE5]]></AD_FIELD_ID>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <NAME><![CDATA[Is Processed]]></NAME>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <AD_TAB_ID><![CDATA[289]]></AD_TAB_ID>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<AD_COLUMN_ID><![CDATA[BB403BFE8561486BB3B12F188C8256CE]]></AD_COLUMN_ID>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <SEQNO><![CDATA[180]]></SEQNO>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--1D58EC15C6BC4732951AB9B55332BFE5-->
<EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--1D58EC15C6BC4732951AB9B55332BFE5--></AD_FIELD>
+
<!--1D5E40824DA04DC1AED695552A1A3038--><AD_FIELD>
<!--1D5E40824DA04DC1AED695552A1A3038-->
<AD_FIELD_ID><![CDATA[1D5E40824DA04DC1AED695552A1A3038]]></AD_FIELD_ID>
<!--1D5E40824DA04DC1AED695552A1A3038-->
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ab571092c694 -r 8845de885b87
src-util/modulescript/build/classes/org/openbravo/modulescript/UpdateMTransactionCostingStatus.class
Binary file
src-util/modulescript/build/classes/org/openbravo/modulescript/UpdateMTransactionCostingStatus.class
has changed
diff -r ab571092c694 -r 8845de885b87
src-util/modulescript/src/org/openbravo/modulescript/UpdateMTransactionCostingStatus.java
---
a/src-util/modulescript/src/org/openbravo/modulescript/UpdateMTransactionCostingStatus.java
Mon Mar 03 10:04:32 2014 +0100
+++
b/src-util/modulescript/src/org/openbravo/modulescript/UpdateMTransactionCostingStatus.java
Mon Mar 03 11:06:05 2014 +0100
@@ -33,6 +33,8 @@
ps = cp
.getPreparedStatement("UPDATE m_transaction SET costing_status =
'CC' WHERE iscostcalculated = 'Y' AND costing_status = 'NC'");
ps.executeUpdate();
+ ps = cp.getPreparedStatement("UPDATE m_transaction SET isprocessed = 'Y'
WHERE iscostcalculated = 'Y' AND isprocessed = 'N'");
+ ps.executeUpdate();
} catch (Exception e) {
handleError(e);
} finally {
diff -r ab571092c694 -r 8845de885b87
src/org/openbravo/costing/CostingBackground.java
--- a/src/org/openbravo/costing/CostingBackground.java Mon Mar 03 10:04:32
2014 +0100
+++ b/src/org/openbravo/costing/CostingBackground.java Mon Mar 03 11:06:05
2014 +0100
@@ -23,10 +23,11 @@
import java.util.List;
import org.apache.log4j.Logger;
+import org.hibernate.ScrollMode;
+import org.hibernate.ScrollableResults;
import org.openbravo.base.exception.OBException;
import org.openbravo.base.session.OBPropertiesProvider;
import org.openbravo.dal.core.OBContext;
-import org.openbravo.dal.core.SessionHandler;
import org.openbravo.dal.service.OBDal;
import org.openbravo.dal.service.OBQuery;
import org.openbravo.erpCommon.utility.OBError;
@@ -83,10 +84,12 @@
orgsWithRule.add(org.getId());
}
+ // Fix the Not Processed flag for those Transactions with Cost Not
Calculated
+ SetNotProcessedWhenNotCalculatedTransactions(orgsWithRule);
+
List<MaterialTransaction> trxs = getTransactionsBatch(orgsWithRule);
int counter = 0, total = trxs.size(), batch = 0;
- boolean pendingTrx = trxs.size() > 0;
- while (pendingTrx && counter < maxTransactions) {
+ while (counter < maxTransactions) {
batch++;
for (MaterialTransaction transaction : trxs) {
counter++;
@@ -94,6 +97,7 @@
log4j.debug("Start transaction process: " + transaction.getId());
CostingServer transactionCost = new CostingServer(transaction);
transactionCost.process();
+ transaction.setProcessed(true);
log4j.debug("Transaction processed: " + counter + "/" + total + "
batch: " + batch);
} catch (OBException e) {
String resultMsg = OBMessageUtils.parseTranslation(e.getMessage());
@@ -114,11 +118,10 @@
}
// If cost has been calculated successfully do a commit.
- SessionHandler.getInstance().commitAndStart();
+ OBDal.getInstance().getConnection().commit();
}
OBDal.getInstance().getSession().clear();
trxs = getTransactionsBatch(orgsWithRule);
- pendingTrx = areTransactionsPending(orgsWithRule);
total += trxs.size();
}
@@ -137,11 +140,21 @@
}
}
+ private void SetNotProcessedWhenNotCalculatedTransactions(List<String>
orgsWithRule) {
+ ScrollableResults trxs = getTransactionsNotCalculated(orgsWithRule);
+ while (trxs.next()) {
+ MaterialTransaction transaction = (MaterialTransaction) trxs.get(0);
+ transaction.setProcessed(false);
+ OBDal.getInstance().save(transaction);
+ }
+ OBDal.getInstance().flush();
+ }
+
private List<MaterialTransaction> getTransactionsBatch(List<String>
orgsWithRule) {
StringBuffer where = new StringBuffer();
where.append(" as trx");
where.append(" join trx." + MaterialTransaction.PROPERTY_PRODUCT + " as
p");
- where.append(" where trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED
+ " = false");
+ where.append(" where trx." + MaterialTransaction.PROPERTY_ISPROCESSED + "
= false");
where.append(" and trx." + MaterialTransaction.PROPERTY_COSTINGSTATUS +
" <> 'S'");
where.append(" and p." + Product.PROPERTY_PRODUCTTYPE + " = 'I'");
where.append(" and p." + Product.PROPERTY_STOCKED + " = true");
@@ -171,24 +184,21 @@
return trxQry.list();
}
- private boolean areTransactionsPending(List<String> orgsWithRule) {
+ /**
+ * Get Transactions with Processed flag = 'Y' but it's cost is Not Calculated
+ */
+ private ScrollableResults getTransactionsNotCalculated(List<String>
orgsWithRule) {
StringBuffer where = new StringBuffer();
where.append(" as trx");
- where.append(" join trx." + MaterialTransaction.PROPERTY_PRODUCT + " as
p");
- where.append(" where trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED
+ " = false");
- where.append(" and trx." + MaterialTransaction.PROPERTY_COSTINGSTATUS +
" = 'NC'");
- where.append(" and p." + Product.PROPERTY_PRODUCTTYPE + " = 'I'");
- where.append(" and p." + Product.PROPERTY_STOCKED + " = true");
- where.append(" and trx." +
MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE + " <= :now");
+ where.append(" where trx." + MaterialTransaction.PROPERTY_ISPROCESSED + "
= true");
+ where.append(" and trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED
+ " = false");
where.append(" and trx." + MaterialTransaction.PROPERTY_ORGANIZATION +
".id in (:orgs)");
- where.append(" order by trx." +
MaterialTransaction.PROPERTY_TRANSACTIONPROCESSDATE);
OBQuery<MaterialTransaction> trxQry = OBDal.getInstance().createQuery(
MaterialTransaction.class, where.toString());
- trxQry.setMaxResult(1);
- trxQry.setNamedParameter("now", new Date());
trxQry.setFilterOnReadableOrganization(false);
trxQry.setNamedParameter("orgs", orgsWithRule);
+ trxQry.setFetchSize(1000);
- return trxQry.list().size() > 0;
+ return trxQry.scroll(ScrollMode.FORWARD_ONLY);
}
}
------------------------------------------------------------------------------
Subversion Kills Productivity. Get off Subversion & Make the Move to Perforce.
With Perforce, you get hassle-free workflows. Merge that actually works.
Faster operations. Version large binaries. Built-in WAN optimization and the
freedom to use Git, Perforce or both. Make the move to Perforce.
http://pubads.g.doubleclick.net/gampad/clk?id=122218951&iu=/4140/ostg.clktrk
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits