From afda9121ea0871afcc52b473f47981f00dbb05a8 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 7 Jan 2019 12:46:29 -0500 Subject: [PATCH] Bug 22076 - SIP checkin for withdrawn item returns ok in checkin response If an item that is withdrawn is checked in via SIP2, Koha does not process the checkin, but still indicates the checkin succeeded via the ok flag in the checkin response message. To recreate: 1 - Mark an item withdrawn 2 - Set up sip server: https://wiki.koha-community.org/wiki/Koha_SIP2_server_setup 3 - Set 'BlockReturnOfWithdrawnItems' to block 4 - Use the sip_cli_emulator to checkin the withdrawn item 5 - There is no error in the checkin Test Plan: 1) Mark an item withdrawn 2) Set BlockReturnOfWithdrawnItems to block 3) Use the sip cli emulator to checkin the withdrawn item 4) Note the response begins with 101 5) Apply this patch 6) Restart all the things ( including SIP server ) 7) Repeat checkin with sip cli emulator 8) Note the checkin now beings with 100 Signed-off-by: Geeta Halley --- C4/SIP/ILS.pm | 6 +++++- C4/SIP/ILS/Transaction/Checkin.pm | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/C4/SIP/ILS.pm b/C4/SIP/ILS.pm index 1bd23c6429..51e0db144b 100644 --- a/C4/SIP/ILS.pm +++ b/C4/SIP/ILS.pm @@ -205,8 +205,9 @@ sub checkin { # BEGIN TRANSACTION $circ->item( $item = C4::SIP::ILS::Item->new($item_id) ); + my $data; if ($item) { - $circ->do_checkin( $current_loc, $return_date ); + $data = $circ->do_checkin( $current_loc, $return_date ); } else { $circ->alert(1); @@ -219,6 +220,9 @@ sub checkin { if( !$circ->ok && $circ->alert_type && $circ->alert_type == 98 ) { # data corruption $circ->screen_msg("Checkin failed: data problem"); syslog( "LOG_WARNING", "Problem with issue_id in issues and old_issues; check the about page" ); + } elsif( $data->{messages}->{withdrawn} && !$circ->ok ) { + $circ->screen_msg("Item withdrawn, return not allowed"); + syslog("LOG_DEBUG", "C4::SIP::ILS::Checkin - item withdrawn"); } elsif( !$item->{patron} ) { if( $checked_in_ok ) { # Mark checkin ok although book not checked out $circ->ok( 1 ); diff --git a/C4/SIP/ILS/Transaction/Checkin.pm b/C4/SIP/ILS/Transaction/Checkin.pm index a35009f511..7655ae4255 100644 --- a/C4/SIP/ILS/Transaction/Checkin.pm +++ b/C4/SIP/ILS/Transaction/Checkin.pm @@ -119,6 +119,8 @@ sub do_checkin { } $self->alert(1) if defined $self->alert_type; # alert_type could be "00", hypothetically $self->ok($return); + + return { messages => $messages }; } sub resensitize { -- 2.17.2 (Apple Git-113)