From 45bc82bb7df4f27d3a9930ee72840aba464b7268 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 22 May 2017 14:30:48 -0300 Subject: [PATCH] Bug 18651: Update accountlines.issue_id is the issue_id has been changed during the move Signed-off-by: Kyle M Hall Signed-off-by: Chris Cormack Signed-off-by: Marcel de Rooy (cherry picked from commit be3d39c8b1e2671790ee5cb5cc7295eec3774a35) Signed-off-by: Fridolin Somers --- C4/Circulation.pm | 3 +++ t/db_dependent/Circulation/Returns.t | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 7e142ef702..7b6a83e09d 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2175,6 +2175,7 @@ sub MarkIssueReturned { $schema->txn_do(sub { $dbh->do( $query, undef, @bind ); + my $original_issue_id = $issue_id; my $id_already_exists = $dbh->selectrow_array( q|SELECT COUNT(*) FROM old_issues WHERE issue_id = ?|, undef, $issue_id @@ -2191,6 +2192,8 @@ sub MarkIssueReturned { $dbh->do(q|INSERT INTO old_issues SELECT * FROM issues WHERE issue_id = ?|, undef, $issue_id); + $dbh->do(q|UPDATE accountlines SET issue_id = ? WHERE issue_id = ?|, undef, $issue_id, $original_issue_id); + # anonymise patron checkout immediately if $privacy set to 2 and AnonymousPatron is set to a valid borrowernumber if ( $privacy == 2) { $dbh->do(q|UPDATE old_issues SET borrowernumber=? WHERE issue_id = ?|, undef, $anonymouspatron, $issue_id); diff --git a/t/db_dependent/Circulation/Returns.t b/t/db_dependent/Circulation/Returns.t index 9d295e5985..69cf30965a 100644 --- a/t/db_dependent/Circulation/Returns.t +++ b/t/db_dependent/Circulation/Returns.t @@ -296,8 +296,11 @@ subtest 'Handle ids duplication' => sub { my ($doreturn, $messages, $new_checkout, $borrower) = AddReturn( $item->{barcode}, undef, undef, undef, dt_from_string ); - my $account_lines = Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber, issue_id => $new_checkout->{issue_id} }); - is( $account_lines->count, 1, 'One account line should exist on new issue_id' ); + my $account_lines = Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber, issue_id => $original_checkout->issue_id }); + is( $account_lines->count, 0, 'No account lines should exist on old issue_id' ); + + $account_lines = Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber, issue_id => $new_checkout->{issue_id} }); + is( $account_lines->count, 2, 'Two account lines should exist on new issue_id' ); isnt( $original_checkout->issue_id, $new_checkout->{issue_id}, 'AddReturn should return the issue with the new issue_id' ); isnt( $old_checkout->itemnumber, $item->{itemnumber}, 'If an item is checked-in, it should be moved to old_issues even if the issue_id already existed in the table' ); -- 2.39.5