details:   https://code.openbravo.com/erp/devel/pi/rev/6db0c6e92d06
changeset: 31783:6db0c6e92d06
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Wed Mar 22 16:11:55 2017 +0100
summary:   [improvements-eac] Calculate static permissions in a static block.

The static queries (Not dependent on the current role) can be executed one time 
per
instance of EntityAccessChecker class. In order to achieve this, the queries 
have
been moved to a static block of code.

Before this changeset, the queries in the database filtered the information 
based on
certain parameters. Now this filter should be applied in the java part instead 
of in
the database.

details:   https://code.openbravo.com/erp/devel/pi/rev/a9c3320f4c53
changeset: 31784:a9c3320f4c53
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Mar 23 18:08:06 2017 +0100
summary:   [improvements-eac] Avoid unnecessary creation of objects using hql.

details:   https://code.openbravo.com/erp/devel/pi/rev/9e34420aa53e
changeset: 31785:9e34420aa53e
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Mar 23 18:21:45 2017 +0100
summary:   [improvements-eac] Create a generic method.

details:   https://code.openbravo.com/erp/devel/pi/rev/858d3558be72
changeset: 31786:858d3558be72
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Mon Mar 27 11:50:30 2017 +0200
summary:   [improvements-eac] Merge with pi.

details:   https://code.openbravo.com/erp/devel/pi/rev/238c36f55b98
changeset: 31787:238c36f55b98
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Mon Mar 27 12:18:22 2017 +0200
summary:   [improvements-eac] fixed a typo

details:   https://code.openbravo.com/erp/devel/pi/rev/4acf54cafb0a
changeset: 31788:4acf54cafb0a
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Mon Mar 27 17:49:06 2017 +0200
summary:   [improvements-eac] targetTablesIds should be filtered properly

The info cached in targetTablesIds should be filtered by table of the column
instead of the table of the selector. Before these last fixes, the info in
targetTablesIds is not filtered properly by mistake. Now it has been fixed.

details:   https://code.openbravo.com/erp/devel/pi/rev/d4b657eb28f8
changeset: 31789:d4b657eb28f8
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Apr 06 10:04:24 2017 +0200
summary:   [improvements-eac] codereview: use a generic variable in all queries.

details:   https://code.openbravo.com/erp/devel/pi/rev/04e6b140a21b
changeset: 31790:04e6b140a21b
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Apr 06 10:13:59 2017 +0200
summary:   [improvements-eac] codereview: return a Set instead of a List.

details:   https://code.openbravo.com/erp/devel/pi/rev/1de19d339077
changeset: 31791:1de19d339077
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Apr 06 10:25:47 2017 +0200
summary:   [improvements-eac] codereview: it's redundant to check for contains

Being processes a Set it's redundant to check for contains before adding 
elements.
Besides a comment is removed.

details:   https://code.openbravo.com/erp/devel/pi/rev/0557fe94c76e
changeset: 31792:0557fe94c76e
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Apr 06 14:13:45 2017 +0200
summary:   [improvements-eac] codereview: added javadoc

details:   https://code.openbravo.com/erp/devel/pi/rev/83f94548c265
changeset: 31793:83f94548c265
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Apr 06 14:31:04 2017 +0200
summary:   [improvements-eac] codereview: improve legibility creating constants.

details:   https://code.openbravo.com/erp/devel/pi/rev/d5668842fa7f
changeset: 31794:d5668842fa7f
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Thu Apr 06 15:28:51 2017 +0200
summary:   [improvements-eac] javadoc

details:   https://code.openbravo.com/erp/devel/pi/rev/1c79f596836c
changeset: 31795:1c79f596836c
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Thu Apr 06 15:33:24 2017 +0200
summary:   [improvements-eac] removed some clutter

details:   https://code.openbravo.com/erp/devel/pi/rev/f5066d8a85b5
changeset: 31796:f5066d8a85b5
user:      Inigo Sanchez <inigo.sanchez <at> openbravo.com>
date:      Thu Apr 06 16:12:11 2017 +0200
summary:   Fixed issue 35622: EntityAccessChecker Perfomance Improvements 
project

This project aims to group a set of tasks and improvements that will applied to 
the
EntityAccessChecker with the objective of improving the performance of this 
process.

