FactoryBot.define do
	factory :licitacao_contrato, class: 'Licitacao::Contrato' do
		projeto {
			FactoryBot.create(:licitacao_projeto, :por_lote, status: :homologado)
		}

		projeto_id {
			projeto.reload.id
		}

		contratado {
			Licitacao::Contratado.find_or_create_by!( FactoryBot.attributes_for(:licitacao_contratado, pessoa_do_projeto_id: projeto.reload.pessoas_do_projeto.last.id))
		}

		orcamento_id {
			Orcamento.find_or_create_by!( FactoryBot.attributes_for(:orcamento_2016) ).id
		}

		unidade_orcamentaria_por_pedido_id {
			Licitacao::UnidadeOrcamentariaPorPedido.find_or_create_by!( FactoryBot.attributes_for(:unidade_orcamentaria_por_pedido)).id
		}

		numero { Faker::Number.number(digits: 6) }
		data_do_contrato {"19/10/2016"}
		tipo_de_contrato {"outros_contratos"}
		inicio_da_vigencia {"19/10/2016"}
		fim_da_vigencia {"21/10/2016"}
		status {"fechado"}
		objeto {"texto do objeto"}
		justificativa {"texto da justificativa"}
		arquivo_id {nil}

		trait :com_lotes_do_contrato do
			lotes_do_contrato_attributes {
				{"0" => {lote_id: contratado.pessoa_do_projeto.projeto.lotes.first_or_create(FactoryBot.attributes_for(:licitacao_lote)).id}}
			}
		end

		trait :de_obras do
			tipo_de_contrato {"contrato_de_obras"}
		end

		trait :unidade_orcamentaria_diferente do
			unidade_orcamentaria_por_pedido_id {
				unidade = FactoryBot.create :loa_fes, :orcamento_2016
				FactoryBot.create(:unidade_orcamentaria_por_pedido, unidade_orcamentaria: unidade).id
			}
		end

		trait :com_ata_de_registro_de_preco do
			ata_de_registro_de_preco_id{ FactoryBot.create(:ata_de_registro_de_precos).id }
		end

		after(:create) do |contrato|
			contrato.orcamentos_da_despesa_do_contrato.create(
					orcamento_da_despesa_id: Loa::OrcamentoDaDespesa.find_or_create_by!(FactoryBot.attributes_for(:orcamento_da_despesa_saude)).id,
					sub_elemento_de_despesa: FactoryBot.create(:sub_elemento_de_despesa_outros_materiais_de_consumo),
					valor: 200.00
				)
		end
	end

end
