diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/main/ob-standard-window.js
@@ -673,7 +673,10 @@
       }
 
       // if not dirty or we know that the object has errors
-      if (!me.getDirtyEditForm() || (me.getDirtyEditForm() && !me.getDirtyEditForm().validateForm())) {
+      if (!me.getDirtyEditForm() || (me.getDirtyEditForm() && me.getDirtyEditForm().inFicCall) || (me.getDirtyEditForm() && !me.getDirtyEditForm().validateForm())) {
+        if (me.getDirtyEditForm() && me.getDirtyEditForm().inFicCall) {
+          me.getDirtyEditForm().callSaveAfterFICReturn = true;
+        }
         // clean up before calling the action, as the action
         // can set dirty form again
         me.cleanUpAutoSaveProperties();
