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

(-)a/C4/Reserves.pm (-5 / +10 lines)
Lines 1336-1356 sub ModReserveStatus { Link Here
1336
1336
1337
=head2 ModReserveAffect
1337
=head2 ModReserveAffect
1338
1338
1339
  &ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend);
1339
  &ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $borrowernumber, force_transfer => $diffBranchSend });
1340
1340
1341
This function affect an item and a status for a given reserve
1341
This function affect an item and a status for a given reserve
1342
The itemnumber parameter is used to find the biblionumber.
1342
The itemnumber parameter is used to find the biblionumber.
1343
with the biblionumber & the borrowernumber, we can affect the itemnumber
1343
with the biblionumber & the borrowernumber, we can affect the itemnumber
1344
to the correct reserve.
1344
to the correct reserve.
1345
1345
1346
if $transferToDo is not set, then the status is set to "Waiting" as well.
1346
if $force_transfer is not set, then the status is set to "Waiting" as well.
1347
otherwise, a transfer is on the way, and the end of the transfer will 
1347
otherwise, a transfer is on the way, and the end of the transfer will 
1348
take care of the waiting status
1348
take care of the waiting status
1349
1349
1350
=cut
1350
=cut
1351
1351
1352
sub ModReserveAffect {
1352
sub ModReserveAffect {
1353
    my ( $itemnumber, $borrowernumber,$transferToDo ) = @_;
1353
    my ( $params ) = @_;
1354
    my $borrowernumber = $params->{borrowernumber};
1355
    my $itemnumber = $params->{itemnumber};
1356
    my $force_transfer = $params->{force_transfer};
1357
1354
    my $dbh = C4::Context->dbh;
1358
    my $dbh = C4::Context->dbh;
1355
1359
1356
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
1360
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
Lines 1371-1377 sub ModReserveAffect { Link Here
1371
1375
1372
    # If we affect a reserve that has to be transfered, don't set to Waiting
1376
    # If we affect a reserve that has to be transfered, don't set to Waiting
1373
    my $query;
1377
    my $query;
1374
    if ($transferToDo) {
1378
    if ( $force_transfer ) {
1375
    $query = "
1379
    $query = "
1376
        UPDATE reserves
1380
        UPDATE reserves
1377
        SET    priority = 0,
1381
        SET    priority = 0,
Lines 1395-1402 sub ModReserveAffect { Link Here
1395
    }
1399
    }
1396
    $sth = $dbh->prepare($query);
1400
    $sth = $dbh->prepare($query);
1397
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1401
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1398
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$transferToDo && !$already_on_shelf );
1402
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$force_transfer && !$already_on_shelf );
1399
    _FixPriority( { biblionumber => $biblionumber } );
1403
    _FixPriority( { biblionumber => $biblionumber } );
1404
1400
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1405
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1401
      CartToShelf( $itemnumber );
1406
      CartToShelf( $itemnumber );
1402
    }
1407
    }
