Browse Source

Bug 22042: Block all return actions when BlockReturnOfWithdrawn items is set to block

Currently this syspref only bokcs the literal 'return' from a patron, i.e. the checkin

It still processes transfers, refunds lost items, updates NotForLoan status etc.

We should block all of these things

To test:
1 - Set BlockReturnOfWithdrawn to block
2 - Set an item as lost and withdrawn
3 - Check it in
4 - Item is found
5 - Apply patch
6 - Repeat 1-3
7 - Checkin is blocked, item still lost

Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
master
Nick Clemens 10 months ago
committed by Martin Renvoize
parent
commit
e19aa35f39
Signed by: martin.renvoize GPG Key ID: 422B469130441A0F
  1. 15
      C4/Circulation.pm
  2. 15
      t/db_dependent/Circulation.t

15
C4/Circulation.pm

@ -2097,6 +2097,16 @@ sub AddReturn {
}
}
if ( $item->withdrawn ) { # book has been cancelled
$messages->{'withdrawn'} = 1;
# In the case where we block return of withdrawn, we should completely block the return
# without updating item statuses, so we exit early
return ( 0, $messages, $issue, ( $patron ? $patron->unblessed : {} ))
if C4::Context->preference("BlockReturnOfWithdrawnItems");
}
# full item data, but no borrowernumber or checkout info (no issue)
my $hbr = Koha::CirculationRules->get_return_branch_policy($item);
# get the proper branch to which to return the item
@ -2166,11 +2176,6 @@ sub AddReturn {
return ( $doreturn, $messages, $issue, $patron_unblessed);
}
if ( $item->withdrawn ) { # book has been cancelled
$messages->{'withdrawn'} = 1;
$doreturn = 0 if C4::Context->preference("BlockReturnOfWithdrawnItems");
}
if ( $item->itemlost and C4::Context->preference("BlockReturnOfLostItems") ) {
$doreturn = 0;
}

15
t/db_dependent/Circulation.t

@ -18,7 +18,7 @@
use Modern::Perl;
use utf8;
use Test::More tests => 64;
use Test::More tests => 65;
use Test::Exception;
use Test::MockModule;
use Test::Deep qw( cmp_deeply );
@ -5781,6 +5781,19 @@ subtest "CanBookBeIssued + needsconfirmation message" => sub {
is($needsconfirmation->{resbranchcode}, $hold->branchcode, "Branchcodes match when hold is being processed.");
};
subtest 'Tests for BlockReturnOfWithdrawnItems' => sub {
plan tests => 1;
t::lib::Mocks::mock_preference('BlockReturnOfWithdrawnItems', 1);
my $item = $builder->build_sample_item();
$item->withdrawn(1)->itemlost(1)->store;
my @return = AddReturn( $item->barcode, $item->homebranch, 0, undef );
is_deeply(
\@return,
[ 0, { NotIssued => $item->barcode, withdrawn => 1 }, undef, {} ], "Item returned as withdrawn, no other messages");
};
$schema->storage->txn_rollback;
C4::Context->clear_syspref_cache();
$branches = Koha::Libraries->search();

Loading…
Cancel
Save