From 1b2eedbea95a2d5f2c9cac9999d64941541ae4d5 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 30 Jul 2020 16:59:14 +0000 Subject: [PATCH] Bug 26078: Prevent generating a new transfer from return policy when resolving a transfer To test: - Have 2+ branches - Set your default return policy to Item returns to issuing library - Find an item with holding branch of Branch A - Set your library to Branch B - Check item in - Koha generates a transfer to Branch A. In doing so, it sets the item holding branch to Branch B - Set your library to Branch A - Check item in - Koha generate a transfer to Branch B. In doing so, it sets the item holding branch to Branch A - Set you library to Branch A - Check the item in . . . Repeat indefinitely. Apply patch Repeat No more loop Signed-off-by: Sally Signed-off-by: Martin Renvoize Signed-off-by: Jonathan Druart (cherry picked from commit 47671123206a475f86de9316d8b256e14aa54bc1) Signed-off-by: Lucas Gass (cherry picked from commit 8bd9c4b4fd44990c7a806de21e8628e1955a3c56) Signed-off-by: Aleisha Amohia --- C4/Circulation.pm | 3 +++ t/db_dependent/Circulation/Branch.t | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 0cedf80d9c..7ff18f078b 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2001,6 +2001,9 @@ sub AddReturn { "UPDATE branchtransfers SET datearrived = now() WHERE itemnumber= ? AND datearrived IS NULL" ); $sth->execute( $item->itemnumber ); + + # If we are completing a transfer we should not generate a new transfer from return policy + $returnbranch = $branch; } else { $messages->{'WrongTransfer'} = $tobranch; $messages->{'WrongTransferItem'} = $item->itemnumber; diff --git a/t/db_dependent/Circulation/Branch.t b/t/db_dependent/Circulation/Branch.t index dfd65d33d2..e4a9f316a5 100644 --- a/t/db_dependent/Circulation/Branch.t +++ b/t/db_dependent/Circulation/Branch.t @@ -25,7 +25,7 @@ use Koha::CirculationRules; use Koha::Patrons; -use Test::More tests => 14; +use Test::More tests => 15; use t::lib::Mocks; use t::lib::TestBuilder; @@ -295,6 +295,12 @@ $dbh->do( $query, {}, $borrower_id1, $item_id2, $samplebranch2->{branchcode} ); $samplebranch2->{branchcode}); is( $messages->{NeedsTransfer}, $samplebranch1->{branchcode}, "AddReturn respects branch return policy - item2->homebranch policy = 'holdingbranch'" ); +# Generate the transfer from above +ModItemTransfer($item_id2, $samplebranch2->{branchcode}, $samplebranch1->{branchcode}, "ReturnToHolding"); +# Fulfill it +($doreturn, $messages, $iteminformation, $borrower) = AddReturn('barcode_2',$samplebranch1->{branchcode}); +is( $messages->{NeedsTransfer}, undef, "AddReturn does not generate a new transfer for return policy when resolving an existing transfer" ); + # item3 should not trigger transfer - floating collection $query = "INSERT INTO issues (borrowernumber,itemnumber,branchcode) VALUES( ?,?,? )"; -- 2.39.5