# HG changeset patch
# User Ranjith S R <ranjith@qualiantech.com>
# Date 1522217513 -19800
#      Wed Mar 28 11:41:53 2018 +0530
# Node ID 9e7064168d63ab317cd47a612b7b7dfdba0a7ff5
# Parent  5348d4e8468ad80a86af03633b1ab88a370a89f6
Related to issue 37812 : Payment should be allowed based on cash available instead of receipt pending amount

* Refactored checkEnoughCashAvailable, Moved the validation from view to modal
* Before adding payments, checkEnoughCashAvailable should be called to ensure cash is available

diff -r 5348d4e8468a -r 9e7064168d63 web/org.openbravo.retail.posterminal/js/model/order.js
--- a/web/org.openbravo.retail.posterminal/js/model/order.js	Tue Mar 27 18:15:39 2018 -0400
+++ b/web/org.openbravo.retail.posterminal/js/model/order.js	Wed Mar 28 11:41:53 2018 +0530
@@ -4146,6 +4146,129 @@
         return differenceInDefaultCurrency;
       }
     },
+    checkEnoughCashAvailable: function (paymentStatus, selectedPayment, button, cashAvailable, enoughCashCallback) {
+      var requiredCash, reversedCash, hasEnoughCash = true,
+          hasAllEnoughCash = true,
+          reversedPayments = [],
+          currentSelectedPaymentCashAmount = OB.DEC.Zero;
+
+      requiredCash = cashAvailable || OB.DEC.Zero;
+
+      function processCashMgmtMaster(cashMgntCallback) {
+        new OB.DS.Process('org.openbravo.retail.posterminal.ProcessCashMgmtMaster').exec({
+          cashUpId: OB.POS.modelterminal.get('terminal').cashUpId,
+          terminalSlave: OB.POS.modelterminal.get('terminal').isslave
+        }, function (data) {
+          if (data && data.exception) {
+            // Error handler 
+            OB.log('error', data.exception.message);
+            OB.UTIL.showConfirmation.display(
+            OB.I18N.getLabel('OBPOS_CashMgmtError'), OB.I18N.getLabel('OBPOS_ErrorServerGeneric') + data.exception.message, [{
+              label: OB.I18N.getLabel('OBPOS_LblRetry'),
+              action: function () {
+                processCashMgmtMaster(cashMgntCallback);
+              }
+            }], {
+              autoDismiss: false,
+              onHideFunction: function () {
+                cashMgntCallback(false, null);
+              }
+            });
+          } else {
+            cashMgntCallback(true, data);
+          }
+        });
+      }
+
+      function checkSlaveCashAvailable(slaveCashCallback) {
+        var currentCash = OB.DEC.Zero;
+        if (selectedPayment && selectedPayment.paymentMethod.iscash) {
+          currentCash = selectedPayment.currentCash || OB.DEC.Zero;
+        }
+        if ((OB.POS.modelterminal.get('terminal').ismaster || OB.POS.modelterminal.get('terminal').isslave) && selectedPayment.paymentMethod.iscash && selectedPayment.paymentMethod.isshared) {
+          // Load current cashup info from slaves
+          processCashMgmtMaster(function (success, data) {
+            if (success) {
+              _.each(data, function (pay) {
+                if (pay.searchKey === selectedPayment.payment.searchKey) {
+                  currentCash = OB.DEC.add(currentCash, pay.startingCash + pay.totalDeposits + pay.totalSales - pay.totalReturns - pay.totalDrops);
+                }
+              });
+            }
+            slaveCashCallback(currentCash);
+          });
+        } else {
+          slaveCashCallback(currentCash);
+        }
+      }
+
+      checkSlaveCashAvailable(function (currentCash) {
+        // If there are reverse payments search for those of cash payment method. It will be needed to check if there is enough cash to reverse those payments.
+        if (paymentStatus.isReversal) {
+          paymentStatus.payments.each(function (payment) {
+            var paymentmethod = OB.POS.terminal.terminal.paymentnames[payment.get('kind')];
+            if (!payment.get('isPrePayment') && paymentmethod.paymentMethod.iscash) {
+              reversedCash = OB.DEC.sub(reversedPayments[payment.get('kind')] || OB.DEC.Zero, payment.get('origAmount'));
+              reversedPayments[payment.get('kind')] = reversedCash;
+              if (selectedPayment !== paymentmethod && OB.DEC.compare(OB.DEC.sub(paymentmethod.currentCash, reversedCash)) < 0) {
+                hasEnoughCash = false;
+              } else {
+                currentSelectedPaymentCashAmount = reversedCash;
+              }
+            }
+          });
+        }
+
+        if (hasEnoughCash) {
+          if (OB.UTIL.isNullOrUndefined(selectedPayment) || !selectedPayment.paymentMethod.iscash) {
+            requiredCash = OB.DEC.Zero;
+          } else if ((button === 'Done' || button === 'Credit') && !_.isUndefined(paymentStatus) && (paymentStatus.isNegative)) {
+            requiredCash = OB.DEC.add(currentSelectedPaymentCashAmount, paymentStatus.pendingAmt);
+            paymentStatus.payments.each(function (payment) {
+              var paymentmethod;
+              if (payment.get('kind') === selectedPayment.payment.searchKey && !payment.get('isPrePayment') && !payment.get('reversedPaymentId')) {
+                requiredCash = OB.DEC.add(requiredCash, payment.get('origAmount'));
+              } else {
+                paymentmethod = OB.POS.terminal.terminal.paymentnames[payment.get('kind')];
+                if (paymentmethod && payment.get('origAmount') > paymentmethod.currentCash && payment.get('isCash')) {
+                  hasAllEnoughCash = false;
+                }
+              }
+            });
+          } else if (button === 'AddPayment' && !_.isUndefined(paymentStatus) && (paymentStatus.isNegative)) {
+            paymentStatus.payments.each(function (payment) {
+              var paymentmethod;
+              if (payment.get('kind') === selectedPayment.payment.searchKey && !payment.get('isPrePayment') && !payment.get('reversedPaymentId')) {
+                requiredCash = OB.DEC.add(requiredCash, payment.get('origAmount'));
+              } else {
+                paymentmethod = OB.POS.terminal.terminal.paymentnames[payment.get('kind')];
+                if (paymentmethod && payment.get('origAmount') > paymentmethod.currentCash && payment.get('isCash')) {
+                  hasAllEnoughCash = false;
+                }
+              }
+            });
+          } else if (!_.isUndefined(paymentStatus)) {
+            if (button === 'Layaway' || button === 'Credit') {
+              requiredCash = OB.DEC.add(currentSelectedPaymentCashAmount, paymentStatus.changeAmt);
+            } else {
+              requiredCash = OB.DEC.sub(OB.DEC.add(currentSelectedPaymentCashAmount, paymentStatus.changeAmt), paymentStatus.pendingAmt);
+            }
+          }
+
+          if (!_.isUndefined(requiredCash) && requiredCash === 0) {
+            hasEnoughCash = true;
+          } else if (!_.isUndefined(requiredCash)) {
+            hasEnoughCash = OB.DEC.compare(OB.DEC.sub(currentCash, requiredCash)) >= 0;
+          }
+        }
+
+        if (hasEnoughCash && ((button === 'Layaway' || button === 'Credit') || ((button === 'Done' || button === 'AddPayment') && hasAllEnoughCash))) {
+          return enoughCashCallback(true);
+        } else {
+          return enoughCashCallback(false); // check failed.
+        }
+      });
+    },
     adjustPayment: function () {
       var i, max, p;
       var payments = this.get('payments');
@@ -4263,8 +4386,7 @@
     },
 
     addPayment: function (payment, callback) {
-      var payments, total;
-      var i, max, p, order;
+      var i, max, p, order, payments, total;
 
       if (this.get('isPaid') && !payment.get('isReversePayment') && !this.get('doCancelAndReplace') && this.getPrePaymentQty() === OB.DEC.sub(this.getTotal(), this.getCredit()) && !this.isNewReversed()) {
         OB.UTIL.showWarning(OB.I18N.getLabel('OBPOS_CannotIntroducePayment'));
@@ -4290,98 +4412,112 @@
         return;
       }
 
-      payments = this.get('payments');
-      total = OB.DEC.abs(this.getTotal());
-      OB.UTIL.HookManager.executeHooks('OBPOS_preAddPayment', {
-        paymentToAdd: payment,
-        payments: payments,
-        receipt: this,
-        callback: callback
-      }, function (args) {
-        var executeFinalCallback = function (saveChanges) {
-            if (saveChanges) {
-              order.adjustPayment();
-              order.trigger('displayTotal');
-              order.save();
-              order.trigger('saveCurrent');
+      function addPaymentToOrder() {
+        payments = order.get('payments');
+        total = OB.DEC.abs(order.getTotal());
+        OB.UTIL.HookManager.executeHooks('OBPOS_preAddPayment', {
+          paymentToAdd: payment,
+          payments: payments,
+          receipt: order,
+          callback: callback
+        }, function (args) {
+          var executeFinalCallback = function (saveChanges) {
+              if (saveChanges) {
+                order.adjustPayment();
+                order.trigger('displayTotal');
+                order.save();
+                order.trigger('saveCurrent');
+              }
+              OB.UTIL.HookManager.executeHooks('OBPOS_postAddPayment', {
+                paymentAdded: payment,
+                payments: payments,
+                receipt: order,
+                callback: callback
+              }, function (args) {
+                if (args.callback instanceof Function) {
+                  args.callback(order);
+                }
+              });
+              };
+
+          if (args && args.cancellation) {
+            if (payment.get('reverseCallback')) {
+              var reverseCallback = payment.get('reverseCallback');
+              reverseCallback();
             }
-            OB.UTIL.HookManager.executeHooks('OBPOS_postAddPayment', {
-              paymentAdded: payment,
-              payments: payments,
-              receipt: order,
-              callback: callback
-            }, function (args) {
-              if (args.callback instanceof Function) {
-                args.callback(order);
-              }
-            });
-            };
-
-        if (args && args.cancellation) {
-          if (payment.get('reverseCallback')) {
-            var reverseCallback = payment.get('reverseCallback');
-            reverseCallback();
+            executeFinalCallback(false);
+            return;
           }
-          executeFinalCallback(false);
-          return;
-        }
-        // search for an existing payment only if is not a reverser payment.
-        if (!payment.get('reversedPaymentId')) {
-          if (!payment.get('paymentData')) {
-            // search for an existing payment only if there is not paymentData info or if there is, when there is any other paymentData with same groupingCriteria.
-            // this avoids to merge for example card payments of different cards.
-            for (i = 0, max = payments.length; i < max; i++) {
-              p = payments.at(i);
-              if (p.get('kind') === payment.get('kind') && !p.get('isPrePayment') && !p.get('reversedPaymentId')) {
-                p.set('amount', OB.DEC.add(payment.get('amount'), p.get('amount')));
-                if (p.get('rate') && p.get('rate') !== '1') {
-                  p.set('origAmount', OB.DEC.add(payment.get('origAmount'), OB.DEC.mul(p.get('origAmount'), p.get('rate'))));
+          // search for an existing payment only if is not a reverser payment.
+          if (!payment.get('reversedPaymentId')) {
+            if (!payment.get('paymentData')) {
+              // search for an existing payment only if there is not paymentData info or if there is, when there is any other paymentData with same groupingCriteria.
+              // this avoids to merge for example card payments of different cards.
+              for (i = 0, max = payments.length; i < max; i++) {
+                p = payments.at(i);
+                if (p.get('kind') === payment.get('kind') && !p.get('isPrePayment') && !p.get('reversedPaymentId')) {
+                  p.set('amount', OB.DEC.add(payment.get('amount'), p.get('amount')));
+                  if (p.get('rate') && p.get('rate') !== '1') {
+                    p.set('origAmount', OB.DEC.add(payment.get('origAmount'), OB.DEC.mul(p.get('origAmount'), p.get('rate'))));
+                  }
+                  payment.set('date', new Date());
+                  executeFinalCallback(true);
+                  return;
                 }
-                payment.set('date', new Date());
-                executeFinalCallback(true);
-                return;
               }
-            }
-          } else {
-            for (i = 0, max = payments.length; i < max; i++) {
-              p = payments.at(i);
-              if (p.get('kind') === payment.get('kind') && p.get('paymentData') && payment.get('paymentData') && p.get('paymentData').groupingCriteria && payment.get('paymentData').groupingCriteria && p.get('paymentData').groupingCriteria === payment.get('paymentData').groupingCriteria && !p.get('reversedPaymentId') && !p.get('isPrePayment')) {
-                p.set('amount', OB.DEC.add(payment.get('amount'), p.get('amount')));
-                if (p.get('rate') && p.get('rate') !== '1') {
-                  p.set('origAmount', OB.DEC.add(payment.get('origAmount'), OB.DEC.mul(p.get('origAmount'), p.get('rate'))));
+            } else {
+              for (i = 0, max = payments.length; i < max; i++) {
+                p = payments.at(i);
+                if (p.get('kind') === payment.get('kind') && p.get('paymentData') && payment.get('paymentData') && p.get('paymentData').groupingCriteria && payment.get('paymentData').groupingCriteria && p.get('paymentData').groupingCriteria === payment.get('paymentData').groupingCriteria && !p.get('reversedPaymentId') && !p.get('isPrePayment')) {
+                  p.set('amount', OB.DEC.add(payment.get('amount'), p.get('amount')));
+                  if (p.get('rate') && p.get('rate') !== '1') {
+                    p.set('origAmount', OB.DEC.add(payment.get('origAmount'), OB.DEC.mul(p.get('origAmount'), p.get('rate'))));
+                  }
+                  payment.set('date', new Date());
+                  executeFinalCallback(true);
+                  return;
                 }
-                payment.set('date', new Date());
-                executeFinalCallback(true);
-                return;
               }
             }
           }
-        }
-        if (payment.get('openDrawer') && (payment.get('allowOpenDrawer') || payment.get('isCash'))) {
-          order.set('openDrawer', payment.get('openDrawer'));
-        }
-        payment.set('date', new Date());
-        payment.set('id', OB.UTIL.get_UUID());
-        payment.set('obposAppCashup', OB.POS.modelterminal.get('terminal').cashUpId);
-        payment.set('oBPOSPOSTerminal', OB.MobileApp.model.get('terminal').id);
-        payment.set('orderGross', order.getGross());
-        payment.set('isPaid', order.get('isPaid'));
-        payment.set('isReturnOrder', order.getPaymentStatus().isNegative);
-        if (order.get('doCancelAndReplace') && order.get('replacedorder')) {
-          // Added properties to payment related with cancel an replace order
-          payment.set('cancelAndReplace', order.get('doCancelAndReplace'));
-        }
-
-        payments.add(payment, {
-          at: payment.get('index')
+          if (payment.get('openDrawer') && (payment.get('allowOpenDrawer') || payment.get('isCash'))) {
+            order.set('openDrawer', payment.get('openDrawer'));
+          }
+          payment.set('date', new Date());
+          payment.set('id', OB.UTIL.get_UUID());
+          payment.set('obposAppCashup', OB.POS.modelterminal.get('terminal').cashUpId);
+          payment.set('oBPOSPOSTerminal', OB.MobileApp.model.get('terminal').id);
+          payment.set('orderGross', order.getGross());
+          payment.set('isPaid', order.get('isPaid'));
+          payment.set('isReturnOrder', order.getPaymentStatus().isNegative);
+          if (order.get('doCancelAndReplace') && order.get('replacedorder')) {
+            // Added properties to payment related with cancel an replace order
+            payment.set('cancelAndReplace', order.get('doCancelAndReplace'));
+          }
+
+          payments.add(payment, {
+            at: payment.get('index')
+          });
+          // If there is a reversed payment set isReversed properties
+          if (payment.get('reversedPayment')) {
+            payment.get('reversedPayment').set('isReversed', true);
+          }
+          executeFinalCallback(true);
+          return;
+        }); // call with callback, no args
+      }
+
+      if (!payment.get('isReversePayment') && !payment.get('isChange')) {
+        this.checkEnoughCashAvailable(this.getPaymentStatus(), OB.MobileApp.model.paymentnames[payment.get('kind')], 'AddPayment', OB.DEC.mul(payment.get('amount'), payment.get('rate') || OB.DEC.One), function (success) {
+          if (success) {
+            addPaymentToOrder();
+          } else {
+            OB.UTIL.showWarning(OB.I18N.getLabel('OBPOS_NoEnoughCash'));
+          }
         });
-        // If there is a reversed payment set isReversed properties
-        if (payment.get('reversedPayment')) {
-          payment.get('reversedPayment').set('isReversed', true);
-        }
-        executeFinalCallback(true);
-        return;
-      }); // call with callback, no args
+      } else {
+        addPaymentToOrder();
+      }
     },
 
     overpaymentExists: function () {
diff -r 5348d4e8468a -r 9e7064168d63 web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js	Tue Mar 27 18:15:39 2018 -0400
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js	Wed Mar 28 11:41:53 2018 +0530
@@ -192,7 +192,7 @@
               components: [{
                 name: 'noenoughchangelbl',
                 showing: false,
-                type: 'error'
+                type: 'info'
               }, {
                 name: 'changeexceedlimit',
                 showing: false,
@@ -535,69 +535,6 @@
     }
   },
 
-  checkEnoughCashAvailable: function (paymentstatus, selectedPayment, scope, button, callback) {
-    var requiredCash, hasEnoughCash = true,
-        hasAllEnoughCash = true,
-        reversedPayments = [],
-        currentSelectedPaymentCashAmount = OB.DEC.Zero,
-        reversedCash;
-    // Check slave cash 
-    this.checkSlaveCashAvailable(selectedPayment, this, function (currentCash) {
-      // If there are reverse payments search for those of cash payment method. It will be needed to check if there is enough cash to reverse those payments.
-      if (paymentstatus.isReversal) {
-        paymentstatus.payments.each(function (payment) {
-          var paymentmethod = OB.POS.terminal.terminal.paymentnames[payment.get('kind')];
-          if (!payment.get('isPrePayment') && paymentmethod.paymentMethod.iscash) {
-            reversedCash = OB.DEC.sub(reversedPayments[payment.get('kind')] || OB.DEC.Zero, payment.get('origAmount'));
-            reversedPayments[payment.get('kind')] = reversedCash;
-            if (selectedPayment !== paymentmethod && OB.DEC.compare(OB.DEC.sub(paymentmethod.currentCash, reversedCash)) < 0) {
-              hasEnoughCash = false;
-            } else {
-              currentSelectedPaymentCashAmount = reversedCash;
-            }
-          }
-        });
-      }
-
-      if (hasEnoughCash) {
-        if (OB.UTIL.isNullOrUndefined(selectedPayment) || !selectedPayment.paymentMethod.iscash) {
-          requiredCash = OB.DEC.Zero;
-        } else if ((button === 'Done' || button === 'Credit') && !_.isUndefined(paymentstatus) && (paymentstatus.isNegative)) {
-          requiredCash = OB.DEC.add(currentSelectedPaymentCashAmount, paymentstatus.pendingAmt);
-          paymentstatus.payments.each(function (payment) {
-            var paymentmethod;
-            if (payment.get('kind') === selectedPayment.payment.searchKey && !payment.get('isPrePayment') && !payment.get('reversedPaymentId')) {
-              requiredCash = OB.DEC.add(requiredCash, payment.get('origAmount'));
-            } else {
-              paymentmethod = OB.POS.terminal.terminal.paymentnames[payment.get('kind')];
-              if (paymentmethod && payment.get('amount') > paymentmethod.currentCash && payment.get('isCash')) {
-                hasAllEnoughCash = false;
-              }
-            }
-          });
-        } else if (!_.isUndefined(paymentstatus)) {
-          if (button === 'Layaway' || button === 'Credit') {
-            requiredCash = OB.DEC.add(currentSelectedPaymentCashAmount, paymentstatus.changeAmt);
-          } else {
-            requiredCash = OB.DEC.sub(OB.DEC.add(currentSelectedPaymentCashAmount, paymentstatus.changeAmt), paymentstatus.pendingAmt);
-          }
-        }
-
-        if (!_.isUndefined(requiredCash) && requiredCash === 0) {
-          hasEnoughCash = true;
-        } else if (!_.isUndefined(requiredCash)) {
-          hasEnoughCash = OB.DEC.compare(OB.DEC.sub(currentCash, requiredCash)) >= 0;
-        }
-      }
-
-      if (hasEnoughCash && ((button === 'Layaway' || button === 'Credit') || (button === 'Done' && hasAllEnoughCash))) {
-        return callback.call(scope, true);
-      } else {
-        return callback.call(scope, false); // check failed.
-      }
-    });
-  },
-
   checkValidOverpayment: function (paymentstatus) {
     var requiredOverpayment = paymentstatus.overpayment,
         overPaymentUsed = _.last(paymentstatus.payments.models),
@@ -734,22 +671,22 @@
         if (paymentstatus.change && selectedPayment.paymentMethod.isshared) {
           resultOK = true;
         } else {
-          resultOK = this.checkEnoughCashAvailable(paymentstatus, selectedPayment, this, 'Done', function (success) {
+          resultOK = this.receipt.checkEnoughCashAvailable(paymentstatus, selectedPayment, 'Done', OB.DEC.Zero, function (success) {
             var lsuccess = success;
             if (lsuccess) {
-              lsuccess = this.checkValidPaymentMethod(paymentstatus, selectedPayment);
+              lsuccess = me.checkValidPaymentMethod(paymentstatus, selectedPayment);
             } else {
-              this.$.noenoughchangelbl.show();
-              this.$.donebutton.setLocalDisabled(true);
-              this.$.exactbutton.setLocalDisabled(true);
+              me.$.noenoughchangelbl.show();
+              me.$.donebutton.setLocalDisabled(true);
+              me.$.exactbutton.setLocalDisabled(true);
             }
             me.receipt.stopAddingPayments = !_.isEmpty(me.getShowingErrorMessages());
-            this.setStatusButtons(lsuccess, 'Done');
-            this.checkEnoughCashAvailable(paymentstatus, selectedPayment, this, 'Layaway', function (success) {
-              this.setStatusButtons(success, 'Layaway');
+            me.setStatusButtons(lsuccess, 'Done');
+            me.receipt.checkEnoughCashAvailable(paymentstatus, selectedPayment, 'Layaway', OB.DEC.Zero, function (success) {
+              me.setStatusButtons(success, 'Layaway');
             });
-            this.checkEnoughCashAvailable(paymentstatus, selectedPayment, this, 'Credit', function (success) {
-              this.setStatusButtons(success, 'Credit');
+            me.receipt.checkEnoughCashAvailable(paymentstatus, selectedPayment, 'Credit', OB.DEC.Zero, function (success) {
+              me.setStatusButtons(success, 'Credit');
             });
           });
         }
@@ -933,55 +870,6 @@
     }
   },
 
-  checkSlaveCashAvailable: function (selectedPayment, scope, callback) {
-
-    function processCashMgmtMaster(cashMgntCallback) {
-      new OB.DS.Process('org.openbravo.retail.posterminal.ProcessCashMgmtMaster').exec({
-        cashUpId: OB.POS.modelterminal.get('terminal').cashUpId,
-        terminalSlave: OB.POS.modelterminal.get('terminal').isslave
-      }, function (data) {
-        if (data && data.exception) {
-          // Error handler 
-          OB.log('error', data.exception.message);
-          OB.UTIL.showConfirmation.display(
-          OB.I18N.getLabel('OBPOS_CashMgmtError'), OB.I18N.getLabel('OBPOS_ErrorServerGeneric') + data.exception.message, [{
-            label: OB.I18N.getLabel('OBPOS_LblRetry'),
-            action: function () {
-              processCashMgmtMaster(cashMgntCallback);
-            }
-          }], {
-            autoDismiss: false,
-            onHideFunction: function () {
-              cashMgntCallback(false, null);
-            }
-          });
-        } else {
-          cashMgntCallback(true, data);
-        }
-      });
-    }
-
-    var currentCash = OB.DEC.Zero;
-    if (selectedPayment && selectedPayment.paymentMethod.iscash) {
-      currentCash = selectedPayment.currentCash || OB.DEC.Zero;
-    }
-    if ((OB.POS.modelterminal.get('terminal').ismaster || OB.POS.modelterminal.get('terminal').isslave) && selectedPayment.paymentMethod.iscash && selectedPayment.paymentMethod.isshared) {
-      // Load current cashup info from slaves
-      processCashMgmtMaster(function (success, data) {
-        if (success) {
-          _.each(data, function (pay) {
-            if (pay.searchKey === selectedPayment.payment.searchKey) {
-              currentCash = OB.DEC.add(currentCash, pay.startingCash + pay.totalDeposits + pay.totalSales - pay.totalReturns - pay.totalDrops);
-            }
-          });
-        }
-        callback.call(scope, currentCash);
-      });
-    } else {
-      callback.call(scope, currentCash);
-    }
-  },
-
   initComponents: function () {
     this.inherited(arguments);
     this.$.errorLabelArea.render();
