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

(-)a/C4/Circulation.pm (-28 / +18 lines)
Lines 1337-1343 sub CanBookBeIssued { Link Here
1337
1337
1338
=head2 CanBookBeReturned
1338
=head2 CanBookBeReturned
1339
1339
1340
  ($returnallowed, $message) = CanBookBeReturned($item, $branch)
1340
  ($returnallowed, $message) = CanBookBeReturned($item, $branch, [$transferbranch])
1341
1341
1342
Check whether the item can be returned to the provided branch
1342
Check whether the item can be returned to the provided branch
1343
1343
Lines 1362-1406 Returns: Link Here
1362
=cut
1362
=cut
1363
1363
1364
sub CanBookBeReturned {
1364
sub CanBookBeReturned {
1365
    my ($item, $branch) = @_;
1365
    my ($item, $returnbranch, $transferbranch) = @_;
1366
    my $allowreturntobranch = C4::Context->preference("AllowReturnToBranch") || 'anywhere';
1366
    my $allowreturntobranch = C4::Context->preference("AllowReturnToBranch") || 'anywhere';
1367
1367
1368
    # assume return is allowed to start
1368
    # assume return is allowed to start
1369
    my $allowed = 1;
1369
    my $allowed = 1;
1370
    my $to_branch = $branch;
1371
    my $message;
1370
    my $message;
1372
1371
1373
    # identify all cases where return is forbidden
1372
    # identify all cases where return is forbidden
1374
    if ($allowreturntobranch eq 'homebranch' && $branch ne $item->homebranch) {
1373
    if ($allowreturntobranch eq 'homebranch' && $returnbranch ne $item->homebranch) {
1375
        $allowed = 0;
1374
        $allowed = 0;
1376
        $message = $to_branch = $item->homebranch;
1375
        $message = $item->homebranch;
1377
    } elsif ($allowreturntobranch eq 'holdingbranch' && $branch ne $item->holdingbranch) {
1376
    } elsif ($allowreturntobranch eq 'holdingbranch' && $returnbranch ne $item->holdingbranch) {
1378
        $allowed = 0;
1377
        $allowed = 0;
1379
        $message = $to_branch = $item->holdingbranch;
1378
        $message = $item->holdingbranch;
1380
    } elsif ($allowreturntobranch eq 'homeorholdingbranch' && $branch ne $item->homebranch && $branch ne $item->holdingbranch) {
1379
    } elsif ($allowreturntobranch eq 'homeorholdingbranch' && $returnbranch ne $item->homebranch && $returnbranch ne $item->holdingbranch) {
1381
        $allowed = 0;
1380
        $allowed = 0;
1382
        $message = $to_branch = $item->homebranch; # FIXME: choice of homebranch is arbitrary
1381
        $message = $item->homebranch; # FIXME: choice of homebranch is arbitrary
1383
    }
1382
    }
1384
1383
1385
    return ($allowed, $message) unless $allowed;
1384
    # identify cases where transfer rules prohibit return
1386
1385
    if ( defined($transferbranch) && $allowed ) {
1387
    # Make sure there are no branch transfer limits between item's current
1386
        my $from_library = Koha::Libraries->find($returnbranch);
1388
    # branch (holdinbranch) and the return branch
1387
        my $to_library   = Koha::Libraries->find($transferbranch);
1389
    my $return_library = Koha::Libraries->find($to_branch);
1388
        if ( !$item->can_be_transferred({ from => $from_library, to => $to_library }) ) {
1390
    if (!$item->can_be_transferred({ to => $return_library })) {
1389
            $allowed = 0;
1391
        return (0, $item->homebranch);
1390
            $message = $transferbranch;
1392
    }
1391
        }
1393
1394
    # Make sure there are no branch transfer limits between
1395
    # either homebranch and holdinbranch and the return branch
1396
    my $home_library = Koha::Libraries->find($item->homebranch);
1397
    my $holding_library = Koha::Libraries->find($item->holdingbranch);
1398
    if ($item->can_be_transferred({ from => $return_library , to => $holding_library }) or
1399
        $item->can_be_transferred({ from => $return_library , to => $home_library })) {
1400
        return (1, undef);
1401
    }
1392
    }
1402
1393
1403
    return (0, $item->homebranch);
1394
    return ($allowed, $message);
1404
}
1395
}
1405
1396
1406
=head2 CheckHighHolds
1397
=head2 CheckHighHolds
Lines 2265-2271 sub AddReturn { Link Here
2265
    }
2256
    }
2266
2257
2267
    # check if the return is allowed at this branch
2258
    # check if the return is allowed at this branch
2268
    my ($returnallowed, $message) = CanBookBeReturned($item, $branch);
2259
    my ($returnallowed, $message) = CanBookBeReturned($item, $branch, $returnbranch);
2269
2260
2270
    unless ($returnallowed){
2261
    unless ($returnallowed){
2271
        $messages->{'Wrongbranch'} = {
2262
        $messages->{'Wrongbranch'} = {
2272
- 

Return to bug 7376