my ( $params ) = @_;
my $reserve_id = $params->{'reserve_id'};
- # Filter out only the desired keys; this will insert undefined values for elements missing in
- # \%params, but GetReserveId filters them out anyway.
- $reserve_id = GetReserveId( { biblionumber => $params->{'biblionumber'}, borrowernumber => $params->{'borrowernumber'}, itemnumber => $params->{'itemnumber'} } ) unless ( $reserve_id );
-
- return unless ( $reserve_id );
-
- my $dbh = C4::Context->dbh;
+ my $hold;
+ if ( $reserve_id ) {
+ $hold = Koha::Holds->find( $reserve_id );
+ } else {
+ $hold = Koha::Holds->search( $params ); # biblionumber, borrowernumber, itemnumber
+ }
- my $hold = Koha::Holds->find( $reserve_id );
return unless $hold;
logaction( 'HOLDS', 'CANCEL', $hold->reserve_id, Dumper($hold->unblessed) )
priority = 0
WHERE reserve_id = ?
";
+ my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare($query);
$sth->execute( $reserve_id );
return if $rank eq "n";
return unless ( $reserve_id || ( $borrowernumber && ( $biblionumber || $itemnumber ) ) );
- $reserve_id = GetReserveId({ biblionumber => $biblionumber, borrowernumber => $borrowernumber, itemnumber => $itemnumber }) unless ( $reserve_id );
+
+ my $hold;
+ unless ( $reserve_id ) {
+ $hold = Koha::Holds->search({ biblionumber => $biblionumber, borrowernumber => $borrowernumber, itemnumber => $itemnumber });
+ return unless $hold; # FIXME Should raise an exception
+ $reserve_id = $hold->reserve_id;
+ }
if ( $rank eq "del" ) {
CancelReserve({ reserve_id => $reserve_id });
}
elsif ($rank =~ /^\d+/ and $rank > 0) {
- my $hold = Koha::Holds->find($reserve_id);
+ $hold ||= Koha::Holds->find($reserve_id);
logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, Dumper($hold->unblessed) )
if C4::Context->preference('HoldsLog');
_FixPriority( { biblionumber => $reserve->{biblionumber} } );
}
-=head2 GetReserveId
-
- $reserve_id = GetReserveId({ biblionumber => $biblionumber, borrowernumber => $borrowernumber [, itemnumber => $itemnumber ] });
-
- Returnes the first reserve id that matches the given criteria
-
-=cut
-
-sub GetReserveId {
- my ( $params ) = @_;
-
- return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} );
-
- foreach my $key ( keys %$params ) {
- delete $params->{$key} unless defined( $params->{$key} );
- }
-
- my $hold = Koha::Holds->search( $params )->next();
-
- return unless $hold;
-
- return $hold->id();
-}
-
=head2 ReserveSlip
ReserveSlip($branchcode, $borrowernumber, $biblionumber)
# return unless ( C4::Context->boolean_preference('printreserveslips') );
my $patron = Koha::Patrons->find( $borrowernumber );
- my $reserve_id = GetReserveId({
- biblionumber => $biblionumber,
- borrowernumber => $borrowernumber
- }) or return;
- my $reserve = Koha::Holds->find($reserve_id) or return;
- $reserve = $reserve->unblessed;
+ my $hold = Koha::Holds->search({biblionumber => $biblionumber, borrowernumber => $borrowernumber })->next;
+ return unless $hold;
+ my $reserve = $hold->unblessed;
return C4::Letters::GetPreparedLetter (
module => 'circulation',