LP#1621947: webstaff address alert functionality
authorKyle Huckins <khuckins@catalystdevworks.com>
Wed, 19 Oct 2016 21:57:02 +0000 (14:57 -0700)
committerGalen Charlton <gmc@equinoxinitiative.org>
Fri, 27 Jan 2017 22:39:59 +0000 (17:39 -0500)
Add Address Alert to the alerts pane when address alert
is detected in the patron editor. This implements functionality
that was originally added tot he XUL patron editor in LP#898248.

To test:

[1] Define an address alert.
[2] Open a patron record in the webstaff patron editor and
    create or update an address that would match the alert
    set up in step 1. Verify, upon blur of street 1, street 2,
    or the city inputs that an alert is displayed.

Note that the feature does not call for the presence of an
address alert to prevent the operator from saving the record;
the alert is purely advisory.

Signed-off-by: Kyle Huckins <khuckins@catalystdevworks.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>

Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index 5543e9d..b7516dc 100644 (file)
     </div>
   </div>
 
+  <div class="alert alert-danger" ng-show="address_alerts.length > 0">
+      <div class="strong-text-3">[% l('Address Alert') %]</div>
+      <div ng-repeat="address_alert in address_alerts">
+        {{address_alert.alert_message()}}
+      </div>
+  </div>
+
   <!-- IDL field documentation window -->
   <div class="alert alert-info" ng-show="selected_field_doc">
     <fieldset id="reg-field-doc">
index 1005453..f0a45cd 100644 (file)
@@ -1106,6 +1106,7 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
     // for existing patrons, disable barcode input by default
     $scope.disable_bc = $scope.focus_usrname = Boolean($scope.patron_id);
     $scope.focus_bc = !Boolean($scope.patron_id);
+    $scope.address_alerts = [];
     $scope.dupe_counts = {};
 
     // map of perm name to true/false for perms the logged in user
@@ -1587,6 +1588,27 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         patronRegSvc.invalidate_field($scope.patron, field);
     }
 
+    address_alert = function(addr) {
+        var args = {
+            street1: addr.street1,
+            street2: addr.street2,
+            city: addr.city,
+            state: addr.state,
+            county: addr.county,
+            country: addr.country,
+            post_code: addr.post_code,
+            mailing_address: addr._is_mailing,
+            billing_address: addr._is_billing
+        }
+
+        egCore.net.request(
+            'open-ils.actor',
+            'open-ils.actor.address_alert.test',
+            egCore.auth.token(), egCore.auth.user().ws_ou(), args
+            ).then(function(res) {
+                $scope.address_alerts = res;
+        });
+    }
 
     $scope.dupe_value_changed = function(type, value) {
         $scope.dupe_counts[type] = 0;
@@ -1689,6 +1711,7 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
             case 'city':
                 // dupe search on address wants the address object as the value.
                 $scope.dupe_value_changed('address', obj);
+                address_alert(obj);
                 break;
 
             case 'post_code':