diff --git a/Koha/Recalls.pm b/Koha/Recalls.pm index 2881f5948f..fb11be78c9 100644 --- a/Koha/Recalls.pm +++ b/Koha/Recalls.pm @@ -157,8 +157,13 @@ sub add_recall { second => $checkout_due_date->second } )->add( days => $due_interval ); - $checkout->update( { date_due => $recall_due_date } ) - if DateTime->compare( $recall_due_date, $checkout_due_date ) == -1; + + # update checkout due date if recall due date is sooner + if ( DateTime->compare( $recall_due_date, $checkout_due_date ) == -1 ) { + $checkout->update( { date_due => $recall_due_date } ); + $checkout->item->onloan( $recall_due_date->ymd() ); + $checkout->item->store( { log_action => 0, skip_holds_queue => 1 } ); + } # get itemnumber of most relevant checkout if a biblio-level recall unless ( $recall->item_level ) { $itemnumber = $checkout->itemnumber; } diff --git a/t/db_dependent/Koha/Recalls.t b/t/db_dependent/Koha/Recalls.t index e44ad14111..083fbe142f 100755 --- a/t/db_dependent/Koha/Recalls.t +++ b/t/db_dependent/Koha/Recalls.t @@ -18,7 +18,7 @@ use Modern::Perl; use Test::NoWarnings; -use Test::More tests => 24; +use Test::More tests => 25; use t::lib::Dates; use t::lib::TestBuilder; use t::lib::Mocks; @@ -141,6 +141,12 @@ ok( $checkout_due_date_after_recall lt $initial_checkout_due_date, "Checkout due date has been moved backwards" ); +$item2 = Koha::Items->find( $item2->itemnumber ); +$checkout_due_date_after_recall = dt_from_string($checkout_due_date_after_recall); +is( + t::lib::Dates::compare( $checkout_due_date_after_recall->ymd(), $item2->onloan ), 0, + "items.onloan is updated with adjusted due date" +); Koha::CirculationRules->set_rule( {