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

(-)a/Koha/Item.pm (-1 / +1 lines)
Lines 467-473 sub request_transfer { Link Here
467
        }
467
        }
468
    )->store();
468
    )->store();
469
469
470
    $request->cancel( { reason => $params->{reason}, force => 1 } )
470
    $request->cancel( { reason => $params->{reason}, force => 1, replace => 1 } )
471
      if ( defined($request) && $params->{replace} );
471
      if ( defined($request) && $params->{replace} );
472
472
473
    return $transfer;
473
    return $transfer;
(-)a/Koha/Item/Transfer.pm (-1 / +2 lines)
Lines 159-167 sub cancel { Link Here
159
      ->store;
159
      ->store;
160
160
161
    # Set up return transfer if transfer was force cancelled whilst in transit
161
    # Set up return transfer if transfer was force cancelled whilst in transit
162
    # and we were not notified that the transfer is being replaced.
162
    # NOTE: We don't catch here, as we're happy to fail if there are already
163
    # NOTE: We don't catch here, as we're happy to fail if there are already
163
    # other transfers in the queue.
164
    # other transfers in the queue.
164
    if ($in_transit) {
165
    if ($in_transit && !$params->{replace}) {
165
        try {
166
        try {
166
            $self->item->request_transfer(
167
            $self->item->request_transfer(
167
                { to => $self->from_library, reason => 'TransferCancellation' } );
168
                { to => $self->from_library, reason => 'TransferCancellation' } );
(-)a/t/db_dependent/Koha/Item.t (-4 / +24 lines)
Lines 459-465 subtest 'pickup_locations' => sub { Link Here
459
};
459
};
460
460
461
subtest 'request_transfer' => sub {
461
subtest 'request_transfer' => sub {
462
    plan tests => 7;
462
    plan tests => 13;
463
    $schema->storage->txn_begin;
463
    $schema->storage->txn_begin;
464
464
465
    my $library1 = $builder->build_object( { class => 'Koha::Libraries' } );
465
    my $library1 = $builder->build_object( { class => 'Koha::Libraries' } );
Lines 485-490 subtest 'request_transfer' => sub { Link Here
485
    is( ref($transfer), 'Koha::Item::Transfer',
485
    is( ref($transfer), 'Koha::Item::Transfer',
486
        'Koha::Item->request_transfer should return a Koha::Item::Transfer object'
486
        'Koha::Item->request_transfer should return a Koha::Item::Transfer object'
487
    );
487
    );
488
    my $original_transfer = $transfer->get_from_storage;
488
489
489
    # Transfer already in progress
490
    # Transfer already in progress
490
    throws_ok { $item->request_transfer( { to => $library2, reason => 'Manual' } ) }
491
    throws_ok { $item->request_transfer( { to => $library2, reason => 'Manual' } ) }
Lines 496-502 subtest 'request_transfer' => sub { Link Here
496
        'Koha::Item::Transfer',
497
        'Koha::Item::Transfer',
497
        'The exception contains the found Koha::Item::Transfer' );
498
        'The exception contains the found Koha::Item::Transfer' );
498
499
499
    $transfer->datearrived(dt_from_string)->store();
500
    # Queue transfer
501
    my $queued_transfer = $item->request_transfer(
502
        { to => $library2, reason => 'Manual', enqueue => 1 } );
503
    is( ref($queued_transfer), 'Koha::Item::Transfer',
504
        'Koha::Item->request_transfer allowed when enqueue is set' );
505
    my $transfers = $item->get_transfers;
506
    is($transfers->count, 2, "There are now 2 live transfers in the queue");
507
    $transfer = $transfer->get_from_storage;
508
    is_deeply($transfer->unblessed, $original_transfer->unblessed, "Original transfer unchanged");
509
    $queued_transfer->datearrived(dt_from_string)->store();
510
511
    # Replace transfer
512
    my $replaced_transfer = $item->request_transfer(
513
        { to => $library2, reason => 'Manual', replace => 1 } );
514
    is( ref($replaced_transfer), 'Koha::Item::Transfer',
515
        'Koha::Item->request_transfer allowed when replace is set' );
516
    $original_transfer->discard_changes;
517
    ok($original_transfer->datecancelled, "Original transfer cancelled");
518
    $transfers = $item->get_transfers;
519
    is($transfers->count, 1, "There is only 1 live transfer in the queue");
520
    $replaced_transfer->datearrived(dt_from_string)->store();
500
521
501
    # BranchTransferLimits
522
    # BranchTransferLimits
502
    t::lib::Mocks::mock_preference('UseBranchTransferLimits', 1);
523
    t::lib::Mocks::mock_preference('UseBranchTransferLimits', 1);
Lines 513-519 subtest 'request_transfer' => sub { Link Here
513
534
514
    my $forced_transfer = $item->request_transfer( { to => $library1, reason => 'Manual', ignore_limits => 1 } );
535
    my $forced_transfer = $item->request_transfer( { to => $library1, reason => 'Manual', ignore_limits => 1 } );
515
    is( ref($forced_transfer), 'Koha::Item::Transfer',
536
    is( ref($forced_transfer), 'Koha::Item::Transfer',
516
        'Koha::Item->request_transfer allowed when forced'
537
        'Koha::Item->request_transfer allowed when ignore_limits is set'
517
    );
538
    );
518
539
519
    $schema->storage->txn_rollback;
540
    $schema->storage->txn_rollback;
520
- 

Return to bug 27064