View | Details | Raw Unified | Return to bug 19058
Collapse All | Expand All

(-)a/C4/Reserves.pm (-40 / +18 lines)
Lines 846-860 sub CancelReserve { Link Here
846
    my ( $params ) = @_;
846
    my ( $params ) = @_;
847
847
848
    my $reserve_id = $params->{'reserve_id'};
848
    my $reserve_id = $params->{'reserve_id'};
849
    # Filter out only the desired keys; this will insert undefined values for elements missing in
849
    my $hold;
850
    # \%params, but GetReserveId filters them out anyway.
850
    if ( $reserve_id ) {
851
    $reserve_id = GetReserveId( { biblionumber => $params->{'biblionumber'}, borrowernumber => $params->{'borrowernumber'}, itemnumber => $params->{'itemnumber'} } ) unless ( $reserve_id );
851
        $hold = Koha::Holds->find( $reserve_id );
852
852
    } else {
853
    return unless ( $reserve_id );
853
        $hold = Koha::Holds->search( $params ); # biblionumber, borrowernumber, itemnumber
854
854
    }
855
    my $dbh = C4::Context->dbh;
856
855
857
    my $hold = Koha::Holds->find( $reserve_id );
858
    return unless $hold;
856
    return unless $hold;
859
857
860
    logaction( 'HOLDS', 'CANCEL', $hold->reserve_id, Dumper($hold->unblessed) )
858
    logaction( 'HOLDS', 'CANCEL', $hold->reserve_id, Dumper($hold->unblessed) )
Lines 866-871 sub CancelReserve { Link Here
866
               priority         = 0
864
               priority         = 0
867
        WHERE  reserve_id = ?
865
        WHERE  reserve_id = ?
868
    ";
866
    ";
867
    my $dbh = C4::Context->dbh;
869
    my $sth = $dbh->prepare($query);
868
    my $sth = $dbh->prepare($query);
870
    $sth->execute( $reserve_id );
869
    $sth->execute( $reserve_id );
871
870
Lines 947-959 sub ModReserve { Link Here
947
    return if $rank eq "n";
946
    return if $rank eq "n";
948
947
949
    return unless ( $reserve_id || ( $borrowernumber && ( $biblionumber || $itemnumber ) ) );
948
    return unless ( $reserve_id || ( $borrowernumber && ( $biblionumber || $itemnumber ) ) );
950
    $reserve_id = GetReserveId({ biblionumber => $biblionumber, borrowernumber => $borrowernumber, itemnumber => $itemnumber }) unless ( $reserve_id );
949
950
    my $hold;
951
    unless ( $reserve_id ) {
952
        $hold = Koha::Holds->search({ biblionumber => $biblionumber, borrowernumber => $borrowernumber, itemnumber => $itemnumber });
953
        return unless $hold; # FIXME Should raise an exception
954
        $reserve_id = $hold->reserve_id;
955
    }
951
956
952
    if ( $rank eq "del" ) {
957
    if ( $rank eq "del" ) {
953
        CancelReserve({ reserve_id => $reserve_id });
958
        CancelReserve({ reserve_id => $reserve_id });
954
    }
959
    }
955
    elsif ($rank =~ /^\d+/ and $rank > 0) {
960
    elsif ($rank =~ /^\d+/ and $rank > 0) {
956
        my $hold = Koha::Holds->find($reserve_id);
961
        $hold ||= Koha::Holds->find($reserve_id);
957
        logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, Dumper($hold->unblessed) )
962
        logaction( 'HOLDS', 'MODIFY', $hold->reserve_id, Dumper($hold->unblessed) )
958
            if C4::Context->preference('HoldsLog');
963
            if C4::Context->preference('HoldsLog');
959
964
Lines 1999-2028 sub RevertWaitingStatus { Link Here
1999
    _FixPriority( { biblionumber => $reserve->{biblionumber} } );
2004
    _FixPriority( { biblionumber => $reserve->{biblionumber} } );
2000
}
2005
}
2001
2006
2002
=head2 GetReserveId
2003
2004
  $reserve_id = GetReserveId({ biblionumber => $biblionumber, borrowernumber => $borrowernumber [, itemnumber => $itemnumber ] });
2005
2006
  Returnes the first reserve id that matches the given criteria
2007
2008
=cut
2009
2010
sub GetReserveId {
2011
    my ( $params ) = @_;
2012
2013
    return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} );
2014
2015
    foreach my $key ( keys %$params ) {
2016
        delete $params->{$key} unless defined( $params->{$key} );
2017
    }
2018
2019
    my $hold = Koha::Holds->search( $params )->next();
2020
2021
    return unless $hold;
2022
2023
    return $hold->id();
2024
}
2025
2026
=head2 ReserveSlip
2007
=head2 ReserveSlip
2027
2008
2028
  ReserveSlip($branchcode, $borrowernumber, $biblionumber)
2009
  ReserveSlip($branchcode, $borrowernumber, $biblionumber)
Lines 2047-2058 sub ReserveSlip { Link Here
2047
#   return unless ( C4::Context->boolean_preference('printreserveslips') );
2028
#   return unless ( C4::Context->boolean_preference('printreserveslips') );
2048
    my $patron = Koha::Patrons->find( $borrowernumber );
2029
    my $patron = Koha::Patrons->find( $borrowernumber );
2049
2030
2050
    my $reserve_id = GetReserveId({
2031
    my $hold = Koha::Holds->search({biblionumber => $biblionumber, borrowernumber => $borrowernumber })->next;
2051
        biblionumber => $biblionumber,
2032
    return unless $hold;
2052
        borrowernumber => $borrowernumber
2033
    my $reserve = $hold->unblessed;
2053
    }) or return;
2054
    my $reserve = Koha::Holds->find($reserve_id) or return;
2055
    $reserve = $reserve->unblessed;
2056
2034
2057
    return  C4::Letters::GetPreparedLetter (
2035
    return  C4::Letters::GetPreparedLetter (
2058
        module => 'circulation',
2036
        module => 'circulation',
(-)a/t/db_dependent/Circulation.t (-2 / +2 lines)
Lines 377-383 C4::Context->dbh->do("DELETE FROM accountlines"); Link Here
377
    is( $renewokay, 0, '(Bug 10663) Cannot renew, reserved');
377
    is( $renewokay, 0, '(Bug 10663) Cannot renew, reserved');
378
    is( $error, 'on_reserve', '(Bug 10663) Cannot renew, reserved (returned error is on_reserve)');
378
    is( $error, 'on_reserve', '(Bug 10663) Cannot renew, reserved (returned error is on_reserve)');
379
379
380
    my $reserveid = C4::Reserves::GetReserveId({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber});
380
    my $reserveid = Koha::Holds->search({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber })->next->reserve_id;
381
    my $reserving_borrower = Koha::Patrons->find( $reserving_borrowernumber )->unblessed;
381
    my $reserving_borrower = Koha::Patrons->find( $reserving_borrowernumber )->unblessed;
382
    AddIssue($reserving_borrower, $barcode3);
382
    AddIssue($reserving_borrower, $barcode3);
383
    my $reserve = $dbh->selectrow_hashref(
383
    my $reserve = $dbh->selectrow_hashref(
Lines 503-509 C4::Context->dbh->do("DELETE FROM accountlines"); Link Here
503
    is( $renewokay, 0, '(Bug 8236), Cannot renew, this item is overdue');
503
    is( $renewokay, 0, '(Bug 8236), Cannot renew, this item is overdue');
504
504
505
505
506
    $reserveid = C4::Reserves::GetReserveId({ biblionumber => $biblionumber, itemnumber => $itemnumber, borrowernumber => $reserving_borrowernumber});
506
    $reserveid = Koha::Holds->search({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber })->next->reserve_id;
507
    CancelReserve({ reserve_id => $reserveid });
507
    CancelReserve({ reserve_id => $reserveid });
508
508
509
    # Bug 14101
509
    # Bug 14101
(-)a/t/db_dependent/Holds.t (-27 / +5 lines)
Lines 7-13 use t::lib::TestBuilder; Link Here
7
7
8
use C4::Context;
8
use C4::Context;
9
9
10
use Test::More tests => 56;
10
use Test::More tests => 55;
11
use MARC::Record;
11
use MARC::Record;
12
use C4::Biblio;
12
use C4::Biblio;
13
use C4::Items;
13
use C4::Items;
Lines 197-209 AddReserve( Link Here
197
);
197
);
198
$patron = Koha::Patrons->find( $borrowernumber );
198
$patron = Koha::Patrons->find( $borrowernumber );
199
$holds = $patron->holds;
199
$holds = $patron->holds;
200
my $reserveid = C4::Reserves::GetReserveId(
200
my $reserveid = Koha::Holds->search({ biblionumber => $bibnum, borrowernumber => $borrowernumbers[0] })->next->reserve_id;
201
    {
202
        biblionumber => $biblionumber,
203
        borrowernumber => $borrowernumber
204
    }
205
);
206
is( $reserveid, $holds->next->reserve_id, "Test GetReserveId" );
207
ModReserveMinusPriority( $itemnumber, $reserveid );
201
ModReserveMinusPriority( $itemnumber, $reserveid );
208
$holds = $patron->holds;
202
$holds = $patron->holds;
209
is( $holds->next->itemnumber, $itemnumber, "Test ModReserveMinusPriority()" );
203
is( $holds->next->itemnumber, $itemnumber, "Test ModReserveMinusPriority()" );
Lines 291-302 AddReserve( Link Here
291
    1,
285
    1,
292
);
286
);
293
287
294
my $reserveid1 = C4::Reserves::GetReserveId(
288
my $reserveid1 = Koha::Holds->search({ biblionumber => $bibnum, borrowernumber => $borrowernumbers[0] })->next->reserve_id;
295
    {
296
        biblionumber => $bibnum,
297
        borrowernumber => $borrowernumbers[0]
298
    }
299
);
300
289
301
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum);
290
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum);
302
AddReserve(
291
AddReserve(
Lines 306-317 AddReserve( Link Here
306
    '',
295
    '',
307
    2,
296
    2,
308
);
297
);
309
my $reserveid2 = C4::Reserves::GetReserveId(
298
my $reserveid2 = Koha::Holds->search({ biblionumber => $bibnum, borrowernumber => $borrowernumbers[1] })->next->reserve_id;
310
    {
311
        biblionumber => $bibnum,
312
        borrowernumber => $borrowernumbers[1]
313
    }
314
);
315
299
316
CancelReserve({ reserve_id => $reserveid1 });
300
CancelReserve({ reserve_id => $reserveid1 });
317
301
Lines 326-337 AddReserve( Link Here
326
    '',
310
    '',
327
    2,
311
    2,
328
);
312
);
329
my $reserveid3 = C4::Reserves::GetReserveId(
313
my $reserveid3 = Koha::Holds->search({ biblionumber => $bibnum, borrowernumber => $borrowernumbers[0] })->next->reserve_id;
330
    {
331
        biblionumber => $bibnum,
332
        borrowernumber => $borrowernumbers[0]
333
    }
334
);
335
314
336
my $hold3 = Koha::Holds->find( $reserveid3 );
315
my $hold3 = Koha::Holds->find( $reserveid3 );
337
is( $hold3->priority, 2, "New reserve for patron 0, the reserve has a priority = 2" );
316
is( $hold3->priority, 2, "New reserve for patron 0, the reserve has a priority = 2" );
338
- 

Return to bug 19058