From f9df76bafc25834002ae011a73f7f9e36fd18c55 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! --- 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 514eb3ae97a..b9d87df9332 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 901877ef1e5..1295dd85c68 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 e52eeae7936..85754b943e1 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.
+ You must ask an administrator to take a look at the about page and correct all 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