
# HG changeset patch
# User Adrián Romero <adrianromero@openbravo.com>
# Date 1503390408 -7200
# Node ID d2cf189ac796ebb17e785d585de7288ca65fe2da
# Parent  b2bbb52b7fa64ee96ff8308efd959f8aff53010e
[SCO] Check for receipt *undo* field when deleting a line.
* This changeset just checks for the receipt *undo* field to not to set a new *undo* object in receipt in case *undo* does not exist

diff -r b2bbb52b7fa6 -r d2cf189ac796 web/org.openbravo.retail.posterminal/js/model/order.js
--- a/web/org.openbravo.retail.posterminal/js/model/order.js	Mon Jul 17 14:13:13 2017 +0200
+++ b/web/org.openbravo.retail.posterminal/js/model/order.js	Tue Aug 22 10:26:48 2017 +0200
@@ -1423,66 +1423,69 @@
         var text, lines, indexes, relations, rl, rls, i;
 
         me.get('lines').remove(line);
-        text = me.get('undo').text;
-        lines = me.get('undo').lines;
-        relations = me.get('undo').relations;
-
-        me.setUndo('DeleteLine', {
-          text: text,
-          lines: lines,
-          relations: relations,
-          undo: function () {
-            if (OB.UTIL.RfidController.isRfidConfigured() && line.get('obposEpccode')) {
-              OB.UTIL.RfidController.addEpcLine(line);
-            }
-            enyo.$.scrim.show();
-            me.set('preventServicesUpdate', true);
-            me.set('deleting', true);
-            if (OB.MobileApp.model.get('terminal').businessPartner === me.get('bp').get('id')) {
-              for (i = 0; i < me.get('undo').lines.length; i++) {
-                if (!me.get('undo').lines[i].get('product').get('oBPOSAllowAnonymousSale')) {
-                  OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_Error'), OB.I18N.getLabel('OBPOS_AnonymousSaleForProductNotAllowed', [me.get('undo').lines[i].get('product').get('_identifier')]));
-                  return;
+
+        if (me.get('undo')) {
+          text = me.get('undo').text;
+          lines = me.get('undo').lines;
+          relations = me.get('undo').relations;
+
+          me.setUndo('DeleteLine', {
+            text: text,
+            lines: lines,
+            relations: relations,
+            undo: function () {
+              if (OB.UTIL.RfidController.isRfidConfigured() && line.get('obposEpccode')) {
+                OB.UTIL.RfidController.addEpcLine(line);
+              }
+              enyo.$.scrim.show();
+              me.set('preventServicesUpdate', true);
+              me.set('deleting', true);
+              if (OB.MobileApp.model.get('terminal').businessPartner === me.get('bp').get('id')) {
+                for (i = 0; i < me.get('undo').lines.length; i++) {
+                  if (!me.get('undo').lines[i].get('product').get('oBPOSAllowAnonymousSale')) {
+                    OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_Error'), OB.I18N.getLabel('OBPOS_AnonymousSaleForProductNotAllowed', [me.get('undo').lines[i].get('product').get('_identifier')]));
+                    return;
+                  }
                 }
               }
+              me.get('undo').lines.sort(function (a, b) {
+                if (a.get('undoPosition') > b.get('undoPosition')) {
+                  return 1;
+                }
+                if (a.get('undoPosition') < b.get('undoPosition')) {
+                  return -1;
+                }
+                // a must be equal to b
+                return 0;
+              });
+
+              lines.forEach(function (line) {
+                if (OB.MobileApp.model.hasPermission('OBPOS_remove_ticket', true) && line.get('obposQtyDeleted')) {
+                  line.set('qty', line.get('obposQtyDeleted'));
+                  line.set('obposQtyDeleted', 0);
+                }
+                me.removeDeleteLine(line);
+                me.get('lines').add(line, {
+                  at: line.get('undoPosition')
+                });
+              });
+              relations.forEach(function (rel) {
+                var rls = rel[0].get('relatedLines').slice(),
+                    lineToAddRelated = _.filter(me.get('lines').models, function (line) {
+                    return line.id === rel[0].id;
+                  });
+                rls.push(rel[1]);
+                lineToAddRelated[0].set('relatedLines', rls);
+              });
+              me.set('undo', null);
+              me.unset('preventServicesUpdate');
+              me.unset('deleting');
+              me.get('lines').trigger('updateRelations');
+              me.calculateReceipt();
+              enyo.$.scrim.hide();
             }
-            me.get('undo').lines.sort(function (a, b) {
-              if (a.get('undoPosition') > b.get('undoPosition')) {
-                return 1;
-              }
-              if (a.get('undoPosition') < b.get('undoPosition')) {
-                return -1;
-              }
-              // a must be equal to b
-              return 0;
-            });
-
-            lines.forEach(function (line) {
-              if (OB.MobileApp.model.hasPermission('OBPOS_remove_ticket', true) && line.get('obposQtyDeleted')) {
-                line.set('qty', line.get('obposQtyDeleted'));
-                line.set('obposQtyDeleted', 0);
-              }
-              me.removeDeleteLine(line);
-              me.get('lines').add(line, {
-                at: line.get('undoPosition')
-              });
-            });
-            relations.forEach(function (rel) {
-              var rls = rel[0].get('relatedLines').slice(),
-                  lineToAddRelated = _.filter(me.get('lines').models, function (line) {
-                  return line.id === rel[0].id;
-                });
-              rls.push(rel[1]);
-              lineToAddRelated[0].set('relatedLines', rls);
-            });
-            me.set('undo', null);
-            me.unset('preventServicesUpdate');
-            me.unset('deleting');
-            me.get('lines').trigger('updateRelations');
-            me.calculateReceipt();
-            enyo.$.scrim.hide();
-          }
-        });
+          });
+        }
 
         me.adjustPayment();
         if (!doNotSave) {

