comparing with https://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal
searching for changes
changeset:   11145:25e31cb7283f
tag:         tip
user:        Javier Rodriguez <javier.rodriguez@openbravo.com>
date:        Thu Apr 04 10:44:45 2019 +0200
summary:     Fixed issue 40490

diff -r 90680f1d4d85 -r 25e31cb7283f src/org/openbravo/retail/posterminal/ExtendsCashManagementPaymentTypeHook.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/openbravo/retail/posterminal/ExtendsCashManagementPaymentTypeHook.java	Thu Apr 04 10:44:45 2019 +0200
@@ -0,0 +1,5 @@
+package org.openbravo.retail.posterminal;
+
+public abstract class ExtendsCashManagementPaymentTypeHook {
+  public abstract String[] exec() throws Exception;
+}
diff -r 90680f1d4d85 -r 25e31cb7283f src/org/openbravo/retail/posterminal/master/Cashup.java
--- a/src/org/openbravo/retail/posterminal/master/Cashup.java	Mon Apr 01 11:55:34 2019 +0000
+++ b/src/org/openbravo/retail/posterminal/master/Cashup.java	Thu Apr 04 10:44:45 2019 +0200
@@ -11,9 +11,14 @@
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
 import java.util.List;
 import java.util.TimeZone;
 
+import javax.enterprise.inject.Any;
+import javax.enterprise.inject.Instance;
+import javax.inject.Inject;
 import javax.servlet.ServletException;
 
 import org.apache.logging.log4j.LogManager;
@@ -31,6 +36,7 @@
 import org.openbravo.model.financialmgmt.gl.GLItem;
 import org.openbravo.model.financialmgmt.payment.FIN_FinaccTransaction;
 import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
+import org.openbravo.retail.posterminal.ExtendsCashManagementPaymentTypeHook;
 import org.openbravo.retail.posterminal.JSONProcessSimple;
 import org.openbravo.retail.posterminal.OBPOSAppCashup;
 import org.openbravo.retail.posterminal.OBPOSAppPayment;
@@ -44,6 +50,34 @@
 public class Cashup extends JSONProcessSimple {
   private static final Logger log = LogManager.getLogger();
 
+  @Inject
+  @Any
+  private Instance<ExtendsCashManagementPaymentTypeHook> paymentTypeHookInstance;
+
+  private static String[] paymentTypes = { "fmgi.oBPOSAppPaymentTypeCGlitemDropdepIDList",
+      "fmgi.oBPOSAppPaymentTypeCGlitemWriteoffIDList",
+      "fmgi.oBPOSAppPaymentTypeCashDifferencesList",
+      "fmgi.oBPOSAppPaymentTypeGLItemForDepositsList",
+      "fmgi.oBPOSAppPaymentTypeGLItemForDropsList" };
+
+  private List<String> allPaymentTypes = Arrays.asList(paymentTypes);
+
+  private ArrayList<String> executePaymentTypeHook(Instance<? extends Object> hooks)
+      throws Exception {
+    ArrayList<String> allPaymentTypeList = new ArrayList<String>();
+    for (Iterator<? extends Object> procIter = hooks.iterator(); procIter.hasNext();) {
+      Object proc = procIter.next();
+      String[] returnedByhook = (((ExtendsCashManagementPaymentTypeHook) proc).exec());
+      for (String paymentType : returnedByhook) {
+        if (paymentType.length() > 0) {
+          allPaymentTypeList.add(paymentType);
+        }
+      }
+
+    }
+    return allPaymentTypeList;
+  }
+
   @Override
   public JSONObject exec(JSONObject jsonsent) throws JSONException, ServletException {
     JSONObject result = new JSONObject();
@@ -202,16 +236,19 @@
       throws JSONException {
     JSONArray respArray = new JSONArray();
 
+    try {
+      executePaymentTypeHook(paymentTypeHookInstance);
+    } catch (Exception e) {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
+    }
+
     // Get GL Items associated to the payment methods of this terminal
-    String[] paymentTypes = { "fmgi.oBPOSAppPaymentTypeCGlitemDropdepIDList",
-        "fmgi.oBPOSAppPaymentTypeCGlitemWriteoffIDList",
-        "fmgi.oBPOSAppPaymentTypeCashDifferencesList",
-        "fmgi.oBPOSAppPaymentTypeGLItemForDepositsList",
-        "fmgi.oBPOSAppPaymentTypeGLItemForDropsList" };
+    String[] paymentTypesCashup = this.allPaymentTypes.toArray(new String[0]);
     List<GLItem> glItemList = new ArrayList<GLItem>();
-    for (int i = 0; i < paymentTypes.length; i++) {
+    for (int i = 0; i < paymentTypesCashup.length; i++) {
       String hqlglItem = "select distinct fmgi from FinancialMgmtGLItem fmgi join "
-          + paymentTypes[i] + " as oapt " + "where oapt.id in (select oap.paymentMethod.id "
+          + paymentTypesCashup[i] + " as oapt " + "where oapt.id in (select oap.paymentMethod.id "
           + "from OBPOS_App_Payment oap where oap.obposApplications.id = :terminal)";
       SimpleQueryBuilder querybuilder = new SimpleQueryBuilder(hqlglItem,
           OBContext.getOBContext().getCurrentClient().getId(),

