From 7b5c1fce5880f8592c5a9dbd40614a760bb2607e Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 18 Oct 2017 13:59:56 -0300 Subject: [PATCH] Bug 19487: Do not return an item if not checked out To recreate: 1 - Manually add a lost fine to a ptron and include a barcode 2 - Attempt to write off the fine 3 - Internal server error 4 - Checkout an item and mark lost to checkin and fine 5 - Attempt to write off line 6 - Internal server error Signed-off-by: Nick Clemens Signed-off-by: Marcel de Rooy Signed-off-by: Jonathan Druart --- C4/Circulation.pm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index b915b34007..18d9a44256 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2129,6 +2129,11 @@ routine in C. sub MarkIssueReturned { my ( $borrowernumber, $itemnumber, $dropbox_branch, $returndate, $privacy ) = @_; + + # Retrieve the issue + my $issue = Koha::Checkouts->find( { itemnumber => $itemnumber } ) or return; + my $issue_id = $issue->issue_id; + my $anonymouspatron; if ( $privacy == 2 ) { # The default of 0 will not work due to foreign key constraints @@ -2143,11 +2148,6 @@ sub MarkIssueReturned { my $schema = $database->schema; my $dbh = C4::Context->dbh; - my $issue_id = $dbh->selectrow_array( - q|SELECT issue_id FROM issues WHERE itemnumber = ?|, - undef, $itemnumber - ); - my $query = 'UPDATE issues SET returndate='; my @bind; if ($dropbox_branch) { @@ -2170,9 +2170,6 @@ sub MarkIssueReturned { # Update the returndate $dbh->do( $query, undef, @bind ); - # Retrieve the issue - my $issue = Koha::Checkouts->find( $issue_id ); # FIXME should be fetched earlier - # Create the old_issues entry my $old_checkout = Koha::Old::Checkout->new($issue->unblessed)->store; -- 2.39.5