From 1edafaf14a443a7c749c63032dbc6cb74ba4b146 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 prove t/db_dependent/Circulation/Branch.t Sponsored-by: Pymble Ladies' College Signed-off-by: Esther Signed-off-by: Kelly Signed-off-by: Pedro Amorim --- C4/Circulation.pm | 4 ++++ t/db_dependent/Circulation/Returns.t | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 562cad7267..b98c267f4b 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2514,6 +2514,10 @@ sub AddReturn { } } + if ( $messages->{WasLost} and C4::Context->preference('BlockReturnOfLostItems') ) { + $validTransfer = 0; + } + # Transfer to returnbranch if Automatic transfer set or append message NeedsTransfer if ( $validTransfer && !C4::RotatingCollections::isItemInAnyCollection( $item->itemnumber ) && ( $doreturn or $messages->{'NotIssued'} ) diff --git a/t/db_dependent/Circulation/Returns.t b/t/db_dependent/Circulation/Returns.t index db25fda549..6d3069df45 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