class AddNovasFontesToFontesStn < ActiveRecord::Migration[5.2]
  def change
    orcamento = Orcamento.find_by(exercicio: 2023)

    if orcamento.present?
      [
        { 
          codigo_tipo_exercicio: 1, codigo_principal: '719', orcamento_id: orcamento.id,
          detalhamento_sintetico: '0000', nomenclatura_sintetica: 'Transferências da Política Nacional Aldir Blanc de Fomento à Cultura - Lei nº 14.399/202'
        },
        { 
          codigo_tipo_exercicio: 1, codigo_principal: '715', orcamento_id: orcamento.id,
          detalhamento_sintetico: '0000', nomenclatura_sintetica: 'Transferências Destinadas ao Setor Cultural - LC nº 195/2022 - Art. 5º - Audiovisual'
        },
        { 
          codigo_tipo_exercicio: 1, codigo_principal: '899', orcamento_id: orcamento.id,
          detalhamento_sintetico: '0000', nomenclatura_sintetica: 'Recursos Destinados aos Direitos da Criança e do Adolescente'
        }
      ].each do |fonte_stn_params|
        fonte_stn = ::Base::FontesDeRecursos::FonteStn.find_or_create_by(fonte_stn_params)
        fonte_stn.save(validate: false)

        fonte = ::Base::FontesDeRecursos::FonteTCE.find_or_create_by!(
          modulo_id: orcamento.id,
          modulo_type: 'Orcamento',
          fonte_stn_id: fonte_stn.id,
          descricao: fonte_stn.nomenclatura_sintetica,
          codigo: '00'
        )

        fonte.update_column(:codigo, '01') if fonte_stn.codigo_principal == '899'
      end
    end
  end
end
