details:   https://code.openbravo.com/erp/devel/pi/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

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FINPaymentEventHandler.java
 |  118 ++++++++++
 src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java         
                         |    1 +
 src/org/openbravo/event/FINPaymentEventHandler.java                            
                         |   91 -------
 3 files changed, 119 insertions(+), 91 deletions(-)

diffs (230 lines):

diff -r f2f2b793ef66 -r 89f61788c100 
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
   Tue Oct 04 09:54:41 2016 +0200
@@ -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 f2f2b793ef66 -r 89f61788c100 
src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java
--- a/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java    
Wed Oct 05 12:12:38 2016 +0200
+++ b/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java    
Tue Oct 04 09:54:41 2016 +0200
@@ -86,6 +86,7 @@
   public static final String ASSOCIATE_SHIPMENT_TO_REPLACE_TICKET = 
"CancelAndReplaceAssociateShipmentToNewTicket";
   public static final String ENABLE_STOCK_RESERVATIONS = "StockReservations";
   public static String REVERSE_PREFIX = "*R*";
+  public static String ZERO_PAYMENT_SUFIX = "*Z*";
   public static String DOCTYPE_MatShipment = "MMS";
 
   /**
diff -r f2f2b793ef66 -r 89f61788c100 
src/org/openbravo/event/FINPaymentEventHandler.java
--- a/src/org/openbravo/event/FINPaymentEventHandler.java       Wed Oct 05 
12:12:38 2016 +0200
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- 
************************************************************************************
- * Copyright (C) 2016 Openbravo S.L.U.
- * Licensed under the Openbravo Commercial License version 1.0
- * You may obtain a copy of the License at 
http://www.openbravo.com/legal/obcl.html
- * or in the legal folder of this module distribution.
- 
************************************************************************************
- */
-
-package org.openbravo.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);
-    int index = 
payment.getDocumentNo().indexOf(CancelAndReplaceUtils.REVERSE_PREFIX);
-    if (payment.getAmount().compareTo(BigDecimal.ZERO) == 0) {
-      if (index <= 0) {
-        String newDocumentNo = payment.getDocumentNo() + 
CancelAndReplaceUtils.REVERSE_PREFIX;
-        setDocumentNoToPayment(payment, event, newDocumentNo);
-      }
-    } else if (oldPaymentAmount.compareTo(BigDecimal.ZERO) == 0) {
-      if (index > 0) {
-        String newDocumentNo = payment.getDocumentNo().substring(0, index);
-        setDocumentNoToPayment(payment, event, newDocumentNo);
-      }
-    }
-    // Index == 0 case is not managed here because with Openbravo Reverse 
Payments functionality we
-    // could have payment document numbers starting with "*R*"
-  }
-
-  public void onSave(@Observes
-  EntityNewEvent event) {
-    if (!isValidEvent(event)) {
-      return;
-    }
-    FIN_Payment payment = (FIN_Payment) event.getTargetInstance();
-    if (payment.getAmount().compareTo(BigDecimal.ZERO) == 0) {
-      String newDocumentNo = payment.getDocumentNo() + 
CancelAndReplaceUtils.REVERSE_PREFIX;
-      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

------------------------------------------------------------------------------
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