# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1573032401 -19800
#      Wed Nov 06 14:56:41 2019 +0530
# Node ID 2f9fff3ac7bc36c802584b0c8f9242a7b793aae9
# Parent  4369b93ea8521399ca95e53ce68e2187ea037a03
Related to issue 42195 : DocumentNoHandler should be implemented in CancelLayawayLoader

diff -r 4369b93ea852 -r 2f9fff3ac7bc src/org/openbravo/retail/posterminal/CancelLayawayLoader.java
--- a/src/org/openbravo/retail/posterminal/CancelLayawayLoader.java	Wed Nov 06 12:58:56 2019 +0530
+++ b/src/org/openbravo/retail/posterminal/CancelLayawayLoader.java	Wed Nov 06 14:56:41 2019 +0530
@@ -31,6 +31,7 @@
 import org.openbravo.mobile.core.utils.OBMOBCUtils;
 import org.openbravo.model.common.order.Order;
 import org.openbravo.model.common.order.OrderLine;
+import org.openbravo.retail.posterminal.utility.DocumentNoHandler;
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.service.json.JsonConstants;
 
@@ -133,6 +134,19 @@
         TriggerHandler.getInstance().disable();
       }
 
+      if (json.getJSONArray("payments").length() > 0) {
+        OBContext.setAdminMode(false);
+        try {
+          for (DocumentNoHandler documentNoHandler : documentNoHandlers.get()) {
+            documentNoHandler.setDocumentNoAndSave();
+          }
+          OBDal.getInstance().flush();
+        } finally {
+          documentNoHandlers.set(null);
+          OBContext.restorePreviousMode();
+        }
+      }
+
       POSUtils.setDefaultPaymentType(json, inverseOrder);
 
       CancelAndReplaceUtils.cancelOrder(json.getString("orderid"), json,
diff -r 4369b93ea852 -r 2f9fff3ac7bc src/org/openbravo/retail/posterminal/OrderLoader.java
--- a/src/org/openbravo/retail/posterminal/OrderLoader.java	Wed Nov 06 12:58:56 2019 +0530
+++ b/src/org/openbravo/retail/posterminal/OrderLoader.java	Wed Nov 06 14:56:41 2019 +0530
@@ -96,7 +96,7 @@
 
   // DocumentNo Handler are used to collect all needed document numbers and create and set
   // them as late in the process as possible
-  private static ThreadLocal<List<DocumentNoHandler>> documentNoHandlers = new ThreadLocal<List<DocumentNoHandler>>();
+  public static ThreadLocal<List<DocumentNoHandler>> documentNoHandlers = new ThreadLocal<List<DocumentNoHandler>>();
 
   HashMap<String, DocumentType> paymentDocTypes = new HashMap<String, DocumentType>();
   HashMap<String, DocumentType> invoiceDocTypes = new HashMap<String, DocumentType>();
