details: https://code.openbravo.com/erp/devel/main/rev/3d435a4c1794 changeset: 30372:3d435a4c1794 user: Alvaro Ferraz <alvaro.ferraz <at> openbravo.com> date: Thu Sep 22 17:37:16 2016 +0200 summary: Fixes issue 34130: Performance problem in Costing Migration process
- Remove unneeded sql functions registration. - Move cost reset in m_transaction and m_transaction_cost to new resetTransactionCosts method. - Run resetTransactionCosts(), fixLegacyCostingCurrency(), updateWithZeroCostRemainingTrx(), insertTrxCosts() and insertStandardCosts() methods without triggers. - Avoid loop in fixLegacyCostingCurrency() method and make the update with one query per client. - Avoid loop in updateWithZeroCostRemainingTrx() method and make the update with one query per legal. - Avoid innecessary join with ad_user table in insertTrxCosts() and insertStandardCosts() methods. details: https://code.openbravo.com/erp/devel/main/rev/e0f24c050e4a changeset: 30373:e0f24c050e4a user: Alvaro Ferraz <alvaro.ferraz <at> openbravo.com> date: Fri Sep 30 14:12:43 2016 +0200 summary: Related to issue 34130: Do not remove sql functions registering details: https://code.openbravo.com/erp/devel/main/rev/3f4dc99dd5be changeset: 30374:3f4dc99dd5be user: Alvaro Ferraz <alvaro.ferraz <at> openbravo.com> date: Fri Sep 30 14:35:09 2016 +0200 summary: Related to issue 33954: Fix trigger in Oracle Event handler has been created in order to update subsequent reconciliations balances when a reconciliation is deleted, instead of doing it in FIN_Reconciliation trigger. details: https://code.openbravo.com/erp/devel/main/rev/8ba41642efea changeset: 30375:8ba41642efea user: RM packaging bot <staff.rm <at> openbravo.com> date: Fri Sep 30 17:04:19 2016 +0000 summary: CI: merge back from main details: https://code.openbravo.com/erp/devel/main/rev/f2f2b793ef66 changeset: 30376:f2f2b793ef66 user: RM packaging bot <staff.rm <at> openbravo.com> date: Wed Oct 05 12:12:38 2016 +0200 summary: Merge back from main details: https://code.openbravo.com/erp/devel/main/rev/89f61788c100 changeset: 30377:89f61788c100 user: Unai Martirena <unai.martirena <at> openbravo.com> date: Tue Oct 04 09:54:41 2016 +0200 summary: Related to issue 34038: Payments of Zero amount finally will be numbered with *Z* Several changes have been done: 1) Fixed copyright of FINPaymentEventHandler.java 2) Moved FINPaymentEventHandler.java event handler to aprm module 3) Set *Z* at the end of 0.00 amount payment methods 4) While executing onSave, if the payment is not processed and document number has '<' in the beginning and '>' at the end, remove them details: https://code.openbravo.com/erp/devel/main/rev/9f948cce366c changeset: 30378:9f948cce366c user: RM packaging bot <staff.rm <at> openbravo.com> date: Wed Oct 05 17:17:43 2016 +0000 summary: CI: update AD_MODULE to version 30377 diffstat: .hgsigs | 1 + .hgtags | 1 + modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_RECON_CHECK_TRG.xml | 16 +- 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/org/openbravo/advpaymentmngt/event/FINPaymentEventHandler.java | 118 +++ modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_ReconciliationEventListener.java | 77 ++ 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.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.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.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 +- src-db/database/sourcedata/AD_MODULE.xml | 4 +- src/org/openbravo/costing/CostingMigrationProcess.java | 376 +++++---- src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java | 1 + src/org/openbravo/event/FINPaymentEventHandler.java | 91 -- 53 files changed, 480 insertions(+), 377 deletions(-) diffs (truncated from 1770 to 300 lines): diff -r 3184adb3f998 -r 9f948cce366c .hgsigs --- a/.hgsigs Fri Sep 30 15:47:22 2016 +0530 +++ b/.hgsigs Wed Oct 05 17:17:43 2016 +0000 @@ -197,5 +197,6 @@ 91b0a6cc5947ea0958b3d677a3e76174fa0a045e 0 iEYEABECAAYFAldajXIACgkQCX/oGf+2qkMRiQCgread+PDPwOVh7Qu/IlmeCLDSPVQAn3cepToICm61fiNkrV+PmFen4bwd ac4b84085793438223d82a0024dd84d2268d0768 0 iEYEABECAAYFAld974YACgkQCX/oGf+2qkPrUgCg05BzCWexFGf76njdN2lBgPJn5uMAoIzGxA0dHD54Km07x2m9J1pgFcoW a98ba1097ffda83047f2824177bfd940fd9268b2 0 iEYEABECAAYFAlfAIacACgkQCX/oGf+2qkMeAwCgsAyLUenvqX0uAZTRjaUrUXZfcL0AoJg0tc+GlPLwfSGk9nCtgF8M3v5f +c9da212632eaa8b5ad282ea755200a6761da6fa9 0 iEYEABECAAYFAlftOagACgkQCX/oGf+2qkMyVgCfXQS09IJiOH63CblJE5zX6Qn3TDQAoPZnadaVKBEfROW6Ma1feqUrUgY/ 159bac1903e52d4f6785d5e53405ae988c273975 0 iEYEABECAAYFAlejLbgACgkQCX/oGf+2qkOIMQCcDP51SEWDiDNBGTaEShgrqwhm7xYAoO/e+AXZ3cBSAhUb8CmIpJ0Rls82 b91eab932a2640f7395e9c1b7d237c08303d0788 0 iEYEABECAAYFAlfGHnMACgkQCX/oGf+2qkNXHQCgysf6qFN75kW873qTx3i0S9a2qjAAoI0R/AZCW4a6RPrNiFfjaWsOE3+v diff -r 3184adb3f998 -r 9f948cce366c .hgtags --- a/.hgtags Fri Sep 30 15:47:22 2016 +0530 +++ b/.hgtags Wed Oct 05 17:17:43 2016 +0000 @@ -208,5 +208,6 @@ cfff3c184b53528cd71acfe21b15800db17b3436 3.0PR16Q2 7667e8781815f8fa0bf2d3104aeb585cb2ce8681 3.0PR16Q2.1 d40ef4d2ac507a87b46d3118841d03a6a54fec1e 3.0PR16Q2.2 +6db3d7641170254dbd658eb774e36b092c68dd04 3.0PR16Q2.3 ec10d529b9bbe8caa83f2ea72b29b94bd3473cae 3.0PR16Q3 d0dee6596f281e29afcd159544992498896e93ff 3.0PR16Q3.1 diff -r 3184adb3f998 -r 9f948cce366c modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_RECON_CHECK_TRG.xml --- a/modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_RECON_CHECK_TRG.xml Fri Sep 30 15:47:22 2016 +0530 +++ b/modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_RECON_CHECK_TRG.xml Wed Oct 05 17:17:43 2016 +0000 @@ -15,13 +15,12 @@ * 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 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. *************************************************************************/ v_DateNull DATE := TO_DATE('01-01-1900','DD-MM-YYYY'); -v_balance NUMBER; BEGIN @@ -48,19 +47,6 @@ IF(:OLD.PROCESSED='Y') THEN RAISE_APPLICATION_ERROR(-20000, '@20501@'); END IF; - - --Is necessary update starting and ending balances of subsequents reconciliations - SELECT endingbalance - startingbalance - INTO v_balance - FROM fin_reconciliation - WHERE fin_reconciliation_id = :old.fin_reconciliation_id; - - UPDATE fin_reconciliation - SET startingbalance = startingbalance - v_balance, - endingbalance = endingbalance - v_balance - WHERE fin_financial_account_id = :old.fin_financial_account_id - AND statementdate > :old.statementdate; - END IF; END APRM_FIN_RECON_CHECK_TRG ]]></body> diff -r 3184adb3f998 -r 9f948cce366c modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml --- a/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml Fri Sep 30 15:47:22 2016 +0530 +++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE.xml Wed Oct 05 17:17:43 2016 +0000 @@ -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.30338]]></VERSION> +<!--A918E3331C404B889D69AA9BFAFB23AC--> <VERSION><![CDATA[3.0.30377]]></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 3184adb3f998 -r 9f948cce366c 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 Sep 30 15:47:22 2016 +0530 +++ b/modules/org.openbravo.advpaymentmngt/src-db/database/sourcedata/AD_MODULE_DEPENDENCY.xml Wed Oct 05 17:17:43 2016 +0000 @@ -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.30338]]></STARTVERSION> +<!--89326AE95DAD449D85DFAB2C5B1C6683--> <STARTVERSION><![CDATA[2.1.30377]]></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.30338]]></STARTVERSION> +<!--B97FC854C6DD41E692161585645A900F--> <STARTVERSION><![CDATA[3.0.30377]]></STARTVERSION> <!--B97FC854C6DD41E692161585645A900F--> <ISINCLUDED><![CDATA[N]]></ISINCLUDED> <!--B97FC854C6DD41E692161585645A900F--> <DEPENDANT_MODULE_NAME><![CDATA[core]]></DEPENDANT_MODULE_NAME> <!--B97FC854C6DD41E692161585645A900F--> <DEPENDENCY_ENFORCEMENT><![CDATA[MAJOR]]></DEPENDENCY_ENFORCEMENT> diff -r 3184adb3f998 -r 9f948cce366c modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FINPaymentEventHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FINPaymentEventHandler.java Wed Oct 05 17:17:43 2016 +0000 @@ -0,0 +1,118 @@ +/* + ************************************************************************* + * The contents of this file are subject to the Openbravo Public License + * Version 1.0 (the "License"), being the Mozilla Public License + * Version 1.1 with a permitted attribution clause; you may not use this + * file except in compliance with the License. You may obtain a copy of + * the License at http://www.openbravo.com/legal/license.html + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * The Original Code is Openbravo ERP. + * The Initial Developer of the Original Code is Openbravo SLU + * All portions are Copyright (C) 2016 Openbravo SLU + * All Rights Reserved. + * Contributor(s): ______________________________________. + ************************************************************************* + */ + +package org.openbravo.advpaymentmngt.event; + +import java.math.BigDecimal; + +import javax.enterprise.event.Observes; + +import org.apache.log4j.Logger; +import org.openbravo.base.model.Entity; +import org.openbravo.base.model.ModelProvider; +import org.openbravo.base.model.Property; +import org.openbravo.client.kernel.event.EntityDeleteEvent; +import org.openbravo.client.kernel.event.EntityNewEvent; +import org.openbravo.client.kernel.event.EntityPersistenceEvent; +import org.openbravo.client.kernel.event.EntityPersistenceEventObserver; +import org.openbravo.client.kernel.event.EntityUpdateEvent; +import org.openbravo.erpCommon.businessUtility.CancelAndReplaceUtils; +import org.openbravo.model.financialmgmt.payment.FIN_Payment; + +public class FINPaymentEventHandler extends EntityPersistenceEventObserver { + private static Entity[] entities = { ModelProvider.getInstance().getEntity( + FIN_Payment.ENTITY_NAME) }; + protected Logger logger = Logger.getLogger(this.getClass()); + + @Override + protected Entity[] getObservedEntities() { + return entities; + } + + public void onUpdate(@Observes + EntityUpdateEvent event) { + if (!isValidEvent(event)) { + return; + } + FIN_Payment payment = (FIN_Payment) event.getTargetInstance(); + final Entity paymentEntity = ModelProvider.getInstance().getEntity(FIN_Payment.ENTITY_NAME); + final Property paymentAmountProperty = paymentEntity.getProperty(FIN_Payment.PROPERTY_AMOUNT); + BigDecimal oldPaymentAmount = (BigDecimal) event.getPreviousState(paymentAmountProperty); + String documentNo = payment.getDocumentNo(); + int documentNoLength = payment.getDocumentNo().length(); + if (payment.getAmount().compareTo(BigDecimal.ZERO) == 0) { + // Payment has no already an *Z* at the end of the document number + if (!CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.equals(documentNo + .substring(documentNoLength - 3))) { + String newDocumentNo = documentNo + CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX; + setDocumentNoToPayment(payment, event, newDocumentNo); + } + } else if (oldPaymentAmount.compareTo(BigDecimal.ZERO) == 0) { + if (CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.equals(documentNo + .substring(documentNoLength - 3))) { + String newDocumentNo = documentNo.substring(0, documentNoLength - 3); + setDocumentNoToPayment(payment, event, newDocumentNo); + } + } + } + + public void onSave(@Observes + EntityNewEvent event) { + if (!isValidEvent(event)) { + return; + } + FIN_Payment payment = (FIN_Payment) event.getTargetInstance(); + final Entity paymentEntity = ModelProvider.getInstance().getEntity(FIN_Payment.ENTITY_NAME); + final Property processedProperty = paymentEntity.getProperty(FIN_Payment.PROPERTY_PROCESSED); + if (payment.getAmount().compareTo(BigDecimal.ZERO) == 0) { + String newDocumentNo = payment.getDocumentNo(); + boolean processed = false; + Object oProcessed = (processedProperty == null ? false : event + .getCurrentState(processedProperty)); + if (oProcessed instanceof String) { + processed = "Y".equals(oProcessed.toString()); + } else if (oProcessed instanceof Boolean) { + processed = (Boolean) oProcessed; + } + if (newDocumentNo.startsWith("<") && newDocumentNo.endsWith(">") && !processed) { + // Remove "<" and ">" characters from documentNo if payment is not processed + newDocumentNo = newDocumentNo.substring(1, newDocumentNo.length() - 1); + } + newDocumentNo = newDocumentNo + CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX; + setDocumentNoToPayment(payment, event, newDocumentNo); + } + } + + public void onDelete(@Observes + EntityDeleteEvent event) { + if (!isValidEvent(event)) { + return; + } + } + + private void setDocumentNoToPayment(FIN_Payment payment, EntityPersistenceEvent event, + String newDocumentNo) { + String truncatedDocumentNo = (newDocumentNo.length() > 30) ? newDocumentNo.substring(0, 30) + : newDocumentNo.toString(); + final Entity paymentEntity = ModelProvider.getInstance().getEntity(FIN_Payment.ENTITY_NAME); + final Property paymentDocumentNoProperty = paymentEntity + .getProperty(FIN_Payment.PROPERTY_DOCUMENTNO); + event.setCurrentState(paymentDocumentNoProperty, truncatedDocumentNo); + } +} \ No newline at end of file diff -r 3184adb3f998 -r 9f948cce366c modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_ReconciliationEventListener.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_ReconciliationEventListener.java Wed Oct 05 17:17:43 2016 +0000 @@ -0,0 +1,77 @@ +/* + ************************************************************************* + * The contents of this file are subject to the Openbravo Public License + * Version 1.0 (the "License"), being the Mozilla Public License + * Version 1.1 with a permitted attribution clause; you may not use this + * file except in compliance with the License. You may obtain a copy of + * the License at http://www.openbravo.com/legal/license.html + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * The Original Code is Openbravo ERP. + * The Initial Developer of the Original Code is Openbravo SLU + * All portions are Copyright (C) 2016 Openbravo SLU + * All Rights Reserved. + * Contributor(s): ______________________________________. + ************************************************************************* + */ +package org.openbravo.advpaymentmngt.event; + +import java.math.BigDecimal; + +import javax.enterprise.event.Observes; + +import org.hibernate.Query; +import org.openbravo.base.model.Entity; +import org.openbravo.base.model.ModelProvider; +import org.openbravo.client.kernel.event.EntityDeleteEvent; +import org.openbravo.client.kernel.event.EntityPersistenceEventObserver; +import org.openbravo.dal.service.OBDal; +import org.openbravo.model.financialmgmt.payment.FIN_Reconciliation; + +public class FIN_ReconciliationEventListener extends EntityPersistenceEventObserver { + private static Entity[] entities = { ModelProvider.getInstance().getEntity( + FIN_Reconciliation.ENTITY_NAME) }; + + @Override + protected Entity[] getObservedEntities() { + return entities; + } + + public void onDelete(@Observes + EntityDeleteEvent event) { + if (!isValidEvent(event)) { + return; + } + FIN_Reconciliation rec = OBDal.getInstance().get(FIN_Reconciliation.class, + event.getTargetInstance().getId()); + if (!rec.isProcessed()) { + updateNextReconciliationsBalance(rec); + } + } + + /** + * Update starting balance and ending balance of subsequent reconciliations when one + * reconciliation is deleted + * + * @param rec + * Reconciliation being deleted + */ + private void updateNextReconciliationsBalance(final FIN_Reconciliation rec) { + BigDecimal balance = rec.getEndingBalance().subtract(rec.getStartingbalance()); + StringBuffer update = new StringBuffer(); + update.append(" update " + FIN_Reconciliation.ENTITY_NAME); + update.append(" set " + FIN_Reconciliation.PROPERTY_STARTINGBALANCE + " = " + + FIN_Reconciliation.PROPERTY_STARTINGBALANCE + " - :balance"); + update.append(" , " + FIN_Reconciliation.PROPERTY_ENDINGBALANCE + " = " + + FIN_Reconciliation.PROPERTY_ENDINGBALANCE + " - :balance"); + update.append(" where " + FIN_Reconciliation.PROPERTY_ACCOUNT + ".id = :accountId"); + update.append(" and " + FIN_Reconciliation.PROPERTY_TRANSACTIONDATE + " > :date"); + Query updateQry = OBDal.getInstance().getSession().createQuery(update.toString()); + updateQry.setBigDecimal("balance", balance); + updateQry.setString("accountId", rec.getAccount().getId()); + updateQry.setTimestamp("date", rec.getTransactionDate()); + updateQry.executeUpdate(); + } +} diff -r 3184adb3f998 -r 9f948cce366c modules/org.openbravo.apachejdbcconnectionpool/src-db/database/sourcedata/AD_MODULE.xml --- a/modules/org.openbravo.apachejdbcconnectionpool/src-db/database/sourcedata/AD_MODULE.xml Fri Sep 30 15:47:22 2016 +0530 +++ b/modules/org.openbravo.apachejdbcconnectionpool/src-db/database/sourcedata/AD_MODULE.xml Wed Oct 05 17:17:43 2016 +0000 @@ -6,7 +6,7 @@ <!--8A098711BB324335A19833286BDB093D--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> ------------------------------------------------------------------------------ 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