From dc3065acfa8e43fe2df0855d81cb2466dd3ec016 Mon Sep 17 00:00:00 2001 From: erickson Date: Fri, 22 Feb 2008 00:09:41 +0000 Subject: [PATCH] added hold permit flag for new holds to prevent max-holds checks on existing holds git-svn-id: svn://svn.open-ils.org/ILS/trunk@8811 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../javascript/backend/circ/circ_permit_hold.js | 10 ++++++---- Open-ILS/src/javascript/backend/circ/circ_lib.js | 1 + .../javascript/backend/circ/circ_permit_hold.js | 16 +++++++++++----- .../perlmods/OpenILS/Application/Circ/Holds.pm | 3 ++- .../src/perlmods/OpenILS/Utils/PermitHold.pm | 1 + 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Evergreen/src/javascript/backend/circ/circ_permit_hold.js b/Evergreen/src/javascript/backend/circ/circ_permit_hold.js index b2b22ed804..c40e88561e 100644 --- a/Evergreen/src/javascript/backend/circ/circ_permit_hold.js +++ b/Evergreen/src/javascript/backend/circ/circ_permit_hold.js @@ -10,10 +10,12 @@ var isStaffHold = isGroupDescendantId('Staff', requestor.profile); /* non-staff members are allowed 50 open holds at most */ if( ! isStaffHold ) { - var count = userHoldCount(patron.id); - log_info("patron has " + count + " open holds"); - if( count >= 50 ) - result.events.push('MAX_HOLDS'); + if(newHold) { + var count = userHoldCount(patron.id); + log_info("patron has " + count + " open holds"); + if( count >= 50 ) + result.events.push('MAX_HOLDS'); + } } else { log_info("This is a staff-placed hold"); } diff --git a/Open-ILS/src/javascript/backend/circ/circ_lib.js b/Open-ILS/src/javascript/backend/circ/circ_lib.js index 5cad8b40c9..a39794bc6a 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_lib.js +++ b/Open-ILS/src/javascript/backend/circ/circ_lib.js @@ -43,6 +43,7 @@ var currentLocation = environment.location; var holdRequestLib = environment.requestLib; var holdPickupLib = environment.pickupLib; /* hold pickup lib */ var requestor = environment.requestor || patron; +var newHold = environment.newHold; diff --git a/Open-ILS/src/javascript/backend/circ/circ_permit_hold.js b/Open-ILS/src/javascript/backend/circ/circ_permit_hold.js index 142c0527bb..942aacedd4 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_permit_hold.js +++ b/Open-ILS/src/javascript/backend/circ/circ_permit_hold.js @@ -18,14 +18,20 @@ if( !isTrue(copy.circulate) ) var config = findGroupConfig(patronProfile); + if( config ) { /* see if they have too many items out */ - var limit = config.maxHolds; - var count = userHoldCount(patron.id); - if( limit >= 0 && count >= limit ) { - log_info("patron has " + count + " open holds"); - result.events.push('MAX_HOLDS'); + if(newHold) { + log_info("This is a new hold, checking maxHolds..."); + var limit = config.maxHolds; + var count = userHoldCount(patron.id); + if( limit >= 0 && count >= limit ) { + log_info("patron has " + count + " open holds"); + result.events.push('MAX_HOLDS'); + } + } else { + log_info("Ignoring maxHolds on existing hold..."); } } diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm index 7014ba374d..cbbf604e1d 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm @@ -1335,7 +1335,8 @@ sub verify_copy_for_hold { title => $title, title_descriptor => $title->fixed_fields, # this is fleshed into the title object pickup_lib => $pickup_lib, - request_lib => $request_lib + request_lib => $request_lib, + new_hold => 1 } ); return 0; diff --git a/Open-ILS/src/perlmods/OpenILS/Utils/PermitHold.pm b/Open-ILS/src/perlmods/OpenILS/Utils/PermitHold.pm index 5f69de9dff..fcef298dc6 100644 --- a/Open-ILS/src/perlmods/OpenILS/Utils/PermitHold.pm +++ b/Open-ILS/src/perlmods/OpenILS/Utils/PermitHold.pm @@ -34,6 +34,7 @@ sub permit_copy_hold { _direct => { requestLib => $$params{request_lib}, pickupLib => $$params{pickup_lib}, + newHold => $$params{new_hold}, } }; -- 2.43.2