Bug 38186: Don't initiate transfer when cancelling hold on lost item

To test:
0. In the Circulation Rules, set the default return policy to "item
    returns home (default settings have this already)
1. Find an item belonging to a branch other than the logged-in branch
2. Place a hold on that biblio record for pickup at the logged-in branch
3. Check in the item to set the hold to waiting
4. Set the expiration date to a date in the past
   To do this in KTD:
   ktd --shell
   koha-mysql kohadev
   UPDATE reserves SET expirationdate = < yesterday's date >;
5. Set a lost status on the item
6. Go to Circulation > Holds awaiting pickup
--> The hold should appear on the "holds waiting past their expiration
     date" tab
7. Click the "Cancel and return to <homebranch>" button next to the hold
8. Open the biblio record for the item
--> Note that the lost status is gone and the item shows as in-transit
9. Apply patch
10. Repeat steps 2-8 on the same item
--> This time, the item is still lost and is not in-transit

Signed-off-by: Brendan Lawlor <blawlor@clamsnet.org>
Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 1c3ed6e4db)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Emily Lamancusa 2024-10-16 10:14:51 -04:00 committed by Lucas Gass
parent fa90836eda
commit cd7f17e968
1 changed files with 7 additions and 6 deletions

View File

@ -145,23 +145,24 @@ if ($item && $tab eq 'holdsover' && !@cancel_result) {
exit;
sub cancel {
my ($item, $borrowernumber, $fbr, $tbr, $skip_transfers ) = @_;
my ( $itemnumber, $borrowernumber, $fbr, $tbr, $skip_transfers ) = @_;
my $transfer = $fbr ne $tbr; # XXX && !$nextreservinfo;
my $item = Koha::Items->find( $itemnumber );
return if $transfer && $skip_transfers;
my ( $messages, $nextreservinfo ) = ModReserveCancelAll( $item, $borrowernumber );
my ( $messages, $nextreservinfo ) = ModReserveCancelAll( $itemnumber, $borrowernumber );
# if the document is not in his homebranch location and there is not reservation after, we transfer it
if ($transfer && !$nextreservinfo) {
ModItemTransfer( $item, $fbr, $tbr, 'CancelReserve' );
if ( $transfer && !$nextreservinfo && !$item->itemlost ) {
ModItemTransfer( $itemnumber, $fbr, $tbr, 'CancelReserve' );
}
# if we have a result
if ($nextreservinfo) {
my %res;
my $patron = Koha::Patrons->find( $nextreservinfo );
my $title = Koha::Items->find( $item )->biblio->title;
my $title = $item->biblio->title;
if ( $messages->{'transfert'} ) {
$res{messagetransfert} = $messages->{'transfert'};
$res{branchcode} = $messages->{'transfert'};
@ -171,7 +172,7 @@ sub cancel {
$res{nextreservnumber} = $nextreservinfo;
$res{nextreservsurname} = $patron->surname;
$res{nextreservfirstname} = $patron->firstname;
$res{nextreservitem} = $item;
$res{nextreservitem} = $itemnumber;
$res{nextreservtitle} = $title;
$res{waiting} = $messages->{'waiting'} ? 1 : 0;