Lines 26-32
use C4::Circulation;
Link Here
|
26 |
use C4::Branch; |
26 |
use C4::Branch; |
27 |
use C4::Accounts; |
27 |
use C4::Accounts; |
28 |
use C4::Biblio; |
28 |
use C4::Biblio; |
29 |
use C4::Reserves qw(AddReserve CancelReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved); |
29 |
use C4::Reserves qw(AddReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved); |
30 |
use C4::Context; |
30 |
use C4::Context; |
31 |
use C4::AuthoritiesMarc; |
31 |
use C4::AuthoritiesMarc; |
32 |
use XML::Simple; |
32 |
use XML::Simple; |
Lines 724-730
Parameters:
Link Here
|
724 |
- patron_id (Required) |
724 |
- patron_id (Required) |
725 |
a borrowernumber |
725 |
a borrowernumber |
726 |
- item_id (Required) |
726 |
- item_id (Required) |
727 |
an itemnumber |
727 |
a reserve_id |
728 |
|
728 |
|
729 |
=cut |
729 |
=cut |
730 |
|
730 |
|
Lines 736-761
sub CancelHold {
Link Here
|
736 |
my $borrower = GetMemberDetails( $borrowernumber ); |
736 |
my $borrower = GetMemberDetails( $borrowernumber ); |
737 |
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber}; |
737 |
return { code => 'PatronNotFound' } unless $$borrower{borrowernumber}; |
738 |
|
738 |
|
739 |
# Get the item or return an error code |
739 |
# Get the reserve or return an error code |
740 |
my $itemnumber = $cgi->param('item_id'); |
740 |
my $reserve_id = $cgi->param('item_id'); |
741 |
my $item = GetItem( $itemnumber ); |
741 |
my $reserve = C4::Reserves::GetReserve($reserve_id); |
742 |
return { code => 'RecordNotFound' } unless $$item{itemnumber}; |
742 |
return { code => 'RecordNotFound' } unless $reserve; |
743 |
|
743 |
return { code => 'RecordNotFound' } unless ($reserve->{borrowernumber} == $borrowernumber); |
744 |
# Get borrower's reserves |
|
|
745 |
my @reserves = GetReservesFromBorrowernumber( $borrowernumber, undef ); |
746 |
my @reserveditems; |
747 |
|
748 |
# ...and loop over it to build an array of reserved itemnumbers |
749 |
foreach my $reserve (@reserves) { |
750 |
push @reserveditems, $reserve->{'itemnumber'}; |
751 |
} |
752 |
|
753 |
# if the item was not reserved by the borrower, returns an error code |
754 |
return { code => 'NotCanceled' } unless any { $itemnumber eq $_ } @reserveditems; |
755 |
|
756 |
# Cancel the reserve |
757 |
CancelReserve({ itemnumber => $itemnumber, borrowernumber => $borrowernumber }); |
758 |
|
744 |
|
|
|
745 |
C4::Reserves::CancelReserveFromId($reserve_id); |
746 |
|
759 |
return { code => 'Canceled' }; |
747 |
return { code => 'Canceled' }; |
760 |
} |
748 |
} |
761 |
|
749 |
|