diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
@@ -1,6 +1,6 @@
 /*
  ************************************************************************************
- * Copyright (C) 2012-2015 Openbravo S.L.U.
+ * Copyright (C) 2012-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.
@@ -379,10 +379,10 @@
               if (diffStringified !== '{}') {
                 OB.error("The receipt has been modified while it was being closed:\n" + diffStringified + "\n");
               }
+              orderList.deleteCurrent();
               receipt.setIsCalculateReceiptLockState(false);
               receipt.setIsCalculateGrossLockState(false);
 
-              orderList.deleteCurrent();
               orderList.synchronizeCurrentOrder();
             }
             enyo.$.scrim.hide();
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
@@ -81,7 +81,7 @@
       } else if (!_.isNull(pending) && pending) {
         this.setTotalPending(pending, payment.mulrate, payment.symbol, payment.currencySymbolAtTheRight, inSender, inEvent);
       }
-      if (paymentstatus) {
+      if (paymentstatus && inEvent.value.status !== "" && !this.receipt.isCalculateReceiptLocked && !this.receipt.isCalculateGrossLocked) {
         this.checkValidPayments(paymentstatus, payment);
       }
       if (inEvent.value.amount) {
@@ -251,6 +251,10 @@
     this.$.payments.setCollection(this.receipt.get('payments'));
     this.$.multiPayments.setCollection(this.model.get('multiOrders').get('payments'));
     this.receipt.on('change:payment change:change calculategross change:bp change:gross', function () {
+      if (this.receipt.isCalculateReceiptLocked || this.receipt.isCalculateGrossLocked) {
+        //We are processing the receipt, we cannot update pending yet
+        return;
+      }
       this.updatePending();
     }, this);
     this.model.get('leftColumnViewManager').on('change:currentView', function () {
@@ -871,10 +875,27 @@
       this.setDisabled(false);
     }, this);
   },
+  blocked: false,
   tap: function () {
     var myModel = this.owner.model,
         me = this,
-        payments;
+        payments, orderDesc = '';
+    //*** Avoid double click ***
+    if (this.getContent() === OB.I18N.getLabel('OBPOS_LblDone')) {
+      if (this.owner.receipt && this.owner.receipt.getOrderDescription) {
+        orderDesc = this.owner.receipt.getOrderDescription();
+      }
+      OB.info('Time: ' + new Date() + '. Payment Button Pressed ( Status: ' + this.disabled + ') ' + orderDesc);
+      if (me.blocked) {
+        OB.error('Time: ' + new Date() + '. Done button has been pressed 2 times and second execution is discarded ' + orderDesc);
+        return;
+      } else {
+        me.blocked = true;
+        setTimeout(function () {
+          me.blocked = false;
+        }, 1000);
+      }
+    }
     this.allowOpenDrawer = false;
 
     // Checking Payment before Process
