From ae9a56254b9fe29be4988d025b12f676418e0f4d Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Mon, 17 May 2021 17:14:16 +0100 Subject: [PATCH] Bug 28294: Convert updateWrongTransfer to use request_transfer This patch is an interim patch to prove that the updated request_transfer method achieves the same as updateWrongTransfer. Test plan 1/ Run t/db_dependant/Circulation.t before and after applying this patch. Signed-off-by: Victor Grousset/tuxayo --- C4/Circulation.pm | 14 ++++---------- Koha/Item/Transfer.pm | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 7a28b100c3..b497fceebd 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -3591,19 +3591,13 @@ This function validate the line of brachtransfer but with the wrong destination sub updateWrongTransfer { my ( $itemNumber,$waitingAtLibrary,$FromLibrary ) = @_; - # 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' })->store(); - - # second step: create a new transfer to the right location - my $new_transfer = $item->request_transfer( + my $transfer = Koha::Items->find($itemNumber)->get_transfer; + my $new_transfer = $transfer->replace( { to => $transfer->to_library, - reason => $transfer->reason, - comment => $transfer->comments, + reason => 'WrongTransfer', ignore_limits => 1, - enqueue => 1 + force => 1 } ); diff --git a/Koha/Item/Transfer.pm b/Koha/Item/Transfer.pm index 59387d4415..8aa70fa67c 100644 --- a/Koha/Item/Transfer.pm +++ b/Koha/Item/Transfer.pm @@ -186,6 +186,45 @@ sub cancel { return $self; } +=head3 replace + + my $new_transfer = $transfer->replace( + { + to => $to_library, + reason => $reason, + [ ignore_limits => 0, force => 0 ] + } + ); + +Replace this transfer by cancelling it and setting up a new transfer request. + +=cut + +sub replace { + my ( $self, $params ) = @_; + + Koha::Exceptions::MissingParameter->throw( + error => "The 'reason' parameter is mandatory" ) + unless defined($params->{reason}); + + my $in_transit = $self->in_transit; + + # Throw exception if item is in transit already + Koha::Exceptions::Item::Transfer::InTransit->throw() if ( !$params->{force} && $in_transit ); + + my $new_transfer = $self->item->request_transfer( + { + to => $self->to_library, + reason => $params->{'reason'}, + ignore_limits => $params->{'ignore_limits'}, + force => $params->{'force'}, + replace => 1 + } + ); + + return $new_transfer; +} + =head3 type =cut -- 2.20.1