class Loa::Relatorios::ImpressaoDeLoaController < ApplicationController
	include LoaControllersConcern
	include RelatoriosConcern

	before_action :authenticate_usuario!
	before_action :set_loa
	before_action :disponibiliza_dependencias

	skip_before_action :force_pdf_response_format, except: [:imprime_loa]

	# Seleciona quais demonstrativos devem ser incluídos no relatório
	def prepara_impressao_loa
	end

	# Imprime relatório com os demonstrativos selecionados
	def imprime_loa
		relatorios_para_impressao = params[:opcoes] ? params[:opcoes].select {|k,v| v == "1"}.keys : []
		if relatorios_para_impressao.any?
			loa = CombinePDF.new
			loa_numerado = CombinePDF.new
			loa << CombinePDF.load(Rails.root.join('tmp', "capa_ppa.pdf")) if inclui_capa?
			pagina_inicial = inclui_capa? ? loa.pages.size : 0
			relatorios_para_impressao.each { |relatorio|
				loa_numerado << CombinePDF.parse(send(relatorio))
			}

			loa << loa_numerado

			send_data loa.to_pdf, filename: "LOA.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to loa_prepara_impressao_path(@loa), alert: 'Nenhum demonstrativo foi selecionado'
		end
	end

	# seleciona um relatório para imprimir
	def selecionar_relatorio
		@orgaos = @loa.orgaos.order(:codigo)
		@unidades_gestoras = @loa.unidades_gestoras.order(:codigo)
		@unidades_orcamentarias = @loa.unidades_orcamentarias.sort_by {|unidade| unidade.codigo_completo }
		@funcoes = @loa.funcoes.order(:codigo)
		@subfuncoes = @loa.subfuncoes.order(:codigo)
		@fontes = @loa.fontes_de_recursos.order(:codigo)
	end

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

	def quadro_de_evolucao_da_despesa_por_funcao_excel
		@dados_do_relatorio = Loa::Relatorios::QuadroDeEvolucaoDaDespesaPorFuncao.dados_do_relatorio(@loa)
		@titulo = "Quadro de Evolução da Despesa por Função"

		respond_to do |format|
			format.js
			format.xlsx { response.headers['Content-Disposition'] = "attachment; filename=\"#{@titulo.downcase.parameterize}.xlsx\"" }
		end
	end

	def quadro_de_evolucao_da_receita_por_categoria_economica_excel
		@dados_do_relatorio = Loa::Relatorios::QuadroDeEvolucaoDaReceitaPorCategoriaEconomica.dados_do_relatorio( @loa )
		@titulo = "Quadro de Evolução da Receita por Categoria Econômica"
			respond_to do |format|
			format.js
			format.xlsx { response.headers['Content-Disposition'] = "attachment; filename=\"#{@titulo.downcase.parameterize}.xlsx\"" }
		end
	end

	private
		def inclui_numeracao?
			params[:opcoes].try( :[], 'incluir_numeracao') == 'sim'
		end

		def inclui_capa?
			params[:opcoes].try( :[], 'incluir_capa') == 'sim'
		end

		def set_loa
			@loa = Orcamento.find_by( exercicio: params[:exercicio] )
			unless @loa
				redirect_to acesso_negado_path
			end
		end

		def lista_de_relatorios
			if params[:opcoes].present?
				params[:opcoes].select { |key, value| value.match("1") }.keys
			else
				[]
			end
		end

		def capa_relatorios_loa
			configuracao = Configuracao.first
			render_to_string pdf: "capa_relatorios_loa",
				template: "loa/relatorios/impressao_de_loa/capa_relatorios_loa.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {}
		end

		# Relatorios wicked_pdf
		def demonstrativo_do_orcamento_tematico
			if params[:tema].blank?
				@dados = Loa::Relatorios::DemonstrativoDoOrcamentoTematico.dados_geral(@loa)
			else
				@orcamento_tematico = Loa::OrcamentoTematico.find_by(id: params[:tema])
				@dados_unico_tema = Loa::Relatorios::DemonstrativoDoOrcamentoTematico.dados(@loa.id, params[:tema], params[:unidade_orcamentaria])
			end

			titulo = params[:tema] ? 'Demonstrativo do(a) ' + @orcamento_tematico.descricao : 'Demonstrativo do Orçamento Temático'

			render_to_string pdf: "demonstrativo_do_orcamento_tematico",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_do_orcamento_tematico.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: orcamento_titulo(contexto_atual.exercicio) , titulo2: titulo }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def metas_bimestrais_de_arrecadacao_por_natureza_da_receita
			percentuais = [params[:bimestre1].to_i, params[:bimestre2].to_i, params[:bimestre3].to_i,
										params[:bimestre4].to_i,	params[:bimestre5].to_i, params[:bimestre6].to_i]
			@dados = Loa::Relatorios::MetasBimestraisDeArrecadacaoPorNaturezaDaReceita.dados_por_receita(@loa, percentuais)

			render_to_string pdf: "metas_bimestrais_de_arrecadacao_por_natureza_da_receita",
				template: "loa/relatorios/impressao_de_loa/metas_bimestrais_de_arrecadacao_por_natureza_da_receita.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html:
					{
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Metas Bimestrais de Arrecadação por Natureza da Receita"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def critica_de_valores_por_fonte_de_recurso
			@dados_receita = Loa::Relatorios::CriticaDeValoresPorFonteDeRecurso.dados_por_receita(@loa)
			@dados_unidade = Loa::Relatorios::CriticaDeValoresPorFonteDeRecurso.dados_por_unidade(@loa)

			render_to_string pdf: "critica_de_valores_por_fonte_de_recurso",
				template: "loa/relatorios/impressao_de_loa/critica_de_valores_por_fonte_de_recurso.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Relátorio de Crítica de Valores por Fonte de Recurso"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_de_metas_de_arrecadacao
			percentuais = [params[:bimestre1].to_i, params[:bimestre2].to_i, params[:bimestre3].to_i,
										params[:bimestre4].to_i,	params[:bimestre5].to_i, params[:bimestre6].to_i]
			@dados = Loa::Relatorios::DemonstrativoDeMetasDeArrecadacao.dados(@loa, params[:unidade_orcamentaria], percentuais)

			render_to_string pdf: "demonstrativo_de_metas_de_arrecadacao",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_de_metas_de_arrecadacao.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: '', titulo2: "Metas Bimestrais de Arrecadação" }
					},
					spacing: 6
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def quadro_resumo_da_metodologia_de_calculo
			@dados =  Loa::Relatorios::QuadroResumoDaMetodologiaDeCalculo.dados(@loa)

			render_to_string pdf: "quadro_resumo_da_metodologia_de_calculo",
				template: "loa/relatorios/impressao_de_loa/quadro_resumo_da_metodologia_de_calculo.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Quadro de Resumo da Metogologia de Cálculo'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def receita_de_orcamentos_por_categoria_economica_e_origem
			@dados = Loa::Relatorios::ReceitaDosOrcamentosFiscalEDaSeguridadeSocialPorCategoriaEconomicaEOrigem.dados(@loa, params[:unidade_orcamentaria].to_i)

			render_to_string pdf: "receita_de_orcamentos_por_categoria_economica_e_origem",
				template: "loa/relatorios/impressao_de_loa/receita_de_orcamentos_por_categoria_economica_e_origem.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Receita dos Orçamentos Fiscais e da Seguridade Social por Categoria Econômica e Origem'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def receita_fiscal_por_categoria_economica_e_origem
			@dados = Loa::Relatorios::ReceitaDosOrcamentosFiscalEDaSeguridadeSocialPorCategoriaEconomicaEOrigem.dados(@loa,params[:unidade_orcamentaria].to_i)

			render_to_string pdf: "receita_fiscal_por_categoria_economica_e_origem",
			template: "loa/relatorios/impressao_de_loa/receita_fiscal_por_categoria_economica_e_origem.pdf.slim",
			orientation: 'Landscape',
			disable_smart_shrinking: true,
      
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: orcamento_titulo(contexto_atual.exercicio),
						titulo2: "Receita do Orçamento Fiscal por Categoria Econômica e Origem"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
		end

		def receita_seguridade_social_por_categoria_economica_e_origem
			@dados = Loa::Relatorios::ReceitaDosOrcamentosFiscalEDaSeguridadeSocialPorCategoriaEconomicaEOrigem.dados(@loa,params[:unidade_orcamentaria].to_i)

			render_to_string pdf: "receita_seguridade_social_por_categoria_economica_e_origem",
			template: "loa/relatorios/impressao_de_loa/receita_seguridade_social_por_categoria_economica_e_origem.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
      
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: orcamento_titulo(contexto_atual.exercicio),
						titulo2: "Receita do Orçamento da Seguridade Social por Categoria Econômica e Origem"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
		end

		def despesas_dos_orcamentos_fiscal_e_da_seguridade_social_por_poder_orgao_unidade_orcamentaria_fontes_de_recursos_e_grupos_de_natureza_de_despesa
			@dados = Loa::Relatorios::DespesasDosOrcamentosFiscalEDaSeguridadeSocialPorPoderOrgaoUnidadeOrcamentariaFontesDeRecursosEGruposDeNaturezaDeDespesa.dados( @loa.id, params[:orgao], params[:unidade_orcamentaria] )

			render_to_string pdf: "despesas_dos_orcamentos_fiscal_e_da_seguridade_social_por_poder_orgao_unidade_orcamentaria_fontes_de_recursos_e_grupos_de_natureza_de_despesa",
				template: "loa/relatorios/impressao_de_loa/despesas_dos_orcamentos_fiscal_e_da_seguridade_social_por_poder_orgao_unidade_orcamentaria_fontes_de_recursos_e_grupos_de_natureza_de_despesa.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Despesas dos Orcamentos Fiscal Seguridade Social por Poder, Orgão, Unid Orcamentária, Fontes de Recursos e Grupos de Natureza de Despesa"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_consolidado_do_orcamento
			@dados_receita = Loa::Relatorios::DemonstrativoConsolidadoDoOrcamentoReceita.dados(contexto_atual)
			@dados_despesa = Loa::Relatorios::DemonstrativoConsolidadoDoOrcamentoDespesa.dados(contexto_atual)

			render_to_string pdf: "demonstrativo_consolidado_do_orcamento",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_consolidado_do_orcamento.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Demonstrativo Consolidado do Orçamento'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_funcao
			@dados_do_relatorio = Loa::Relatorios::DespesaDosOrcamentosFiscalEDaSeguridadeSocialPorFuncao.dados_do_relatorio( @loa, params[:funcao_id] )

			render_to_string pdf: "despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_funcao",
				template: "loa/relatorios/impressao_de_loa/despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_funcao.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Despesa dos Orçamentos Fiscal e da Seguridade Social por Função'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_programa
			@dados_do_relatorio = Loa::Relatorios::DespesaDosOrcamentosFiscalEDaSeguridadeSocialPorPrograma.dados_do_relatorio( @loa, params[:orgao], params[:unidade_orcamentaria] )

			render_to_string pdf: "despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_programa",
				template: "loa/relatorios/impressao_de_loa/despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_programa.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Despesa dos Orçamentos Fiscal e da Seguridade Social por Programa e Unidade Orçamentaria"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_da_despesa_por_unidades_orcamentarias_e_funcoes
			@dados = Loa::Relatorios::DemonstrativoDaDespesaPorUnidadesOrcamentariasEFuncoes.dados(@loa, params[:unidade_orcamentaria])
			unidade_orcamentaria = Loa::UnidadeOrcamentaria.find_by(id: params[:unidade_orcamentaria])

			render_to_string pdf: "demonstrativo_da_despesa_por_unidades_orcamentarias_e_funcoes",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_da_despesa_por_unidades_orcamentarias_e_funcoes.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo da Despesa Por Unidades Orçamentárias e Funções",
							titulo3: "#{ params[:unidade_orcamentaria].empty? ? "CONSOLIDADO" : unidade_orcamentaria.codigo_completo_e_nome }"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_funcao_e_subfuncao
			@dados_do_relatorio = Loa::Relatorios::DespesaDosOrcamentosFiscalEDaSeguridadeSocialPorFuncaoESubfuncao.dados_do_relatorio( @loa, params[:funcao_id] )
			funcao = Base::Funcao.find_by(id: params[:funcao_id])

			render_to_string pdf: "despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_funcao_e_subfuncao",
				template: "loa/relatorios/impressao_de_loa/despesa_dos_orcamentos_fiscal_e_da_seguridade_social_por_funcao_e_subfuncao.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Despesa dos Orçamentos Fiscal e da Seguridade Social por Função e Subfunção",
							titulo3: "#{ params[:funcao_id].empty? ? "CONSOLIDADO" : "Função: #{ funcao.codigo_e_nome }" }"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def programa_de_trabalho
			if params[:unidade_orcamentaria].present?
				@dados = Loa::ProgramaDeGoverno.joins(acoes: { subacoes: :unidade_orcamentaria }).where('loa_unidades_orcamentarias.id' => params[:unidade_orcamentaria])
			else
				@dados = Loa::ProgramaDeGoverno.where(orcamento_id: contexto_atual.id)
			end
			@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find_by(id: params[:unidade_orcamentaria])

			render_to_string pdf: "programa_de_trabalho",
				template: "loa/relatorios/impressao_de_loa/programa_de_trabalho.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
				
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',	
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Programa de Governo por Órgao e Unidade Orçamentária",
							titulo3: @unidade_orcamentaria.present? ? @unidade_orcamentaria.codigo_completo_e_nome : 'CONSOLIDADO',
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def sumario_geral_das_despesas_por_funcoes_de_governo
			@dados = Loa::Relatorios::SumarioGeralDasDespesasPorFuncoesDeGoverno.dados(@loa.exercicio,params[:funcao_id], params[:unidade_orcamentaria])
			unidade_orcamentaria = Loa::UnidadeOrcamentaria.find_by(id: params[:unidade_orcamentaria])
			
			render_to_string pdf: "sumario_geral_das_despesas_por_funcoes_de_governo",
				template: "loa/relatorios/impressao_de_loa/sumario_geral_das_despesas_por_funcoes_de_governo.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Despesa por Função de Governo",
							titulo3: "#{ params[:unidade_orcamentaria].empty? ? "CONSOLIDADO" : unidade_orcamentaria.codigo_completo_e_nome }"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end


		def quadro_de_evolucao_da_receita_por_categoria_economica
			@dados_do_relatorio = Loa::Relatorios::QuadroDeEvolucaoDaReceitaPorCategoriaEconomica.dados_do_relatorio( @loa )

			render_to_string pdf: "quadro_de_evolucao_da_receita_por_categoria_economica",
				template: "loa/relatorios/impressao_de_loa/quadro_de_evolucao_da_receita_por_categoria_economica.pdf.slim",
				orientation: 'landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Quadro de Evolução da Receita por Categoria Econômica"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def quadro_de_evolucao_da_despesa_por_categoria_economica
			@dados_do_relatorio = Loa::Relatorios::QuadroDeEvolucaoDaDespesaPorCategoriaEconomica.dados_do_relatorio( @loa, params[:unidade_orcamentaria] )

			render_to_string pdf: "quadro_de_evolucao_da_despesa_por_categoria_economica",
				template: "loa/relatorios/impressao_de_loa/quadro_de_evolucao_da_despesa_por_categoria_economica.pdf.slim",
				orientation: 'landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Quadro de Evolução da Despesa por Categoria Econômica"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def quadro_de_evolucao_da_despesa_por_funcao
			@dados_do_relatorio = Loa::Relatorios::QuadroDeEvolucaoDaDespesaPorFuncao.dados_do_relatorio( @loa, params[:funcao_id] )

			render_to_string pdf: "quadro_de_evolucao_da_despesa_por_funcao",
				template: "loa/relatorios/impressao_de_loa/quadro_de_evolucao_da_despesa_por_funcao.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Quadro de Evolução da Despesa por Função"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def quadro_de_detalhamento_da_despesa
			@dados_do_relatorio = Loa::Relatorios::QuadroDeDetalhamentoDaDespesa.dados_do_relatorio( @loa, params[:unidade_orcamentaria].to_i )

			render_to_string pdf: "quadro_de_detalhamento_da_despesa",
				template: "loa/relatorios/impressao_de_loa/quadro_de_detalhamento_da_despesa.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Quadro de Detalhamento da Despesa " + orcamento_atual.exercicio.to_s
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end


		def despesa_por_orgao

			if params[:orgao].present?
				orgao = Loa::Orgao.find(params[:orgao])
				@dados = [{nome: "#{orgao.codigo} #{orgao.nome}", total_geral: orgao.valor_fixado_da_despesa, percentual_c_por_d: orgao.porcentagem_sobre_a_despesa_fixada_total}, {nome: "Total", total_geral: orgao.valor_fixado_da_despesa_total_nos_orgaos, percentual_c_por_d: 100}]
			else
				orgaos = contexto_atual.orgaos
				@dados = []
				valor_total = orgaos.map(&:valor_fixado_da_despesa).sum
				orgaos.each do |orgao|

					@dados.push({codigo: orgao.codigo, nome: "#{orgao.codigo} #{orgao.nome}", total_geral: orgao.valor_fixado_da_despesa, percentual_c_por_d: orgao.porcentagem_sobre_a_despesa_fixada_total}) if orgao.valor_fixado_da_despesa != 0
				end
				@dados = @dados.sort_by{|dado| dado[:codigo]}
				@dados.push({nome: "Total", total_geral: valor_total, percentual_c_por_d: 100})
			end
			
			#@dados = []
			#@dados = Loa::Relatorios::DespesaPorOrgaoETipoDeRecurso.dados(@loa.id, params[:orgao])

			render_to_string pdf: "despesa_por_orgao",
				template: "loa/relatorios/impressao_de_loa/despesa_por_orgao.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Despesa por Órgão'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def resumo_das_despesas_dos_orcamentos_fiscal_e_da_seguridade_social_por_categorias_economicas_e_grupos_de_natureza_de_despesa
			@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria_id]) if params[:unidade_orcamentaria_id].present?
			unidade_orcamentaria_id = params[:unidade_orcamentaria_id].to_i > 0 ? params[:unidade_orcamentaria_id].to_i : nil
			#@dados_fiscal, @dados_social, @dados_total = Loa::Relatorios::ResumoDasDespesasDosOrcamentosFiscalEDaSeguridadeSocialPorCategoriasEconomicasEGruposDeNaturezaDeDespesa.dados(@loa, unidade_orcamentaria_id)

			render_to_string pdf: "resumo_das_despesas_dos_orcamentos_fiscal_e_da_seguridade_social_por_categorias_economicas_e_grupos_de_natureza_de_despesa",
				template: "loa/relatorios/impressao_de_loa/resumo_das_despesas_dos_orcamentos_fiscal_e_da_seguridade_social_por_categorias_economicas_e_grupos_de_natureza_de_despesa.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Resumo das Despesas dos Orçamentos Fiscal e da Seguridade Social por Categorias Econômicas e Grupos de Natureza de Despesa"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_da_receita_por_esfera_orcamentaria_e_fonte_de_recurso
			@fontes = Loa::Relatorios::DemonstrativoDeFontesDeRecursosPorEsferaOrcamentaria.dados(orcamento_atual, params[:unidade_orcamentaria])

			render_to_string pdf: "demonstrativo_da_receita_por_esfera_orcamentaria_e_fonte_de_recurso",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_da_receita_por_esfera_orcamentaria_e_fonte_de_recurso.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo da Receita por Vínculo, Esfera e Fonte de Recurso"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_receita_despesa_por_categorias_economicas
			@dados_receita, @dados_despesa, @dados_extras = Loa::Relatorios::DemonstrativoReceitaDespesaPorCategoriasEconomicas.dados(@loa,params[:unidade_orcamentaria])

			render_to_string pdf: "demonstrativo_receita_despesa_por_categorias_economicas",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_receita_despesa_por_categorias_economicas.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Demonstrativo da Receita e da Despesa Segundo as Categorias Econômicas (Anexo I)'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_da_receita_por_fonte_de_recurso_e_esfera_orcamentaria
			@dados = Loa::Relatorios::DemonstrativoDaReceitaPorFonteDeRecursoEEsferaOrcamentaria.dados(@loa, params[:unidade_orcamentaria])
			unidade_orcamentaria = Loa::UnidadeOrcamentaria.find_by(id: params[:unidade_orcamentaria])
			
			render_to_string pdf: "demonstrativo_da_receita_por_fonte_de_recurso_e_esfera_orcamentaria",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_da_receita_por_fonte_de_recurso_e_esfera_orcamentaria.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo da Receita por Natureza, Esfera e Fonte de Recurso",
							titulo3: "#{ params[:unidade_orcamentaria].empty? ? "CONSOLIDADO" : unidade_orcamentaria.codigo_completo_e_nome }"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_de_funcoes_subfuncoes_e_programas_por_projetos_e_atividades
			@dados = Loa::Relatorios::DemonstrativoDeFuncoesSubfuncoesEProgramasPorProjetosEAtividades.dados(@loa.id, params[:funcao_id], params[:subfuncao_id])

			render_to_string pdf: "demonstrativo_de_funcoes_subfuncoes_e_programas_por_projetos_e_atividades",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_de_funcoes_subfuncoes_e_programas_por_projetos_e_atividades.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo de Funções, Subfunções e Programas por Projetos e Atividades"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_de_funcoes_subfuncoes_e_programas_conforme_vinculos_com_recursos
			@dados = Loa::Relatorios::DemonstrativoDeFuncoesSubfuncoesEProgramasConformeVinculosComRecursos.dados(@loa.id, params[:funcao_id], params[:subfuncao_id])

			render_to_string pdf: "demonstrativo_de_funcoes_subfuncoes_e_programas_conforme_vinculos_com_recursos",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_de_funcoes_subfuncoes_e_programas_conforme_vinculos_com_recursos.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Demonstrativo de Funções, Subfunções e Programas, Conforme Vínculo com Recursos'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def fontes_de_recursos_do_orcamento_por_grupo_de_natureza_de_despesa
			@dados = Loa::Relatorios::FonteDeRecursoDoOrcamentoPorGrupoDeNaturezaDeDespesa.dados(@loa.id, params[:tipo_de_orcamento], params[:fonte_id], params[:unidade_orcamentaria])
			unidade_orcamentaria = Loa::UnidadeOrcamentaria.find_by(id: params[:unidade_orcamentaria])

			if params[:tipo_de_orcamento] == 'F'
				@titulo = 'FONTES DE RECURSOS DO ORÇAMENTO FISCAL POR GRUPO DE NATUREZA DE DESPESA'
			elsif params[:tipo_de_orcamento] == 'S'
				@titulo = 'FONTES DE RECURSOS DO ORÇAMENTO DA SEGURIDADE SOCIAL POR GRUPO DE NATUREZA DE DESPESA'
			else
				@titulo = 'DEMONSTRATIVO DA DESPESA POR FONTE DE RECURSO E GRUPO DE NATUREZA DE DESPESA'
			end

			render_to_string pdf: "fontes_de_recursos_do_orcamento_por_grupo_de_natureza_de_despesa",
				template: "loa/relatorios/impressao_de_loa/fontes_de_recursos_do_orcamento_por_grupo_de_natureza_de_despesa.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: @titulo,
							titulo3: "#{ params[:unidade_orcamentaria].empty? ? "CONSOLIDADO" : unidade_orcamentaria.codigo_completo_e_nome }"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def fontes_de_recursos_do_orcamento_fiscal_e_da_seguridade_por_grupo_de_natureza_de_despesa
			fontes_de_recursos_do_orcamento_por_grupo_de_natureza_de_despesa
		end

		def receitas_de_todas_as_fontes_por_orgao_e_unidade_orcamentaria
			@dados = Loa::Relatorios::ReceitasDeTodasAsFontesPorOrgaoEUnidadeOrcamentaria.dados(orcamento_atual.id, params[:unidade_orcamentaria])

			render_to_string pdf: "receitas_de_todas_as_fontes_por_orgao_e_unidade_orcamentaria",
				template: "loa/relatorios/impressao_de_loa/receitas_de_todas_as_fontes_por_orgao_e_unidade_orcamentaria.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: 'Receita de Todas as Fontes por Órgão e Unidade Orçamentária'
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def detalhamento_por_programa
			@dados_gestao, @dados_tematico = Loa::ProgramaDeGoverno.dados_relatorio params[:unidade_orcamentaria].to_i, orcamento_atual

			render_to_string pdf: "programa_de_governo",
				template: "loa/relatorios/impressao_de_loa/detalhamento_por_programa.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: orcamento_titulo(contexto_atual.exercicio), titulo2: "Detalhamento por Programas" }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def transferencias_de_recursos
			if params[:unidade_orcamentaria_origem].to_i > 0 || params[:unidade_orcamentaria_destino].to_i > 0
				if params[:unidade_orcamentaria_origem].to_i > 0 && params[:unidade_orcamentaria_destino].to_i > 0
					@transferencias_de_recursos = orcamento_atual.transferencias_de_recursos.where(unidade_orcamentaria_origem_id: params[:unidade_orcamentaria_origem], unidade_orcamentaria_destino_id: params[:unidade_orcamentaria_destino])
				elsif params[:unidade_orcamentaria_origem].to_i > 0 && params[:unidade_orcamentaria_destino].to_i <= 0
					@transferencias_de_recursos = orcamento_atual.transferencias_de_recursos.where(unidade_orcamentaria_origem_id: params[:unidade_orcamentaria_origem])
				elsif params[:unidade_orcamentaria_origem].to_i <= 0 && params[:unidade_orcamentaria_destino].to_i > 0
					@transferencias_de_recursos = orcamento_atual.transferencias_de_recursos.where(unidade_orcamentaria_destino_id: params[:unidade_orcamentaria_destino])
				end
			else
				@transferencias_de_recursos = orcamento_atual.transferencias_de_recursos.order(:unidade_orcamentaria_origem_id, :unidade_orcamentaria_destino_id, :fonte_de_recursos_id)
			end

			render_to_string pdf: "transferencias_de_recursos",
				template: "loa/relatorios/impressao_de_loa/transferencias_de_recursos.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "TransferÃªncias de Recursos entre Unidades Gestoras (Consolidado)"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def cronograma_de_execucao_mensal_de_desembolso_consolidado
			percentuais = [params[:janeiro].to_i, params[:fevereiro].to_i, params[:marco].to_i, params[:abril].to_i, params[:maio].to_i, params[:junho].to_i, params[:julho].to_i,
										params[:agosto].to_i,	params[:setembro].to_i, params[:outubro].to_i, params[:novembro].to_i, params[:dezembro].to_i]
			@dados = Loa::Relatorios::CronogramaDeExecucaoMensalDeDesembolsoConsolidado.dados(orcamento_atual, percentuais, params[:unidade_orcamentaria])

			render_to_string pdf: "cronograma_de_execucao_mensal_de_desembolso_consolidado",
				template: "loa/relatorios/impressao_de_loa/cronograma_de_execucao_mensal_de_desembolso_consolidado.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: "",
							titulo2: "Cronograma de Execução Mensal de Desembolso Consolidado Por Categoria Econômica"
						}
					},
					spacing: 6
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def cronograma_de_execucao_mensal_de_desembolso_por_unidade_orcamentaria
			percentuais = [params[:janeiro], params[:fevereiro], params[:marco], params[:abril], params[:maio], params[:junho], params[:julho], params[:agosto], params[:setembro], params[:outubro], params[:novembro], params[:dezembro]]
			@dados = Loa::Relatorios::CronogramaDeExecucaoPorUnidadeOrcamentaria.dados(orcamento_atual, percentuais, params[:unidade_orcamentaria])

			render_to_string pdf: "cronograma_de_execucao_mensal_de_desembolso_por_unidade_orcamentaria",
				template: "loa/relatorios/impressao_de_loa/cronograma_de_execucao_mensal_de_desembolso_por_unidade_orcamentaria.pdf.slim",
				orientation: 'Landscape',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1:  "", titulo2: "Cronograma de Execução Mensal de Desembolso por Unidade Orçamentária" }
					},
					spacing: 6
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demostrativo_da_aplicacao_na_manutencao_e_desenvolvimento_do_ensino
			@dados = Loa::Relatorios::DemostrativoDaAplicacaoNaManutencaoEDesenvolvimentoDoEnsino.dados(orcamento_atual)

			render_to_string pdf: "demostrativo_da_aplicacao_na_manutencao_e_desenvolvimento_do_ensino",
				template: "loa/relatorios/impressao_de_loa/demostrativo_da_aplicacao_na_manutencao_e_desenvolvimento_do_ensino.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo da aplicação na manutenção e desenvolvimento do ensino"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demostrativo_dos_calculos_da_aplicacao_nas_acoes_publicas_de_saude
			@dados = Loa::Relatorios::DemostrativoDosCalculosDaAplicacaoNasAcoesPublicasDeSaude.dados(orcamento_atual)

			render_to_string pdf: "demostrativo_dos_calculos_da_aplicacao_nas_acoes_publicas_de_saude",
				template: "loa/relatorios/impressao_de_loa/demostrativo_dos_calculos_da_aplicacao_nas_acoes_publicas_de_saude.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo de Aplicação em Saúde"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end


		def demostrativo_dos_calculos_da_aplicacao_no_fundeb
			@dados = Loa::Relatorios::DemostrativoDosCalculosDaAplicacaoNoFundeb.dados(orcamento_atual)

			render_to_string pdf: "demostrativo_dos_calculos_da_aplicacao_no_fundeb",
				template: "loa/relatorios/impressao_de_loa/demostrativo_dos_calculos_da_aplicacao_no_fundeb.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo dos cálculos da aplicação no FUNDEB"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end


		def projecao_do_valor_do_legislativo_municipal
			@dados = Loa::Relatorios::ProjecaoDoValorDoLegislativoMunicipal.dados(orcamento_atual)

			render_to_string pdf: "projecao_do_valor_do_legislativo_municipal",
				template: "loa/relatorios/impressao_de_loa/projecao_do_valor_do_legislativo_municipal.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Projeção do Valor do Legislativo Municipal"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end
		def calculo_para_contribuicao_do_pasep
			@dados = Loa::Relatorios::CalculoParaContribuicaoDoPASEP.dados(orcamento_atual)

			render_to_string pdf: "calculo_para_contribuicao_do_pasep",
				template: "loa/relatorios/impressao_de_loa/calculo_para_contribuicao_do_pasep.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Cálculo Para Contribuição do PASEP"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_da_rcl
			@dados = Loa::Relatorios::DemonstrativoDaRcl.dados(orcamento_atual)

			render_to_string pdf: "demonstrativo_da_rcl",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_da_rcl.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1:  orcamento_titulo(contexto_atual.exercicio), titulo2: "Demonstrativo da RCL" }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def demonstrativo_do_resultado_primario
			@dados = Loa::Relatorios::DemonstrativoDoResultadoPrimario.dados(orcamento_atual)

			render_to_string pdf: "demonstrativo_do_resultado_primario",
				template: "loa/relatorios/impressao_de_loa/demonstrativo_do_resultado_primario.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: {
							titulo1: orcamento_titulo(contexto_atual.exercicio),
							titulo2: "Demonstrativo do Resultado Primário"
						}
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def despesa_com_pessoal_sobre_rcl
			@dados = Loa::Relatorios::DespesaComPessoalSobreRcl.dados(orcamento_atual)

			render_to_string pdf: "demonstrativo_do_resultado_primario",
				template: "loa/relatorios/impressao_de_loa/despesa_com_pessoal_sobre_rcl.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1:  orcamento_titulo(contexto_atual.exercicio), titulo2: "Despesa com Pessoal sobre a RCL" }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def quadro_de_detalhamento_da_loa
			@dados = Loa::Relatorios::QuadroDeDetalhamentoDaLoa.dados(orcamento_atual)

			render_to_string pdf: "quadro_de_detalhamento_da_loa",
				template: "loa/relatorios/impressao_de_loa/quadro_de_detalhamento_da_loa.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: orcamento_titulo(contexto_atual.exercicio), titulo2: "Quadro de detalhamento da LOA" }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
		end

		def dotacoes_sem_evento
			@dotacoes_sem_evento = contexto_atual.sub_elementos_de_despesa.left_outer_joins(:sub_elementos_de_despesa_da_configuracao_contabil).where(
				contabilidade_sub_elementos_de_despesa_da_configuracao_contabil:{
					id: nil
				},
				base_elementos_de_despesa:{
					exibir_elemento_de_despesa: true
				}
			)

			render_to_string pdf: "quadro_de_detalhamento_da_loa",
				template: "loa/relatorios/impressao_de_loa/dotacoes_sem_evento.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: orcamento_titulo(contexto_atual.exercicio), titulo2: "Dotações sem Eventos" }
					},
					spacing: 5
				},
				margin: @configuracoes.margens_customizadas
		end

		def receitas_sem_evento
			receitas_com_evento_id = Array.new

			Contabilidade::NaturezaDaReceitaDaConfiguracaoContabil.all.each do |natureza_da_configuracao|
				naturezas_das_receitas_com_evento = natureza_da_configuracao.naturezas_da_receita
				if naturezas_das_receitas_com_evento.present?
					receitas_com_evento_id.push(naturezas_das_receitas_com_evento)
				end
			end

			@receitas_sem_evento = Base::NaturezaDaReceita.where.not(id: receitas_com_evento_id.flatten).where(modulo_type: 'Orcamento', modulo_id: contexto_atual.id).order(
				categoria_economica: :asc,
				origem: :asc,
				especie: :asc,
				rubrica: :asc,
				alinea: :asc,
				subalinea: :asc,
				detalhamento_optativo: :asc
			) 

			render_to_string pdf: "quadro_de_detalhamento_da_loa",
			template: "loa/relatorios/impressao_de_loa/receitas_sem_evento.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
	
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: orcamento_titulo(contexto_atual.exercicio), titulo2: "Receitas sem Eventos" }
				},
				spacing: 5
			},
			margin: @configuracoes.margens_customizadas
		end

		def disponibiliza_dependencias
			@configuracoes = Configuracao.last
		end
end
