details:   https://code.openbravo.com/erp/devel/pi/rev/380d8ab86ea4
changeset: 30505:380d8ab86ea4
user:      Alvaro Ferraz <alvaro.ferraz <at> openbravo.com>
date:      Fri Oct 21 12:56:10 2016 +0200
summary:   Related to issue 34207: Code review improvements

Throw error only if we are not reactivating payment in APRM_FIN_PMT_CHECK_TRG 
trigger.
Remove onSave event in FIN_PaymentEventListener.
Zero payment sufix will only be added in case we are processing the payment and 
it will only be removed in case we are reactivating the payment.

diffstat:

 
modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_PMT_CHECK_TRG.xml
            |   2 +-
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_PaymentEventListener.java
 |  75 ++++-----
 src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java         
                           |   1 +
 3 files changed, 38 insertions(+), 40 deletions(-)

diffs (136 lines):

diff -r 306b87decaa6 -r 380d8ab86ea4 
modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_PMT_CHECK_TRG.xml
--- 
a/modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_PMT_CHECK_TRG.xml
    Fri Oct 21 12:40:46 2016 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src-db/database/model/triggers/APRM_FIN_PMT_CHECK_TRG.xml
    Fri Oct 21 12:56:10 2016 +0200
@@ -28,7 +28,7 @@
   END IF;
 
   IF (UPDATING) THEN
