LP#1712637 Patron edit hold pickup location repairs
authorBill Erickson <berickxx@gmail.com>
Thu, 14 Sep 2017 22:09:08 +0000 (18:09 -0400)
committerKathy Lussier <klussier@masslnc.org>
Mon, 18 Sep 2017 15:11:32 +0000 (11:11 -0400)
1. Allow setting the hold pickup location independant of the home
   library.

2. Disable org units in the pickup lib selector that are not viable hold
   pickup locations (can_have_vols=f)

3. Consistent w/ the XUL client, allow a patron to be created without
   selecting a default pickup location.

To test:

[1] Register a new patron and confirm pickup location is initialy unset.
[2] Confirm pickup lib options are viable pickup locations.
[3] Apply a pickup location different from the home library and confirm
    the home library selector remains unchanged.
[4] Confirm saving the patron applies the expected pickup location value.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index 3aeb43a..0ac7218 100644 (file)
@@ -581,9 +581,11 @@ within the "form" by name for validation.
     <label>{{user_setting_types['opac.default_pickup_location'].label()}}</label>
   </div>
   <div class="col-md-3 reg-field-input">
-    <eg-org-selector 
-      xonchange="field_modified" 
-      selected="patron.home_ou"></eg-org-selector>
+    <eg-org-selector nodefault
+      disable-test="disable_pulib" 
+      selected="patron._pickup_lib"
+      onchange="handle_pulib_changed">
+    </eg-org-selector>
   </div>
 </div>
 
index 91e6067..728f176 100644 (file)
@@ -1157,7 +1157,7 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         }
         $scope.hold_notify_type.phone = true;
         $scope.hold_notify_type.email = true;
-       $scope.hold_notify_type.sms = false;
+        $scope.hold_notify_type.sms = false;
 
         // staged users may be loaded w/ a profile.
         $scope.set_expire_date();
@@ -1228,6 +1228,13 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         $scope.user_settings = prs.user_settings;
         prs.user_settings = {};
 
+        // If a default pickup lib is applied to the patron, apply it 
+        // to the UI at page load time.  Otherwise, leave the value unset.
+        if ($scope.user_settings['opac.default_pickup_location']) {
+            $scope.patron._pickup_lib = egCore.org.get(
+                $scope.user_settings['opac.default_pickup_location']);
+        }
+
         extract_hold_notify();
         if ($scope.patron.isnew)
             set_new_patron_defaults(prs);
@@ -1653,6 +1660,11 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         });
     }
 
+    $scope.handle_pulib_changed = function(org) {
+        if (!$scope.user_settings) return; // still rendering
+        $scope.user_settings['opac.default_pickup_location'] = org.id();
+    }
+
     // This is called with every character typed in a form field,
     // since that's the only way to gaurantee something has changed.
     // See handle_field_changed for ng-change vs. ng-blur.
@@ -1784,6 +1796,12 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         );
     }
 
+    // returns true (disable) for orgs that cannot have vols (for holds pickup)
+    $scope.disable_pulib = function(org_id) {
+        if (!org_id) return;
+        return !egCore.org.CanHaveVolumes(org_id);
+    }
+
     // Returns true if the Save and Save & Clone buttons should be disabled.
     $scope.edit_passthru.hide_save_actions = function() {
         return $scope.patron.isnew ?