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