# HG changeset patch
# User Eduardo Argal Guibert <eduardo.argal@openbravo.com>
# Date 1465468779 -7200
#      Thu Jun 09 12:39:39 2016 +0200
# Node ID 90449226a2b43e4ef37b1eb943a1396ac00ccc8f
# Parent  dc3d9d26aeb499470f41f011bc44c1d840187733
[Multiple Payments] Adds After Process Hook

diff -r dc3d9d26aeb4 -r 90449226a2b4 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Fri Jul 13 11:57:27 2018 +0530
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Thu Jun 09 12:39:39 2016 +0200
@@ -22,15 +22,21 @@
 import java.util.Date;
 import java.util.Map;
 
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
+
 import org.apache.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
 import org.openbravo.advpaymentmngt.process.FIN_TransactionProcess;
+import org.openbravo.base.exception.OBException;
 import org.openbravo.client.application.process.BaseProcessActionHandler;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
+import org.openbravo.erpCommon.utility.OBError;
 import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
@@ -42,6 +48,9 @@
   private static final Logger log = Logger.getLogger(AddMultiplePaymentsHandler.class);
   private static final SimpleDateFormat jsDateFormat = JsonUtils.createDateFormat();
   private static final String ACTION_PROCESS_TRANSACTION = "P";
+  @Inject
+  @Any
+  private Instance<AddMultiplePaymentsProcessAfterProcessHook> afterHooks;
 
   @Override
   protected JSONObject doExecute(Map<String, Object> parameters, String data) {
@@ -66,6 +75,14 @@
         createAndProcessTransactionFromPayment(paymentJS, statementDate, dateAcct, strAccountId);
         OBDal.getInstance().getSession().clear();
       }
+      OBError oberror = new OBError();
+      for (AddMultiplePaymentsProcessAfterProcessHook hook : afterHooks) {
+        oberror = hook.executeHook(jsonData, oberror);
+        if (oberror != null && "Error".equals(oberror.getType())) {
+          throw new OBException(
+              "Error Adding multiple payments to financial account. Error in Hook");
+        }
+      }
       // Success Message
       return getSuccessMessage(String.format(
           OBMessageUtils.messageBD("APRM_MULTIPLE_TRANSACTIONS_ADDED"), selectedPaymentsLength));
@@ -98,7 +115,6 @@
       final FIN_Payment payment = OBDal.getInstance().get(FIN_Payment.class, paymentId);
       FIN_FinancialAccount account = OBDal.getInstance().get(FIN_FinancialAccount.class,
           strAccountId);