diffstat:

 lib/README                                                                     
                                           |      1 -
 modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml 
                                           |      2 +-
 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-db/database/sourcedata/OBUIAPP_PARAMETER.xml
                                     |      2 +
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
                 |    120 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_TransactionProcess.java
                 |     21 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/utility/FIN_Utility.java
                            |      7 +-
 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-addPayment.js
                            |     24 +-
 
modules/org.openbravo.advpaymentmngt/web/org.openbravo.advpaymentmngt/js/ob-aprm-addTransaction.js
                        |     15 +-
 modules/org.openbravo.apachejdbcconnectionpool/lib/runtime/tomcat-jdbc.jar     
                                           |      0 
 
modules/org.openbravo.apachejdbcconnectionpool/src-db/database/sourcedata/AD_MODULE.xml
                                   |      2 +-
 
modules/org.openbravo.apachejdbcconnectionpool/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                        |      2 +-
 
modules/org.openbravo.apachejdbcconnectionpool/src/org/openbravo/apachejdbcconnectionpool/JdbcExternalConnectionPool.java
 |      9 +-
 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.application/src/org/openbravo/client/application/ViewComponent.java
                          |      5 +-
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
              |      5 +-
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFieldHandler.java
              |     20 +
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-view-grid.js
                     |      7 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-view.js
                 |      6 +-
 
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.kernel/src/org/openbravo/client/kernel/BaseComponent.java
                                    |     13 +-
 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/ComponentGenerator.java
                               |     12 +-
 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.utility.cleanup.log/src-db/database/sourcedata/AD_MODULE.xml
                                        |      2 +-
 
modules/org.openbravo.utility.cleanup.log/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
                             |      2 +-
 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   
                                           |     22 +-
 referencedata/sampledata/F_B_International_Group/AD_PROCESS_REQUEST.xml        
                                           |   1174 +-
 referencedata/sampledata/F_B_International_Group/AD_SEQUENCE.xml               
                                           |     62 +-
 referencedata/sampledata/F_B_International_Group/AD_USER.xml                   
                                           |     48 +-
 referencedata/sampledata/F_B_International_Group/C_BPARTNER.xml                
                                           |     74 +-
 referencedata/sampledata/F_B_International_Group/C_CONVERSION_RATE.xml         
                                           |     48 +-
 referencedata/sampledata/F_B_International_Group/C_INVOICE.xml                 
                                           |   3836 +-
 referencedata/sampledata/F_B_International_Group/C_INVOICELINE.xml             
                                           |   8154 +
 referencedata/sampledata/F_B_International_Group/C_INVOICELINETAX.xml          
                                           |   3996 +
 referencedata/sampledata/F_B_International_Group/C_INVOICETAX.xml              
                                           |   1020 +
 referencedata/sampledata/F_B_International_Group/C_ORDER.xml                   
                                           |   2268 +
 referencedata/sampledata/F_B_International_Group/C_ORDERLINE.xml               
                                           |   9237 ++
 referencedata/sampledata/F_B_International_Group/C_ORDERLINETAX.xml            
                                           |   3366 +
 referencedata/sampledata/F_B_International_Group/C_ORDERTAX.xml                
                                           |    576 +
 referencedata/sampledata/F_B_International_Group/C_ORDER_DISCOUNT.xml          
                                           |    180 +
 referencedata/sampledata/F_B_International_Group/FACT_ACCT.xml                 
                                           |  45352 +++++++++-
 referencedata/sampledata/F_B_International_Group/FIN_BANKSTATEMENT.xml         
                                           |     44 +
 referencedata/sampledata/F_B_International_Group/FIN_BANKSTATEMENTLINE.xml     
                                           |   1260 +
 referencedata/sampledata/F_B_International_Group/FIN_FINACC_TRANSACTION.xml    
                                           |   1794 +
 referencedata/sampledata/F_B_International_Group/FIN_FINANCIAL_ACCOUNT.xml     
                                           |      8 +-
 referencedata/sampledata/F_B_International_Group/FIN_PAYMENT.xml               
                                           |   2046 +
 referencedata/sampledata/F_B_International_Group/FIN_PAYMENT_DETAIL.xml        
                                           |    928 +
 referencedata/sampledata/F_B_International_Group/FIN_PAYMENT_PROPOSAL.xml      
                                           |    174 +
 referencedata/sampledata/F_B_International_Group/FIN_PAYMENT_PROP_DETAIL.xml   
                                           |    600 +
 referencedata/sampledata/F_B_International_Group/FIN_PAYMENT_SCHEDULE.xml      
                                           |   2274 +-
 
