diff --git a/db/migrate/20250219205535_fix_invoices_with_incorrect_total_paid_amount.rb b/db/migrate/20250219205535_fix_invoices_with_incorrect_total_paid_amount.rb new file mode 100644 index 00000000000..566c8fdfd8d --- /dev/null +++ b/db/migrate/20250219205535_fix_invoices_with_incorrect_total_paid_amount.rb @@ -0,0 +1,23 @@ +class FixInvoicesWithIncorrectTotalPaidAmount < ActiveRecord::Migration[7.1] + def up + execute <<~SQL + UPDATE invoices + SET total_paid_amount_cents = 0 + WHERE id IN ( + SELECT invoices.id + FROM invoices + LEFT JOIN payments ON invoices.id = payments.invoice_id + LEFT JOIN invoices_payment_requests ON invoices.id = invoices_payment_requests.invoice_id + WHERE payments.id IS NULL + AND invoices_payment_requests.id IS NULL + AND total_amount_cents > 0 + AND invoice_type <> 4 + AND total_amount_cents = total_paid_amount_cents + AND payment_status = 1 + ); + SQL + end + + def down + end +end