diff -r 5ba8643c02dc web/org.openbravo.retail.posterminal/js/data/datacustomersave.js
--- a/web/org.openbravo.retail.posterminal/js/data/datacustomersave.js	Mon Jun 29 16:49:04 2015 +0200
+++ b/web/org.openbravo.retail.posterminal/js/data/datacustomersave.js	Wed Jul 01 12:24:52 2015 +0200
@@ -41,22 +41,39 @@
       OB.Dal.save(this.customer, function () {
         //OB.UTIL.showSuccess(OB.I18N.getLabel('OBPOS_customerSavedSuccessfullyLocally',[me.customer.get('_identifier')]));
         // Saving Customer Address locally
-        bpLocToSave.set('id', me.customer.get('locId'));
-        bpLocToSave.set('bpartner', me.customer.get('id'));
-        bpLocToSave.set('name', me.customer.get('locName'));
-        bpLocToSave.set('postalCode', me.customer.get('postalCode'));
-        bpLocToSave.set('cityName', me.customer.get('cityName'));
-        if (isNew) {
+        if (!isNew) {
+          //load the BPlocation and then update it
+          OB.Dal.get(OB.Model.BPLocation, me.customer.get('locId'), function (bpLocToUpdate) {
+            if (bpLocToUpdate) {
+              bpLocToUpdate.set('name', me.customer.get('locName'));
+              bpLocToUpdate.set('postalCode', me.customer.get('postalCode'));
+              bpLocToUpdate.set('cityName', me.customer.get('cityName'));
+              bpLocToUpdate.set('_identifier', me.customer.get('locName'));
+              OB.Dal.save(bpLocToUpdate, function () {
+                //customer location updated successfully. Nothing to do here.
+              }, function () {
+                OB.error(arguments);
+              }, isNew);
+            } else {
+              OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_errorSavingBPLoc_header'), OB.I18N.getLabel('OBPOS_errorSavingBPLoc_body'));
+            }
+          }, function () {
+            OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_errorSavingBPLoc_header'), OB.I18N.getLabel('OBPOS_errorSavingBPLoc_body'));
+          });
+        } else {
+          //create bploc from scratch
+          bpLocToSave.set('name', me.customer.get('locName'));
+          bpLocToSave.set('postalCode', me.customer.get('postalCode'));
+          bpLocToSave.set('cityName', me.customer.get('cityName'));
+          bpLocToSave.set('_identifier', me.customer.get('locName'));
           bpLocToSave.set('countryName', OB.MobileApp.model.get('terminal').defaultbp_bpcountry_name);
           bpLocToSave.set('countryId', OB.MobileApp.model.get('terminal').defaultbp_bpcountry);
-        } else {
-          bpLocToSave.set('countryName', me.customer.get('countryName'));
-          bpLocToSave.set('countryId', me.customer.get('country'));
+          OB.Dal.save(bpLocToSave, function () {
+            //customer location created successfully. Nothing to do here.
+          }, function () {
+            OB.error(arguments);
+          }, isNew);
         }
-        bpLocToSave.set('_identifier', me.customer.get('locName'));
-        OB.Dal.save(bpLocToSave, function () {}, function () {
-          OB.error(arguments);
-        }, isNew);
 
         if (isNew) {
           me.customer.set('posTerminal', OB.MobileApp.model.get('terminal').id);
diff -r 5ba8643c02dc web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js
--- a/web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js	Mon Jun 29 16:49:04 2015 +0200
+++ b/web/org.openbravo.retail.posterminal/js/data/dataordertaxes.js	Wed Jul 01 12:24:52 2015 +0200
@@ -366,7 +366,7 @@
                   popup: 'OB_UI_MessageDialog',
                   args: {
                     header: OB.I18N.getLabel('OBPOS_TaxNotFound_Header'),
-                    message: OB.I18N.getLabel('OBPOS_TaxNotFound_Message', [args.get('_identifier')])
+                    message: OB.I18N.getLabel('OBPOS_TaxNotFound_Message', [((args && args.get('_identifier')) ? args.get('_identifier') : 'unknown')])
                   }
                 });
               }
@@ -616,7 +616,7 @@
                     popup: 'OB_UI_MessageDialog',
                     args: {
                       header: OB.I18N.getLabel('OBPOS_TaxNotFound_Header'),
-                      message: OB.I18N.getLabel('OBPOS_TaxNotFound_Message', [args.get('_identifier')])
+                      message: OB.I18N.getLabel('OBPOS_TaxNotFound_Message', [((args && args.get('_identifier')) ? args.get('_identifier') : 'unknown')])
                     }
                   });
                 }