(-)a/C4/SIP/ILS/Transaction/Checkin.pm (-4 / +10 lines)
Lines 95-107 sub do_checkin { Link Here
95
        $self->hold($messages->{ResFound});
95
        $self->hold($messages->{ResFound});
96
        if ($branch eq $messages->{ResFound}->{branchcode}) {
96
        if ($branch eq $messages->{ResFound}->{branchcode}) {
97
            $self->alert_type('01');
97
            $self->alert_type('01');
98
            ModReserveAffect( $messages->{ResFound}->{itemnumber},
98
            ModReserveAffect({
99
                $messages->{ResFound}->{borrowernumber}, 0);
99
                itemnumber => $messages->{ResFound}->{itemnumber},
100
                borrowernumber => $messages->{ResFound}->{borrowernumber},
101
                force_transfer => 0
102
            });
100
103
101
        } else {
104
        } else {
102
            $self->alert_type('02');
105
            $self->alert_type('02');
103
            ModReserveAffect( $messages->{ResFound}->{itemnumber},
106
            ModReserveAffect({
104
                $messages->{ResFound}->{borrowernumber}, 1);
107
                itemnumber => $messages->{ResFound}->{itemnumber},
108
                borrowernumber => $messages->{ResFound}->{borrowernumber},
109
                force_transfer => 1
110
            });
105
            ModItemTransfer( $messages->{ResFound}->{itemnumber},
111
            ModItemTransfer( $messages->{ResFound}->{itemnumber},
106
                $branch,
112
                $branch,
107
                $messages->{ResFound}->{branchcode}
113
                $messages->{ResFound}->{branchcode}
(-)a/circ/branchtransfers.pl (-1 / +1 lines)
Lines 89-95 if ( $request eq "KillWaiting" ) { Link Here
89
}
89
}
90
elsif ( $request eq "SetWaiting" ) {
90
elsif ( $request eq "SetWaiting" ) {
91
    my $item = $query->param('itemnumber');
91
    my $item = $query->param('itemnumber');
92
    ModReserveAffect( $item, $borrowernumber );
92
    ModReserveAffect({ itemnumber => $item, borrowernumber => $borrowernumber, force_transfer => 0 });
93
    $ignoreRs    = 1;
93
    $ignoreRs    = 1;
94
    $setwaiting  = 1;
94
    $setwaiting  = 1;
95
    $reqmessage  = 1;
95
    $reqmessage  = 1;
(-)a/circ/returns.pl (-1 / +1 lines)
Lines 140-146 if ( $query->param('resbarcode') ) { Link Here
140
    my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
140
    my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
141
# diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
141
# diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
142
# i.e., whether to apply waiting status
142
# i.e., whether to apply waiting status
143
    ModReserveAffect( $item, $borrowernumber, $diffBranchSend);
143
    ModReserveAffect({ itemnumber => $item, borrowernumber => $borrowernumber, force_transfer => $diffBranchSend });
144
#   check if we have other reserves for this document, if we have a return send the message of transfer
144
#   check if we have other reserves for this document, if we have a return send the message of transfer
145
    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
145
    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
146
146
(-)a/t/db_dependent/Reserves.t (-3 / +3 lines)
Lines 343-354 is(exists $messages->{ResFound}?1:0, 1, 'AddReturn considers future reserve with Link Here
343
343
344
# test marking a hold as captured
344
# test marking a hold as captured
345
my $hold_notice_count = count_hold_print_messages();
345
my $hold_notice_count = count_hold_print_messages();
346
ModReserveAffect($itemnumber, $requesters{'CPL'}, 0);
346
ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $requesters{'CPL'}, force_transfer => 0 });
347
my $new_count = count_hold_print_messages();
347
my $new_count = count_hold_print_messages();
348
is($new_count, $hold_notice_count + 1, 'patron notified when item set to waiting');
348
is($new_count, $hold_notice_count + 1, 'patron notified when item set to waiting');
349
349
350
# test that duplicate notices aren't generated
350
# test that duplicate notices aren't generated
351
ModReserveAffect($itemnumber, $requesters{'CPL'}, 0);
351
ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $requesters{'CPL'}, force_transfer => 0 });
352
$new_count = count_hold_print_messages();
352
$new_count = count_hold_print_messages();
353
is($new_count, $hold_notice_count + 1, 'patron not notified a second time (bug 11445)');
353
is($new_count, $hold_notice_count + 1, 'patron not notified a second time (bug 11445)');
354
354
Lines 384-390 AddReserve('CPL', $requesters{'CPL'}, $bibnum, Link Here
384
@results= GetReservesFromItemnumber($itemnumber);
384
@results= GetReservesFromItemnumber($itemnumber);
385
is(defined $results[3]?1:0, 0, 'GetReservesFromItemnumber does not return a future item level hold');
385
is(defined $results[3]?1:0, 0, 'GetReservesFromItemnumber does not return a future item level hold');
386
# 9788c: GetReservesFromItemnumber returns future wait (confirmed future hold)
386
# 9788c: GetReservesFromItemnumber returns future wait (confirmed future hold)
387
ModReserveAffect( $itemnumber,  $requesters{'CPL'} , 0); #confirm hold
387
ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $requesters{'CPL'} , force_transfer => 0 }); #confirm hold
388
@results= GetReservesFromItemnumber($itemnumber);
388
@results= GetReservesFromItemnumber($itemnumber);
389
is(defined $results[3]?1:0, 1, 'GetReservesFromItemnumber returns a future wait (confirmed future hold)');
389
is(defined $results[3]?1:0, 1, 'GetReservesFromItemnumber returns a future wait (confirmed future hold)');
390
# End of tests for bug 9788
390
# End of tests for bug 9788
(-)a/t/db_dependent/Reserves/priorities.t (-4 / +3 lines)
Lines 59-65 AddReserve( 'CPL', $borrowernumber3, $biblionumber, 'a', undef, 2, undef, undef, Link Here
59
59
60
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
60
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
61
AddReturn( $barcode1 );
61
AddReturn( $barcode1 );
62
ModReserveAffect( $itemnumber1, $borrowernumber2 );
62
ModReserveAffect({ itemnumber => $itemnumber1, borrowernumber => $borrowernumber2 });
63
63
64
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
64
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
65
is( $reserve2->{borrowernumber}, $borrowernumber2 );
65
is( $reserve2->{borrowernumber}, $borrowernumber2 );
Lines 96-102 AddReserve( 'CPL', $borrowernumber2, $biblionumber, 'a', undef, 1); Link Here
96
AddReserve( 'CPL', $borrowernumber3, $biblionumber, 'a', undef, 2 );
96
AddReserve( 'CPL', $borrowernumber3, $biblionumber, 'a', undef, 2 );
97
C4::Context->set_preference('ConfirmFutureHolds', 2);
97
C4::Context->set_preference('ConfirmFutureHolds', 2);
98
my ( undef, $message ) = AddReturn( $barcode1 );
98
my ( undef, $message ) = AddReturn( $barcode1 );
99
ModReserveAffect( $itemnumber1, $borrowernumber2 );
99
ModReserveAffect({ itemnumber => $itemnumber1, borrowernumber => $borrowernumber2 });
100
100
101
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
101
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
102
is( $reserve2->{borrowernumber}, $borrowernumber2 );
102
is( $reserve2->{borrowernumber}, $borrowernumber2 );
Lines 135-141 AddReserve( 'MPL', $borrowernumber3, $biblionumber, 'a', undef, 2, undef, undef, Link Here
135
135
136
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
136
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
137
AddReturn( $barcode1 );
137
AddReturn( $barcode1 );
138
ModReserveAffect( $itemnumber2, $borrowernumber2, 1 );
138
ModReserveAffect({ itemnumber => $itemnumber2, borrowernumber => $borrowernumber2, force_transfer => 1 });
139
139
140
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
140
( $reserve2 ) = GetReservesFromBorrowernumber( $borrowernumber2 );
141
is( $reserve2->{borrowernumber}, $borrowernumber2 );
141
is( $reserve2->{borrowernumber}, $borrowernumber2 );
142
- 

Return to bug 10827