diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-toolbar.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-toolbar.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-toolbar.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/toolbar/ob-toolbar.js
@@ -547,6 +547,13 @@
   // NOTE: new buttons should implement the updateState method.
   //
   updateButtonState: function(noSetSession, changeEvent){
+    var me = this;
+    this.fireOnPause('updateButtonState', function() {
+      me.pausedUpdateButtonState(noSetSession, changeEvent);
+    });
+  },
+   
+  pausedUpdateButtonState: function(noSetSession, changeEvent) { 
     var length = this.leftMembers.length, i, 
       form = this.view.isEditingGrid ? this.view.viewGrid.getEditForm() : this.view.viewForm;
     
diff --git a/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js b/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
--- a/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
+++ b/modules/org.openbravo.userinterface.smartclient/web/org.openbravo.userinterface.smartclient/js/ob-smartclient.js
@@ -466,7 +466,11 @@
   
   blur: function(form, item){
     if (item._hasChanged && form && form.handleItemChange) {
-      form.handleItemChange(this);
+      // give the form time to save out values before doing
+      // the item change stuff
+      form.fireOnPause('handleItemChange', function() {
+        form.handleItemChange(this);
+      });
     }
   },
   
