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