class Licitacao::OrcamentoDaDespesaPorPedido < ApplicationRecord
	has_paper_trail

	attr_accessor :elemento_de_despesa_por_subacao_id, :subacao_id, :unidade_orcamentaria_id

	belongs_to :pedido
	belongs_to :orcamento_da_despesa, class_name: "Loa::OrcamentoDaDespesa"
	belongs_to :sub_elemento_de_despesa, class_name: "Contabilidade::SubElementoDeDespesa"

	delegate :elemento_de_despesa_por_subacao, to: :orcamento_da_despesa, allow_nil: true
	delegate :subacao, to: :elemento_de_despesa_por_subacao, allow_nil: true
	delegate :unidade_orcamentaria, to: :subacao, allow_nil: true

	validates_presence_of :pedido_id, :orcamento_da_despesa_id, :sub_elemento_de_despesa_id
	validates_uniqueness_of :orcamento_da_despesa_id, scope: [:pedido_id, :sub_elemento_de_despesa_id]

	def classificacao_completa_com_subelemento
		"#{orcamento_da_despesa.classificacao_parcial}
		#{subacao.try(:acao).try(:codigo_completo)}
		#{subacao.try(:codigo) if orcamento_da_despesa.fonte_de_recursos.modulo.trabalha_com_subacao?}
		#{sub_elemento_de_despesa.codigo_formatado}
		#{orcamento_da_despesa.fonte_de_recursos.codigo_completo}"
	end

	def variante_da_classificacao_completa_com_subelemento
		"#{orcamento_da_despesa.classificacao_parcial}
		#{subacao.try(:acao).try(:codigo_completo)}
		#{subacao.try(:codigo) if orcamento_da_despesa.fonte_de_recursos.modulo.trabalha_com_subacao?}
		#{sub_elemento_de_despesa.variante_do_codigo_formatado}
		#{orcamento_da_despesa.fonte_de_recursos.codigo_completo}"
	end
end
