From db4fca24b8ae6bfc188175385adb54028d217f18 Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Thu, 6 May 2021 13:53:51 +0100 Subject: [PATCH] Bug 24434: Reinstate updateWrongTransfer This patch re-instates the call to updateWrongTransfer to ensure the transfer line it updated to reflect the new frombranch. Test plan 1/ Check an item out from it's home library 2/ Check the item in at another library (with the return to home branch system preferences enabled) 2a/ Accept the transfer and note we now have a transfer present from the items check-in library to it's home library 3/ Check the item in at a third library 3a/ Note you are asked to return the item to it's home library. 3b/ With the patch applied, the modal title should highlight that a 'Wrong transfer' was detected. 4/ Go to the item record and note the holding library has been updated to reflect where the item was most recently checked in. 4a/ With the patch applied the item status should reflect the last checked in branch as the 'from' branch of the transfer. --- C4/Circulation.pm | 32 +++++++++++-------- circ/returns.pl | 3 +- .../prog/en/modules/circ/returns.tt | 17 ++++++++-- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 10db0d226a..79109cdd13 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2175,6 +2175,7 @@ sub AddReturn { else { $messages->{'WrongTransfer'} = $transfer->tobranch; $messages->{'WrongTransferItem'} = $item->itemnumber; + $messages->{'TransferTrigger'} = $transfer->reason; } } else { @@ -3589,19 +3590,24 @@ This function validate the line of brachtransfer but with the wrong destination sub updateWrongTransfer { my ( $itemNumber,$waitingAtLibrary,$FromLibrary ) = @_; - my $dbh = C4::Context->dbh; -# first step validate the actual line of transfert . - my $sth = - $dbh->prepare( - "update branchtransfers set datearrived = now(),tobranch=?,comments='wrongtransfer' where itemnumber= ? AND datearrived IS NULL" - ); - $sth->execute($FromLibrary,$itemNumber); - -# second step create a new line of branchtransfer to the right location . - ModItemTransfer($itemNumber, $FromLibrary, $waitingAtLibrary); - -#third step changing holdingbranch of item - my $item = Koha::Items->find($itemNumber)->holdingbranch($FromLibrary)->store; + + # first step: cancel the original transfer + my $item = Koha::Items->find($itemNumber); + my $transfer = $item->get_transfer; + $transfer->set({ datecancelled => dt_from_string, cancellation_reason => 'WrongTransfer' }); + + # second step: create a new transfer to the right location + my $new_transfer = Koha::Item::Transfer->new( + { + itemnumber => $itemNumber, + daterequested => dt_from_string, + datesent => dt_from_string, + frombranch => $FromLibrary, + tobranch => $transfer->tobranch, + reason => $transfer->reason, + comments => $transfer->comments + } + )->store(); } =head2 CalcDateDue diff --git a/circ/returns.pl b/circ/returns.pl index 94e4b5e287..86d78c7658 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -134,7 +134,7 @@ foreach ( $query->param ) { # Deal with the requests.... if ($query->param('WT-itemNumber')){ - updateWrongTransfer ($query->param('WT-itemNumber'),$query->param('WT-waitingAt'),$query->param('WT-From')); + updateWrongTransfer (scalar $query->param('WT-itemNumber'),scalar $query->param('WT-waitingAt'), scalar $query->param('WT-From')); } my $itemnumber = $query->param('itemnumber'); @@ -393,6 +393,7 @@ if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { WrongTransfer => 1, TransferWaitingAt => $messages->{'WrongTransfer'}, WrongTransferItem => $messages->{'WrongTransferItem'}, + trigger => $messages->{'TransferTrigger'}, ); my $reserve = $messages->{'ResFound'}; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt index 0fdb3fd6c6..a3348ac504 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -432,7 +432,7 @@