@@ -, +, @@ (follow-up) - Fix the text in the ilsdi.pl?service=Describe&verb=CancelHold page - Unit tests for CancelReservedFromId and GetReserve - Do not delete row in reserves table if insert in old_reserves fails --- C4/Reserves.pm | 21 +++++++++++++-------- koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt | 2 +- t/db_dependent/Reserves.t | 21 ++++++++++++++++++++- 3 files changed, 34 insertions(+), 10 deletions(-) --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -1093,14 +1093,19 @@ sub CancelReserveFromId { WHERE reserve_id = ? }; $sth = $dbh->prepare($query); - $sth->execute($reserve_id); - - $query = qq{ - DELETE FROM reserves - WHERE reserve_id = ? - }; - $sth = $dbh->prepare($query); - $sth->execute($reserve_id); + my $rv = $sth->execute($reserve_id); + + if ($rv) { + $query = qq{ + DELETE FROM reserves + WHERE reserve_id = ? + }; + $sth = $dbh->prepare($query); + $sth->execute($reserve_id); + } else { + warn "ERROR: Failed to move reserve $reserve_id to table old_reserves."; + return; + } # now fix the priority on the others... _FixPriority( $reserve->{biblionumber}, $reserve->{borrowernumber} ); --- a/koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt +++ a/koha-tmpl/opac-tmpl/prog/en/modules/ilsdi.tt @@ -671,7 +671,7 @@
patron_id (Required)
the unique patron identifier in the ILS; the same identifier returned by LookupPatron or AuthenticatePatron
item_id (Required)
-
system item identifier
+
system hold identifier (returned by GetRecords and GetPatronInfo into element 'reserve_id')

Example call

--- a/t/db_dependent/Reserves.t +++ a/t/db_dependent/Reserves.t @@ -2,7 +2,7 @@ use Modern::Perl; -use Test::More tests => 8; +use Test::More tests => 16; use MARC::Record; use C4::Branch; @@ -199,3 +199,22 @@ is( $messages->{ResFound}->{borrowernumber}, is( $messages->{ResFound}->{borrowernumber}, $requesters{'RPL'}, 'for generous library, its items fill first hold request in line (bug 10272)'); + +my (undef, $reserves) = GetReservesFromBiblionumber($biblionumber); +isa_ok($reserves, 'ARRAY'); +is(scalar @$reserves, 1, "Only one reserves for this biblio"); +my $reserve_id = $reserves->[0]->{reserve_id}; + +$reserve = GetReserve($reserve_id); +isa_ok($reserve, 'HASH', "GetReserve return"); +is($reserve->{biblionumber}, $biblionumber); + +$reserve = CancelReserveFromId($reserve_id); +isa_ok($reserve, 'HASH', "CancelReserveFromId return"); +is($reserve->{biblionumber}, $biblionumber); + +$reserve = GetReserve($reserve_id); +is($reserve, undef, "GetReserve returns undef after deletion"); + +$reserve = CancelReserveFromId($reserve_id); +is($reserve, undef, "CancelReserveFromId return undef if reserve does not exist"); --