class Contabilidade::TransferenciaNaoFinanceira < ApplicationRecord
	has_paper_trail

	include TradutorConcern

	attr_default :tipo_de_movimento, :original

	belongs_to :conta

	belongs_to :unidade_orcamentaria_origem, class_name: "Loa::UnidadeOrcamentaria", foreign_key: "unidade_orcamentaria_origem_id"
	belongs_to :unidade_orcamentaria_destino, class_name: "Loa::UnidadeOrcamentaria", foreign_key: "unidade_orcamentaria_destino_id"

	validates :data, :conta_id, :tipo_de_movimento, :unidade_orcamentaria_origem, :unidade_orcamentaria_destino, presence: true
	validates :descricao, :numero_do_tombamento, :valor_liquido_contabil, :historico, :orcamento_id, presence: true

	validates_numericality_of :valor_liquido_contabil, greater_than: 0

	validates :data, data_nao_pode_estar_no_futuro: true
	validates :data, sabado_ou_domingo_ou_feriado: true
	validates :data, date: true

	validate :unidades_orcamentarias_nao_podem_ser_iguais

	enum tipo_de_movimento: {
		original: 1,
		estorno: 2
	}

	def self.tipos_de_movimento_mapeados
		tipos_de_movimento.collect { |tipo| [localizar('tipo_de_movimento', tipo[0]), tipo[0]] }
	end

	def unidades_orcamentarias_nao_podem_ser_iguais
		errors.add(:unidade_orcamentaria_destino, "deve ser diferente da unidade orçamentário de origem") if unidade_orcamentaria_origem == unidade_orcamentaria_destino
	end
end