class Contabilidade::ComplementoPorFonteDaAnulacaoDoTalao < ApplicationRecord
	has_paper_trail
	include TradutorConcern

	belongs_to :anulacao_do_talao_de_receita, class_name: 'Contabilidade::AnulacaoDoTalaoDeReceita', required: true
	belongs_to :orcamento_da_receita, class_name: 'Loa::OrcamentoDaReceita', required: true
	belongs_to :arquivo, class_name: 'Tcm::Arquivo', required: false

	delegate :talao_de_receita, to: :anulacao_do_talao_de_receita
	delegate :fonte_de_recursos, to: :orcamento_da_receita, allow_nil: true

	attr_default :complementacao_da_fonte_de_recurso, 0000

	validates_numericality_of :valor, greater_than: 0, allow_nil: true

	before_save :verificar_se_he_receita_de_deducao

	enum complementacao_da_fonte_de_recurso: {
		sem_complemento: 0000,
		beneficios_prev_poder_executivo_plano_prev: 1111,
		beneficios_prev_poder_legislativo_plano_prev: 1121,
		beneficios_prev_poder_executivo_plano_financeiro: 2111,
		beneficios_prev_poder_legislativo_plano_financeiro: 2121,
		transferencia_da_uniao_de_emendas_parlam_individuais: 3110,
		transferencia_da_uniao_de_emendas_parlam_de_bancada: 3120,
		transferencia_dos_estados_de_emendas_parlam_individuais:3210,
		transferencia_dos_estados_de_emendas_parlam_de_bancada: 3220		
	}

	def verificar_se_he_receita_de_deducao
		if self.valor > 0
			self.valor = self.valor * -1 if self.anulacao_do_talao_de_receita.talao_de_receita.try(:natureza_da_receita).try(:deducao?)
		end
	end

	def percentual
		valor_total_do_talao = talao_de_receita.valor.to_f
		valor_da_fonte = talao_de_receita.complementos_por_fonte_do_talao_de_receita.find_by(orcamento_da_receita_id: orcamento_da_receita.id).valor.to_f
		percentual_da_fonte = ((valor_da_fonte * 100.0)/valor_total_do_talao).to_f.round(2)
	end
end
