From 77978babe79561d4b810913d72d1d22ee28367d9 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 29 Aug 2025 12:03:13 +0000 Subject: [PATCH] Bug 40708: Return the specific error to the checkin page When implemented, the message here was believed to either be about Duplicate IDs, or guarantor issues. We are now seeing a wider variety of issues possible from SQL errors, lock timeout or missings rows as examples This patch adds an 'ErrorMessage' message to the return from AddReturn and displays it to the user. To test: 1 - Issue an item to a patron, note the itemnumber 2 - On the command line, lock the row: sudo koha-mysql kohadev START TRANSACTION; SELECT * FROM issues WHERE itemnumber=975 FOR UPDATE; leave mysql open at this point 3 - On the interface, check in the item, wait a bit 4 - After a bit you get the error to check the config page, but nothing is there 5 - close mysql, apply patch, restart all 6 - Repeat 2 7 - Check in the item, wait a bit 8 - Note you now get the error from the DB: Error: (DBIx::Class::Storage::DBI::_dbh_execute(): DBI Exception: DBD::mysql::st execute failed: Lock wait timeout exceeded; try restarting transaction at /kohadevbox/koha/Koha/Object.pm line 174 ) 9 - Sign off! Signed-off-by: Brendan Lawlor --- C4/Circulation.pm | 8 ++++++-- circ/returns.pl | 2 ++ .../intranet-tmpl/prog/en/modules/circ/returns.tt | 13 +++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 514eb3ae97..b9d87df933 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2380,14 +2380,18 @@ sub AddReturn { ); } } else { + my $error = "$@"; carp - "The checkin for the following issue failed, Please go to the about page and check all messages on the 'System information' to see if there are configuration / data issues ($@)" + "The checkin for the following issue failed, Please go to the about page and check all messages on the 'System information' to see if there are configuration / data issues, or see the specific message in parentheses ($@)" . Dumper( $issue->unblessed ); my $indexer = Koha::SearchEngine::Indexer->new( { index => $Koha::SearchEngine::BIBLIOS_INDEX } ); $indexer->index_records( $item->biblionumber, "specialUpdate", "biblioserver" ); - return ( 0, { WasReturned => 0, DataCorrupted => 1 }, $issue, $patron_unblessed ); + return ( + 0, { WasReturned => 0, DataCorrupted => 1, ErrorMessage => $error }, $issue, + $patron_unblessed + ); } # FIXME is the "= 1" right? This could be the borrower hash. diff --git a/circ/returns.pl b/circ/returns.pl index 901877ef1e..1295dd85c6 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -731,6 +731,8 @@ foreach my $code ( keys %$messages ) { $err{NotForLoanStatusUpdated} = $messages->{NotForLoanStatusUpdated}; } elsif ( $code eq 'DataCorrupted' ) { $err{data_corrupted} = 1; + } elsif ( $code eq 'ErrorMessage' ) { + $err{error_message} = $messages->{'ErrorMessage'}; } elsif ( $code eq 'ReturnClaims' ) { $template->param( ReturnClaims => $messages->{ReturnClaims} ); } elsif ( $code eq 'ClaimAutoResolved' ) { diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt index e52eeae793..90f37dfabd 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -400,10 +400,15 @@

Reminder: Patron has an indefinite restriction.

[% END %] [% IF errmsgloo.data_corrupted %] -

The item has not been checked in due to a configuration issue in your system. You must ask an administrator to take a look at the about page and correct all - errors shown on the "System information" tab

+

+ The item has not been checked in due to an issue in your system. Note the error below. + An administrator may find further details by looking at the about page and correcting errors shown on the "System information" tab, or note the error below. +

+ [% END %] + [% IF errmsgloo.error_message %] +

+ Error: ([% errmsgloo.error_message | html %])
+

[% END %] [% END # /FOREACH errmsgloo %] -- 2.39.5