class Contabilidade::AgrupamentoDeRetencoesDoControleDePg < ApplicationRecord
	has_paper_trail

	belongs_to :controle_de_pagamento, class_name: "Contabilidade::ControleDePagamento", foreign_key: "controle_de_pagamento_id"
	belongs_to :conta_extra_orcamentaria, foreign_key: "conta_extra_id"

	has_many :contas_do_grupo_de_retencoes_do_controle_de_pg, class_name: "Contabilidade::ContaDoGrupoDeRetencoesDoControleDePg", foreign_key: "agrupamento_id"
	has_many :erros_de_pagamento, class_name: "Contabilidade::ErroDePagamento", as: :modulo, dependent: :destroy

	accepts_nested_attributes_for :contas_do_grupo_de_retencoes_do_controle_de_pg, reject_if: :all_blank, allow_destroy: true
	validates_associated :contas_do_grupo_de_retencoes_do_controle_de_pg

	def visualizar_tipo_de_acao
		if self.tipo_de_acao.eql?('pagar')
			"Pagar"
		elsif self.tipo_de_acao.eql?('pagar_recolher')
			"Pagar/Recolher"
		elsif self.tipo_de_acao.eql?('transferir')
			"Transferir"
		elsif self.tipo_de_acao.eql?('nao_selecionar')
			"Não Selecionar"
		end
	end

	def pagar?
		self.tipo_de_acao.eql?('pagar') ? true : false
	end

	def pagar_recolher?
		self.tipo_de_acao.eql?('pagar_recolher') ? true : false
	end

	def descricao_imposto
		if imposto_type == "Contabilidade::IrrfPessoaJuridica"
			"IRRF - Pessoa Jurídica"
		elsif imposto_type == "Contabilidade::ImpostoSobreServico"
			"ISS"
		elsif imposto_type == "Contabilidade::IrrfPessoaFisica"
			"IRRF - Pessoa Física"
		elsif imposto_type == "Contabilidade::InssPessoaFisica"
			"INSS - Pessoa Física"
		elsif imposto_type == "Contabilidade::InssPessoaJuridica"
			"INSS - Pessoa Jurídica"
		end
	end

	# BOOLEANS
	def todas_as_contas_cadastradas_corretamente?
		contas_cadastradas_corretamente = true
		self.contas_do_grupo_de_retencoes_do_controle_de_pg.each do |conta_grupo|
			if conta_grupo.conta_de_origem.present? && conta_grupo.conta_de_destino.present?
				pessoa_conta_origem = conta_grupo.pessoa_conta_origem
				pessoa_conta_destino = conta_grupo.pessoa_conta_destino

				if !(conta_grupo.conta_origem_id.present? && conta_grupo.conta_destino_id.present? && pessoa_conta_origem.present? && pessoa_conta_destino.present?)
					contas_cadastradas_corretamente = false
				end
			else
				contas_cadastradas_corretamente = false
			end
		end
		return contas_cadastradas_corretamente
	end

	def todas_as_contas_pagas?
		todas_as_contas_pagas = true

		if self.contas_do_grupo_de_retencoes_do_controle_de_pg.any?
			self.contas_do_grupo_de_retencoes_do_controle_de_pg.each do |conta|
				if !conta.pago?
					todas_as_contas_pagas = false
				end
			end
		else
			todas_as_contas_pagas = false
		end

		return todas_as_contas_pagas
	end

	def todas_as_contas_preenchidas?
		todas_as_contas_preenchidas = true

		if self.contas_do_grupo_de_retencoes_do_controle_de_pg.any?
			self.contas_do_grupo_de_retencoes_do_controle_de_pg.each do |conta|
				if conta.conta_origem_id.to_i == 0 || conta.conta_destino_id.to_i == 0
					todas_as_contas_preenchidas = false
					break
				end
			end
		else
			todas_as_contas_preenchidas = false
		end

		return todas_as_contas_preenchidas
	end

end