referencedata/sampledata/F_B_International_Group/FIN_PAYMENT_SCHEDULEDETAIL.xml 
                                          |   1288 +-
 referencedata/sampledata/F_B_International_Group/FIN_RECONCILIATION.xml        
                                           |     58 +
 referencedata/sampledata/F_B_International_Group/GL_JOURNAL.xml                
                                           |    108 +
 referencedata/sampledata/F_B_International_Group/GL_JOURNALBATCH.xml           
                                           |     82 +-
 referencedata/sampledata/F_B_International_Group/GL_JOURNALLINE.xml            
                                           |   1260 +
 referencedata/sampledata/F_B_International_Group/M_COSTING.xml                 
                                           |   1896 +-
 referencedata/sampledata/F_B_International_Group/M_INOUT.xml                   
                                           |   1566 +
 referencedata/sampledata/F_B_International_Group/M_INOUTLINE.xml               
                                           |   4284 +
 referencedata/sampledata/F_B_International_Group/M_MATCHINV.xml                
                                           |   1368 +
 referencedata/sampledata/F_B_International_Group/M_MATCHPO.xml                 
                                           |   2736 +
 referencedata/sampledata/F_B_International_Group/M_STORAGE_DETAIL.xml          
                                           |     48 +-
 referencedata/sampledata/F_B_International_Group/M_STORAGE_PENDING.xml         
                                           |     48 +-
 referencedata/sampledata/F_B_International_Group/M_TRANSACTION.xml             
                                           |   5580 +
 referencedata/sampledata/F_B_International_Group/M_TRANSACTION_COST.xml        
                                           |   3162 +
 referencedata/sampledata/F_B_International_Group/OBUIAPP_PROCESS_ACCESS.xml    
                                           |    420 +
 src-core/src/org/openbravo/database/SessionInfo.java                           
                                           |      3 +-
 src-db/database/lib/dbsourcemanager.jar                                        
                                           |      0 
 src-db/database/model/functions/C_COMMISSION_PROCESS.xml                       
                                           |      6 +-
 src-db/database/model/functions/C_GET_NET_AMOUNT_FROM_GROSS.xml                
                                           |      6 +
 src-db/database/model/functions/C_INVOICETAX_ADJUSTMENT.xml                    
                                           |      8 +
 src-db/database/model/functions/C_INVOICE_CREATE.xml                           
                                           |    118 +-
 src-db/database/model/functions/C_ORDERTAX_ADJUSTMENT.xml                      
                                           |      8 +
 src-db/database/model/functions/C_ORDER_POST1.xml                              
                                           |     20 +-
 src-db/database/model/functions/M_INOUT_POST.xml                               
                                           |     33 +-
 src-db/database/model/prescript-Oracle.sql                                     
                                           |      4 +-
 src-db/database/model/tables/C_BPARTNER.xml                                    
                                           |      6 +
 src-db/database/sourcedata/AD_CALLOUT.xml                                      
                                           |      9 +
 src-db/database/sourcedata/AD_COLUMN.xml                                       
                                           |      2 +
 src-db/database/sourcedata/AD_FIELD.xml                                        
                                           |      2 +-
 src-db/database/sourcedata/AD_MODEL_OBJECT.xml                                 
                                           |     17 +-
 src-db/database/sourcedata/AD_MODEL_OBJECT_MAPPING.xml                         
                                           |     10 +
 src-db/database/sourcedata/AD_MODULE.xml                                       
                                           |      2 +-
 src-db/database/sourcedata/OBUISEL_SELECTOR.xml                                
                                           |      2 +-
 src-test/src/org/openbravo/test/model/IndexesTest.java                         
                                           |     21 +-
 src-test/src/org/openbravo/test/taxes/data/TaxesLineTestData.java              
                                           |      1 -
 src/org/openbravo/base/secureApp/AllowedCrossDomainsHandler.java               
                                           |      6 +
 src/org/openbravo/dal/security/EntityAccessChecker.java                        
                                           |    291 +-
 src/org/openbravo/erpCommon/ad_actionButton/CreateFrom_Invoice_data.xsql       
                                           |      3 +-
 src/org/openbravo/erpCommon/ad_actionButton/CreditPaymentGrid.html             
                                           |      4 +-
 src/org/openbravo/erpCommon/ad_callouts/SE_Amount_Transaction.java             
                                           |     45 +
 src/org/openbravo/erpCommon/ad_callouts/SE_Payment_Transaction.java            
                                           |      8 +-
 src/org/openbravo/erpCommon/ad_callouts/SE_Trxtype_Transaction.java            
                                           |      4 +-
 src/org/openbravo/erpCommon/ad_forms/About.html                                
                                           |      2 +-
 src/org/openbravo/erpCommon/ad_forms/DocGLJournal.java                         
                                           |     21 +-
 src/org/openbravo/erpCommon/ad_forms/DocGLJournal_data.xsql                    
                                           |      4 +-
 src/org/openbravo/erpCommon/ad_forms/DocInOut.java                             
                                           |     29 +-
 src/org/openbravo/erpCommon/ad_forms/DocInvoice.java                           
                                           |      9 +-
 src/org/openbravo/erpCommon/ad_forms/DocInvoice_data.xsql                      
                                           |      8 +-
 src/org/openbravo/erpCommon/ad_forms/DocLineInvoice_data.xsql                  
                                           |      4 +-
 src/org/openbravo/erpCommon/ad_forms/DocMatchInv.java                          
                                           |      6 +-
 src/org/openbravo/erpCommon/ad_forms/DocMovement.java                          
                                           |     20 +-
 src/org/openbravo/erpCommon/ad_reports/ReportGeneralLedger.java                
                                           |      2 +-
 src/org/openbravo/erpCommon/ad_reports/ReportGeneralLedgerJournal.java         
                                           |      2 +-
 
