Bug 10445: make SIP Server respect maxoutstanding system preference
authorKyle M Hall <kyle@bywatersolutions.com>
Tue, 11 Jun 2013 14:00:58 +0000 (10:00 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 31 Oct 2013 18:05:25 +0000 (18:05 +0000)
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 <chris@bigballofwax.co.nz>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
C4/SIP/ILS.pm
C4/SIP/ILS/Patron.pm

index 5d59850..703bb96 100644 (file)
@@ -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;
index 1155d51..52832a5 100644 (file)
@@ -340,10 +340,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;