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

Reply via email to