src/org/openbravo/erpCommon/ad_reports/ReportInvoiceCustomerDimensionalAnalysesJR_data.xsql
                               |      2 +-
 src/org/openbravo/erpCommon/ad_reports/ReportSalesOrderProvided_data.xsql      
                                           |      6 +-
 src/org/openbravo/erpCommon/info/AttributeSetInstance.html                     
                                           |     26 +-
 src/org/openbravo/erpCommon/info/AttributeSetInstance.java                     
                                           |     18 +-
 142 files changed, 111542 insertions(+), 2120 deletions(-)

diffs (truncated from 151241 to 300 lines):

diff -r 05c62ceaa5a6 -r f5066d8a85b5 lib/README
--- a/lib/README        Fri Mar 17 01:25:34 2017 +0000
+++ b/lib/README        Thu Apr 06 16:12:11 2017 +0200
@@ -1,4 +1,3 @@
 When adding or removing libraries to Openbravo ERP please update this page
 with your changes:
 http://wiki.openbravo.com/wiki/Openbravo_Libraries
-
diff -r 05c62ceaa5a6 -r f5066d8a85b5 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
    Fri Mar 17 01:25:34 2017 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MESSAGE.xml
    Thu Apr 06 16:12:11 2017 +0200
@@ -679,7 +679,7 @@
 <!--712C841E501642B881A998CCAC13E420-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
 <!--712C841E501642B881A998CCAC13E420-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
 <!--712C841E501642B881A998CCAC13E420-->  
<VALUE><![CDATA[APRM_CreditWithNegativeAmt]]></VALUE>
-<!--712C841E501642B881A998CCAC13E420-->  <MSGTEXT><![CDATA[It is not necessary 
to use credit for this payment: Actual Payment is greater than Expected 
Payment.]]></MSGTEXT>
+<!--712C841E501642B881A998CCAC13E420-->  <MSGTEXT><![CDATA[It is not possible 
to use credit in negative payments. Please, unselect credit 
records.]]></MSGTEXT>
 <!--712C841E501642B881A998CCAC13E420-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
 <!--712C841E501642B881A998CCAC13E420-->  
<AD_MODULE_ID><![CDATA[A918E3331C404B889D69AA9BFAFB23AC]]></AD_MODULE_ID>
 <!--712C841E501642B881A998CCAC13E420-->  
<ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
diff -r 05c62ceaa5a6 -r f5066d8a85b5 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Fri Mar 17 01:25:34 2017 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml 
    Thu Apr 06 16:12:11 2017 +0200
@@ -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.31700]]></VERSION>
+<!--A918E3331C404B889D69AA9BFAFB23AC-->  
<VERSION><![CDATA[3.0.31774]]></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 05c62ceaa5a6 -r f5066d8a85b5 
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
  Fri Mar 17 01:25:34 2017 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml
  Thu Apr 06 16:12:11 2017 +0200
@@ -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.31700]]></STARTVERSION>
+<!--89326AE95DAD449D85DFAB2C5B1C6683-->  
<STARTVERSION><![CDATA[2.1.31774]]></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.31700]]></STARTVERSION>
+<!--B97FC854C6DD41E692161585645A900F-->  
<STARTVERSION><![CDATA[3.0.31774]]></STARTVERSION>
 <!--B97FC854C6DD41E692161585645A900F-->  <ISINCLUDED><![CDATA[N]]></ISINCLUDED>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME>
 <!--B97FC854C6DD41E692161585645A900F-->  
<DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT>
diff -r 05c62ceaa5a6 -r f5066d8a85b5 
modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PARAMETER.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PARAMETER.xml
     Fri Mar 17 01:25:34 2017 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/OBUIAPP_PARAMETER.xml
     Thu Apr 06 16:12:11 2017 +0200
@@ -1036,6 +1036,7 @@
 <!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<STARTINNEWLINE><![CDATA[N]]></STARTINNEWLINE>
 <!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<AD_FIELDGROUP_ID><![CDATA[612BAE7A8D3E4170936F79A760FCF94C]]></AD_FIELDGROUP_ID>
 <!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<READONLYLOGIC><![CDATA[@trxtype@='BPW']]></READONLYLOGIC>
+<!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<ONCHANGEFUNCTION><![CDATA[OB.APRM.AddTransaction.amtOnChangeFunction]]></ONCHANGEFUNCTION>
 <!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<DISPLAYEDROWS><![CDATA[5]]></DISPLAYEDROWS>
 <!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<DISPLAYTITLE><![CDATA[Y]]></DISPLAYTITLE>
 <!--7B2AE9099ECB4CE9B80C665D7662FA03-->  
<ATT_SHOWINDESCRIPTION><![CDATA[N]]></ATT_SHOWINDESCRIPTION>
@@ -1625,6 +1626,7 @@
 <!--AC203DDD5CF1459AA36DC7769ED15567-->  
<STARTINNEWLINE><![CDATA[N]]></STARTINNEWLINE>
 <!--AC203DDD5CF1459AA36DC7769ED15567-->  
<AD_FIELDGROUP_ID><![CDATA[612BAE7A8D3E4170936F79A760FCF94C]]></AD_FIELDGROUP_ID>
 <!--AC203DDD5CF1459AA36DC7769ED15567-->  
<READONLYLOGIC><![CDATA[@trxtype@='BPD']]></READONLYLOGIC>
+<!--AC203DDD5CF1459AA36DC7769ED15567-->  
<ONCHANGEFUNCTION><![CDATA[OB.APRM.AddTransaction.amtOnChangeFunction]]></ONCHANGEFUNCTION>
 <!--AC203DDD5CF1459AA36DC7769ED15567-->  
<DISPLAYEDROWS><![CDATA[5]]></DISPLAYEDROWS>
 <!--AC203DDD5CF1459AA36DC7769ED15567-->  
<DISPLAYTITLE><![CDATA[Y]]></DISPLAYTITLE>
 <!--AC203DDD5CF1459AA36DC7769ED15567-->  
<ATT_SHOWINDESCRIPTION><![CDATA[N]]></ATT_SHOWINDESCRIPTION>
diff -r 05c62ceaa5a6 -r f5066d8a85b5 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 Fri Mar 17 01:25:34 2017 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/ProcessInvoice.java
 Thu Apr 06 16:12:11 2017 +0200
@@ -52,6 +52,7 @@
 import org.openbravo.dal.service.OBCriteria;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBDao;
