From: Bill Erickson Date: Tue, 10 Jun 2014 15:45:58 +0000 (-0400) Subject: group member details; patron tab numbers X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=4fd8001454432f2ac2c18a5afb4f714cf98fea4c;p=working%2FEvergreen.git group member details; patron tab numbers Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/templates/staff/circ/patron/index.tt2 b/Open-ILS/src/templates/staff/circ/patron/index.tt2 index c08791da66..b7ec957cde 100644 --- a/Open-ILS/src/templates/staff/circ/patron/index.tt2 +++ b/Open-ILS/src/templates/staff/circ/patron/index.tt2 @@ -72,13 +72,25 @@ angular.module('egCoreMod').run(['egStrings', function(s) { [% l('Check Out') %]
  • - [% l('Items Out') %] + + [% l('Items Out') %] + + ({{patron_stats().checkouts.total_out}}) + +
  • - [% l('Holds') %] + + [% l('Holds') %] + + ({{patron_stats().holds.total}} / {{patron_stats().holds.ready}}) + +
  • - [% l('Bills') %] + + [% l('Bills') %] +
  • [% l('Messages') %] diff --git a/Open-ILS/src/templates/staff/circ/patron/t_add_to_group_dialog.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_add_to_group_dialog.tt2 deleted file mode 100644 index caa1d841f9..0000000000 --- a/Open-ILS/src/templates/staff/circ/patron/t_add_to_group_dialog.tt2 +++ /dev/null @@ -1,23 +0,0 @@ -
    - - - -
    - diff --git a/Open-ILS/src/templates/staff/circ/patron/t_group.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_group.tt2 index 9a74166547..8d28161beb 100644 --- a/Open-ILS/src/templates/staff/circ/patron/t_group.tt2 +++ b/Open-ILS/src/templates/staff/circ/patron/t_group.tt2 @@ -1,5 +1,13 @@
    [% l('Group Member Details') %]
    +
    +
    [% l('Total Owed: ') %]
    +
    {{totals.owed | currency}}
    +
    [% l('Total Out: ') %]
    +
    {{totals.total_out}}
    +
    [% l('Total Overdue: ') %]
    +
    {{totals.overdue}}
    +
    + + @@ -23,7 +34,7 @@ - + diff --git a/Open-ILS/src/templates/staff/circ/patron/t_move_to_group_dialog.tt2 b/Open-ILS/src/templates/staff/circ/patron/t_move_to_group_dialog.tt2 new file mode 100644 index 0000000000..96e97332e7 --- /dev/null +++ b/Open-ILS/src/templates/staff/circ/patron/t_move_to_group_dialog.tt2 @@ -0,0 +1,28 @@ +
    + + + +
    + diff --git a/Open-ILS/src/templates/staff/css/circ/patron.css.tt2 b/Open-ILS/src/templates/staff/css/circ/patron.css.tt2 index d7688653d2..f81b787ca4 100644 --- a/Open-ILS/src/templates/staff/css/circ/patron.css.tt2 +++ b/Open-ILS/src/templates/staff/css/circ/patron.css.tt2 @@ -5,6 +5,7 @@ /* there are bootstrap tyles for error, warning, etc., but the ones I'm finding aren't quite cutting it..*/ .patron-summary-alert {color: red; font-weight:bold} +.patron-summary-alert-small {color: red} .patron-summary-divider { border-top: 1px solid #CCC} #patron-checkout-barcode { width: 16em; } diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/app.js b/Open-ILS/web/js/ui/default/staff/circ/patron/app.js index c312212d0c..71bdb98d85 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/patron/app.js +++ b/Open-ILS/web/js/ui/default/staff/circ/patron/app.js @@ -343,6 +343,9 @@ function($q , $timeout , $location , egCore, egUser , $locale) { stats.checkouts.claims_returned = Number(stats.checkouts.claims_returned); stats.checkouts.lost = Number(stats.checkouts.lost); + stats.checkouts.out = Number(stats.checkouts.out); + stats.checkouts.total_out = + stats.checkouts.out + stats.checkouts.overdue; return stats; } ); @@ -1110,6 +1113,7 @@ function($scope, $routeParams , $q , $location , egCore , var statsCache = {}; var gridQuery = {}; + $scope.totals = {owed : 0, total_out : 0, overdue : 0} $scope.gridQuery = function() {return gridQuery} $scope.gridRevision = 0; @@ -1123,6 +1127,8 @@ function($scope, $routeParams , $q , $location , egCore , // user retrieved, flesh their stats patronSvc.getUserStats(item.id).then(function(stats) { item.stats = statsCache[item.id] = stats; + $scope.totals.total_out += stats.checkouts.total_out; + $scope.totals.overdue += stats.checkouts.overdue; }); } } @@ -1134,6 +1140,7 @@ function($scope, $routeParams , $q , $location , egCore , usrgroup : patronSvc.current.usrgroup(), deleted : 'f' } + $scope.totals.owed = patronSvc.patron_stats.fines.group_balance_owed; }); $scope.removeFromGroup = function(selected) { @@ -1166,7 +1173,33 @@ function($scope, $routeParams , $q , $location , egCore , }); } - function showMoveToGroupConfirm(barcode) { + // fetch each user ("selected" has flattened users) + // update the usrgroup, then update the user object + // After all updates are complete, refresh the grid. + function moveUsersToGroup(target_user, selected) { + var promises = []; + + angular.forEach(selected, function(user) { + promises.push( + egCore.pcrud.retrieve('au', user.id) + .then(function(u) { + u.usrgroup(target_user.usrgroup()); + u.ischanged(true); + return egCore.net.request( + 'open-ils.actor', + 'open-ils.actor.patron.update', + egCore.auth.token(), u + ); + }) + ); + }); + + $q.all(promises).then(function() { + $scope.gridRevision++; + }); + } + + function showMoveToGroupConfirm(barcode, selected) { // find the user egCore.pcrud.search('ac', {barcode : barcode}) @@ -1180,11 +1213,12 @@ function($scope, $routeParams , $q , $location , egCore , .then(function(user) { user.card(card); $modal.open({ - templateUrl: './circ/patron/t_add_to_group_dialog', + templateUrl: './circ/patron/t_move_to_group_dialog', controller: [ '$scope','$modalInstance', function($scope , $modalInstance) { $scope.user = user; + $scope.outbound = Boolean(selected); $scope.ok = function(count) { $modalInstance.close() } $scope.cancel = @@ -1192,21 +1226,30 @@ function($scope, $routeParams , $q , $location , egCore , } ] }).result.then(function() { - addUserToGroup(user); + if (selected) { + moveUsersToGroup(user, selected); + } else { + addUserToGroup(user); + } }); }); }); } - $scope.moveToGroup = function() { + // selected == move selected patrons to another patron's group + // !selected == patron from a different group moves into our group + function moveToGroup(selected) { egPromptDialog.open( egCore.strings.GROUP_ADD_USER, '', {ok : function(value) { if (value) - showMoveToGroupConfirm(value); + showMoveToGroupConfirm(value, selected); }} ); } + $scope.moveToGroup = function() { moveToGroup() }; + $scope.moveToAnotherGroup = function(selected) { moveToGroup(selected) }; + }])