class Contabilidade::IrrfPessoaJuridica < ApplicationRecord
	include IncrementadorDeCodigoConcern

	has_paper_trail

	belongs_to :orcamento

	before_validation :atribui_codigo_do_irpj

	validates_uniqueness_of :codigo, scope: :orcamento_id

	validates_presence_of :orcamento_id, :codigo, :descricao, :aliquota, :percentual_da_base_de_calculo

	validates_numericality_of :codigo
	validates_numericality_of :aliquota, greater_than: 0, less_than: 99
	validates_numericality_of :percentual_da_base_de_calculo, greater_than: 0, less_than_or_equal_to: 100

	validates :orcamento_id, immutable: true

	def descricao_para_retencao
		return "#{codigo} - #{descricao}"
	end

	def descricao_para_exibicao
		return "#{codigo} - #{descricao}".truncate(60) + " (Alíquota: #{aliquota.to_f}%/Base de Cálculo: #{percentual_da_base_de_calculo.to_f}%)"
	end

	private
	def atribui_codigo_do_irpj
		gerar_sugestao_codigo( :codigo, 4, { orcamento_id: orcamento_id } ) if orcamento.present? && codigo.blank?
	end
end
