class CorrigindoCamposSaldoTotalDoEmpenho < ActiveRecord::Migration[5.2]
  def change
    change_column :contabilidade_empenhos, :saldo_total, :decimal, precision: 18, scale: 6

    ActiveRecord::Base.connection.execute(
      'UPDATE contabilidade_empenhos SET saldo_total = 
      CASE 
        WHEN contabilidade_empenhos.descriminacao_obrigatoria_de_itens = true THEN a.total
        WHEN contabilidade_empenhos.descriminacao_obrigatoria_de_itens = false THEN contabilidade_empenhos.valor
      END
      FROM (SELECT empenho_id, SUM(total) as total from contabilidade_itens_do_empenho GROUP BY empenho_id) a
      WHERE a.empenho_id = contabilidade_empenhos.id'
    )
  end
end
