@@ -, +, @@ --- C4/Circulation.pm | 6 ++++++ Koha/Exceptions/Checkout.pm | 15 +++++++++++++++ svc/renew | 13 +++++++++++-- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 Koha/Exceptions/Checkout.pm --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -62,6 +62,7 @@ use Koha::Charges::Fees; use Koha::Config::SysPref; use Koha::Checkouts::ReturnClaims; use Koha::SearchEngine::Indexer; +use Koha::Exceptions::Checkout; use Carp; use List::MoreUtils qw( uniq any ); use Scalar::Util qw( looks_like_number ); @@ -3039,6 +3040,11 @@ sub AddRenewal { ); $sth->execute( $datedue->strftime('%Y-%m-%d %H:%M'), $renews, $unseen_renewals, $lastreneweddate, $borrowernumber, $itemnumber ); + if ( $sth->err ){ + Koha::Exceptions::Checkout::FailedRenewal->throw( + error => 'Update of issue# ' . $issue->issue_id . ' failed with error: ' . $sth->errstr + ); + } # Update the renewal count on the item, and tell zebra to reindex $renews = ( $item_object->renewals || 0 ) + 1; --- a/Koha/Exceptions/Checkout.pm +++ a/Koha/Exceptions/Checkout.pm @@ -0,0 +1,15 @@ +package Koha::Exceptions::Checkout; + +use Modern::Perl; + +use Exception::Class ( + 'Koha::Exceptions::Checkout' => { + description => "Something went wrong!" + }, + 'Koha::Exceptions::Checkout::FailedRenewal' => { + isa => 'Koha::Exceptions::Checkout', + description => "Renewing checkout failed" + }, +); + +1; --- a/svc/renew +++ a/svc/renew @@ -21,6 +21,7 @@ use Modern::Perl; use CGI; use JSON qw(to_json); +use Try::Tiny; use C4::Circulation; use C4::Context; @@ -67,8 +68,16 @@ if ( $data->{error} && $data->{error} eq 'on_reserve' && C4::Context->preference } if ( $data->{renew_okay} ) { - $date_due = AddRenewal( $borrowernumber, $itemnumber, $branchcode, $date_due, undef, undef, $seen ); - $data->{date_due} = output_pref( { dt => $date_due, as_due_date => 1 } ); + try{ + $date_due = AddRenewal( $borrowernumber, $itemnumber, $branchcode, $date_due, undef, undef, $seen ); + $data->{date_due} = output_pref( { dt => $date_due, as_due_date => 1 } ); + } catch { + if ( ref($_) eq 'Koha::Exceptions::Checkout::FailedRenewal' ) { + $data->{error} = 'renewal_failed'; + } else { + $_->rethrow; + } + }; } print to_json($data); --