FactoryBot.define do
	factory :conta_patrimonial_evento_padrao, class: 'Contabilidade::ContaPorEventoContabil' do
		evento_contabil {
			Contabilidade::EventoContabil.find_by( FactoryBot.attributes_for(:evento_contabil, :empenhar) ) ||
				FactoryBot.create( :evento_contabil, :empenhar) # Há um bloco de código associado ao to_create dessa factory
		}

		trait :conta_credor do
			conta {
				criar_conta = lambda { |attrs|
				conta = Contabilidade::Conta.new( attrs )
				conta.save(validate: false)

				conta
				}

				attrs = FactoryBot.attributes_for( :conta_patrimonial_dois )
				Contabilidade::Conta.find_by( attrs ) || criar_conta.call(attrs)
				}
		end

		trait :conta_devedor do
			conta {
				criar_conta = lambda { |attrs|
				conta = Contabilidade::Conta.new( attrs )
				conta.save(validate: false)

				conta
				}

				attrs = FactoryBot.attributes_for( :conta_patrimonial )
				Contabilidade::Conta.find_by( attrs ) || criar_conta.call(attrs)
				}
		end

		trait :conta_controle do
			conta {
				criar_conta = lambda { |attrs|
				conta = Contabilidade::Conta.new( attrs )
				conta.save(validate: false)

				conta
				}

				attrs = FactoryBot.attributes_for( :conta_controle )
				Contabilidade::Conta.find_by( attrs ) || criar_conta.call(attrs)
				}
		end

		trait :debito do
			tipo_de_lancamento {'debito'}
		end

		trait :credito do
			tipo_de_lancamento {'credito'}
		end
	end
end
