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

(-)a/C4/Reserves.pm (-46 / +41 lines)
Lines 1312-1318 take care of the waiting status Link Here
1312
=cut
1312
=cut
1313
1313
1314
sub ModReserveAffect {
1314
sub ModReserveAffect {
1315
    my ( $itemnumber, $borrowernumber,$transferToDo ) = @_;
1315
    my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id ) = @_;
1316
    my $dbh = C4::Context->dbh;
1316
    my $dbh = C4::Context->dbh;
1317
1317
1318
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
1318
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
Lines 1323-1366 sub ModReserveAffect { Link Here
1323
1323
1324
    # get request - need to find out if item is already
1324
    # get request - need to find out if item is already
1325
    # waiting in order to not send duplicate hold filled notifications
1325
    # waiting in order to not send duplicate hold filled notifications
1326
    my $reserve_id = GetReserveId({
1326
1327
        borrowernumber => $borrowernumber,
1327
    my $hold;
1328
        biblionumber   => $biblionumber,
1328
    # Find hold by id if we have it
1329
    });
1329
    $hold = Koha::Holds->find( $reserve_id ) if $reserve_id;
1330
    return unless defined $reserve_id;
1330
    # Find item level hold for this item if there is one
1331
    my $request = GetReserveInfo($reserve_id);
1331
    $hold ||= Koha::Holds->search( { borrowernumber => $borrowernumber, itemnumber => $itemnumber } )->next();
1332
    my $already_on_shelf = ($request && $request->{found} eq 'W') ? 1 : 0;
1332
    # Find record level hold if there is no item level hold
1333
    $hold ||= Koha::Holds->search( { borrowernumber => $borrowernumber, biblionumber => $biblionumber } )->next();
1334
1335
    return unless $hold;
1336
1337
    $reserve_id = $hold->id();
1338
1339
    my $already_on_shelf = $hold->found && $hold->found eq 'W';
1333
1340
1334
    # If we affect a reserve that has to be transferred, don't set to Waiting
1341
    # If we affect a reserve that has to be transferred, don't set to Waiting
1335
    my $query;
1342
    my $query;
1336
    if ($transferToDo) {
1343
    if ($transferToDo) {
1337
    $query = "
1344
        $hold->set(
1338
        UPDATE reserves
1345
            {
1339
        SET    priority = 0,
1346
                priority   => 0,
1340
               itemnumber = ?,
1347
                itemnumber => $itemnumber,
1341
               found = 'T'
1348
                found      => 'T',
1342
        WHERE borrowernumber = ?
1349
            }
1343
          AND biblionumber = ?
1350
        );
1344
    ";
1345
    }
1351
    }
1346
    else {
1352
    else {
1347
    # affect the reserve to Waiting as well.
1353
        # affect the reserve to Waiting as well.
1348
        $query = "
1354
        $hold->set(
1349
            UPDATE reserves
1355
            {
1350
            SET     priority = 0,
1356
                priority    => 0,
1351
                    found = 'W',
1357
                itemnumber  => $itemnumber,
1352
                    waitingdate = NOW(),
1358
                found       => 'W',
1353
                    itemnumber = ?
1359
                waitingdate => dt_from_string(),
1354
            WHERE borrowernumber = ?
1360
            }
1355
              AND biblionumber = ?
1361
        );
1356
        ";
1357
    }
1362
    }
1358
    $sth = $dbh->prepare($query);
1363
    $hold->store();
1359
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1364
1360
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$transferToDo && !$already_on_shelf );
1365
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber )
1366
      if ( !$transferToDo && !$already_on_shelf );
1367
1361
    _FixPriority( { biblionumber => $biblionumber } );
1368
    _FixPriority( { biblionumber => $biblionumber } );
1369
1362
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1370
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1363
      CartToShelf( $itemnumber );
1371
        CartToShelf($itemnumber);
1364
    }
1372
    }
1365
1373
1366
    return;
1374
    return;
Lines 2330-2355 sub GetReserveId { Link Here
2330
2338
2331
    return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} );
2339
    return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} );
2332
2340
2333
    my $dbh = C4::Context->dbh();
2334
2335
    my $sql = "SELECT reserve_id FROM reserves WHERE ";
2336
2337
    my @params;
2338
    my @limits;
2339
    foreach my $key ( keys %$params ) {
2341
    foreach my $key ( keys %$params ) {
2340
        if ( defined( $params->{$key} ) ) {
2342
        delete $params->{$key} unless defined( $params->{$key} );
2341
            push( @limits, "$key = ?" );
2342
            push( @params, $params->{$key} );
2343
        }
2344
    }
2343
    }
