From 718d23ed9e6e876a5b42d5049eece0d38de62b7c Mon Sep 17 00:00:00 2001 From: Aleisha Amohia Date: Wed, 20 Dec 2023 02:37:48 +0000 Subject: [PATCH] Bug 35587: Do not trigger transfer if lost item returned and BlockReturnOfLostItems enabled This fixes current buggy behaviour - when BlockReturnOfLostItems is enabled, no transfer should be triggered and the lost status should be retained. To test: 1. Go to Koha Administration -> Global system preferences 2. Set the BlockReturnOfLostItems system preference to Block 3. Enable the AutomaticItemReturn system preference (this is simply to make testing a bit faster) 4. Take note of your logged in library 5. Search for an item where the home library is NOT the same as your logged in library 6. Edit this item and give it a lost status 7. Check in the item 8. Notice the item is returned and a transfer is automatically triggered 9. If you go to the item record page, the lost status has been remove 10. Apply the patch and restart services 11. Edit the item again and give it a lost status. This will also cancel the transfer 12. Check in the item 13. Confirm the transfer is NOT triggered and the lost status is retained as expected. 14. Go back to system preferences and disable the BlockReturnOfLostItems system preference (set to "Don't block") 15. Check in the item 16. Confirm the transfer is triggered and lost status is removed 17. Confirm tests pass prove t/db_dependent/Circulation/Returns.t Sponsored-by: Pymble Ladies' College --- C4/Circulation.pm | 3 ++- t/db_dependent/Circulation/Returns.t | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 562cad72671..759f52de5d6 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2522,7 +2522,8 @@ sub AddReturn { and not $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'} and not $messages->{TransferredRecall} - and not $messages->{RecallNeedsTransfer} ) + and not $messages->{RecallNeedsTransfer} + and ( $messages->{WasLost} and !C4::Context->preference('BlockReturnOfLostItems') ) ) { my $BranchTransferLimitsType = C4::Context->preference("BranchTransferLimitsType") eq 'itemtype' ? 'effective_itemtype' : 'ccode'; if (C4::Context->preference("AutomaticItemReturn" ) or diff --git a/t/db_dependent/Circulation/Returns.t b/t/db_dependent/Circulation/Returns.t index db25fda549f..6d3069df45d 100755 --- a/t/db_dependent/Circulation/Returns.t +++ b/t/db_dependent/Circulation/Returns.t @@ -286,7 +286,7 @@ subtest 'Handle ids duplication' => sub { }; subtest 'BlockReturnOfLostItems' => sub { - plan tests => 4; + plan tests => 5; my $item = $builder->build_sample_item; my $patron = $builder->build_object({ class => 'Koha::Patrons' }); my $checkout = AddIssue( $patron, $item->barcode ); @@ -298,6 +298,7 @@ subtest 'BlockReturnOfLostItems' => sub { my ( $doreturn, $messages, $issue ) = AddReturn($item->barcode); is( $doreturn, 0, "With BlockReturnOfLostItems, a checkin of a lost item should be blocked"); is( $messages->{WasLost}, 1, "... and the WasLost flag should be set"); + is( $messages->{NeedsTransfer}, undef, "... and no transfer should be triggered"); $item->discard_changes; is( $item->itemlost, 1, "Item remains lost" ); -- 2.30.2