LP1739288: report back on invalid barcodes in Item Status screen
authorJane Sandberg <sandbej@linnbenton.edu>
Mon, 19 Aug 2019 19:43:33 +0000 (12:43 -0700)
committerGalen Charlton <gmc@equinoxinitiative.org>
Fri, 24 Jul 2020 20:33:34 +0000 (16:33 -0400)
To test:

1) Make a text file with both valid and invalid item barcodes.
2) Go to Circulation > Item Status and upload your file.
3) Note that the valid barcodes result in rows in the item status
screen, and the invalid barcodes are not displayed anywhere.
4) Apply this commit.
5) Repeat step 2.
6) Notice that the invalid barcodes are now reported in a new alert.
7) Make a text file with only valid barcodes and upload it.
8) Upload it.  Notice that the alert disappears.

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Josh Stompro <stompro@stompro.org>
LP1739288: Add a summary report to the list of bad barcodes.

(^^ squash of commit written by Josh Stompro)

Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Signed-off-by: Josh Stompro <stompro@stompro.org>
Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/templates/staff/cat/item/index.tt2
Open-ILS/web/js/ui/default/staff/cat/item/app.js

index 8c2a02e..1fb54b3 100644 (file)
   </div>
 </div>
 
+<div class="row">
+  <div class="col-md-9">
+    <div ng-show="context.itemsNotFound.length" class="alert alert-danger" role="alert">
+      <h3>[% l('The following barcodes are incorrect or deleted') %]</h3>
+      <ul>
+        <li ng-repeat="badBarcode in context.itemsNotFound">{{badBarcode}}</li>
+      </ul>
+    </div>
+  </div>
+  <div class="col-md-3" ng-show="context.fileDoneLoading">
+    <div ng-show="context.itemsNotFound.length" class="alert alert-info" role="alert">
+      <h3>[% l('Summary of file load') %]</h3>
+      <ul>
+        <li>[% l('[_1] valid barcodes', '{{context.numBarcodesInFile - context.itemsNotFound.length}}') %]</li>
+        <li>[% l('[_1] invalid barcodes', '{{context.itemsNotFound.length}}') %]</li>
+        <li>[% l('[_1] total barcodes', '{{context.numBarcodesInFile}}') %]</li>
+      </ul>
+    </div>
+  </div>
+</div>
+
 <div ng-view></div>
 
 [% END %]
index 614db62..a07ee45 100644 (file)
@@ -363,6 +363,9 @@ function($scope , $q , $window , $location , $timeout , egCore , egNet , egGridD
     };
 
     $scope.$watch('barcodesFromFile', function(newVal, oldVal) {
+        $scope.context.itemsNotFound = [];
+        $scope.context.fileDoneLoading = false;
+        $scope.context.numBarcodesInFile = 0;
         if (newVal && newVal != oldVal) {
             $scope.args.barcode = '';
             var barcodes = [];
@@ -389,13 +392,20 @@ function($scope , $q , $window , $location , $timeout , egCore , egNet , egGridD
                     if(itemSvc.copies[0]){  // Were any copies actually retrieved
                         copyGrid.selectItems([itemSvc.copies[0].index]);
                     }
+                    $scope.context.fileDoneLoading = true;
                     return;
                 }
 
-                itemSvc.fetch(barcode).then(fetch_next_copy);
+                itemSvc.fetch(barcode).then(function(item) {
+                    if (!item) {
+                        $scope.context.itemsNotFound.push(barcode);
+                    }
+                    fetch_next_copy();
+                })
             }
 
             if (barcodes.length) {
+                $scope.context.numBarcodesInFile = barcodes.length;
                 egProgressDialog.open({value: 0, max: barcodes.length});
                 fetch_next_copy();
             }