From f1092d181d52ffb9dd6b55d97944a131065e6453 Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Thu, 7 Jul 2022 13:40:55 -0400 Subject: [PATCH] LP1980978: Improve SIP2 Patron Status Field Set Y in the "too many items charged" subfield (05) of the SIP2 Patron Status field if the patron has the PATRON_EXCEEDS_CHECKOUT_COUNT penalty. Set Y in the "too many items lost" subfield (09) of the SIP2 Patron Status field if the patron has the PATRON_EXCEEDS_LOST_COUNT penalty. Include the PATRON_EXCEEDS_LONGOVERDUE_COUNT penalty when checking for the "too many items overdue" subfield (06) of the Patron Status field. Too test this bug: 1. Find a patron with either too many items checked out or too many lost items. 2. Use your favorite SIP client to look them up in Evergreen with a patron information message (63). 3. Verify that the patron comes with their ability to checkout blocked, i.e there is a Y in field 00 of the Patron Status field of the message 64 returned by the SIP server. 4. Verify that fields 05 and 09 are both blank even though one of them should have a Y in it. After applying the patch, begin with step 2, above. When you get to step 4, either 05 or 09 (possilby both) should have a Y in it depending on the patron's penalties. Repeat the above steps with a patron who has the PATRON_EXCEEDS_LONGOVERDUE_COUNT penalty but not the PATRON_EXCEEDS_OVERDUE_COUNT penalty. You will look for a Y or a space in subfield 06. Signed-off-by: Jason Stephenson --- Open-ILS/src/perlmods/lib/OpenILS/Const.pm | 4 +++- Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm | 18 +++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Const.pm b/Open-ILS/src/perlmods/lib/OpenILS/Const.pm index ee90aa22e2..8e115d8935 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Const.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Const.pm @@ -125,8 +125,10 @@ econst OILS_ACQ_DEBIT_TYPE_TRANSFER => 'xfer'; econst OILS_PENALTY_AUTO_ID => 100; econst OILS_PENALTY_PATRON_EXCEEDS_FINES => 1; econst OILS_PENALTY_PATRON_EXCEEDS_OVERDUE_COUNT => 2; +econst OILS_PENALTY_PATRON_EXCEEDS_CHECKOUT_COUNT => 3; +econst OILS_PENALTY_PATRON_EXCEEDS_LOST_COUNT => 5; econst OILS_PENALTY_INVALID_PATRON_ADDRESS => 29; - +econst OILS_PENALTY_PATRON_EXCEEDS_LONGOVERDUE_COUNT => 35; econst OILS_BILLING_TYPE_NOTIFICATION_FEE => 9; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm b/Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm index c26d8bffb9..6cf0a23a45 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm @@ -487,15 +487,18 @@ sub print_line { # not implemented return ''; } -sub too_many_charged { # not implemented +sub too_many_charged { my $self = shift; - return 0; + return scalar( + grep { $_->id == OILS_PENALTY_PATRON_EXCEEDS_CHECKOUT_COUNT } @{$self->{user}->standing_penalties} + ); } -sub too_many_overdue { +sub too_many_overdue { my $self = shift; - return scalar( # PATRON_EXCEEDS_OVERDUE_COUNT - grep { $_->id == OILS_PENALTY_PATRON_EXCEEDS_OVERDUE_COUNT } @{$self->{user}->standing_penalties} + return scalar( # PATRON_EXCEEDS_OVERDUE_COUNT || PATRON_EXCEEDS_LONGOVERDUE_COUNT + grep { $_->id == OILS_PENALTY_PATRON_EXCEEDS_OVERDUE_COUNT + || $_->id == OILS_PENALTY_PATRON_EXCEEDS_LONGOVERDUE_COUNT } @{$self->{user}->standing_penalties} ); } @@ -511,10 +514,11 @@ sub too_many_claim_return { return 0; } -# not relevant, handled by fines/fees sub too_many_lost { my $self = shift; - return 0; + return scalar( + grep { $_->id == OILS_PENALTY_PATRON_EXCEEDS_LOST_COUNT } @{$self->{user}->standing_penalties} + ); } sub excessive_fines { -- 2.11.0