LP#1452950 patron reg replace barcode
authorBill Erickson <berickxx@gmail.com>
Thu, 17 Sep 2015 01:42:16 +0000 (21:42 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 25 Feb 2016 22:31:56 +0000 (17:31 -0500)
Replace patron barcode.  Includes duplicate barcode detection, but no
styling/warning is produced when a dupe is found, since the structure
for handling invalid form fields in patron reg does not yet exist.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index f9abc18..d70c60f 100644 (file)
@@ -64,6 +64,9 @@
     [% ELSIF field == 'post_code' %]
       <input type="text" ng-blur="post_code_changed(patron.[% path %])"
         class="form-control" ng-model="[% model %]"/>
+    [% ELSIF field == 'barcode' %]
+      <input type="text" ng-blur="barcode_changed(patron.card.barcode)"
+        class="form-control" ng-model="[% model %]"/>
     [% ELSE %]
       <input type="[% input_type %]" 
         class="form-control" ng-model="[% model %]"/>
@@ -77,7 +80,8 @@
 
     [% IF field == 'barcode' %]
 
-      <button class="btn btn-default">[% l('Replace Barcode') %]</button>
+      <button class="btn btn-default"
+        ng-click="replace_card()">[% l('Replace Barcode') %]</button>
       <button class="btn btn-default" 
         ng-click="cards_dialog()">[% l('See All') %]</button>
 
index c88dbee..d9cd490 100644 (file)
@@ -404,7 +404,6 @@ angular.module('egCoreMod')
 function PatronRegCtrl($scope, $routeParams, 
     $q, $modal, egCore, patronSvc, patronRegSvc) {
 
-
     $scope.clone_id = $routeParams.clone_id;
     $scope.stage_username = $routeParams.stage_username;
     $scope.patron_id = 
@@ -580,6 +579,35 @@ function PatronRegCtrl($scope, $routeParams,
         });
     }
 
+    var new_card_id = -1;
+    $scope.replace_card = function() {
+        $scope.patron.card.active = false;
+        $scope.patron.card.ischanged = true;
+        var new_card = egCore.idl.toHash(new egCore.idl.ac());
+        new_card.id = new_card_id--;
+        new_card.isnew = true;
+        new_card.active = true;
+        new_card._primary = true;
+        $scope.patron.card = new_card;
+        $scope.patron.cards.push(new_card);
+    }
+
+    $scope.barcode_changed = function(bc) {
+        if (!bc) return;
+        egCore.net.request(
+            'open-ils.actor',
+            'open-ils.actor.barcode.exists',
+            egCore.auth.token(), bc
+        ).then(function(resp) {
+            if (resp == '1') {
+                console.log('duplicate barcode detected: ' + bc);
+                // DUPLICATE CARD
+            } else {
+                // No dupe -- A-OK
+            }
+        });
+    }
+
     $scope.cards_dialog = function() {
         $modal.open({
             templateUrl: './circ/patron/t_patron_cards_dialog',