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

	before_action -> { verifica_modulo_na_sessao(["administrativo", "contabilidade", "financeiro", "alteracao_orcamentaria"]) }
	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

	def saldo_comprometido
		@orcamento_da_despesa = Loa::OrcamentoDaDespesa.find_by(id: params[:orcamento_da_despesa_id])
		classificacao_detalhada = @orcamento_da_despesa.classificacao_detalhada
		render_to_string pdf: "saldo_comprometido",
			template: "contabilidade/relatorios/saldo_comprometido.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: classificacao_detalhada, titulo2: "SALDO COMPROMETIDO" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def empenhado
		@orcamento_da_despesa = Loa::OrcamentoDaDespesa.find_by(id: params[:orcamento_da_despesa_id])
		@empenhos = @orcamento_da_despesa.lancamentos_do_orcamento_da_despesa.where(modulo_type: "Contabilidade::Empenho")
		classificacao_detalhada = @orcamento_da_despesa.classificacao_detalhada
		render_to_string pdf: "empenhado",
			template: "contabilidade/relatorios/empenhado.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: classificacao_detalhada, titulo2: "TOTAL EMPENHADO" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def anulado
		@orcamento_da_despesa = Loa::OrcamentoDaDespesa.find_by(id: params[:orcamento_da_despesa_id])
		@anulacoes = @orcamento_da_despesa.anulacoes_do_empenho.confirmados
		classificacao_detalhada = @orcamento_da_despesa.classificacao_detalhada
		render_to_string pdf: "anulado",
			template: "contabilidade/relatorios/anulado.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: classificacao_detalhada, titulo2: "TOTAL ANULADO" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def acrescimo
		@orcamento_da_despesa = Loa::OrcamentoDaDespesa.find_by(id: params[:orcamento_da_despesa_id])
		@acrescimos = @orcamento_da_despesa.lancamentos_do_orcamento_da_despesa.where(modulo_type: "Contabilidade::DotacaoDestino")
		classificacao_detalhada = @orcamento_da_despesa.classificacao_detalhada
		render_to_string pdf: "acrescimo",
			template: "contabilidade/relatorios/acrescimo.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: classificacao_detalhada, titulo2: "TOTAL ACRÉSCIMO" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def reducao
		@orcamento_da_despesa = Loa::OrcamentoDaDespesa.find_by(id: params[:orcamento_da_despesa_id])
		@reducoes = @orcamento_da_despesa.lancamentos_do_orcamento_da_despesa.where(modulo_type: "Contabilidade::DotacaoOrigem")
		classificacao_detalhada = @orcamento_da_despesa.classificacao_detalhada
		render_to_string pdf: "reducao",
			template: "contabilidade/relatorios/reducao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: classificacao_detalhada, titulo2: "TOTAL REDUÇÃO" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def bloqueado
		@orcamento_da_despesa = Loa::OrcamentoDaDespesa.find_by(id: params[:orcamento_da_despesa_id])
		@bloqueados = @orcamento_da_despesa.bloqueio_de_dotacoes.bloqueado
		classificacao_detalhada = @orcamento_da_despesa.classificacao_detalhada
		render_to_string pdf: "bloqueado",
			template: "contabilidade/relatorios/bloqueado.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: classificacao_detalhada, titulo2: "TOTAL BLOQUEADO" }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