+import org.openbravo.dal.service.OBQuery;
 import org.openbravo.data.FieldProvider;
 import org.openbravo.erpCommon.ad_actionButton.ActionButtonUtility;
 import org.openbravo.erpCommon.ad_forms.AcctServer;
@@ -254,25 +255,24 @@
             }
 
             // If Invoice has a awaiting execution payment related, show an 
Error
-            List<FIN_PaymentSchedule> psl = 
invoice.getFINPaymentScheduleList();
-            for (FIN_PaymentSchedule ps : psl) {
-              List<FIN_PaymentScheduleDetail> psdl = ps
-                  .getFINPaymentScheduleDetailInvoicePaymentScheduleList();
-              for (FIN_PaymentScheduleDetail psd : psdl) {
-                FIN_PaymentDetail pd = psd.getPaymentDetails();
-                if (pd != null
-                    && (pd.getFinPayment().getStatus().equals("RPAE") || 
pd.getFinPayment()
-                        .getStatus().equals("RPAP"))) {
-                  msg = new OBError();
-                  msg.setType("Error");
-                  msg.setTitle(Utility.messageBD(this, "Error", 
vars.getLanguage()));
-                  msg.setMessage(OBMessageUtils
-                      
.messageBD("APRM_InvoiceAwaitingExcutionPaymentRelated"));
-                  vars.setMessage(strTabId, msg);
-                  printPageClosePopUp(response, vars, 
Utility.getTabURL(strTabId, "R", true));
-                  return;
-                }
-              }
+            StringBuilder fpHQLQuery = new StringBuilder(" as fp");
+            fpHQLQuery.append(" join fp.fINPaymentDetailList fpd");
+            fpHQLQuery.append(" join fpd.fINPaymentScheduleDetailList fpsd");
+            fpHQLQuery.append(" join fpsd.invoicePaymentSchedule fps");
+            fpHQLQuery.append(" where fps.invoice.id = :invoiceId");
+            fpHQLQuery.append(" and fp.status in ('RPAE', 'RPAP')");
+            OBQuery<FIN_Payment> paymentQuery = 
OBDal.getInstance().createQuery(FIN_Payment.class,
+                fpHQLQuery.toString());
+            paymentQuery.setNamedParameter("invoiceId", invoice.getId());
+            paymentQuery.setMaxResult(1);
+            if (paymentQuery.uniqueResult() != null) {
+              msg = new OBError();
+              msg.setType("Error");
+              msg.setTitle(Utility.messageBD(this, "Error", 
vars.getLanguage()));
+              
msg.setMessage(OBMessageUtils.messageBD("APRM_InvoiceAwaitingExcutionPaymentRelated"));
+              vars.setMessage(strTabId, msg);
+              printPageClosePopUp(response, vars, Utility.getTabURL(strTabId, 
"R", true));
+              return;
             }
 
             // Reversed invoice's date: voidDate in Purchase Invoice, new 
Date() in Sales Invoice
@@ -341,7 +341,7 @@
         }
 
         boolean voidingPrepaidInvoice = "RC".equals(strdocaction)
-            && invoice.getPrepaymentamt().compareTo(BigDecimal.ZERO) > 0;
+            && invoice.getPrepaymentamt().compareTo(BigDecimal.ZERO) != 0;
 
         final ProcessInstance pinstance = 
CallProcess.getInstance().call(process, strC_Invoice_ID,
             parameters);