-
       if (payment != null) {
         final FIN_FinaccTransaction transaction = TransactionsDao.createFinAccTransaction(payment);
         transaction.setTransactionDate(transactionDate);
diff -r dc3d9d26aeb4 -r 90449226a2b4 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Thu Jun 09 12:39:39 2016 +0200
@@ -0,0 +1,10 @@
+package org.openbravo.advpaymentmngt.actionHandler;
+
+import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.erpCommon.utility.OBError;
+
+public abstract class AddMultiplePaymentsProcessAfterProcessHook {
+
+  public abstract OBError executeHook(JSONObject data, OBError myMessage);
+
+}
# HG changeset patch
# User Eduardo Argal Guibert <eduardo.argal@openbravo.com>
# Date 1465556550 -7200
#      Fri Jun 10 13:02:30 2016 +0200
# Node ID d24c4fa56dc0ab01e43d5e8c3eb7fa43bb604e88
# Parent  90449226a2b43e4ef37b1eb943a1396ac00ccc8f
[Multiple Payments] Adds missing Copyright

diff -r 90449226a2b4 -r d24c4fa56dc0 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Thu Jun 09 12:39:39 2016 +0200
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Fri Jun 10 13:02:30 2016 +0200
@@ -1,3 +1,21 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.1  (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.actionHandler;
 
 import org.codehaus.jettison.json.JSONObject;
# HG changeset patch
# User Unai Martirena <unai.martirena@openbravo.com>
# Date 1466160810 -7200
#      Fri Jun 17 12:53:30 2016 +0200
# Node ID 449b38131dc1fb71a5d5c095374f9592c9d0248e
# Parent  d24c4fa56dc0ab01e43d5e8c3eb7fa43bb604e88
[Multiple Payments] Set line no to transaction in AddMultiplePaymentsHandler.java

diff -r d24c4fa56dc0 -r 449b38131dc1 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Fri Jun 10 13:02:30 2016 +0200
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Fri Jun 17 12:53:30 2016 +0200
@@ -120,6 +120,7 @@
         transaction.setTransactionDate(transactionDate);
         transaction.setDateAcct(acctDate);
         transaction.setAccount(account);
+        transaction.setLineNo(TransactionsDao.getTransactionMaxLineNo(account) + 10);
         FIN_TransactionProcess.doTransactionProcess(ACTION_PROCESS_TRANSACTION, transaction);
       }
     } finally {
# HG changeset patch
# User Jonathan Bueno <jonathan.bueno@openbravo.com>
# Date 1472727269 -7200
#      Thu Sep 01 12:54:29 2016 +0200
# Node ID 68d73136f940b518667a2824019b63efff0c6163
# Parent  449b38131dc1fb71a5d5c095374f9592c9d0248e
[MiniProjects] Refactor AddMultiplePaymentsProcessAfterProcessHook to add priority management

diff -r 449b38131dc1 -r 68d73136f940 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Fri Jun 17 12:53:30 2016 +0200
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Thu Sep 01 12:54:29 2016 +0200
@@ -19,7 +19,11 @@
 package org.openbravo.advpaymentmngt.actionHandler;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 import javax.enterprise.inject.Any;
@@ -75,14 +79,27 @@
         createAndProcessTransactionFromPayment(paymentJS, statementDate, dateAcct, strAccountId);
         OBDal.getInstance().getSession().clear();
       }
+
       OBError oberror = new OBError();
+      List<AddMultiplePaymentsProcessAfterProcessHook> hooksPriority = new ArrayList<AddMultiplePaymentsProcessAfterProcessHook>();
       for (AddMultiplePaymentsProcessAfterProcessHook hook : afterHooks) {
+        hooksPriority.add(hook);
+      }
+      Collections.sort(hooksPriority, new Comparator<AddMultiplePaymentsProcessAfterProcessHook>() {
+        @Override
+        public int compare(AddMultiplePaymentsProcessAfterProcessHook o1,
+            AddMultiplePaymentsProcessAfterProcessHook o2) {
+          return (int) Math.signum(o2.getPriority() - o1.getPriority());
+        }
+      });
+      for (AddMultiplePaymentsProcessAfterProcessHook hook : hooksPriority) {
         oberror = hook.executeHook(jsonData, oberror);
         if (oberror != null && "Error".equals(oberror.getType())) {
           throw new OBException(
               "Error Adding multiple payments to financial account. Error in Hook");
         }
       }
+
       // Success Message
       return getSuccessMessage(String.format(
           OBMessageUtils.messageBD("APRM_MULTIPLE_TRANSACTIONS_ADDED"), selectedPaymentsLength));
diff -r 449b38131dc1 -r 68d73136f940 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Fri Jun 17 12:53:30 2016 +0200
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Thu Sep 01 12:54:29 2016 +0200
@@ -22,7 +22,11 @@
 import org.openbravo.erpCommon.utility.OBError;
 
 public abstract class AddMultiplePaymentsProcessAfterProcessHook {
+  private int priority = 100;
 
   public abstract OBError executeHook(JSONObject data, OBError myMessage);
 
+  public int getPriority() {
+    return priority;
+  }
 }
# HG changeset patch
# User Unai Martirena <unai.martirena@openbravo.com>
# Date 1484145329 -3600
#      Wed Jan 11 15:35:29 2017 +0100
# Node ID e342d1cffa7781c6b00c3fe34025cbb1982b07df
# Parent  68d73136f940b518667a2824019b63efff0c6163
[Multiple Payments] Little refactor in Add Multiple Payments.

There is currently a validation that checkes if any payment line has been selected in the payments grid, raising an error if no record is selected. This validation has been moved to the end of the process, after hooks are executed, so, if any hook is executed it must return an integer with the total number of transactions created in the process. And, if that number is ZERO, the error will be raised. This will allow to extend the functionality of the window from external modules and giving the possibility of creating transactions from different places than payments grid.

