From 390e67a7485db9cc218dc53553c158ec2d2574c4 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 Signed-off-by: Katrin Fischer (cherry picked from commit 930ad0178d41483672ec52fc8bedc94fe0dacc5b) Signed-off-by: Fridolin Somers (cherry picked from commit fc777d84a4b3e5064a41f48b19b6057906d0f4c5) Signed-off-by: Lucas Gass --- 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 b12d7a5af2..d34499a3ee 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2500,6 +2500,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 7c20b11bac..0d4d57e608 100755 --- a/t/db_dependent/Circulation/Returns.t +++ b/t/db_dependent/Circulation/Returns.t @@ -288,7 +288,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->unblessed, $item->barcode ); @@ -300,6 +300,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.39.5