2345
2344
2346
    $sql .= join( " AND ", @limits );
2345
    my $hold = Koha::Holds->search( $params )->next();
2347
2348
    my $sth = $dbh->prepare( $sql );
2349
    $sth->execute( @params );
2350
    my $row = $sth->fetchrow_hashref();
2351
2346
2352
    return $row->{'reserve_id'};
2347
    return $hold->id();
2353
}
2348
}
2354
2349
2355
=head2 ReserveSlip
2350
=head2 ReserveSlip
(-)a/circ/returns.pl (-5 / +5 lines)
Lines 142-151 if ($query->param('WT-itemNumber')){ Link Here
142
	updateWrongTransfer ($query->param('WT-itemNumber'),$query->param('WT-waitingAt'),$query->param('WT-From'));
142
	updateWrongTransfer ($query->param('WT-itemNumber'),$query->param('WT-waitingAt'),$query->param('WT-From'));
143
}
143
}
144
144
145
if ( $query->param('resbarcode') ) {
145
if ( $query->param('reserve_id') ) {
146
    my $item           = $query->param('itemnumber');
146
    my $item           = $query->param('itemnumber');
147
    my $borrowernumber = $query->param('borrowernumber');
147
    my $borrowernumber = $query->param('borrowernumber');
148
    my $resbarcode     = $query->param('resbarcode');
148
    my $reserve_id     = $query->param('reserve_id');
149
    my $diffBranchReturned = $query->param('diffBranch');
149
    my $diffBranchReturned = $query->param('diffBranch');
150
    my $iteminfo   = GetBiblioFromItemNumber($item);
150
    my $iteminfo   = GetBiblioFromItemNumber($item);
151
    my $cancel_reserve = $query->param('cancel_reserve');
151
    my $cancel_reserve = $query->param('cancel_reserve');
Lines 153-164 if ( $query->param('resbarcode') ) { Link Here
153
    $iteminfo->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $iteminfo->{'itype'} : $iteminfo->{'itemtype'};
153
    $iteminfo->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $iteminfo->{'itype'} : $iteminfo->{'itemtype'};
154
154
155
    if ( $cancel_reserve ) {
155
    if ( $cancel_reserve ) {
156
        CancelReserve({ borrowernumber => $borrowernumber, itemnumber => $item, charge_cancel_fee => !$forgivemanualholdsexpire });
156
        CancelReserve({ reserve_id => $reserve_id, charge_cancel_fee => !$forgivemanualholdsexpire });
157
    } else {
157
    } else {
158
        my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
158
        my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef;
159
        # diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
159
        # diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
160
        # i.e., whether to apply waiting status
160
        # i.e., whether to apply waiting status
161
        ModReserveAffect( $item, $borrowernumber, $diffBranchSend);
161
        ModReserveAffect( $item, $borrowernumber, $diffBranchSend, $reserve_id );
162
    }
162
    }
163
#   check if we have other reserves for this document, if we have a return send the message of transfer
163
#   check if we have other reserves for this document, if we have a return send the message of transfer
164
    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
164
    my ( $messages, $nextreservinfo ) = GetOtherReserves($item);
Lines 438-444 if ( $messages->{'ResFound'}) { Link Here
438
            $template->param(
438
            $template->param(
439
                intransit    => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
439
                intransit    => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
440
                transfertodo => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
440
                transfertodo => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
441
                resbarcode   => $barcode,
441
                reserve_id   => $reserve->{reserve_id},
442
                reserved     => 1,
442
                reserved     => 1,
443
            );
443
            );
444
        }
444
        }
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (-3 / +2 lines)
Lines 260-266 $(document).ready(function () { Link Here
260
                <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
260
                <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
261
                <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
261
                <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
262
                <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
262
                <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
263
                <input type="hidden" name="resbarcode" value="[% barcode %]" />
263
                <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
264
                <input type="hidden" name="diffBranch" value="[% destbranch %]" />
264
                <input type="hidden" name="diffBranch" value="[% destbranch %]" />
265
                <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
265
                <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
266
                <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
266
                <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
Lines 422-428 $(document).ready(function () { Link Here
422
            <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
422
            <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
423
            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
423
            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
424
            <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
424
            <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
425
            <input type="hidden" name="resbarcode" value="[% barcode %]" />
425
            <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
426
            <input type="hidden" name="diffBranch" value="[% destbranch %]" />
426
            <input type="hidden" name="diffBranch" value="[% destbranch %]" />
427
            <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
427
            <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
428
            <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
428
            <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
429
- 

Return to bug 14695