From be71dc6777ca125f834aab36a990fd6e6427cdab Mon Sep 17 00:00:00 2001 From: Lucas Gass Date: Thu, 13 Mar 2025 21:35:32 +0000 Subject: [PATCH] Bug 31698: Report errors and failures back to request.tt --- Koha/Hold.pm | 19 ++++- .../prog/en/includes/holds_table.inc | 10 ++- .../prog/en/modules/reserve/request.tt | 85 ++++++++++++++++--- 3 files changed, 99 insertions(+), 15 deletions(-) diff --git a/Koha/Hold.pm b/Koha/Hold.pm index 2368e0b53e4..36336dad812 100644 --- a/Koha/Hold.pm +++ b/Koha/Hold.pm @@ -187,9 +187,10 @@ $hold->move_hold_item(); sub move_hold_item { my ( $self, $args ) = @_; - my $new_itemnumber = $args->{new_itemnumber}; - my $new_biblionumber = $args->{new_biblionumber}; - my $original = $self; + my $new_itemnumber = $args->{new_itemnumber}; + my $new_biblionumber = $args->{new_biblionumber}; + my $original = $self; + my $original_biblionumber = $self->biblionumber; my $patron = Koha::Patrons->find( { borrowernumber => $self->borrowernumber } ); my $new_item = Koha::Items->find( { itemnumber => $new_itemnumber } ); @@ -201,10 +202,20 @@ sub move_hold_item { C4::Reserves::CanItemBeReserved( $patron, $new_item, $self->branchcode, { ignore_hold_counts => 1 } ); if ( $canReserve->{status} eq 'OK' ) { + + # Find the lowest priority among holds on the new item + my $highest_new_priority = Koha::Holds->search( + { biblionumber => $new_biblionumber }, + { order_by => { -desc => 'priority' }, rows => 1 } + )->next; + my $next_available_priority = + $highest_new_priority ? $highest_new_priority->priority + 1 : 1; # Always start at 1 if empty + $self->update( { itemnumber => $new_item->itemnumber, - biblionumber => $new_item->biblionumber + biblionumber => $new_item->biblionumber, + priority => $next_available_priority, } ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc index 2d65e83dc1f..d031f55dc2e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc @@ -49,7 +49,15 @@ [%- END -%] [% SET tr_class = hold.suspend ? 'suspend' : '' %] - + diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt index 03e0b966edb..afc5d935288 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -174,6 +174,60 @@ [% END %] + [% IF ( hold_move_successes ) %] +
+

Moved the following holds:

+ +
+ [% END %] + [% IF ( hold_move_failures ) %] +
+ One or more holds were not moved due to following errors: + +
+ [% END %] + [% IF ( failed_holds ) %]
One or more holds were not placed due to following errors: @@ -1437,12 +1491,13 @@