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

(-)a/C4/Reserves.pm (-46 / +41 lines)
Lines 1300-1306 take care of the waiting status Link Here
1300
=cut
1300
=cut
1301
1301
1302
sub ModReserveAffect {
1302
sub ModReserveAffect {
1303
    my ( $itemnumber, $borrowernumber,$transferToDo ) = @_;
1303
    my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id ) = @_;
1304
    my $dbh = C4::Context->dbh;
1304
    my $dbh = C4::Context->dbh;
1305
1305
1306
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
1306
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
Lines 1311-1354 sub ModReserveAffect { Link Here
1311
1311
1312
    # get request - need to find out if item is already
1312
    # get request - need to find out if item is already
1313
    # waiting in order to not send duplicate hold filled notifications
1313
    # waiting in order to not send duplicate hold filled notifications
1314
    my $reserve_id = GetReserveId({
1314
1315
        borrowernumber => $borrowernumber,
1315
    my $hold;
1316
        biblionumber   => $biblionumber,
1316
    # Find hold by id if we have it
1317
    });
1317
    $hold = Koha::Holds->find( $reserve_id ) if $reserve_id;
1318
    return unless defined $reserve_id;
1318
    # Find item level hold for this item if there is one
1319
    my $request = GetReserveInfo($reserve_id);
1319
    $hold ||= Koha::Holds->search( { borrowernumber => $borrowernumber, itemnumber => $itemnumber } )->next();
1320
    my $already_on_shelf = ($request && $request->{found} eq 'W') ? 1 : 0;
1320
    # Find record level hold if there is no item level hold
1321
    $hold ||= Koha::Holds->search( { borrowernumber => $borrowernumber, biblionumber => $biblionumber } )->next();
1322
1323
    return unless $hold;
1324
1325
    $reserve_id = $hold->id();
1326
1327
    my $already_on_shelf = $hold->found && $hold->found eq 'W';
1321
1328
1322
    # If we affect a reserve that has to be transferred, don't set to Waiting
1329
    # If we affect a reserve that has to be transferred, don't set to Waiting
1323
    my $query;
1330
    my $query;
1324
    if ($transferToDo) {
1331
    if ($transferToDo) {
1325
    $query = "
1332
        $hold->set(
1326
        UPDATE reserves
1333
            {
1327
        SET    priority = 0,
1334
                priority   => 0,
1328
               itemnumber = ?,
1335
                itemnumber => $itemnumber,
1329
               found = 'T'
1336
                found      => 'T',
1330
        WHERE borrowernumber = ?
1337
            }
1331
          AND biblionumber = ?
1338
        );
1332
    ";
1333
    }
1339
    }
1334
    else {
1340
    else {
1335
    # affect the reserve to Waiting as well.
1341
        # affect the reserve to Waiting as well.
1336
        $query = "
1342
        $hold->set(
1337
            UPDATE reserves
1343
            {
1338
            SET     priority = 0,
1344
                priority    => 0,
1339
                    found = 'W',
1345
                itemnumber  => $itemnumber,
1340
                    waitingdate = NOW(),
1346
                found       => 'W',
1341
                    itemnumber = ?
1347
                waitingdate => dt_from_string(),
1342
            WHERE borrowernumber = ?
1348
            }
1343
              AND biblionumber = ?
1349
        );
1344
        ";
1345
    }
1350
    }
1346
    $sth = $dbh->prepare($query);
1351
    $hold->store();
1347
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1352
1348
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$transferToDo && !$already_on_shelf );
1353
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber )
1354
      if ( !$transferToDo && !$already_on_shelf );
1355
1349
    _FixPriority( { biblionumber => $biblionumber } );
1356
    _FixPriority( { biblionumber => $biblionumber } );
1357
1350
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1358
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1351
      CartToShelf( $itemnumber );
1359
        CartToShelf($itemnumber);
1352
    }
1360
    }
1353
1361
1354
    return;
1362
    return;
Lines 2319-2344 sub GetReserveId { Link Here
2319
2327
2320
    return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} );
2328
    return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} );
2321
2329
2322
    my $dbh = C4::Context->dbh();
2323
2324
    my $sql = "SELECT reserve_id FROM reserves WHERE ";
2325
2326
    my @params;
2327
    my @limits;
2328
    foreach my $key ( keys %$params ) {
2330
    foreach my $key ( keys %$params ) {
2329
        if ( defined( $params->{$key} ) ) {
2331
        delete $params->{$key} unless defined( $params->{$key} );
2330
            push( @limits, "$key = ?" );
2331
            push( @params, $params->{$key} );
2332
        }
2333
    }
2332
    }
2334
2333
2335
    $sql .= join( " AND ", @limits );
2334
    my $hold = Koha::Holds->search( $params )->next();
2336
2337
    my $sth = $dbh->prepare( $sql );
2338
    $sth->execute( @params );
2339
    my $row = $sth->fetchrow_hashref();
2340
2335
2341
    return $row->{'reserve_id'};
2336
    return $hold->id();
2342
}
2337
}
2343
2338
2344
=head2 ReserveSlip
2339
=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 425-431 if ( $messages->{'ResFound'}) { Link Here
425
            $template->param(
425
            $template->param(
426
                intransit    => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
426
                intransit    => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
427
                transfertodo => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
427
                transfertodo => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ),
428
                resbarcode   => $barcode,
428
                reserve_id   => $reserve->{reserve_id},
429
                reserved     => 1,
429
                reserved     => 1,
430
            );
430
            );
431
        }
431
        }
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (-3 / +2 lines)
Lines 235-241 $(document).ready(function () { Link Here
235
                <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
235
                <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
236
                <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
236
                <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
237
                <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
237
                <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
238
                <input type="hidden" name="resbarcode" value="[% barcode %]" />
238
                <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
239
                <input type="hidden" name="diffBranch" value="[% destbranch %]" />
239
                <input type="hidden" name="diffBranch" value="[% destbranch %]" />
240
                <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
240
                <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
241
                <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
241
                <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
Lines 393-399 $(document).ready(function () { Link Here
393
            <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
393
            <input type="hidden" name="itemnumber" value="[% itemnumber %]" />
394
            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
394
            <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
395
            <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
395
            <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" />
396
            <input type="hidden" name="resbarcode" value="[% barcode %]" />
396
            <input type="hidden" name="reserve_id" value="[% reserve_id %]" />
397
            <input type="hidden" name="diffBranch" value="[% destbranch %]" />
397
            <input type="hidden" name="diffBranch" value="[% destbranch %]" />
398
            <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
398
            <input type="hidden" name="exemptfine" value="[% exemptfine %]" />
399
            <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
399
            <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" />
400
- 

Return to bug 14695