Lines 54-59
use C4::Log qw( logaction );
Link Here
|
54 |
use List::MoreUtils qw( any ); |
54 |
use List::MoreUtils qw( any ); |
55 |
use DateTime::Format::MySQL; |
55 |
use DateTime::Format::MySQL; |
56 |
# debugging; so please don't remove this |
56 |
# debugging; so please don't remove this |
|
|
57 |
use Try::Tiny qw( catch try ); |
57 |
|
58 |
|
58 |
use Koha::AuthorisedValues; |
59 |
use Koha::AuthorisedValues; |
59 |
use Koha::DateUtils qw( dt_from_string ); |
60 |
use Koha::DateUtils qw( dt_from_string ); |
Lines 359-389
The last optional parameter allows for passing skip_record_index through to the
Link Here
|
359 |
sub ModItemTransfer { |
360 |
sub ModItemTransfer { |
360 |
my ( $itemnumber, $frombranch, $tobranch, $trigger, $params ) = @_; |
361 |
my ( $itemnumber, $frombranch, $tobranch, $trigger, $params ) = @_; |
361 |
|
362 |
|
362 |
my $dbh = C4::Context->dbh; |
363 |
my $dbh = C4::Context->dbh; |
363 |
my $item = Koha::Items->find( $itemnumber ); |
364 |
my $item = Koha::Items->find($itemnumber); |
364 |
|
365 |
|
365 |
# NOTE: This retains the existing hard coded behaviour by ignoring transfer limits |
366 |
# NOTE: This retains the existing hard coded behaviour by ignoring transfer limits |
366 |
# and always replacing any existing transfers. (In theory, calls to ModItemTransfer |
367 |
# and always replacing any existing transfers. (In theory, calls to ModItemTransfer |
367 |
# will have been preceded by a check of branch transfer limits) |
368 |
# will have been preceded by a check of branch transfer limits) |
368 |
my $to_library = Koha::Libraries->find($tobranch); |
369 |
my $to_library = Koha::Libraries->find($tobranch); |
369 |
my $transfer = $item->request_transfer( |
370 |
my $transfer; |
370 |
{ |
371 |
try { |
371 |
to => $to_library, |
372 |
$transfer = $item->request_transfer( |
372 |
reason => $trigger, |
373 |
{ |
373 |
ignore_limits => 1, |
374 |
to => $to_library, |
374 |
replace => 1 |
375 |
reason => $trigger, |
|
|
376 |
ignore_limits => 1, |
377 |
} |
378 |
); |
379 |
} catch { |
380 |
if ( $_->isa('Koha::Exceptions::Item::Transfer::InQueue') ) { |
381 |
my $exception = $_; |
382 |
my $found_transfer = $_->transfer; |
383 |
|
384 |
# If StockRotationAdvance, leave in place but ensure transit state is reset |
385 |
if ( $found_transfer->reason eq 'StockrotationAdvance' ) { |
386 |
$transfer = $item->request_transfer( |
387 |
{ |
388 |
to => $to_library, |
389 |
reason => $trigger, |
390 |
ignore_limits => 1, |
391 |
enqueue => 1 |
392 |
} |
393 |
); |
394 |
|
395 |
# Ensure transit is reset |
396 |
$found_transfer->datesent(undef)->store; |
397 |
} else { |
398 |
$transfer = $item->request_transfer( |
399 |
{ |
400 |
to => $to_library, |
401 |
reason => $trigger, |
402 |
ignore_limits => 1, |
403 |
replace => 1 |
404 |
} |
405 |
); |
406 |
} |
407 |
} else { |
408 |
$_->rethrow(); |
375 |
} |
409 |
} |
376 |
); |
410 |
}; |
377 |
|
411 |
|
378 |
# Immediately set the item to in transit if it is checked in |
412 |
# Immediately set the item to in transit if it is checked in |
379 |
if ( !$item->checkout ) { |
413 |
if ( !$item->checkout ) { |
380 |
$item->holdingbranch($frombranch)->store( |
414 |
$item->holdingbranch($frombranch)->store( |
381 |
{ |
415 |
{ |
382 |
log_action => 0, |
416 |
log_action => 0, |
383 |
skip_record_index => 1, # avoid indexing duplication, let ->transit handle it |
417 |
skip_record_index => 1, # avoid indexing duplication, let ->transit handle it |
384 |
} |
418 |
} |
385 |
); |
419 |
); |
386 |
$transfer->transit({ skip_record_index => $params->{skip_record_index} }); |
420 |
$transfer->transit( { skip_record_index => $params->{skip_record_index} } ); |
387 |
} |
421 |
} |
388 |
|
422 |
|
389 |
return $transfer; |
423 |
return $transfer; |