FactoryBot.define do
	factory :loa_hgf, class: 'Loa::UnidadeOrcamentaria' do
		codigo {"0002"}
		nome {"Hospital Geral de Fortaleza"}
		sigla {"HGF"}
		status_do_orcamento {0}

		after(:create) { |unidade|
			unidade.ordenadores_de_despesa.create( FactoryBot.attributes_for :ordenador_de_despesa )
		}

		trait :orcamento_2016 do
			after(:build) do |unidade|
				unidade.orcamento ||= Orcamento.find_or_create_by(FactoryBot.attributes_for(:orcamento_2016))
				unidade.tipo_de_unidade_administrativa ||= Base::TipoDeUnidadeAdministrativa.find_or_create_by(FactoryBot.attributes_for(:unidade_outros, :orcamento_2016))
				unidade.unidade_gestora ||= Loa::UnidadeGestora.find_or_create_by(FactoryBot.attributes_for(:loa_gestora_seduc, :orcamento_2016))
				unidade.tipo_de_administracao ||= Base::TipoDeAdministracao.find_or_create_by(FactoryBot.attributes_for(:administracao_direta, :orcamento_2016))
			end
		end

		trait :orcamento_2017 do
			after(:build) do |unidade|
				unidade.orcamento ||= FactoryBot.create(:orcamento_2017)
				unidade.tipo_de_unidade_administrativa ||= FactoryBot.create(:unidade_outros, :orcamento_2017)
				unidade.unidade_gestora ||= FactoryBot.create(:loa_gestora_seduc, :orcamento_2017)
				unidade.tipo_de_administracao ||= FactoryBot.create(:administracao_direta, :orcamento_2017)
			end
		end

		trait :sefin do
			is_unidade_arrecadadora {true}
		end
	end

	factory :loa_fes, class: 'Loa::UnidadeOrcamentaria' do
		codigo {"0003"}
		nome {"Fundo Especial"}
		sigla {"FES"}
		status_do_orcamento {0}

		after(:create) { |unidade|
			unidade.ordenadores_de_despesa.create( FactoryBot.attributes_for :ordenador_de_despesa )
		}

		trait :orcamento_2016 do
			orgao_id {
				Loa::Orgao.find_or_create_by!( FactoryBot.attributes_for(:loa_desenvolvimento_economico, :orcamento_2016) ).id
			}

			unidade_gestora_id {
				Loa::UnidadeGestora.find_or_create_by!( FactoryBot.attributes_for(:loa_gestora_fes, :orcamento_2016) ).id
			}

			tipo_de_administracao_id {
				Base::TipoDeAdministracao.find_or_create_by!( FactoryBot.attributes_for(:administracao_direta, :orcamento_2016)).id
			}

			tipo_de_unidade_administrativa_id {
				Base::TipoDeUnidadeAdministrativa.find_or_create_by!( FactoryBot.attributes_for(:unidade_outros, :orcamento_2016) ).id
			}
		end

		trait :orcamento_2017 do
			orgao_id {
				Loa::Orgao.find_or_create_by!( FactoryBot.attributes_for(:loa_desenvolvimento_economico, :orcamento_2017) ).id
			}

			unidade_gestora_id {
				Loa::UnidadeGestora.find_or_create_by!( FactoryBot.attributes_for(:loa_gestora_fes, :orcamento_2017) ).id
			}

			tipo_de_administracao_id {
				Base::TipoDeAdministracao.find_or_create_by!( FactoryBot.attributes_for(:administracao_direta, :orcamento_2017) ).id
			}

			tipo_de_unidade_administrativa_id {
				Base::TipoDeUnidadeAdministrativa.find_or_create_by!( FactoryBot.attributes_for(:unidade_outros, :orcamento_2017) ).id
			}
		end
	end

	factory :loa_seduc, class: 'Loa::UnidadeOrcamentaria' do
		codigo {"0004"}
		nome {"Secretaria de Educação"}
		sigla {"Seduc"}
		status_do_orcamento {0}

		after(:create) { |unidade|
			unidade.ordenadores_de_despesa.create( FactoryBot.attributes_for :ordenador_de_despesa )
		}

		trait :orcamento_2016 do
			orgao_id {
				Loa::Orgao.find_or_create_by!( FactoryBot.attributes_for(:loa_secretaria_da_educacao, :orcamento_2016) ).id
			}

			unidade_gestora_id {
				Loa::UnidadeGestora.find_or_create_by!( FactoryBot.attributes_for(:loa_gestora_seduc, :orcamento_2016) ).id
			}

			tipo_de_administracao_id {
				Base::TipoDeAdministracao.find_or_create_by!( FactoryBot.attributes_for(:administracao_direta, :orcamento_2016) ).id
			}

			tipo_de_unidade_administrativa_id {
				Base::TipoDeUnidadeAdministrativa.find_or_create_by!( FactoryBot.attributes_for(:unidade_outros, :orcamento_2016) ).id
			}
		end

		trait :orcamento_2017 do
			orgao_id {
				Loa::Orgao.find_or_create_by!( FactoryBot.attributes_for(:loa_secretaria_da_educacao, :orcamento_2017) ).id
			}

			unidade_gestora_id {
				Loa::UnidadeGestora.find_or_create_by!( FactoryBot.attributes_for(:loa_gestora_seduc, :orcamento_2017) ).id
			}

			tipo_de_administracao_id {
				Base::TipoDeAdministracao.find_or_create_by!( FactoryBot.attributes_for(:administracao_direta, :orcamento_2017) ).id
			}

			tipo_de_unidade_administrativa_id {
				Base::TipoDeUnidadeAdministrativa.find_or_create_by!( FactoryBot.attributes_for(:unidade_outros, :orcamento_2017) ).id
			}
		end
	end

	factory :loa_pref, class: 'Loa::UnidadeOrcamentaria' do
		codigo {"AAA"}
		nome {"Prefeitura de Beberibe"}
		sigla {"Pref"}
		status_do_orcamento {0}

		trait :orcamento_2016 do
			orgao_id {
				Loa::Orgao.find_or_create_by!( FactoryBot.attributes_for(:loa_prefeitura, :orcamento_2016) ).id
			}

			unidade_gestora_id {
				Loa::UnidadeGestora.find_or_create_by!( FactoryBot.attributes_for(:loa_gestora_pref, :orcamento_2016) ).id
			}

			tipo_de_administracao_id {
				Base::TipoDeAdministracao.find_or_create_by!( FactoryBot.attributes_for(:administracao_direta, :orcamento_2016)).id
			}

			tipo_de_unidade_administrativa_id {
				Base::TipoDeUnidadeAdministrativa.find_or_create_by!( FactoryBot.attributes_for(:unidade_prefeitura, :orcamento_2016) ).id
			}
		end

		trait :orcamento_2017 do
			orgao_id {
				Loa::Orgao.find_or_create_by!( FactoryBot.attributes_for(:loa_prefeitura, :orcamento_2017) ).id
			}

			unidade_gestora_id {
				Loa::UnidadeGestora.find_or_create_by!( FactoryBot.attributes_for(:loa_gestora_pref, :orcamento_2017) ).id
			}

			tipo_de_administracao_id {
				Base::TipoDeAdministracao.find_or_create_by!( FactoryBot.attributes_for(:administracao_direta, :orcamento_2017)).id
			}

			tipo_de_unidade_administrativa_id {
				Base::TipoDeUnidadeAdministrativa.find_or_create_by!( FactoryBot.attributes_for(:unidade_prefeitura, :orcamento_2017) ).id
			}
		end
	end
end
