}
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();
$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);
my $self = shift;
my $branch = shift;
my $return_date = shift;
+ my $cv_triggers_alert = shift;
+
if (!$branch) {
$branch = 'SIP2';
}
$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
$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);
}
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;
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') %]" >
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;
$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;