From 9f5a1bc7ebbe3954607da88b87bab6e9c2689dad Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 28 Feb 2019 16:13:11 -0500 Subject: [PATCH] Bug 22043: (QA follow-up) Add parameter to control behavior Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens --- C4/SIP/ILS.pm | 4 ++-- C4/SIP/ILS/Transaction/Checkin.pm | 13 ++++++++++++- C4/SIP/Sip/MsgType.pm | 2 +- etc/SIPconfig.xml | 1 + t/db_dependent/SIP/Message.t | 21 ++++++++++++++++++++- 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/C4/SIP/ILS.pm b/C4/SIP/ILS.pm index 1bd23c6429..b115dcd1a1 100644 --- a/C4/SIP/ILS.pm +++ b/C4/SIP/ILS.pm @@ -197,7 +197,7 @@ sub test_cardnumber_compare { } sub checkin { - my ( $self, $item_id, $trans_date, $return_date, $current_loc, $item_props, $cancel, $checked_in_ok ) = @_; + my ( $self, $item_id, $trans_date, $return_date, $current_loc, $item_props, $cancel, $checked_in_ok, $cv_triggers_alert ) = @_; my ( $patron, $item, $circ ); $circ = C4::SIP::ILS::Transaction::Checkin->new(); @@ -206,7 +206,7 @@ sub checkin { $circ->item( $item = C4::SIP::ILS::Item->new($item_id) ); if ($item) { - $circ->do_checkin( $current_loc, $return_date ); + $circ->do_checkin( $current_loc, $return_date, $cv_triggers_alert ); } else { $circ->alert(1); diff --git a/C4/SIP/ILS/Transaction/Checkin.pm b/C4/SIP/ILS/Transaction/Checkin.pm index 77eb36161f..40dda064ac 100644 --- a/C4/SIP/ILS/Transaction/Checkin.pm +++ b/C4/SIP/ILS/Transaction/Checkin.pm @@ -47,6 +47,8 @@ sub do_checkin { my $self = shift; my $branch = shift; my $return_date = shift; + my $cv_triggers_alert = shift; + if (!$branch) { $branch = 'SIP2'; } @@ -66,6 +68,8 @@ sub do_checkin { $debug and warn "do_checkin() calling AddReturn($barcode, $branch)"; my ($return, $messages, $issue, $borrower) = AddReturn($barcode, $branch, undef, undef, $return_date); + $self->alert(!$return); + # ignoring messages: NotIssued, WasLost, WasTransfered # biblionumber, biblioitemnumber, itemnumber # borrowernumber, reservedate, branchcode @@ -115,7 +119,14 @@ sub do_checkin { $self->{item}->hold_patron_id( $messages->{ResFound}->{borrowernumber} ); $self->{item}->destination_loc( $messages->{ResFound}->{branchcode} ); } - $self->alert(defined $self->alert_type); # alert_type could be "00", hypothetically + + my $alert = defined $self->alert_type; + if ( $cv_triggers_alert ) { + $self->alert($alert); # Overwrites existing alert value, should set to 0 if there is no alert type + } else { + $self->alert($alert) if $alert; # Doesn't affect alert value unless an alert type is set + } + $self->ok($return); } diff --git a/C4/SIP/Sip/MsgType.pm b/C4/SIP/Sip/MsgType.pm index 061a2556b5..6c2e4fc98c 100644 --- a/C4/SIP/Sip/MsgType.pm +++ b/C4/SIP/Sip/MsgType.pm @@ -637,7 +637,7 @@ sub handle_checkin { syslog( "LOG_WARNING", "received no-block checkin from terminal '%s'", $account->{id} ); $status = $ils->checkin_no_block( $item_id, $trans_date, $return_date, $item_props, $cancel ); } else { - $status = $ils->checkin( $item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel, $account->{checked_in_ok} ); + $status = $ils->checkin( $item_id, $trans_date, $return_date, $my_branch, $item_props, $cancel, $account->{checked_in_ok}, $account->{cv_triggers_alert} ); } $patron = $status->patron; diff --git a/etc/SIPconfig.xml b/etc/SIPconfig.xml index 7a2fd65cc3..1e17ef0338 100644 --- a/etc/SIPconfig.xml +++ b/etc/SIPconfig.xml @@ -53,6 +53,7 @@ send_patron_home_library_in_af="1" cv_send_00_on_success="1" ct_always_send="1" + cv_triggers_alert="1" ae_field_template="[% patron.surname %][% IF patron.firstname %], [% patron.firstname %][% END %]" da_field_template="[% patron.surname %][% IF patron.firstname %], [% patron.firstname %][% END %]" av_field_template="[% accountline.description %] [% accountline.amountoutstanding | format('%.2f') %]" > diff --git a/t/db_dependent/SIP/Message.t b/t/db_dependent/SIP/Message.t index 7bf745a847..dbab48efd3 100755 --- a/t/db_dependent/SIP/Message.t +++ b/t/db_dependent/SIP/Message.t @@ -67,7 +67,7 @@ subtest 'Testing Patron Info Request V2' => sub { subtest 'Checkin V2' => sub { my $schema = Koha::Database->new->schema; $schema->storage->txn_begin; - plan tests => 25; + plan tests => 27; $C4::SIP::Sip::protocol_version = 2; test_checkin_v2(); $schema->storage->txn_rollback; @@ -378,6 +378,25 @@ sub test_checkin_v2 { $server->{account}->{checked_in_ok} = 0; $server->{account}->{cv_send_00_on_success} = 0; + t::lib::Mocks::mock_preference( 'RecordLocalUseOnReturn', '1' ); + $server->{account}->{checked_in_ok} = 1; + $server->{account}->{cv_triggers_alert} = 0; + undef $response; + $msg = C4::SIP::Sip::MsgType->new( $siprequest, 0 ); + $msg->handle_checkin( $server ); + $respcode = substr( $response, 0, 2 ); + is( substr( $response, 5, 1 ), 'Y', 'Checkin without CV triggers alert flag when cv_triggers_alert is off' ); + t::lib::Mocks::mock_preference( 'RecordLocalUseOnReturn', '0' ); + $server->{account}->{cv_triggers_alert} = 1; + undef $response; + $msg = C4::SIP::Sip::MsgType->new( $siprequest, 0 ); + $msg->handle_checkin( $server ); + $respcode = substr( $response, 0, 2 ); + is( substr( $response, 5, 1 ), 'N', 'Checkin without CV does not trigger alert flag when cv_triggers_alert is on' ); + $server->{account}->{checked_in_ok} = 0; + $server->{account}->{cv_triggers_alert} = 0; + t::lib::Mocks::mock_preference( 'RecordLocalUseOnReturn', '1' ); + $server->{account}->{checked_in_ok} = 1; $server->{account}->{ct_always_send} = 0; undef $response; -- 2.39.5