FactoryBot.define do
	factory :receita_da_projecao_padrao, class: 'Projecao::Receita' do
		padrao {false}
		tipo_de_receita {'primaria'}
		tipo_de_orcamento {'fiscal'}
		de_convenio {false}

		projecao_de_receita_id {
			ppa = Ppa::Ppa.find_or_create_by!( FactoryBot.attributes_for :ppa_fortaleza_2020 )
			ppa.projecao_de_receita.id
		}

		novo_tipo {false}

		trait :novo_tipo do
			novo_tipo {true}
			tipo_de_deducao_id {
				Loa::TipoDeDeducao.find_or_create_by!( FactoryBot.attributes_for(  :tipo_de_deducao_sem_deducao ) ).id
			}
		end

		trait :criar_niveis_acima do
			before(:create) { |receita|
				codigo_da_iteracao = ''

				niveis = receita.classificacao_com_niveis_utilizados.values
				niveis.pop
				niveis.each do |nivel|
					codigo_da_iteracao += nivel
					codigo_completo = Projecao::Receita.completar_codigo_com_zeros(codigo_da_iteracao, receita.novo_tipo)
					if receita.novo_tipo
						FactoryBot.create(:nova_receita_corrente, codigo: codigo_completo)
					else
						FactoryBot.create(:receita_corrente, codigo: codigo_completo)
					end
				end
			}
		end
	end

	factory :nova_receita_corrente_pai, parent: :receita_da_projecao_padrao do
		novo_tipo {}
		codigo {"0011110111000000"}
		descricao {"Nova Receita Corrente Pai"}
	end

	factory :nova_receita_corrente, parent: :receita_da_projecao_padrao do
		novo_tipo {}
		codigo {"0011110111500000"}
		descricao {"Nova Receita Corrente"}
	end

	factory :nova_receita_intra, parent: :receita_da_projecao_padrao do
		novo_tipo {}
		codigo {"0071110111500000"}
		descricao {"Nova Receita Intra"}
	end

	factory :receita_corrente, parent: :receita_da_projecao_padrao do
		codigo {"1235109900"}
		descricao {"Receita Corrente"}
	end

	factory :receita_corrente_pai, parent: :receita_da_projecao_padrao do
		codigo {"1235100000"}
		descricao {"Receita Corrente Pai"}
	end

	factory :receita_intra, parent: :receita_da_projecao_padrao do
		codigo {"7517220101"}
		descricao {"Receita Intra"}
	end

	factory :receita, parent: :receita_da_projecao_padrao do
		codigo {"9235109900"}
		descricao {"Receita"}
	end

	factory :receita_para_ppa_atual, parent: :receita_da_projecao_padrao do
		codigo {"9235109900"}
		descricao {"Receita"}
		projecao_de_receita_id {
			Ppa::Ppa.first.projecao_de_receita.id
		}

	end

	factory :receita_de_capital, parent: :receita_da_projecao_padrao do
		codigo {"2235100000"}
		descricao {"Receita de Capital"}
	end

	factory :nova_receita_corrente_com_tipo_zero, parent: :receita_da_projecao_padrao do
		codigo {"0011110110000000"}
		analitica {false}
	end
end
