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

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

Return to bug 14695