diff -r 5ba8643c02dc web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js	Mon Jun 29 16:49:04 2015 +0200
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js	Wed Jul 01 12:24:52 2015 +0200
@@ -63,29 +63,43 @@
     this.model = model;
   },
   tap: function () {
-    var i;
-    if (this.model.get('leftColumnViewManager').isMultiOrder()) {
-      for (i = 0; this.model.get('multiOrders').get('multiOrdersList').length > i; i++) {
-        if (!this.model.get('multiOrders').get('multiOrdersList').at(i).get('isLayaway')) { //if it is not true, means that iti is a new order (not a loaded layaway)
-          this.model.get('multiOrders').get('multiOrdersList').at(i).unset('amountToLayaway');
-          this.model.get('multiOrders').get('multiOrdersList').at(i).set('orderType', 0);
-          continue;
+    var me = this;
+    OB.MobileApp.model.hookManager.executeHooks('OBPOS_PreCreateNewReceipt', {
+      model: this.model,
+      context: this
+    }, function (args) {
+      if (!args.cancelOperation) {
+        var i;
+        if (me.model.get('leftColumnViewManager').isMultiOrder()) {
+          for (i = 0; me.model.get('multiOrders').get('multiOrdersList').length > i; i++) {
+            if (!me.model.get('multiOrders').get('multiOrdersList').at(i).get('isLayaway')) { //if it is not true, means that iti is a new order (not a loaded layaway)
+              me.model.get('multiOrders').get('multiOrdersList').at(i).unset('amountToLayaway');
+              me.model.get('multiOrders').get('multiOrdersList').at(i).set('orderType', 0);
+              continue;
+            }
+            me.model.get('orderList').current = me.model.get('multiOrders').get('multiOrdersList').at(i);
+            me.model.get('orderList').deleteCurrent();
+            if (!_.isNull(this.model.get('multiOrders').get('multiOrdersList').at(i).id)) {
+              me.model.get('orderList').deleteCurrentFromDatabase(me.model.get('multiOrders').get('multiOrdersList').at(i));
+            }
+          }
+          me.model.get('multiOrders').resetValues();
+          me.model.get('leftColumnViewManager').setOrderMode();
+        } else {
+          if (OB.MobileApp.model.get('permissions')['OBPOS_print.suspended'] && this.model.get('order').get('lines').length !== 0) {
+            me.model.get('order').trigger('print');
+          }
         }
-        this.model.get('orderList').current = this.model.get('multiOrders').get('multiOrdersList').at(i);
-        this.model.get('orderList').deleteCurrent();
-        if (!_.isNull(this.model.get('multiOrders').get('multiOrdersList').at(i).id)) {
-          this.model.get('orderList').deleteCurrentFromDatabase(this.model.get('multiOrders').get('multiOrdersList').at(i));
-        }
+        me.doAddNewOrder();
+        OB.MobileApp.model.hookManager.executeHooks('OBPOS_PostCreateNewReceipt', {
+          model: me.model,
+          context: me
+        }, function (args2) {
+          //Nothing to do
+        });
+        return true;
       }
-      this.model.get('multiOrders').resetValues();
-      this.model.get('leftColumnViewManager').setOrderMode();
-    } else {
-      if (OB.MobileApp.model.get('permissions')['OBPOS_print.suspended'] && this.model.get('order').get('lines').length !== 0) {
-        this.model.get('order').trigger('print');
-      }
-    }
-    this.doAddNewOrder();
-    return true;
+    });
   }
 });
 
