# HG changeset patch
# User Asier Martirena <asier.martirena@openbravo.com>
# Date 1531740249 -7200
#      Mon Jul 16 13:24:09 2018 +0200
# Node ID 8be27eceaee3981001de3b2449e992ee5b03ab03
# Parent  d0c321969e06bffeb59b4a84be9201f30d7325ec
Fixed issue 38969: The cashup approval should be created only once to avoid an exception

diff --git a/src/org/openbravo/retail/posterminal/ProcessCashClose.java b/src/org/openbravo/retail/posterminal/ProcessCashClose.java
--- a/src/org/openbravo/retail/posterminal/ProcessCashClose.java
+++ b/src/org/openbravo/retail/posterminal/ProcessCashClose.java
@@ -83,24 +83,26 @@
 
     OBPOSAppCashup cashUp = UpdateCashup.getAndUpdateCashUp(cashUpId, jsonCashup, cashUpDate);
 
-    if (jsonCashup.has("approvals")) {
-      JSONObject jsonApprovals = jsonCashup.getJSONObject("approvals");
-      OBPOSCashupApproval cashupApproval = OBProvider.getInstance().get(OBPOSCashupApproval.class);
-      cashupApproval.setId(cashUp.getId());
-      cashupApproval.setNewOBObject(true);
-      cashupApproval.setCashUp(cashUp);
-      cashupApproval.setActive(true);
-      cashupApproval.setApprovalType("OBPOS_CashupCountDiff");
-      cashupApproval.setApprovalMessage(jsonApprovals.getString("message"));
-      if (jsonApprovals.has("approvalReason")) {
-        cashupApproval.setApprovalReason(OBDal.getInstance().get(OBPOSApprovalReason.class,
-            jsonApprovals.getString("approvalReason")));
+    if (cashUp.isProcessed() && !cashUp.isProcessedbo()) {
+      if (jsonCashup.has("approvals")) {
+        JSONObject jsonApprovals = jsonCashup.getJSONObject("approvals");
+        OBPOSCashupApproval cashupApproval = OBProvider.getInstance()
+            .get(OBPOSCashupApproval.class);
+        cashupApproval.setId(cashUp.getId());
+        cashupApproval.setNewOBObject(true);
+        cashupApproval.setCashUp(cashUp);
+        cashupApproval.setActive(true);
+        cashupApproval.setApprovalType("OBPOS_CashupCountDiff");
+        cashupApproval.setApprovalMessage(jsonApprovals.getString("message"));
+        if (jsonApprovals.has("approvalReason")) {
+          cashupApproval.setApprovalReason(OBDal.getInstance().get(OBPOSApprovalReason.class,
+              jsonApprovals.getString("approvalReason")));
+        }
+        cashupApproval.setSupervisor(OBDal.getInstance().get(User.class,
+            jsonApprovals.getString("supervisor")));
+        OBDal.getInstance().save(cashupApproval);
       }
-      cashupApproval.setSupervisor(OBDal.getInstance().get(User.class,
-          jsonApprovals.getString("supervisor")));
-      OBDal.getInstance().save(cashupApproval);
-    }
-    if (cashUp.isProcessed() && !cashUp.isProcessedbo()) {
+
       cashUp.setJsoncashup(jsonCashup.toString());
       if (posTerminal.getMasterterminal() != null) {
         // On slave only mark as processed BO
