class Licitacao::Relatorios::PedidosController < ApplicationController
	include ControllerConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:imprimir]
	before_action :disponibiliza_dependencias

	def imprimir
		return if bloqueia_usuario_com_base_em 'read', "licitacao/pedidos"
		relatorio = params[:relatorio]
		if respond_to? relatorio.to_s, :private
			loa = CombinePDF.new
			loa << CombinePDF.parse(send(relatorio))

			if params[:documentos_do_pedido_id].present? && Licitacao::DocumentoDoPedido.find(params[:documentos_do_pedido_id]).termo_de_referencia? || params[:relatorio] == "mapa_de_cotacao"
				loa.number_pages(location: :bottom_right, margin_from_height: 0, number_format: '%s', font_size: 8)
			end

			send_data loa.to_pdf, filename: "#{relatorio}.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to :back, alert: 'Demonstrativo selecionado não existe'
		end
	end

	def imprimir_doc
		relatorio = params[:relatorio]
		request.format = "docx"
		respond_to do |format|
			format.docx {
				@documento_do_pedido = Licitacao::DocumentoDoPedido.find(params[:documentos_do_pedido_id])
				response.headers['Content-Type'] = 'text/txt'
				response.headers['Content-Disposition'] = "attachment; filename=documento.docx"
				render template: "licitacao/relatorios/pedidos/documento.docx.slim"
			}
		end
	end

	def pedido
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @unidade_orcamentaria.unidade_gestora.nome.try(:upcase)
		else
			titulo1 = ''
		end

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@numero_completo_pedido}"
		else
			titulo2 = ''
		end

		@orgao = @unidade_orcamentaria.orgao rescue nil

		if @pedido.present?
			if @unidade_orcamentaria.present?
				@unidade_orcamentaria_por_pedido = @pedido.unidades_orcamentarias_por_pedido.find_by(unidade_orcamentaria_id: @unidade_orcamentaria.id)
			else
				@unidade_orcamentaria_por_pedido = @pedido.unidade_orcamentaria_por_pedido_principal
			end
		end

		render_to_string pdf: "pedido",
			template: "licitacao/relatorios/pedidos/pedido.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas(top: 7)
	end

	def pedido_atualizado
		disponibiliza_pedido_e_unidade_orcamentaria

		render_to_string pdf: "pedido_atualizado",
			template: "licitacao/relatorios/pedidos/pedido_atualizado.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "#{@unidade_orcamentaria.unidade_gestora.nome.try(:upcase)}",
						titulo2: "PEDIDO N°: #{@numero_completo_pedido}"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def itens_do_pedido
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @unidade_orcamentaria.unidade_gestora.nome.try(:upcase)
		else
			titulo1 = ''
		end

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "ITENS DO PEDIDO N°: #{@numero_completo_pedido}"
		else
			titulo2 = ''
		end

		render_to_string pdf: "itens_do_pedido",
			template: "licitacao/relatorios/pedidos/itens_do_pedido.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def convocacao_dos_orgaos
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @unidade_orcamentaria.unidade_gestora.nome.try(:upcase)
		else
			titulo1 = ''
		end

		render_to_string pdf: "convocacao_dos_orgaos",
			template: "licitacao/relatorios/pedidos/convocacao_dos_orgaos.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: "CONVITE PARA INTENÇÃO DE REGISTRO DE PREÇOS"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def anexo_ao_convite_para_intencao_de_registro_de_precos
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @unidade_orcamentaria.unidade_gestora.nome.try(:upcase)
		else
			titulo1 = ''
		end

		render_to_string pdf: "anexo_ao_convite_para_intencao_de_registro_de_precos",
			template: "licitacao/relatorios/pedidos/anexo_ao_convite_para_intencao_de_registro_de_precos.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: "ANEXO AO CONVITE PARA INTENÇÃO DE REGISTRO DE PREÇOS"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def protocolo_de_recebimento_de_convite
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @unidade_orcamentaria.unidade_gestora.nome.try(:upcase)
		else
			titulo1 = ''
		end

		render_to_string pdf: "protocolo_de_recebimento_de_convite",
			template: "licitacao/relatorios/pedidos/protocolo_de_recebimento_de_convite.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: "PROTOCOLO DE RECEBIMENTO DO CONVITE"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def quadro_de_demanda_consolidado
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@numero_completo_pedido}"
		else
			titulo2 = ''
		end

		@unidades_orcamentarias_por_pedido = Licitacao::UnidadeOrcamentariaPorPedido.joins(:itens_do_pedido_por_unidade_orcamentaria).where('licitacao_itens_do_pedido_por_unidade_orcamentaria.quantidade > 0').where(pedido_id: params[:pedido]).distinct
		@exige_brasao = @pedido.unidades_orcamentarias_por_pedido.size > 1

		render_to_string pdf: "quadro_de_demanda_consolidado",
			template: "licitacao/relatorios/pedidos/quadro_de_demanda_consolidado.pdf.slim",
			orientation: 'Landscape',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "QUADRO DE DEMANDA CONSOLIDADO",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def quadro_de_demanda_consolidado_por_lote
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@numero_completo_pedido}"
		else
			titulo2 = ''
		end

		@unidades_orcamentarias_por_pedido = Licitacao::UnidadeOrcamentariaPorPedido.joins(:itens_do_pedido_por_unidade_orcamentaria).where('licitacao_itens_do_pedido_por_unidade_orcamentaria.quantidade > 0').where(pedido_id: params[:pedido]).distinct
		@exige_brasao = @pedido.unidades_orcamentarias_por_pedido.size > 1

		render_to_string pdf: "quadro_de_demanda_consolidado",
			template: "licitacao/relatorios/pedidos/quadro_de_demanda_consolidado_por_lote.pdf.slim",
			orientation: 'Landscape',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "QUADRO DE DEMANDA CONSOLIDADO POR LOTE",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def mapa_de_cotacao

		set_pedido
		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		render_to_string pdf: "mapa_de_cotacao",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def mapa_de_cotacao_sem_anulados
		set_pedido

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		render_to_string pdf: "mapa_de_cotacao",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def mapa_de_cotacao_com_justificativa
		set_pedido

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		@justificativa = @pedido.justificativa_da_cotacao
		render_to_string pdf: "mapa_de_cotacao",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def mapa_de_cotacao_por_categoria
		set_pedido

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		render_to_string pdf: "mapa_de_cotacao_por_categoria",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao_por_categoria.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO POR CATEGORIA",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def mapa_de_cotacao_global
		set_pedido

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		render_to_string pdf: "mapa_de_cotacao_global",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao_global.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO GLOBAL",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def mapa_de_cotacao_por_fornecedor
		set_pedido

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		render_to_string pdf: "mapa_de_cotacao_por_fornecedor",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao_por_fornecedor.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO POR FORNECEDOR (MENOR PREÇO)",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def cotacao_externa
		set_pessoa_do_pedido
		titulo1 = @pessoa_do_pedido.codigo_de_acesso.blank? ? "COMPROVANTE DE COTAÇÃO" : "COMPROVANTE DE COTAÇÃO EXTERNA"

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pessoa_do_pedido.pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		render_to_string pdf: "cotacao_externa",
			template: "licitacao/pessoas_do_pedido/enviar_email_cotacao_externa.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def confirmacao_email
		set_pessoa_do_pedido
		@solicitacao_por_email = Licitacao::SolicitacaoPorEmail.find(params[:solicitacao_id]) if params[:solicitacao_id].present?

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pessoa_do_pedido.pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		render_to_string pdf: "confirmacao_email",
			template: "licitacao/relatorios/pedidos/confirmacao_email.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "COMPROVANTE DE ENVIO DE E-MAIL",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def documento
		@documento_do_pedido = Licitacao::DocumentoDoPedido.find(params[:documentos_do_pedido_id])

		@unidade_orcamentaria = @documento_do_pedido.pedido.unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @documento_do_pedido.pedido.unidade_orcamentaria.try(:unidade_gestora).try(:nome)
		else
			titulo1 = ''
		end

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@documento_do_pedido.pedido.try(:numero_12_digitos)}"
		else
			titulo2 = ''
		end

		@exige_brasao = true

		render_to_string pdf: "documento",
			template: "licitacao/relatorios/pedidos/documento.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				}
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def documento_da_cotacao
		@documento_da_cotacao = Licitacao::DocumentoDaCotacaoDoPedido.find(params[:documento_da_cotacao_id])
		@unidade_orcamentaria = @documento_da_cotacao.pessoa_do_pedido.pedido.unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @documento_da_cotacao.pessoa_do_pedido.pedido.unidade_orcamentaria.try(:unidade_gestora).try(:nome)
		else
			titulo1 = ''
		end

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@documento_da_cotacao.pessoa_do_pedido.pedido.try(:numero_12_digitos)}"
		else
			titulo2 = ''
		end

		render_to_string pdf: "documento_da_cotacao",
			template: "licitacao/relatorios/pedidos/documento_da_cotacao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def relacao_de_pedidos
		if params[:unidade_orcamentaria].present? && params[:status].present?
			@lista_de_pedidos = orcamento_atual.pedidos.where(unidade_orcamentaria_id: params[:unidade_orcamentaria], status: params[:status])
		elsif params[:unidade_orcamentaria].present? && !params[:status].present?
			@lista_de_pedidos = orcamento_atual.pedidos.where(unidade_orcamentaria_id: params[:unidade_orcamentaria])
		elsif !params[:unidade_orcamentaria].present? && params[:status].present?
			@lista_de_pedidos = orcamento_atual.pedidos.where(status: params[:status])
		else
			@lista_de_pedidos = orcamento_atual.pedidos.all
		end


		render_to_string pdf: "relacao_de_pedidos",
			template: "licitacao/relatorios/pedidos/relacao_de_pedidos.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "Relação de Pedidos",
						titulo2: "Exercício de: #{contexto_atual.exercicio}"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas(top: 5)
	end

	def relacao_de_pedidos_simplificado
		@unidades_por_usuario = current_usuario.unidades_orcamentarias_por_usuario
		@orcamentos = Orcamento.all.order(exercicio: :desc)
		orcamento = unless query_params["orcamento_id_eq"].blank?
			Orcamento.find(query_params["orcamento_id_eq"])
		else
			contexto_atual
		end
		@unidades_orcamentarias = orcamento.unidades_orcamentarias

		@q = orcamento.pedidos.joins(:unidades_orcamentarias_por_pedido).where(licitacao_unidades_orcamentarias_por_pedido: {unidade_orcamentaria_id: @unidades_por_usuario.pluck(:unidade_orcamentaria_id)}).order("licitacao_pedidos.data_do_pedido DESC, licitacao_pedidos.numero DESC").distinct.ransack(query_params)
		@lista_de_pedidos = @q.result(distinct: false)

		render_to_string pdf: "relacao_de_pedidos_simplificado",
			template: "licitacao/relatorios/pedidos/relacao_de_pedidos_simplificado.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "Relação de Pedidos",
						titulo2: "Exercício de: #{contexto_atual.exercicio}"
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas(top: 5)
	end

	def documento_de_formalizacao_da_despesa
		disponibiliza_pedido_e_unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @unidade_orcamentaria.unidade_gestora.nome.try(:upcase)
		else
			titulo1 = ''
		end

		@orgao = @unidade_orcamentaria.orgao rescue nil

		if @pedido.present?
			if @unidade_orcamentaria.present?
				@unidade_orcamentaria_por_pedido = @pedido.unidades_orcamentarias_por_pedido.find_by(unidade_orcamentaria_id: @unidade_orcamentaria.id)
			else
				@unidade_orcamentaria_por_pedido = @pedido.unidade_orcamentaria_por_pedido_principal
			end
		end

		render_to_string pdf: "pedido",
			template: "licitacao/relatorios/pedidos/documento_de_formalizacao_da_despesa.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas(top: 7)
	end

	def documento_de_formalizacao_da_despesa_consolidado
		disponibiliza_pedido_e_unidade_orcamentaria

		titulo1 = 'CONSOLIDADO'

		@orgao = @unidade_orcamentaria.orgao rescue nil

		if @pedido.present?
			if @unidade_orcamentaria.present?
				@unidade_orcamentaria_por_pedido = @pedido.unidades_orcamentarias_por_pedido.find_by(unidade_orcamentaria_id: @unidade_orcamentaria.id)
			else
				@unidade_orcamentaria_por_pedido = @pedido.unidade_orcamentaria_por_pedido_principal
			end
		end

		render_to_string pdf: "pedido",
			template: "licitacao/relatorios/pedidos/documento_de_formalizacao_da_despesa_consolidado.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas(top: 6)
	end

	def mapa_de_cotacao_por_mediana
		set_pedido
		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "PEDIDO N°: #{@pedido.numero_12_digitos}"
		else
			titulo2 = ''
		end

		if @pedido.unidades_orcamentarias_por_pedido.size == 1
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
		end

		render_to_string pdf: "mapa_de_cotacao",
			template: "licitacao/relatorios/pedidos/mapa_de_cotacao_por_mediana.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "MAPA DE COTAÇÃO POR MEDIANA",
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def set_pedido
		@pedido = Licitacao::Pedido.find(params[:pedido])
	end

	def set_pessoa_do_pedido
		@pessoa_do_pedido = Licitacao::PessoaDoPedido.find(params[:pessoa])
		@pessoa_do_pedido.update(data_da_cotacao: params[:data_da_cotacao].to_date) if params[:data_da_cotacao].present?
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end

	def disponibiliza_pedido_e_unidade_orcamentaria
		set_pedido
		if params[:contrato].present?
			@contrato = Licitacao::Contrato.find(params[:contrato])
			@unidade_orcamentaria = @contrato.unidade_orcamentaria
			@numero_completo_pedido = @unidade_orcamentaria.orgao.codigo + @unidade_orcamentaria.codigo + @contrato.numero_da_solicitacao_do_contrato
		elsif params[:unidade_orcamentaria].present?
			@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria])
			@numero_completo_pedido = @unidade_orcamentaria.orgao.codigo + @unidade_orcamentaria.codigo + @pedido.numero
		elsif params[:unidade_orcamentaria_por_pedido].present?
			@unidade_orcamentaria_por_pedido = Licitacao::UnidadeOrcamentariaPorPedido.find(params[:unidade_orcamentaria_por_pedido])
			@unidade_orcamentaria = @unidade_orcamentaria_por_pedido.unidade_orcamentaria
			@numero_completo_pedido = @unidade_orcamentaria.orgao.codigo + @unidade_orcamentaria.codigo + @pedido.numero
		elsif params[:aditivo].present?
			@aditivo = Licitacao::Aditivo.find(params[:aditivo])
			@unidade_orcamentaria = @aditivo.unidade_orcamentaria.present? ? @aditivo.unidade_orcamentaria : @aditivo.contrato.unidade_orcamentaria_por_pedido.unidade_orcamentaria
			@numero_completo_pedido = "#{@unidade_orcamentaria.try(:orgao).try(:codigo)}#{@unidade_orcamentaria.try(:codigo)}#{@aditivo.contrato.numero_do_pedido}"
		else
			@unidade_orcamentaria = @pedido.unidade_orcamentaria
			@numero_completo_pedido = @unidade_orcamentaria.orgao.codigo + @unidade_orcamentaria.codigo + @pedido.numero
		end
	end
end
