View | Details | Raw Unified | Return to bug 18651
Collapse All | Expand All

(-)a/C4/Circulation.pm (-16 / +16 lines)
Lines 2176-2205 sub MarkIssueReturned { Link Here
2176
        $dbh->do( $query, undef, @bind );
2176
        $dbh->do( $query, undef, @bind );
2177
2177
2178
        my $original_issue_id = $issue_id;
2178
        my $original_issue_id = $issue_id;
2179
        my $id_already_exists = $dbh->selectrow_array(
2179
        my $issue = Koha::Checkouts->find( $issue_id ); # FIXME should be fetched earlier
2180
            q|SELECT COUNT(*) FROM old_issues WHERE issue_id = ?|,
2181
            undef, $issue_id
2182
        );
2183
2180
2184
        if ( $id_already_exists ) {
2181
        # Create the old_issues entry
2185
            my $new_issue_id = $dbh->selectrow_array(q|SELECT MAX(issue_id)+1 FROM old_issues|);
2182
        my $old_checkout_data = $issue->unblessed;
2186
            $dbh->do(
2183
2187
                q|UPDATE issues SET issue_id = ? WHERE issue_id = ?|,
2184
        if ( Koha::Old::Checkouts->find( $issue_id ) ) {
2188
                undef, $new_issue_id, $issue_id
2185
            my $new_issue_id = Koha::Old::Checkouts->search(
2189
            );
2186
                {},
2187
                { columns => [ { max_issue_id => { max => 'issue_id' } } ] }
2188
            )->get_column('max_issue_id') + 1;
2190
            $issue_id = $new_issue_id;
2189
            $issue_id = $new_issue_id;
2191
        }
2190
        }
2191
        $old_checkout_data->{issue_id} = $issue_id;
2192
        my $old_checkout = Koha::Old::Checkout->new($old_checkout_data)->store;
2192
2193
2193
        $dbh->do(q|INSERT INTO old_issues SELECT * FROM issues WHERE issue_id = ?|, undef, $issue_id);
2194
        # Update the fines
2194
2195
        $dbh->do(q|UPDATE accountlines SET issue_id = ? WHERE issue_id = ?|, undef, $old_checkout->issue_id, $issue->issue_id);
2195
        $dbh->do(q|UPDATE accountlines SET issue_id = ? WHERE issue_id = ?|, undef, $issue_id, $original_issue_id);
2196
2196
2197
        # anonymise patron checkout immediately if $privacy set to 2 and AnonymousPatron is set to a valid borrowernumber
2197
        # anonymise patron checkout immediately if $privacy set to 2 and AnonymousPatron is set to a valid borrowernumber
2198
        if ( $privacy == 2) {
2198
        if ( $privacy == 2) {
2199
            $dbh->do(q|UPDATE old_issues SET borrowernumber=? WHERE issue_id = ?|, undef, $anonymouspatron, $issue_id);
2199
            $dbh->do(q|UPDATE old_issues SET borrowernumber=? WHERE issue_id = ?|, undef, $anonymouspatron, $old_checkout->issue_id);
2200
        }
2200
        }
2201
2201
2202
        $dbh->do(q|DELETE FROM issues WHERE issue_id = ?|, undef, $issue_id);
2202
        # Delete the issue
2203
        $issue->delete;
2203
2204
2204
        ModItem( { 'onloan' => undef }, undef, $itemnumber );
2205
        ModItem( { 'onloan' => undef }, undef, $itemnumber );
2205
2206
2206
- 

Return to bug 18651