@@ -366,31 +366,16 @@
             if (voidingPrepaidInvoice) {
               processPayment = true;
 
-              FIN_Payment orderPayment = null;
-
-              List<FIN_PaymentSchedule> fpsList = 
invoice.getFINPaymentScheduleList();
-
-              // Searching for invoice payment
-              for (FIN_PaymentSchedule fps : fpsList) {
-                List<FIN_PaymentScheduleDetail> fpsdList = fps
-                    .getFINPaymentScheduleDetailInvoicePaymentScheduleList();
-                for (FIN_PaymentScheduleDetail fpsd : fpsdList) {
-                  FIN_PaymentDetail pd = fpsd.getPaymentDetails();
-                  orderPayment = pd.getFinPayment();
-                  break;
-                }
-                if (orderPayment != null) {
-                  break;
-                }
-              }
-
-              
fpsList.addAll(revInvoice.getInvoice().getFINPaymentScheduleList());
-
-              List<FIN_PaymentScheduleDetail> fpsdList = new ArrayList<>();
-
-              for (FIN_PaymentSchedule fps : fpsList) {
-                
fpsdList.addAll(fps.getFINPaymentScheduleDetailInvoicePaymentScheduleList());
-              }
+              StringBuilder orderPaymentHQLQuery = new StringBuilder(" as fp");
+              orderPaymentHQLQuery.append(" join fp.fINPaymentDetailList fpd");
+              orderPaymentHQLQuery.append(" join 
fpd.fINPaymentScheduleDetailList fpsd");
+              orderPaymentHQLQuery.append(" join fpsd.invoicePaymentSchedule 
fps");
+              orderPaymentHQLQuery.append(" where fps.invoice.id = 
:invoiceId");
+              OBQuery<FIN_Payment> paymentQuery = 
OBDal.getInstance().createQuery(
+                  FIN_Payment.class, orderPaymentHQLQuery.toString());
+              paymentQuery.setNamedParameter("invoiceId", invoice.getId());
+              paymentQuery.setMaxResult(1);
+              FIN_Payment orderPayment = (FIN_Payment) 
paymentQuery.uniqueResult();
 
               final DocumentType docType = 
FIN_Utility.getDocumentType(invoice.getOrganization(),
                   orderPayment.isReceipt() ? AcctServer.DOCTYPE_ARReceipt
@@ -409,9 +394,19 @@
 
               invoice.setOutstandingAmount(BigDecimal.ZERO);
 
+              StringBuilder psdHQLQuery = new StringBuilder(" as fpsd");
+              psdHQLQuery.append(" join fpsd.invoicePaymentSchedule fps");
+              psdHQLQuery.append(" where fps.invoice.id = :invoiceId");
+              psdHQLQuery.append(" or fps.invoice.id = :revInvoiceId");
+              OBQuery<FIN_PaymentScheduleDetail> psdQuery = 
OBDal.getInstance().createQuery(
+                  FIN_PaymentScheduleDetail.class, psdHQLQuery.toString());
+              psdQuery.setNamedParameter("invoiceId", invoice.getId());
+              psdQuery.setNamedParameter("revInvoiceId", 
revInvoice.getInvoice().getId());
+
               // Updating dummy payment lines with invoice and reverse invoice
-              for (FIN_PaymentScheduleDetail fpsd : fpsdList) {
-                FIN_PaymentDetail psdOldPaymentDetail = 
fpsd.getPaymentDetails();
+              for (FIN_PaymentScheduleDetail fpsd : psdQuery.list()) {
+                // invoice payment detail asociated to the order
+                boolean invoiceFPDOrder = fpsd.getPaymentDetails() != null;
 
                 // Create a payment detail
                 FIN_PaymentDetail pd = 
OBProvider.getInstance().get(FIN_PaymentDetail.class);
@@ -430,14 +425,21 @@
 
                 dummyPayment.getFINPaymentDetailList().add(pd);
 
-                if (psdOldPaymentDetail != null) {
-                  for (FIN_PaymentScheduleDetail orderPSD : psdOldPaymentDetail
-                      .getFINPaymentScheduleDetailList()) {
-                    if (!StringUtils.equals(orderPSD.getId(), fpsd.getId())) {
-                      // Update order received amount
-                      
orderPSD.setAmount(orderPSD.getAmount().add(fpsd.getAmount()));
-                      OBDal.getInstance().save(orderPSD);
-                    }
+                if (invoiceFPDOrder) {
+                  StringBuilder orderPSDHQLQuery = new StringBuilder();
+                  orderPSDHQLQuery.append(" as fpsd");
+                  orderPSDHQLQuery.append(" join fpsd.paymentDetails fpd");
+                  orderPSDHQLQuery.append(" where fpd.finPayment.id = 
:paymentId");
+                  orderPSDHQLQuery.append(" and fpsd.id <> :invoicePSDId");
+                  OBQuery<FIN_PaymentScheduleDetail> orderPSDQuery = 
OBDal.getInstance()
+                      .createQuery(FIN_PaymentScheduleDetail.class, 
orderPSDHQLQuery.toString());
+                  orderPSDQuery.setNamedParameter("paymentId", 
orderPayment.getId());
+                  orderPSDQuery.setNamedParameter("invoicePSDId", 
fpsd.getId());
+
+                  for (FIN_PaymentScheduleDetail orderPSD : 
orderPSDQuery.list()) {
+                    // Update order received amount
+                    
orderPSD.setAmount(orderPSD.getAmount().add(fpsd.getAmount()));
+                    OBDal.getInstance().save(orderPSD);
                   }
                   FIN_PaymentSchedule ps = fpsd.getInvoicePaymentSchedule();
                   ps.setPaidAmount(BigDecimal.ZERO);
@@ -445,10 +447,8 @@
                   OBDal.getInstance().save(ps);
 
                   // Update invoice outstanding amount
-                  if (StringUtils.equals(ps.getInvoice().getId(), 
invoice.getId())) {
-                    
invoice.setOutstandingAmount(invoice.getOutstandingAmount().add(
-                        fpsd.getAmount()));
-                  }
+                  invoice
+                      
.setOutstandingAmount(invoice.getOutstandingAmount().add(fpsd.getAmount()));
                 }
               }
               OBDal.getInstance().save(dummyPayment);
@@ -598,7 +598,7 @@
             // account defined or invoice's payment method is not inside BP's 
financial
             // account or the business partner's currency is not equal to the 
invoice's currency do
             // not cancel credit
-            if (BigDecimal.ZERO.compareTo(invoice.getGrandTotalAmount()) < 0
+            if (BigDecimal.ZERO.compareTo(invoice.getGrandTotalAmount()) != 0
                 && isPaymentMethodConfigured(invoice)
                 && !isInvoiceWithPayments(invoice)
                 && (AcctServer.DOCTYPE_ARInvoice.equals(invoiceDocCategory) || 
AcctServer.DOCTYPE_APInvoice
diff -r 05c62ceaa5a6 -r f5066d8a85b5 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_TransactionProcess.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_TransactionProcess.java
 Fri Mar 17 01:25:34 2017 +0000
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_TransactionProcess.java
 Thu Apr 06 16:12:11 2017 +0200
@@ -11,7 +11,7 @@
  * under the License.
  * The Original Code is Openbravo ERP.
  * The Initial Developer of the Original Code is Openbravo SLU
- * All portions are Copyright (C) 2010-2016 Openbravo SLU
+ * All portions are Copyright (C) 2010-2017 Openbravo SLU
  * All Rights Reserved.
  * Contributor(s):  ______________________________________.
  *************************************************************************
@@ -22,6 +22,9 @@
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
+import org.hibernate.LockOptions;
+import org.hibernate.Query;
+import org.hibernate.Session;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.advpaymentmngt.APRM_FinaccTransactionV;
 import org.openbravo.advpaymentmngt.dao.AdvPaymentMngtDao;
@@ -113,7 +116,7 @@
           throw new OBException(msg);
         }
 
-        final FIN_FinancialAccount financialAccount = transaction.getAccount();
+        final FIN_FinancialAccount financialAccount = 
lockFinAccount(transaction.getAccount());
         
financialAccount.setCurrentBalance(financialAccount.getCurrentBalance().add(
             
transaction.getDepositAmount().subtract(transaction.getPaymentAmount())));
         transaction.setProcessed(true);
@@ -218,7 +221,7 @@
           OBContext.restorePreviousMode();
         }
         transaction.setProcessed(false);
-        final FIN_FinancialAccount financialAccount = transaction.getAccount();
+        final FIN_FinancialAccount financialAccount = 
lockFinAccount(transaction.getAccount());
         financialAccount.setCurrentBalance(financialAccount.getCurrentBalance()
             
.subtract(transaction.getDepositAmount()).add(transaction.getPaymentAmount()));
         OBDal.getInstance().save(financialAccount);
@@ -366,4 +369,16 @@
     return confirmation;
   }
 
+  private static FIN_FinancialAccount lockFinAccount(FIN_FinancialAccount 
account) {
+    StringBuilder queryStr = new StringBuilder(
+        "select a from FIN_Financial_Account a where id = :id");
+    final Session session = OBDal.getInstance().getSession();

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to