class Contabilidade::Relatorios::ContasController < ApplicationController
	include ControllerConcern

	skip_before_action :verifica_se_tem_orcamento_na_sessao!, only: [:imprimir], raise: false
	before_action :authenticate_usuario!
	before_action :autoriza_usuario! , except: [:imprimir]
	before_action :disponibiliza_dependencias

	def imprimir
		relatorio = params[:relatorio]
		if respond_to? relatorio.to_s, :private
			loa = CombinePDF.new
			loa << CombinePDF.parse(send(relatorio))
			send_data loa.to_pdf, filename: "#{relatorio}.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to :back, alert: 'Relatório selecionado não existe'
		end
	end

	private
		def contas_que_sofreram_alteracao
			contas_alteradas
			@exercicio_atual = contexto_atual.exercicio
			@exercicio_anterior = contexto_atual.exercicio - 1

			render_to_string pdf: "contas_que_sofreram_alteracao",
				template: "contabilidade/contas/contas_que_sofreram_alteracao.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
				
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: "Contas que sofreram alterações em relação ao exercício anterior", titulo2: "PCASP: #{contexto_atual.exercicio}" }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end

	def contas_alteradas
		array_exclusoes =
		[
			{ codigo: "2.1.8.8.1.01.02", descricao: "CONTRIBUIÇÃO AO RGPS" },
			{ codigo: "2.1.8.8.1.01.04", descricao: "IMPOSTO SOBRE A RENDA RETIDO NA FONTE - IRRF"},
			{ codigo: "2.1.8.8.1.01.06", descricao: "IMPOSTOS E CONTRIBUIÇÕES DIVERSOS"},
			{ codigo: "2.1.8.8.1.01.07", descricao: "ICMS"},
			{ codigo: "2.1.8.8.1.01.08", descricao: "ISS"},
			{ codigo: "2.1.8.8.1.01.09", descricao: "OUTROS TRIBUTOS ESTADUAIS E MUNICIPAIS"},
			{ codigo: "2.1.8.8.1.01.12", descricao: "ASSISTENCIA A SAUDE - ADMINISTRAÇÃO PROPRIA"},
			{ codigo: "2.1.8.8.1.08.02", descricao: "CONTA ESPECIAL - PRECATÓRIOS"}
		]

		array_inclusoes =
		[
			{ codigo: "2.1.8.8.2.01.02", descricao: "CONTRIBUIÇÃO AO RGPS"},
			{ codigo: "2.1.8.8.2.01.04", descricao: "IMPOSTO SOBRE A RENDA RETIDO NA FONTE - IRRF"},
			{ codigo: "2.1.8.8.2.01.06", descricao: "OUTROS TRIBUTOS FEDERAIS"},
			{ codigo: "2.1.8.8.2.01.07", descricao: "ICMS"},
			{ codigo: "2.1.8.8.2.01.08", descricao: "ISS"},
			{ codigo: "2.1.8.8.2.01.09", descricao: "OUTROS TRIBUTOS ESTADUAIS E MUNICIPAIS"},
			{ codigo: "2.1.8.8.2.01.12", descricao: "ASSISTENCIA A SAUDE - ADMINISTRAÇÃO PROPRIA"},
			{ codigo: "2.1.8.8.3.01.02", descricao: "CONTRIBUIÇÃO AO RGPS"},
			{ codigo: "2.1.8.8.3.01.04", descricao: "IMPOSTO SOBRE A RENDA RETIDO NA FONTE - IRRF"},
			{ codigo: "2.1.8.8.3.01.06", descricao: "OUTROS TRIBUTOS FEDERAIS"},
			{ codigo: "2.1.8.8.3.01.99", descricao: "OUTRAS CONSIGNAÇÕES"},
			{ codigo: "2.1.8.8.4.01.07", descricao: "ICMS"},
			{ codigo: "2.1.8.8.4.01.09", descricao: "OUTROS TRIBUTOS ESTADUAIS"},
			{ codigo: "2.1.8.8.4.01.99", descricao: "OUTRAS CONSIGNAÇÕES"},
			{ codigo: "2.1.8.8.5.01.08", descricao: "ISS"},
			{ codigo: "2.1.8.8.5.01.09", descricao: "OUTROS TRIBUTOS MUNICIPAIS"},
			{ codigo: "2.1.8.8.5.01.99", descricao: "OUTRAS CONSIGNAÇÕES"}
		]
		@contas_excluidas = (contexto_atual.exercicio == 2022) ? array_exclusoes : []
		@contas_incluidas = (contexto_atual.exercicio == 2022) ? array_inclusoes : []
	end
end
