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

(-)a/C4/Reserves.pm (-5 / +9 lines)
Lines 1215-1235 sub ModReserveStatus { Link Here
1215
1215
1216
=head2 ModReserveAffect
1216
=head2 ModReserveAffect
1217
1217
1218
  &ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend);
1218
  &ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $borrowernumber, force_transfer => $diffBranchSend });
1219
1219
1220
This function affect an item and a status for a given reserve
1220
This function affect an item and a status for a given reserve
1221
The itemnumber parameter is used to find the biblionumber.
1221
The itemnumber parameter is used to find the biblionumber.
1222
with the biblionumber & the borrowernumber, we can affect the itemnumber
1222
with the biblionumber & the borrowernumber, we can affect the itemnumber
1223
to the correct reserve.
1223
to the correct reserve.
1224
1224
1225
if $transferToDo is not set, then the status is set to "Waiting" as well.
1225
if $force_transfer is not set, then the status is set to "Waiting" as well.
1226
otherwise, a transfer is on the way, and the end of the transfer will 
1226
otherwise, a transfer is on the way, and the end of the transfer will 
1227
take care of the waiting status
1227
take care of the waiting status
1228
1228
1229
=cut
1229
=cut
1230
1230
1231
sub ModReserveAffect {
1231
sub ModReserveAffect {
1232
    my ( $itemnumber, $borrowernumber,$transferToDo ) = @_;
1232
    my ( $params ) = @_;
1233
    my $borrowernumber = $params->{borrowernumber};
1234
    my $itemnumber = $params->{itemnumber};
1235
    my $force_transfer = $params->{force_transfer};
1236
1233
    my $dbh = C4::Context->dbh;
1237
    my $dbh = C4::Context->dbh;
1234
1238
1235
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
1239
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
Lines 1250-1256 sub ModReserveAffect { Link Here
1250
1254
1251
    # If we affect a reserve that has to be transfered, don't set to Waiting
1255
    # If we affect a reserve that has to be transfered, don't set to Waiting
1252
    my $query;
1256
    my $query;
1253
    if ($transferToDo) {
1257
    if ( $force_transfer ) {
1254
    $query = "
1258
    $query = "
1255
        UPDATE reserves
1259
        UPDATE reserves
1256
        SET    priority = 0,
1260
        SET    priority = 0,
Lines 1274-1280 sub ModReserveAffect { Link Here
1274
    }
1278
    }
1275
    $sth = $dbh->prepare($query);
1279
    $sth = $dbh->prepare($query);
1276
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1280
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1277
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$transferToDo && !$already_on_shelf );
1281
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$force_transfer && !$already_on_shelf );
1278
1282
1279
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1283
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1280
      CartToShelf( $itemnumber );
1284
      CartToShelf( $itemnumber );
(-)a/C4/SIP/ILS/Transaction/Checkin.pm (-4 / +10 lines)
Lines 82-94 sub do_checkin { Link Here
82
        $self->hold($messages->{ResFound});
82
        $self->hold($messages->{ResFound});
83
        if ($branch eq $messages->{ResFound}->{branchcode}) {
83
        if ($branch eq $messages->{ResFound}->{branchcode}) {
84
            $self->alert_type('01');
84
            $self->alert_type('01');
85
            ModReserveAffect( $messages->{ResFound}->{itemnumber},
85
            ModReserveAffect({
86
                $messages->{ResFound}->{borrowernumber}, 0);
86
                itemnumber => $messages->{ResFound}->{itemnumber},
87
                borrowernumber => $messages->{ResFound}->{borrowernumber},
88
                force_transfer => 0
89
            });
87
90
88
        } else {
91
        } else {
89
            $self->alert_type('02');
92
            $self->alert_type('02');
90
            ModReserveAffect( $messages->{ResFound}->{itemnumber},
93
            ModReserveAffect({
91
                $messages->{ResFound}->{borrowernumber}, 1);
94
                itemnumber => $messages->{ResFound}->{itemnumber},
95
                borrowernumber => $messages->{ResFound}->{borrowernumber},
96
                force_transfer => 1
97
            });
92
            ModItemTransfer( $messages->{ResFound}->{itemnumber},
98
            ModItemTransfer( $messages->{ResFound}->{itemnumber},
93
                $branch,
99
                $branch,
94
                $messages->{ResFound}->{branchcode}
100
                $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 142-148 if ( $query->param('resbarcode') ) { Link Here
142
    my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
142
    my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
143
# diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
143
# diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
144
# i.e., whether to apply waiting status
144
# i.e., whether to apply waiting status
145
    ModReserveAffect( $item, $borrowernumber, $diffBranchSend);
145
    ModReserveAffect({ itemnumber => $item, borrowernumber => $borrowernumber, force_transfer => $diffBranchSend });
146
#   check if we have other reserves for this document, if we have a return send the message of transfer
146
#   check if we have other reserves for this document, if we have a return send the message of transfer
147
    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
147
    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
148
148
(-)a/t/db_dependent/Reserves.t (-3 / +3 lines)
Lines 271-282 is(exists $messages->{ResFound}?1:0, 1, 'AddReturn considers future reserve with Link Here
271
271
272
# test marking a hold as captured
272
# test marking a hold as captured
273
my $hold_notice_count = count_hold_print_messages();
273
my $hold_notice_count = count_hold_print_messages();
274
ModReserveAffect($itemnumber, $requesters{'CPL'}, 0);
274
ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $requesters{'CPL'}, force_transfer => 0 });
275
my $new_count = count_hold_print_messages();
275
my $new_count = count_hold_print_messages();
276
is($new_count, $hold_notice_count + 1, 'patron notified when item set to waiting');
276
is($new_count, $hold_notice_count + 1, 'patron notified when item set to waiting');
277
277
278
# test that duplicate notices aren't generated
278
# test that duplicate notices aren't generated
279
ModReserveAffect($itemnumber, $requesters{'CPL'}, 0);
279
ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $requesters{'CPL'}, force_transfer => 0 });
280
$new_count = count_hold_print_messages();
280
$new_count = count_hold_print_messages();
281
is($new_count, $hold_notice_count + 1, 'patron not notified a second time (bug 11445)');
281
is($new_count, $hold_notice_count + 1, 'patron not notified a second time (bug 11445)');
282
282
Lines 312-318 AddReserve('CPL', $requesters{'CPL'}, $bibnum, Link Here
312
@results= GetReservesFromItemnumber($itemnumber);
312
@results= GetReservesFromItemnumber($itemnumber);
313
is(defined $results[3]?1:0, 0, 'GetReservesFromItemnumber does not return a future item level hold');
313
is(defined $results[3]?1:0, 0, 'GetReservesFromItemnumber does not return a future item level hold');
314
# 9788c: GetReservesFromItemnumber returns future wait (confirmed future hold)
314
# 9788c: GetReservesFromItemnumber returns future wait (confirmed future hold)
315
ModReserveAffect( $itemnumber,  $requesters{'CPL'} , 0); #confirm hold
315
ModReserveAffect({ itemnumber => $itemnumber, borrowernumber => $requesters{'CPL'} , force_transfer => 0 }); #confirm hold
316
@results= GetReservesFromItemnumber($itemnumber);
316
@results= GetReservesFromItemnumber($itemnumber);
317
is(defined $results[3]?1:0, 1, 'GetReservesFromItemnumber returns a future wait (confirmed future hold)');
317
is(defined $results[3]?1:0, 1, 'GetReservesFromItemnumber returns a future wait (confirmed future hold)');
318
# End of tests for bug 9788
318
# 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