Lp 1735539: Fix Item Status ability to delete multiple copies.
authorJason Stephenson <jason@sigio.com>
Thu, 12 Apr 2018 14:47:40 +0000 (10:47 -0400)
committerDan Wells <dbw2@calvin.edu>
Wed, 18 Apr 2018 15:30:46 +0000 (11:30 -0400)
Use the notify handler instead of the resolve handler to collect our
copies.  This ensures we get them all instead of just the last one.

To reproduce the bug:
   1. Open Item Status in the web staff client.
   2. Load multiple items, perhaps by uploading a file of barcodes.
   3. Select more than 1 item from the list.
   4. Choose "Delete Items" from the Actions menu.
   5. Note that the dialog indicates that you will delete 1 copy.
   6. Click the Cancel button in the dialog.

To test, after applying the fix branch:
   1. Open Item Status in the web staff client.
   2. Load multiple items, perhaps by uploading a file of barcodes.
   3. Select more than 1 item from the list.
   4. Choose "Delete Items" from the Actions menu.
   5. Note that that the dialog indicates you will delete X copies,
      where X is the number of items selected.
   6. Click OK and confirm that all copies were deleted.
   7. You can confirm 6 by reloading the interface and uploading the
      file of barcodes again.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Jason Boyer <jboyer@library.in.gov>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Open-ILS/web/js/ui/default/staff/circ/services/item.js

index 02a58d9..4e752bd 100644 (file)
@@ -503,9 +503,7 @@ function(egCore , egCirc , $uibModal , $q , $timeout , $window , egConfirmDialog
         egCore.pcrud.search('acp',
             {deleted : 'f', id : items.map(function(el){return el.id;}) },
             { flesh : 1, flesh_fields : { acp : ['call_number'] } }
-        ).then(function(copy) {
-            copy_objects.push(copy);
-        }).then(function() {
+        ).then(function() {
 
             var cnHash = {};
             var perCnCopies = {};
@@ -555,6 +553,10 @@ function(egCore , egCirc , $uibModal , $q , $timeout , $window , egConfirmDialog
                     angular.forEach(items, function(cp){service.add_barcode_to_list(cp.barcode)});
                 });
             });
+        },
+        null,
+        function(copy) {
+            copy_objects.push(copy);
         });
     }