@@ -, +, @@ --- C4/Circulation.pm | 32 +++++++++++-------- circ/returns.pl | 14 ++++---- .../prog/en/modules/circ/returns.tt | 3 +- 3 files changed, 27 insertions(+), 22 deletions(-) --- a/C4/Circulation.pm +++ a/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' })->store(); + + # 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 --- a/circ/returns.pl +++ a/circ/returns.pl @@ -132,11 +132,6 @@ 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')); -} - my $itemnumber = $query->param('itemnumber'); if ( $query->param('reserve_id') ) { my $borrowernumber = $query->param('borrowernumber'); @@ -389,12 +384,18 @@ if ( $messages->{'Wrongbranch'} ){ # case of wrong transfert, if the document wasn't transferred to the right library (according to branchtransfer (tobranch) BDD) if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { + + # Trigger modal to prompt librarian $template->param( WrongTransfer => 1, TransferWaitingAt => $messages->{'WrongTransfer'}, WrongTransferItem => $messages->{'WrongTransferItem'}, + trigger => $messages->{'TransferTrigger'}, ); + # Update the transfer to reflect the new item holdingbranch + updateWrongTransfer($messages->{'WrongTransferItem'},$messages->{'WrongTransfer'}, $userenv_branch); + my $reserve = $messages->{'ResFound'}; if ( $reserve ) { my $patron = Koha::Patrons->find( $reserve->{'borrowernumber'} ); @@ -402,9 +403,6 @@ if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { patron => $patron, ); } - $template->param( - wtransfertFrom => $userenv_branch, - ); } # --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -432,7 +432,7 @@