class AddSequencialDoSimToContabilidadePagamento < ActiveRecord::Migration[5.2]
  def change
    add_column :contabilidade_pagamentos, :sequencial_do_sim, :string, limit: 8

    Contabilidade::Pagamento.all.group_by {|pagamento| pagamento.liquidacao.empenho}.each do |agrupamento|
      pagamentos = agrupamento[1]

      pagamentos.sort_by{|pagamento| pagamento.data}.each_with_index do |pagamento, index|
          sequencial = "#{index + 1}"
          if pagamento.orcamento.present?
            pagamento.update_attribute(:sequencial_do_sim, "#{pagamento.orcamento.exercicio}#{sequencial.insert(0, "0" * (4 - sequencial.size))}")
          end
      end
    end
  end
end
