Bug 27064: (QA follow-up) Pass 'replace' through to Koha::Item::Transfer->cancel
The `replace` option found in Koha::Item->request_transfer should be passed through to Koha::Item::Transfer->cancel and prevent any reverse transfers from being queued in such cases. This prevents modItemTransfer from adding superflous reverse transfers whenever it is used. Test plan 1/ Run t/db_dependent/Koha/Item.t to prove the new tests pass Signed-off-by: Joonas Kylmälä <joonas.kylmala@helsinki.fi> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
8b095aaf37
commit
6c1b7df3f6
3 changed files with 27 additions and 5 deletions
|
@ -467,7 +467,7 @@ sub request_transfer {
|
|||
}
|
||||
)->store();
|
||||
|
||||
$request->cancel( { reason => $params->{reason}, force => 1 } )
|
||||
$request->cancel( { reason => $params->{reason}, force => 1, replace => 1 } )
|
||||
if ( defined($request) && $params->{replace} );
|
||||
|
||||
return $transfer;
|
||||
|
|
|
@ -159,9 +159,10 @@ sub cancel {
|
|||
->store;
|
||||
|
||||
# Set up return transfer if transfer was force cancelled whilst in transit
|
||||
# and we were not notified that the transfer is being replaced.
|
||||
# NOTE: We don't catch here, as we're happy to fail if there are already
|
||||
# other transfers in the queue.
|
||||
if ($in_transit) {
|
||||
if ($in_transit && !$params->{replace}) {
|
||||
try {
|
||||
$self->item->request_transfer(
|
||||
{ to => $self->from_library, reason => 'TransferCancellation' } );
|
||||
|
|
|
@ -459,7 +459,7 @@ subtest 'pickup_locations' => sub {
|
|||
};
|
||||
|
||||
subtest 'request_transfer' => sub {
|
||||
plan tests => 7;
|
||||
plan tests => 13;
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
my $library1 = $builder->build_object( { class => 'Koha::Libraries' } );
|
||||
|
@ -485,6 +485,7 @@ subtest 'request_transfer' => sub {
|
|||
is( ref($transfer), 'Koha::Item::Transfer',
|
||||
'Koha::Item->request_transfer should return a Koha::Item::Transfer object'
|
||||
);
|
||||
my $original_transfer = $transfer->get_from_storage;
|
||||
|
||||
# Transfer already in progress
|
||||
throws_ok { $item->request_transfer( { to => $library2, reason => 'Manual' } ) }
|
||||
|
@ -496,7 +497,27 @@ subtest 'request_transfer' => sub {
|
|||
'Koha::Item::Transfer',
|
||||
'The exception contains the found Koha::Item::Transfer' );
|
||||
|
||||
$transfer->datearrived(dt_from_string)->store();
|
||||
# Queue transfer
|
||||
my $queued_transfer = $item->request_transfer(
|
||||
{ to => $library2, reason => 'Manual', enqueue => 1 } );
|
||||
is( ref($queued_transfer), 'Koha::Item::Transfer',
|
||||
'Koha::Item->request_transfer allowed when enqueue is set' );
|
||||
my $transfers = $item->get_transfers;
|
||||
is($transfers->count, 2, "There are now 2 live transfers in the queue");
|
||||
$transfer = $transfer->get_from_storage;
|
||||
is_deeply($transfer->unblessed, $original_transfer->unblessed, "Original transfer unchanged");
|
||||
$queued_transfer->datearrived(dt_from_string)->store();
|
||||
|
||||
# Replace transfer
|
||||
my $replaced_transfer = $item->request_transfer(
|
||||
{ to => $library2, reason => 'Manual', replace => 1 } );
|
||||
is( ref($replaced_transfer), 'Koha::Item::Transfer',
|
||||
'Koha::Item->request_transfer allowed when replace is set' );
|
||||
$original_transfer->discard_changes;
|
||||
ok($original_transfer->datecancelled, "Original transfer cancelled");
|
||||
$transfers = $item->get_transfers;
|
||||
is($transfers->count, 1, "There is only 1 live transfer in the queue");
|
||||
$replaced_transfer->datearrived(dt_from_string)->store();
|
||||
|
||||
# BranchTransferLimits
|
||||
t::lib::Mocks::mock_preference('UseBranchTransferLimits', 1);
|
||||
|
@ -513,7 +534,7 @@ subtest 'request_transfer' => sub {
|
|||
|
||||
my $forced_transfer = $item->request_transfer( { to => $library1, reason => 'Manual', ignore_limits => 1 } );
|
||||
is( ref($forced_transfer), 'Koha::Item::Transfer',
|
||||
'Koha::Item->request_transfer allowed when forced'
|
||||
'Koha::Item->request_transfer allowed when ignore_limits is set'
|
||||
);
|
||||
|
||||
$schema->storage->txn_rollback;
|
||||
|
|
Loading…
Reference in a new issue