FactoryBot.define do
	factory :liquidacao_001, aliases: [:liquidacao], class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, descriminacao_obrigatoria_de_itens: false ) ).id
		}

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

		descrimina_itens_processo_ou_empenho {false}
		data_de_solicitacao {"2016-10-27"}
		data_da_liquidacao {"2016-10-27"}
		valor {123}
		mes_de_competencia {3}
		ano_de_competencia {2017}

		trait :solicitacao do
			status {'solicitado'}
			nota_fiscal_numero {23452}
		end

		trait :unidade_orcamentaria_diferente do
			empenho_id {
				Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, :unidade_orcamentaria_diferente, descriminacao_obrigatoria_de_itens: false ) ).id
			}
		end

	end

	factory :liquidacao_estornada, class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, status: :confirmado, descriminacao_obrigatoria_de_itens: false ) ).id
		}

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

		descrimina_itens_processo_ou_empenho {false}
		data_de_solicitacao {"2016-10-27"}
		data_da_liquidacao {"2016-10-27"}
		valor {123}
		mes_de_competencia {3}
		ano_de_competencia {2017}
		estornada {true}
	end

	factory :liquidacao_com_medicao_da_obra, class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, descriminacao_obrigatoria_de_itens: false ) ).id
		}

		medicao_da_obra_id {
			Contabilidade::MedicaoDaObra.find_or_create_by!( FactoryBot.attributes_for( :medicao_da_obra_0001 ) ).id
		}

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

		descrimina_itens_processo_ou_empenho {false}
		data_da_liquidacao {"2016-10-27"}
		valor {12}
		mes_da_folha {'janeiro'}
		ano_da_folha {16}
		tipo_da_folha {'AD'}
		mes_de_competencia {3}
		ano_de_competencia {2017}
		data_de_emissao_da_folha {"2016-10-27"}
	end

	factory :liquidacao_com_nota_fiscal_de_servico, class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, descriminacao_obrigatoria_de_itens: false ) ).id
		}

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

		data_da_liquidacao {"2016-09-27"}
		valor {123}
		descrimina_itens_processo_ou_empenho {false}
		nota_fiscal_numero {'101010'}
		mes_de_competencia {3}
		ano_de_competencia {2017}

		nota_fiscal_tipo {1}
	end

	factory :liquidacao_com_nota_fiscal_de_mercadoria, class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, descriminacao_obrigatoria_de_itens: false ) ).id
		}

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

		descrimina_itens_processo_ou_empenho {false}
		data_da_liquidacao {"2016-10-27"}
		valor {123}
		mes_da_folha {'janeiro'}
		ano_da_folha {16}
		tipo_da_folha {'AD'}
		data_de_emissao_da_folha {"2016-10-27"}
		mes_de_competencia {3}
		ano_de_competencia {2017}
		nota_fiscal_numero {'101010'}
		nota_fiscal_numero_protocolo_de_autorizacao {'1234567890'}
		nota_fiscal_chave_de_acesso {'1234567890'}
		nota_fiscal_numero_dae {'1234567890'}
		nota_fiscal_serie_do_selo {'A'}
		nota_fiscal_numero_do_selo {'1234567890'}
		nota_fiscal_numero_da_serie_do_selo {'1234567890'}

		nota_fiscal_tipo {2}
	end

	factory :liquidacao_com_folha_de_pagamento, class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, descriminacao_obrigatoria_de_itens: false ) ).id
		}

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

		descrimina_itens_processo_ou_empenho {false}
		data_de_solicitacao {"2016-10-27"}
		valor {123}
		mes_da_folha {'janeiro'}
		ano_da_folha {16}
		tipo_da_folha {'AD'}
		mes_de_competencia {3}
		ano_de_competencia {2017}
		data_de_emissao_da_folha {"2016-10-27"}
	end

	factory :liquidacao_sem_folha_de_pagamento, class: 'Contabilidade::Liquidacao' do
		numero {'001'}

		empenho_id {
			Contabilidade::Empenho.find_or_create_by!( FactoryBot.attributes_for( :empenho_22090001, descriminacao_obrigatoria_de_itens: false ) ).id
		}

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

		descrimina_itens_processo_ou_empenho {false}
		data_da_liquidacao {"2016-09-27"}
		valor {12345.67}
	end

	factory :liquidacao_com_diaria, class: 'Contabilidade::Liquidacao' do
		numero {'001'}
		orcamento_id {
			Orcamento.find_or_create_by!( FactoryBot.attributes_for(:orcamento_2016) ).id
		}
		descrimina_itens_processo_ou_empenho { false }
		empenho { Contabilidade::Empenho.find_or_create_by(attributes_for(:empenho_com_diaria)) }
		data_de_solicitacao { '2016-09-27' }
		data_da_liquidacao { '2016-09-27' }
		valor { 9.99 }
		status { 'solicitado' }

		# evento_contabil {
		# 	Contabilidade::EventoContabil.find_by( FactoryBot.attributes_for(:evento_contabil, :liquidar) ) || FactoryBot.create( :evento_contabil, :liquidar)
		# }
	end
end
