Bug 14526: MoveReserve should look at future holds too

At checkout a hold for the same borrower is considered to be filled.
It is consistent to do the same for holds of the same borrower within
[ConfirmFutureHolds] days (if non-zero).

This goal is achieved by adjusting the CheckReserves call within
MoveReserve, adding the lookahead parameter.
I used this occasion to revisit other calls of CheckReserves:
- transferbook: no need to add lookahead; a future hold should not block
  a transfer;
- CanBookBeIssued: no lookahead; future hold does not block an issue;
- CanBookBeRenewed: idem.
- GetOtherReserves (only used in circ/returns): this call might be a
  candidate for lookahead too, but I leave that for another report. It is
  in the context of checkin and transfer, not checkout.

Test plan:
[1] Set ConfirmFutureHolds to zero days. (You may also need to enable
    AllowHoldDateInFuture.)
[2] Place a hold with borrower A on biblio X for tomorrow. Also place a hold
    with borrower B on X for today. (Use biblio level holds.)
[3] Check out item Y of X to borrower A. Ignore the warning for borrower B
    and do not cancel the hold of B (so: confirm checkout).
    Verify that X has still two holds.
[4] Check in Y (without confirming a hold).
[5] Enable ConfirmFutureHolds, say 2 days.
[6] Check out Y to A again. Ignore the warning for B (no cancel). Verify that
    X now only has one hold for borrower B (the hold for A was filled).

Signed-off-by: Joonas Kylmälä <j.kylmala@gmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Marcel de Rooy 2015-07-13 21:55:55 +02:00 committed by Tomas Cohen Arazi
parent c4a4581a50
commit ea6c4f5b8a

View file

@ -2151,7 +2151,8 @@ If $cancelreserve boolean is set to true, it will remove existing reserve
sub MoveReserve { sub MoveReserve {
my ( $itemnumber, $borrowernumber, $cancelreserve ) = @_; my ( $itemnumber, $borrowernumber, $cancelreserve ) = @_;
my ( $restype, $res, $all_reserves ) = CheckReserves( $itemnumber ); my $lookahead= C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds
my ( $restype, $res, $all_reserves ) = CheckReserves( $itemnumber, undef, $lookahead );
return unless $res; return unless $res;
my $biblionumber = $res->{biblionumber}; my $biblionumber = $res->{biblionumber};