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

(-)a/C4/Circulation.pm (-24 / +23 lines)
Lines 2162-2196 sub AddReturn { Link Here
2162
    }
2162
    }
2163
2163
2164
    # check if we have a transfer for this document
2164
    # check if we have a transfer for this document
2165
    my $transfer = $item->get_transfer;
2165
    my $transfers = $item->get_transfers;
2166
    my $transfer = $transfers->next;
2166
2167
2167
    # if we have a transfer to complete, we update the line of transfers with the datearrived
2168
    # if we have a transfer to complete, we update the line of transfers with the datearrived
2168
    if ($transfer) {
2169
    if ($transfer) {
2169
        $validTransfer = 0;
2170
        $validTransfer = 0;
2170
        if ( $transfer->in_transit ) {
2171
        # Catch cancelled transfers, we've found the item now
2171
            if ( $transfer->tobranch eq $branch ) {
2172
        my $reverse;
2172
                $transfer->receive;
2173
        while ( $transfer && $transfer->is_cancelled ) {
2173
                $messages->{'TransferArrived'} = $transfer->frombranch;
2174
            $transfer->receive;
2174
                # validTransfer=1 allows us returning the item back if the reserve is cancelled
2175
            $messages->{'TransferTrigger'} = $transfer->reason;
2175
                $validTransfer = 1 if $transfer->reason eq 'Reserve';
2176
            $messages->{'WrongTransferItem'} = $item->itemnumber;
2176
            }
2177
            $reverse  = $transfer->frombranch;
2177
            else {
2178
            $transfer = $transfers->next;
2178
                $messages->{'WrongTransfer'}     = $transfer->tobranch;
2179
                $messages->{'WrongTransferItem'} = $item->itemnumber;
2180
                $messages->{'TransferTrigger'}   = $transfer->reason;
2181
            }
2182
        }
2179
        }
2183
        else {
2180
        if ( $transfer && $transfer->tobranch eq $branch ) {
2184
            if ( $transfer->tobranch eq $branch ) {
2181
            $transfer->receive;
2185
                $transfer->receive;
2182
            $messages->{'TransferArrived'} = $transfer->frombranch;
2186
                $messages->{'TransferArrived'} = $transfer->frombranch;
2183
        }
2187
                # validTransfer=1 allows us returning the item back if the reserve is cancelled
2184
        elsif ( $transfer && $transfer->in_transit ) {
2188
                $validTransfer = 1 if $transfer->reason eq 'Reserve';
2185
            $messages->{'WrongTransfer'}     = $transfer->tobranch;
2189
            }
2186
            $messages->{'WrongTransferItem'} = $item->itemnumber;
2190
            else {
2187
        }
2191
                $messages->{'WasTransfered'}   = $transfer->tobranch;
2188
        elsif ( $transfer ) {
2192
                $messages->{'TransferTrigger'} = $transfer->reason;
2189
            $messages->{'WasTransfered'}   = $transfer->tobranch;
2193
            }
2190
            $messages->{'TransferTrigger'} = $transfer->reason;
2191
        } else {
2192
            $messages->{'TransferCancelled'} = $reverse;
2194
        }
2193
        }
2195
    }
2194
    }
2196
2195
(-)a/circ/returns.pl (+28 lines)
Lines 427-432 if ( $messages->{'WrongTransfer'} and not $messages->{'WasTransfered'}) { Link Here
427
    }
427
    }
428
}
428
}
429
429
430
#
431
# case of transfer cancelled whilst in transit
432
#
433
if ( $messages->{'TransferCancelled'} ){
434
    $template->param(
435
        CancelledTransfer  => 1,
436
        TransferWaitingAt  => $messages->{'CancelledTransfer'},
437
        trigger            => $messages->{'TransferTrigger'},
438
    );
439
    
440
    # Add reverse transfer to return the item to it's original holdingbranch
441
    my $transfer = Koha::Items->find($messages->{'WrongTransferItem'});
442
    my $new_transfer = $transfer->request_transfer(
443
        {
444
            to            => $transfer->to_library,
445
            reason        => 'TransferCancellation',
446
            ignore_limits => 1
447
        }
448
    );
449
    $template->param(
450
        NewTransfer => $new_transfer->id
451
    );
452
}
453
454
430
#
455
#
431
# reserve found and item arrived at the expected branch
456
# reserve found and item arrived at the expected branch
432
#
457
#
Lines 535-540 foreach my $code ( keys %$messages ) { Link Here
535
    elsif ( $code eq 'TransferTrigger' ) {
560
    elsif ( $code eq 'TransferTrigger' ) {
536
        ;    # Handled alongside NeedsTransfer
561
        ;    # Handled alongside NeedsTransfer
537
    }
562
    }
563
    elsif ( $code eq 'TransferCancelled' ){
564
        ;    # Handled above
565
    }
538
    elsif ( $code eq 'TransferArrived' ) {
566
    elsif ( $code eq 'TransferArrived' ) {
539
        $err{transferred} = $messages->{'TransferArrived'};
567
        $err{transferred} = $messages->{'TransferArrived'};
540
    }
568
    }
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (-2 / +7 lines)
Lines 421-427 Link Here
421
421
422
                        <!-- case of a mistake in transfer loop -->
422
                        <!-- case of a mistake in transfer loop -->
423
                        [% UNLESS ( hold_auto_filled && diffbranch ) %]
423
                        [% UNLESS ( hold_auto_filled && diffbranch ) %]
424
                            [% IF WrongTransfer && !transfertodo %]
424
                            [% IF ( WrongTransfer || CancelledTransfer ) && !transfertodo %]
425
                                [% IF Koha.Preference('TransfersBlockCirc') %]
425
                                [% IF Koha.Preference('TransfersBlockCirc') %]
426
                                    <div id="wrong-transfer-modal" class="modal fade audio-alert-action block">
426
                                    <div id="wrong-transfer-modal" class="modal fade audio-alert-action block">
427
                                [% ELSE %]
427
                                [% ELSE %]
Lines 441-449 Link Here
441
                                                [% END %]
441
                                                [% END %]
442
442
443
                                                <div class="modal-header">
443
                                                <div class="modal-header">
444
                                                    [% IF WrongTransfer %]
444
                                                    <h3>
445
                                                    <h3>
445
                                                        Wrong transfer detected, please return item to: [% Branches.GetName( TransferWaitingAt ) | html %]
446
                                                        Wrong transfer detected, please return item to: [% Branches.GetName( TransferWaitingAt ) | html %]
446
                                                    </h3>
447
                                                    </h3>
448
                                                    [% ELSE %]
449
                                                    <h3>
450
                                                        Transfer was cancelled whilst in transit, please return item to: [% Branches.GetName( TransferWaitingAt ) | html %]
451
                                                    </h3>
452
                                                    [% END %]
447
                                                </div>
453
                                                </div>
448
454
449
                                                <div class="modal-body">
455
                                                <div class="modal-body">
450
- 

Return to bug 28527