diff -r 68d73136f940 -r e342d1cffa77 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Thu Sep 01 12:54:29 2016 +0200
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Wed Jan 11 15:35:29 2017 +0100
@@ -36,11 +36,9 @@
 import org.codehaus.jettison.json.JSONObject;
 import org.openbravo.advpaymentmngt.dao.TransactionsDao;
 import org.openbravo.advpaymentmngt.process.FIN_TransactionProcess;
-import org.openbravo.base.exception.OBException;
 import org.openbravo.client.application.process.BaseProcessActionHandler;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
-import org.openbravo.erpCommon.utility.OBError;
 import org.openbravo.erpCommon.utility.OBMessageUtils;
 import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
@@ -69,10 +67,6 @@
       final String strAccountId = jsonData.getString("Fin_Financial_Account_ID");
 
       int selectedPaymentsLength = selectedPayments.length();
-      if (selectedPaymentsLength == 0) {
-        // Validation error: No lines selected
-        return getErrorMessage(OBMessageUtils.messageBD("APRM_NO_PAYMENTS_SELECTED"));
-      }
 
       for (int i = 0; i < selectedPaymentsLength; i++) {
         final JSONObject paymentJS = selectedPayments.getJSONObject(i);
@@ -80,7 +74,6 @@
         OBDal.getInstance().getSession().clear();
       }
 
-      OBError oberror = new OBError();
       List<AddMultiplePaymentsProcessAfterProcessHook> hooksPriority = new ArrayList<AddMultiplePaymentsProcessAfterProcessHook>();
       for (AddMultiplePaymentsProcessAfterProcessHook hook : afterHooks) {
         hooksPriority.add(hook);
@@ -93,11 +86,12 @@
         }
       });
       for (AddMultiplePaymentsProcessAfterProcessHook hook : hooksPriority) {
-        oberror = hook.executeHook(jsonData, oberror);
-        if (oberror != null && "Error".equals(oberror.getType())) {
-          throw new OBException(
-              "Error Adding multiple payments to financial account. Error in Hook");
-        }
+        selectedPaymentsLength = hook.executeHook(jsonData);
+      }
+
+      if (selectedPaymentsLength == 0) {
+        // Validation error: No lines selected
+        return getErrorMessage(OBMessageUtils.messageBD("APRM_NO_PAYMENTS_SELECTED"));
       }
 
       // Success Message
diff -r 68d73136f940 -r e342d1cffa77 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Thu Sep 01 12:54:29 2016 +0200
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsProcessAfterProcessHook.java	Wed Jan 11 15:35:29 2017 +0100
@@ -19,12 +19,11 @@
 package org.openbravo.advpaymentmngt.actionHandler;
 
 import org.codehaus.jettison.json.JSONObject;
-import org.openbravo.erpCommon.utility.OBError;
 
 public abstract class AddMultiplePaymentsProcessAfterProcessHook {
   private int priority = 100;
 
-  public abstract OBError executeHook(JSONObject data, OBError myMessage);
+  public abstract int executeHook(JSONObject data);
 
   public int getPriority() {
     return priority;
# HG changeset patch
# User Asier Martirena <asier.martirena@openbravo.com>
# Date 1485167095 -3600
#      Mon Jan 23 11:24:55 2017 +0100
# Node ID cb9b2cdc833318a44fa3160100c24bda995529be
# Parent  e342d1cffa7781c6b00c3fe34025cbb1982b07df
[Multiple Payments] Fixed error when calculating the selected payment length

diff -r e342d1cffa77 -r cb9b2cdc8333 modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java
--- a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Wed Jan 11 15:35:29 2017 +0100
+++ b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/actionHandler/AddMultiplePaymentsHandler.java	Mon Jan 23 11:24:55 2017 +0100
@@ -86,7 +86,7 @@
         }
       });
       for (AddMultiplePaymentsProcessAfterProcessHook hook : hooksPriority) {
-        selectedPaymentsLength = hook.executeHook(jsonData);
+        selectedPaymentsLength = selectedPaymentsLength + hook.executeHook(jsonData);
       }
 
       if (selectedPaymentsLength == 0) {
