class Contabilidade::InssPessoaJuridica < ApplicationRecord
	include IncrementadorDeCodigoConcern

	has_paper_trail

	belongs_to :orcamento

	before_validation :atribui_codigo_do_insspj

	validates_uniqueness_of :codigo, scope: :orcamento_id

	validates_presence_of :orcamento_id, :codigo, :descricao, :aliquota, :percentual_base_calculo

	validates_numericality_of :codigo
	validates_numericality_of :aliquota, greater_than: 0, less_than: 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: #{self.aliquota}%/Base de cálculo: #{self.percentual_base_calculo}%)"
	end

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

end