-    IF(:OLD.PROCESSED='Y' AND ((COALESCE(:OLD.AD_ORG_ID, '0') <> 
COALESCE(:NEW.AD_ORG_ID, '0'))
+    IF(:OLD.PROCESSED='Y' AND :NEW.PROCESSED='Y' AND 
((COALESCE(:OLD.AD_ORG_ID, '0') <> COALESCE(:NEW.AD_ORG_ID, '0'))
       OR(COALESCE(:OLD.DOCUMENTNO, '0') <> COALESCE(:NEW.DOCUMENTNO, '0'))
       OR(COALESCE(:OLD.C_CURRENCY_ID, '0') <> COALESCE(:NEW.C_CURRENCY_ID, 
'0'))
       OR(COALESCE(:OLD.C_BPARTNER_ID, '0') <> COALESCE(:NEW.C_BPARTNER_ID, 
'0'))
diff -r 306b87decaa6 -r 380d8ab86ea4 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_PaymentEventListener.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_PaymentEventListener.java
 Fri Oct 21 12:40:46 2016 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/event/FIN_PaymentEventListener.java
 Fri Oct 21 12:56:10 2016 +0200
@@ -31,7 +31,6 @@
 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;
@@ -54,18 +53,6 @@
     return entities;
   }
 
-  public void onSave(@Observes EntityNewEvent event) {
-    if (!isValidEvent(event)) {
-      return;
-    }
-    FIN_Payment payment = (FIN_Payment) event.getTargetInstance();
-    if (payment.isProcessed() && 
payment.getAmount().compareTo(BigDecimal.ZERO) == 0) {
-      String newDocumentNo = payment.getDocumentNo();
-      newDocumentNo = newDocumentNo + CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX;
-      setDocumentNoToPayment(event, newDocumentNo);
-    }
-  }
-
   public void onUpdate(@Observes EntityUpdateEvent event) {
     if (!isValidEvent(event)) {
       return;
@@ -73,34 +60,46 @@
 
     final FIN_Payment payment = (FIN_Payment) event.getTargetInstance();
     final Entity paymentEntity = 
ModelProvider.getInstance().getEntity(FIN_Payment.ENTITY_NAME);
+    final Property paymentProcessedProperty = paymentEntity
+        .getProperty(FIN_Payment.PROPERTY_PROCESSED);
+    final Boolean currentPaymentProcessed = (Boolean) event
+        .getCurrentState(paymentProcessedProperty);
+    final Boolean oldPaymentProcessed = (Boolean) 
event.getPreviousState(paymentProcessedProperty);
     final Property paymentAmountProperty = 
paymentEntity.getProperty(FIN_Payment.PROPERTY_AMOUNT);
-    BigDecimal oldPaymentAmount = (BigDecimal) 
event.getPreviousState(paymentAmountProperty);
+    final BigDecimal currentPaymentAmount = (BigDecimal) event
+        .getCurrentState(paymentAmountProperty);
+    final BigDecimal oldPaymentAmount = (BigDecimal) 
event.getPreviousState(paymentAmountProperty);
     final Property paymentStatusProperty = 
paymentEntity.getProperty(FIN_Payment.PROPERTY_STATUS);
     final String currentPaymentStatus = (String) 
event.getCurrentState(paymentStatusProperty);
     final String oldPaymentStatus = (String) 
event.getPreviousState(paymentStatusProperty);
 
-    String documentNo = payment.getDocumentNo();
-    int documentNoLength = payment.getDocumentNo().length();
-    if (payment.isProcessed()) {
-      if (payment.getAmount().compareTo(BigDecimal.ZERO) == 0) {
-        // Payment has no already an *Z* at the end of the document number
-        if (documentNo.length() < 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length()
-            || !CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.equals(documentNo
-                .substring(documentNoLength - 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length()))) {
-          String newDocumentNo = documentNo + 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX;
-          setDocumentNoToPayment(event, newDocumentNo);
-        }
-      } else if (oldPaymentAmount.compareTo(BigDecimal.ZERO) == 0) {
-        // The payment has already the *Z* at the end of the document number 
and is not a payment of
-        // 0
-        if (documentNo.length() >= 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length()
-            && CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.equals(documentNo
-                .substring(documentNoLength - 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length()))) {
-          String newDocumentNo = documentNo.substring(0, documentNoLength
-              - CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length());
-          setDocumentNoToPayment(event, newDocumentNo);
-        }
-      }
+    final String documentNo = payment.getDocumentNo();
+    final int documentNoLength = documentNo.length();
+
+    if (!oldPaymentProcessed
+        && currentPaymentProcessed
+        && currentPaymentAmount.compareTo(BigDecimal.ZERO) == 0
+        && (documentNoLength < 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length() || 
!CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX
+            .equals(documentNo.substring(documentNoLength
+                - CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length())))) {
+      // Processing a zero payment: add sufix
+      final int documentNoLimit = CancelAndReplaceUtils.PAYMENT_DOCNO_LENGTH
+          - CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length();
+      String newDocumentNo = (documentNoLength > documentNoLimit ? 
documentNo.substring(0,
+          documentNoLimit) : documentNo) + 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX;
+      setDocumentNoToPayment(event, newDocumentNo);
+    }
+
+    else if (oldPaymentProcessed
+        && !currentPaymentProcessed
+        && oldPaymentAmount.compareTo(BigDecimal.ZERO) == 0
+        && documentNoLength > CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length()
+        && 
CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.equals(documentNo.substring(documentNoLength
+            - CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length()))) {
+      // Reactivating a zero payment: remove sufix
+      String newDocumentNo = documentNo.substring(0, documentNoLength
+          - CancelAndReplaceUtils.ZERO_PAYMENT_SUFIX.length());
+      setDocumentNoToPayment(event, newDocumentNo);
     }
 
     manageAPRMPendingPaymentFromInvoiceRecord(payment, currentPaymentStatus, 
oldPaymentStatus);
@@ -209,11 +208,9 @@
   }
 
   private void setDocumentNoToPayment(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);
+    event.setCurrentState(paymentDocumentNoProperty, newDocumentNo);
   }
 }
diff -r 306b87decaa6 -r 380d8ab86ea4 
src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java
--- a/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java    
Fri Oct 21 12:40:46 2016 +0200
+++ b/src/org/openbravo/erpCommon/businessUtility/CancelAndReplaceUtils.java    
Fri Oct 21 12:56:10 2016 +0200
@@ -88,6 +88,7 @@
   public static String REVERSE_PREFIX = "*R*";
   public static String ZERO_PAYMENT_SUFIX = "*Z*";
   public static String DOCTYPE_MatShipment = "MMS";
+  public static int PAYMENT_DOCNO_LENGTH = 30;
 
   /**
    * Process that creates a replacement order in temporary status in order to 
Cancel and Replace an

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