From 79780d82e852a958a3776294d1e09bb8166e91e5 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 11 Jun 2013 10:00:58 -0400 Subject: [PATCH] Bug 10445 - SIP Server doesn't respect maxoutstanding system preference The system preference 'maxoutstanding' is defined as the maximum amount of fees owed by the patron before Koha should block placing holds ( terrible naming on this one ). However, although the Koha OPAC respects this preference, placing holds via a SIP2 device will not. Test Plan: 1) Set maxoutstanding to $10 2) Pick a patron owning more than $10 in fees 3) Attempt to place a hold for this patron from a SIP2 device This attempt should succeed 4) Apply this patch 5) Restart your SIP2 server 6) Attempt to place a hold for this patron from a SIP2 device again This attempt should now fail Signed-off-by: Chris Cormack --- C4/SIP/ILS.pm | 4 ++++ C4/SIP/ILS/Patron.pm | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/C4/SIP/ILS.pm b/C4/SIP/ILS.pm index 5d59850..703bb96 100644 --- a/C4/SIP/ILS.pm +++ b/C4/SIP/ILS.pm @@ -254,6 +254,10 @@ sub add_hold { return $trans; } + if ( $patron->holds_blocked_by_excessive_fees() ) { + $trans->screen_msg("Excessive fees blocking placement of hold."); + } + if ($item->fee and $fee_ack ne 'Y') { $trans->screen_msg = "Fee required to place hold."; return $trans; diff --git a/C4/SIP/ILS/Patron.pm b/C4/SIP/ILS/Patron.pm index ac24d2f..da4290b 100644 --- a/C4/SIP/ILS/Patron.pm +++ b/C4/SIP/ILS/Patron.pm @@ -321,10 +321,16 @@ sub excessive_fees { my $self = shift; return ($self->fee_amount and $self->fee_amount > $self->fee_limit); } + sub excessive_fines { my $self = shift; return $self->excessive_fees; # excessive_fines is the same thing as excessive_fees for Koha } + +sub holds_blocked_by_excessive_fees { + return ( $self->fee_amount + && $self->fee_amount > C4::Context->preference("maxoutstanding") ); +} sub library_name { my $self = shift; -- 1.7.10.4