diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-grid.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-grid.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-grid.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-grid.js
@@ -479,23 +479,30 @@
   },
 
   validateRows: function () {
-    var i, row, field, errors;
+    var i, row, field, errors, editRowIndexes, editRowIDs, rowIndexID;
 
     if (!this.neverValidate) {
       return;
     }
 
+    editRowIndexes = this.getAllEditRows();
+    editRowIDs = this.getAllEditRows(true);
+
     for (i = 0; i < this.fields.length; i++) {
       field = this.fields[i];
 
       if (!field.validationFn) {
         continue;
       }
-
       for (row = 0; row < this.data.length; row++) {
         errors = this.validateCellValue(row, i, this.data[row][field.name]);
         if (!errors || isc.isA.emptyArray(errors)) {
-          this.clearFieldError(row, field.name);
+          if (editRowIndexes.indexOf(row) !== -1) {
+            rowIndexID = editRowIDs[editRowIndexes.indexOf(row)];
+          } else {
+            rowIndexID = row;
+          }
+          this.clearFieldError(editRowIDs[row], field.name);
         } else {
           this.setFieldError(row, field.name, errors[0]);
         }
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-view.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-view.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-view.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/process/ob-pick-and-execute-view.js
@@ -330,7 +330,7 @@
     allProperties._buttonValue = btnValue || 'DONE';
 
     for (i = 0; i < len; i++) {
-      tmp = isc.addProperties({}, selection[i], grid.getEditedRecord(selection[i]));
+      tmp = isc.addProperties({}, selection[i], grid.getEditedRecord(i));
       allProperties._selection.push(tmp);
     }
 
@@ -338,7 +338,7 @@
     len = (allRows && allRows.length) || 0;
 
     for (i = 0; i < len; i++) {
-      tmp = isc.addProperties({}, allRows[i], grid.getEditedRecord(allRows[i]));
+      tmp = isc.addProperties({}, allRows[i], grid.getEditedRecord(i));
       allProperties._allRows.push(tmp);
     }
 
