FactoryBot.define do
	factory :subacao_1005_0001, class: 'Loa::Subacao' do
		codigo {"0001"}
		status_do_orcamento {0}

		trait :com_tipo_de_orcamento do
			tipo_de_orcamento_id {
				Base::TipoDeOrcamento.find_or_create_by!( FactoryBot.attributes_for( :seguridade_social, :orcamento_2016 ) ).id
			}
		end

		trait :com_tipo_de_orcamento_fora_do_padrao do
			tipo_de_orcamento_id {
				Base::TipoDeOrcamento.find_or_create_by!( FactoryBot.attributes_for( :orcamento_fiscal, :orcamento_2016 ) ).id
			}
		end

		trait :orcamento_2016 do
			after(:build) do |unidade|
				unidade.acao ||= Loa::Acao.find_or_create_by!(FactoryBot.attributes_for(:acao_9005, :orcamento_2016 ))
				unidade.unidade_orcamentaria ||= Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_hgf, :orcamento_2016))
				unidade.funcao ||= Base::Funcao.find_or_create_by!(FactoryBot.attributes_for(:funcao_saude, :orcamento_2016))
				unidade.subfuncao ||= Base::Subfuncao.find_or_create_by!(FactoryBot.attributes_for(:subfuncao_tecnologia_da_informacao, :orcamento_2016))
			end
		end

		trait :orcamento_2017 do
			acao_id {
				Loa::Acao.find_or_create_by!(FactoryBot.attributes_for(:acao_9005, :orcamento_2017 )).id
			}

			unidade_orcamentaria_id {
				Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_hgf, :orcamento_2017)).id
			}

			funcao_id {
				Base::Funcao.find_or_create_by!(FactoryBot.attributes_for(:funcao_saude, :orcamento_2017)).id
			}

			subfuncao_id {
				Base::Subfuncao.find_or_create_by!(FactoryBot.attributes_for(:subfuncao_tecnologia_da_informacao, :orcamento_2017)).id
			}

		end
	end

	factory :subacao_1005_0002, class: 'Loa::Subacao' do
		codigo {"0002"}
		status_do_orcamento {0}

		trait :com_tipo_de_orcamento do
			tipo_de_orcamento_id {
				Base::TipoDeOrcamento.find_or_create_by!( FactoryBot.attributes_for( :orcamento_fiscal, :orcamento_2016 ) ).id
			}
		end

		trait :orcamento_2016 do
			acao_id {
				Loa::Acao.find_or_create_by!(FactoryBot.attributes_for(:acao_9001, :orcamento_2016 )).id
			}

			unidade_orcamentaria_id {
				Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_fes, :orcamento_2016)).id
			}

			funcao_id {
				Base::Funcao.find_or_create_by!(FactoryBot.attributes_for(:funcao_administracao, :orcamento_2016)).id
			}

			subfuncao_id {
				Base::Subfuncao.find_or_create_by!(FactoryBot.attributes_for(:subfuncao_tecnologia_da_informacao, :orcamento_2016)).id
			}

		end

		trait :orcamento_2017 do
			acao_id {
				Loa::Acao.find_or_create_by!(FactoryBot.attributes_for(:acao_9001, :orcamento_2017 )).id
			}
			unidade_orcamentaria_id {
				Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_fes, :orcamento_2017)).id
			}

			funcao_id {
				Base::Funcao.find_or_create_by!(FactoryBot.attributes_for(:funcao_administracao, :orcamento_2017)).id
			}
			subfuncao_id {
				Base::Subfuncao.find_or_create_by!(FactoryBot.attributes_for(:subfuncao_tecnologia_da_informacao, :orcamento_2017)).id
			}

		end
	end

	factory :subacao_1005_0003, class: 'Loa::Subacao' do
		codigo {"9784"}
		status_do_orcamento {0}

		trait :com_tipo_de_orcamento do
			tipo_de_orcamento_id {
				Base::TipoDeOrcamento.find_or_create_by!( FactoryBot.attributes_for( :seguridade_social, :orcamento_2016 ) ).id
			}
		end

		trait :com_tipo_de_orcamento_fora_do_padrao do
			tipo_de_orcamento_id {
				Base::TipoDeOrcamento.find_or_create_by!( FactoryBot.attributes_for( :orcamento_fiscal, :orcamento_2016 ) ).id
			}
		end

		trait :orcamento_2016 do
			acao_id {
				Loa::Acao.find_or_create_by!(FactoryBot.attributes_for(:acao_9005, :orcamento_2016 )).id
			}

			unidade_orcamentaria_id {
				Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_seduc, :orcamento_2016)).id
			}

			funcao_id {
				Base::Funcao.find_or_create_by!(FactoryBot.attributes_for(:funcao_saude, :orcamento_2016)).id
			}

			subfuncao_id {
				Base::Subfuncao.find_or_create_by!(FactoryBot.attributes_for(:subfuncao_tecnologia_da_informacao, :orcamento_2016)).id
			}

		end

		trait :orcamento_2017 do
			acao_id {
				Loa::Acao.find_or_create_by!(FactoryBot.attributes_for(:acao_9005, :orcamento_2017 )).id
			}
			unidade_orcamentaria_id {
				Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_seduc, :orcamento_2017)).id
			}

			funcao_id {
				Base::Funcao.find_or_create_by!(FactoryBot.attributes_for(:funcao_saude, :orcamento_2017)).id
			}
			subfuncao_id {
				Base::Subfuncao.find_or_create_by!(FactoryBot.attributes_for(:subfuncao_tecnologia_da_informacao, :orcamento_2017)).id
			}

		end
	end
end
