require 'active_support/concern'

module SeedReceitasStn extend ActiveSupport::Concern
	def cria_receitas_stn(novo_orcamento)
		unless Rails.env.test?
			Base::ReceitaStn.transaction do
				if exercicio > 2020 && exercicio < 2023
					Rake::Task['db:importa_tabela_da_natureza_da_receita'].invoke(exercicio.to_s, novo_orcamento, 'STN')
				elsif exercicio >= 2023
					Rake::Task['db:importa_tabela_da_natureza_da_receita'].invoke(exercicio.to_s, novo_orcamento, 'TCE')
				else
					ActiveSupport::JSON.decode(File.read("db/data_seeds/base/receitas_stn/#{exercicio}.json")).each do |receita|
						self.receitas_stn.create!(receita.merge(gerar_filhas: true))
					end
				end

				if exercicio == 2018
					[
						{:codigo=>"11180110", :sigla=>"IPTU"},
						{:codigo=>"11180111", :sigla=>"IPTU - Principal"},
						{:codigo=>"11180112", :sigla=>"IPTU - Multas e Juros de Mora"},
						{:codigo=>"11180113", :sigla=>"IPTU - Dívida Ativa"},
						{:codigo=>"11180114", :sigla=>"IPTU - Multas e Juros da Dívida Ativa"},
						{:codigo=>"11130311", :sigla=>"IRRF - Trabalho"},
						{:codigo=>"11130341", :sigla=>"IRRF - Outros Rendimentos"},
						{:codigo=>"11180140", :sigla=>"ITBI"},
						{:codigo=>"11180141", :sigla=>"ITBI - Principal"},
						{:codigo=>"11180142", :sigla=>"ITBI - Multas e Juros"},
						{:codigo=>"11180143", :sigla=>"ITBI - Dívida Ativa"},
						{:codigo=>"11180144", :sigla=>"ITBI - Multas e Juros da Dívida Ativa"},
						{:codigo=>"11180230", :sigla=>"ISS"},
						{:codigo=>"11180231", :sigla=>"ISS - Principal"},
						{:codigo=>"11180232", :sigla=>"ISS - Multas e Juros"},
						{:codigo=>"11180233", :sigla=>"ISS - Dívida Ativa"},
						{:codigo=>"11180234", :sigla=>"ISS - Multas e Juros da Dívida Ativa"},
						{:codigo=>"11210111", :sigla=>"Taxa Inspeção e Fiscalização - Principal"},
						{:codigo=>"11210112", :sigla=>"Taxas - Multas e Juros"},
						{:codigo=>"11210113", :sigla=>"Taxas - Dívida Ativa"},
						{:codigo=>"11220111", :sigla=>"Taxas pela Prestação de Serviços - Principal"},
						{:codigo=>"13100111", :sigla=>"Aluguéis e Arrendamentos - Principal"},
						{:codigo=>"17180121", :sigla=>"FPM"},
						{:codigo=>"17180131", :sigla=>"FPM 1% Dezembro"},
						{:codigo=>"17180141", :sigla=>"FPM 1% Julho"},
						{:codigo=>"17180151", :sigla=>"Cota Parte ITR"},
						{:codigo=>"17180220", :sigla=>"Cota Parte CFEM"},
						{:codigo=>"17180221", :sigla=>"Cota Parte CFEM"},
						{:codigo=>"17180231", :sigla=>"Cota Parte Royalties"},
						{:codigo=>"17180261", :sigla=>"Cota Parte FEP"},
						{:codigo=>"17180311", :sigla=>"Transferências do SUS"},
						{:codigo=>"17180411", :sigla=>"Transferências do FNAS"},
						{:codigo=>"17180500", :sigla=>"Transferências do FNDE"},
						{:codigo=>"17180510", :sigla=>"Salário Educação"},
						{:codigo=>"17180511", :sigla=>"Salário Educação"},
						{:codigo=>"17180521", :sigla=>"PDDE"},
						{:codigo=>"17180531", :sigla=>"PNAE"},
						{:codigo=>"17180541", :sigla=>"PNATE"},
						{:codigo=>"17180591", :sigla=>"Outras Transf. FNDE"},
						{:codigo=>"17180611", :sigla=>"LC Nº 87/96 - Lei Kandir"},
						{:codigo=>"17180800", :sigla=>"Emendas Parlamentares"},
						{:codigo=>"17180810", :sigla=>"Emendas Parlamentares"},
						{:codigo=>"17180811", :sigla=>"Emendas Parlamentares"},
						{:codigo=>"17280111", :sigla=>"ICMS"},
						{:codigo=>"17280121", :sigla=>"IPVA"},
						{:codigo=>"17280131", :sigla=>"IPI"},
						{:codigo=>"17280141", :sigla=>"CIDE"},
						{:codigo=>"17280300", :sigla=>"Transferências do SUS Estadual"},
						{:codigo=>"17280310", :sigla=>"Transferências do SUS Estadual"},
						{:codigo=>"17280311", :sigla=>"Transferências do SUS Estadual"},
						{:codigo=>"17280700", :sigla=>"Transferências do SUAS Estadual"},
						{:codigo=>"17280710", :sigla=>"Transferências do SUAS Estadual"},
						{:codigo=>"17280711", :sigla=>"Transferências do SUAS Estadual"},
						{:codigo=>"17580120", :sigla=>"Complementação da União - Fundeb"},
						{:codigo=>"17580121", :sigla=>"Complementação da União - Fundeb"}
					].each do |stn|
						receita_stn = self.receitas_stn.find_by_codigo(stn[:codigo])
						receita_stn.update(sigla: stn[:sigla])

						self.naturezas_da_receita.where("codigo like ?", "%#{stn[:codigo]}%").all.each do |natureza_da_receita|
							natureza_da_receita.update(sigla: stn[:sigla]) if natureza_da_receita.present?
						end
					end
				end

				# COPIA A PARTIR DO ORÇAMENTO ANTERIOR
				if orcamento_anterior.present?
					orcamento_anterior.receitas_stn.each do |receita_stn_anterior|
						if self.receitas_stn.find_by(codigo: receita_stn_anterior.codigo).nil?
							receita_stn_anterior.dup.tap do |nova_receita_stn|
								nova_receita_stn.orcamento_id = self.id
								nova_receita_stn.save
							end
						end
					end
				end

			end

		end
	rescue => e
	end
end
