class Contabilidade::ComplementoPorFonteDoTalaoDeReceita < ApplicationRecord
	has_paper_trail
	include TradutorConcern

	belongs_to :talao_de_receita, class_name: 'Contabilidade::TalaoDeReceita'
	belongs_to :orcamento_da_receita, class_name: 'Loa::OrcamentoDaReceita', required: true
	belongs_to :arquivo, class_name: 'Tcm::Arquivo', required: false

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

	validates_presence_of :complementacao_da_fonte_de_recurso, if: Proc.new {self.talao_de_receita.try(:orcamento).try(:exercicio).to_i < 2022 || ["1706000000", "2706000000", "1710000000", "2710000000"].include?(self.orcamento_da_receita.try(:fonte_de_recursos).try(:codigo_completo))}
	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 percentual
		valor_total_do_talao = talao_de_receita.valor.to_f
		percentual_da_fonte = ((valor.to_f * 100.0)/valor_total_do_talao).to_f.round(2)
	end

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

	def documento_de_identificao
		if talao_de_receita.pessoa.diversos_contribuintes?
			talao_de_receita.pessoa.id
		elsif talao_de_receita.pessoa.folha_de_pagamento?
			if talao_de_receita.conta_bancaria_por_unidade_orcamentaria&.unidade_orcamentaria&.tipo_de_unidade_administrativa&.poder_associado == "legislativo"
				talao_de_receita.conta_bancaria_por_unidade_orcamentaria.unidade_orcamentaria.unidade_gestora.cnpj
			else
				Configuracao.last.try(:cnpj_da_prefeitura)
			end
		else
			talao_de_receita.pessoa.cpf.present? ? talao_de_receita.pessoa.cpf : talao_de_receita.pessoa.cnpj
		end
	end
end
