module Licitacao::DocumentosDoPedidoHelper
	def substitui_variaveis_do_pedido(conteudo)
		conteudo = conteudo.gsub("{{NUMERO_DO_PEDIDO}}", "#{@pedido.numero}") if conteudo.include?("{{NUMERO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{NUMERO_DO_PEDIDO_12_DIGITOS}}", "#{@pedido.numero_12_digitos}") if conteudo.include?("{{NUMERO_DO_PEDIDO_12_DIGITOS}}")
		conteudo = conteudo.gsub("{{DATA_DO_PEDIDO}}", "#{@pedido.data_do_pedido}") if conteudo.include?("{{DATA_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{OBJETO_PEDIDO}}", "#{@pedido.objeto}") if conteudo.include?("{{OBJETO_PEDIDO}}")
		conteudo = conteudo.gsub("{{JUSTIFICATIVA_DO_PEDIDO}}", "#{@pedido.justificativa}") if conteudo.include?("{{JUSTIFICATIVA_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{PRAZO_MAXIMO_DE_ENTREGA}}", "#{@pedido.prazo_de_entrega}") if conteudo.include?("{{PRAZO_MAXIMO_DE_ENTREGA}}")
		conteudo = conteudo.gsub("{{LOCAL_DE_ENTREGA}}", "#{@pedido.local_de_entrega}") if conteudo.include?("{{LOCAL_DE_ENTREGA}}")
		conteudo = conteudo.gsub("{{VIGENCIA_DO_PEDIDO}}", "#{@pedido.try(:vigencia)}") if conteudo.include?("{{VIGENCIA_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{RESPONSAVEL_DO_SETOR_DE_COMPRAS}}", "#{@pedido.responsavel_pelo_setor_de_compras}") if conteudo.include?("{{RESPONSAVEL_DO_SETOR_DE_COMPRAS}}")
		conteudo = conteudo.gsub("{{RESPONSAVEL_DO_PEDIDO}}", "#{@pedido.nome_do_responsavel}") if conteudo.include?("{{RESPONSAVEL_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{MENOR_PRECO}}", "#{@pedido.try(:menor_cotacao_dos_itens).try(:real_contabil)}") if conteudo.include?("{{MENOR_PRECO}}")
		conteudo = conteudo.gsub("{{EXERCICIO_DO_PEDIDO}}", "#{@pedido.orcamento.exercicio}") if conteudo.include?("{{EXERCICIO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{OUTRAS_INFORMACOES}}", "#{@pedido.outras_informacoes}") if conteudo.include?("{{OUTRAS_INFORMACOES}}")
		conteudo = conteudo.gsub("{{UNIDADE_GESTORA}}", "#{@pedido.unidade_orcamentaria.unidade_gestora.nome}") if conteudo.include?("{{UNIDADE_GESTORA}}")
		conteudo = conteudo.gsub("{{DOTACOES_DO_PEDIDO}}", "#{dotacoes_do_pedido}") if conteudo.include?("{{DOTACOES_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{INFORMACOES_DA_COTACAO}}", "#{@pedido.informacoes_da_cotacao}") if conteudo.include?("{{INFORMACOES_DA_COTACAO}}")
		conteudo = conteudo.gsub("{{DOTACOES_DO_PEDIDO_SUBELEMENTO}}", "#{dotacoes_do_pedido_subelemento}") if conteudo.include?("{{DOTACOES_DO_PEDIDO_SUBELEMENTO}}")
		conteudo = conteudo.gsub("{{RESULTADOS_PRETENDIDOS}}", "#{@pedido.resultados_pretendidos}") if conteudo.include?("{{RESULTADOS_PRETENDIDOS}}")
		conteudo = conteudo.gsub("{{FUNDAMENTACAO_CONTRATACAO}}", "#{@pedido.try(:fundamentacao_de_contratacao)}") if conteudo.include?("{{FUNDAMENTACAO_CONTRATACAO}}")
		# Itens do Pedido
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO}}", "#{table_itens_do_pedido}") if conteudo.include?("{{ITENS_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{ITENS_COM_PERIODICIDADE}}", "#{table_itens_com_periodicidade}") if conteudo.include?("{{ITENS_COM_PERIODICIDADE}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_COMPLETO}}", "#{table_itens_do_pedido_completo}") if conteudo.include?("{{ITENS_DO_PEDIDO_COMPLETO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_COMPLETO_GLOBAL}}", "#{table_itens_do_pedido_completo_global}") if conteudo.include?("{{ITENS_DO_PEDIDO_COMPLETO_GLOBAL}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_COMPLETO_UNITARIO}}", "#{table_itens_do_pedido_completo_unitario}") if conteudo.include?("{{ITENS_DO_PEDIDO_COMPLETO_UNITARIO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_PARA_COTACAO}}", "#{table_itens_do_pedido_para_cotacao}") if conteudo.include?("{{ITENS_DO_PEDIDO_PARA_COTACAO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_PARA_COTACAO_DE_SERVICO}}", "#{table_itens_do_pedido_para_cotacao_de_servico}") if conteudo.include?("{{ITENS_DO_PEDIDO_PARA_COTACAO_DE_SERVICO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_POR_UG}}", "#{table_itens_do_pedido_por_unidade_gestora}") if conteudo.include?("{{ITENS_DO_PEDIDO_POR_UG}}")
		conteudo = conteudo.gsub("{{ITENS_DO_PEDIDO_POR_LOTE}}", "#{table_itens_do_pedido_por_lote}") if conteudo.include?("{{ITENS_DO_PEDIDO_POR_LOTE}}")
		conteudo = conteudo.gsub("{{ITENS_COM_VALOR_MEDIO_DA_COLETA}}", "#{table_de_itens_com_valor_medio_da_coleta}") if conteudo.include?("{{ITENS_COM_VALOR_MEDIO_DA_COLETA}}")
		conteudo = conteudo.gsub("{{VALOR_TOTAL_MEDIO_DA_COLETA_DE_PRECOS}}", "#{@pedido.cotacao_media_dos_itens.to_f.real_contabil} (#{@pedido.cotacao_media_dos_itens.to_f.try(:real_contabil).try(:real).try(:por_extenso_em_reais).upcase})") if conteudo.include?("{{VALOR_TOTAL_MEDIO_DA_COLETA_DE_PRECOS}}")
		# Órgão Gerenciador
		conteudo = conteudo.gsub("{{ORGAO_GERENCIADOR}}", "#{@pedido.unidade_orcamentaria.orgao.nome}") if conteudo.include?("{{ORGAO_GERENCIADOR}}")
		conteudo = conteudo.gsub("{{NOME_DO_ORGAO_DO_PEDIDO}}", "#{@pedido.unidade_orcamentaria.orgao.nome}") if conteudo.include?("{{NOME_DO_ORGAO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{CNPJ_DO_ORGAO_DO_PEDIDO}}", "#{@pedido.unidade_orcamentaria.orgao.try(:cnpj).try(:as_cnpj)}") if conteudo.include?("{{CNPJ_DO_ORGAO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{ENDERECO_DO_ORGAO_DO_PEDIDO}}", "#{@pedido.unidade_orcamentaria.orgao.try(:endereco)}") if conteudo.include?("{{ENDERECO_DO_ORGAO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{TELEFONE_DO_ORGAO_DO_PEDIDO}}", "#{@pedido.unidade_orcamentaria.orgao.try(:telefone).try(:as_telefone)}") if conteudo.include?("{{TELEFONE_DO_ORGAO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{EMAIL_DO_ORGAO_DO_PEDIDO}}", "#{@pedido.unidade_orcamentaria.orgao.try(:email)}") if conteudo.include?("{{EMAIL_DO_ORGAO_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{TABELA_DO_ORGAO_GERENCIADOR}}", "#{table_orgao_gerenciador}") if conteudo.include?("{{TABELA_DO_ORGAO_GERENCIADOR}}")
		conteudo = conteudo.gsub("{{CODIGO_UNIDADE_ORCAMENTARIA}}", "#{@pedido.unidade_orcamentaria.try(:codigo_completo)}") if conteudo.include?("{{CODIGO_UNIDADE_ORCAMENTARIA}}")
		# Órgãos Participantes
		conteudo = conteudo.gsub("{{ORGAOS_PARTICIPANTES}}", "#{orgaos_participantes.join(', ')}") if conteudo.include?("{{ORGAOS_PARTICIPANTES}}")
		conteudo = conteudo.gsub("{{ORDENADORES_DOS_ORGAOS_PARTICIPANTES}}", "#{ordenadores_de_despesa.join(', ')}") if conteudo.include?("{{ORDENADORES_DOS_ORGAOS_PARTICIPANTES}}")
		conteudo = conteudo.gsub("{{ENDERECOS_DOS_ORGAOS_PARTICIPANTES}}", "#{endereco_orgaos_participantes.join(', ')}") if conteudo.include?("{{ENDERECOS_DOS_ORGAOS_PARTICIPANTES}}")
		conteudo = conteudo.gsub("{{TABELA_DOS_ORGAOS_PARTICIPANTES}}", "#{table_orgaos_participantes}") if conteudo.include?("{{TABELA_DOS_ORGAOS_PARTICIPANTES}}")
		# Ordenador de Despesa
		conteudo = conteudo.gsub("{{NOME_DO_ORDENADOR}}", "#{ordenador_de_despesa_do_pedido.try(:nome)}") if conteudo.include?("{{NOME_DO_ORDENADOR}}")
		conteudo = conteudo.gsub("{{TIPO_DE_CARGO_DO_ORDENADOR}}", "#{ordenador_de_despesa_do_pedido.try(:tipo_de_cargo).try(:humanize).try(:upcase)}") if conteudo.include?("{{TIPO_DE_CARGO_DO_ORDENADOR}}")
		conteudo = conteudo.gsub("{{MATRICULA_DO_ORDENADOR}}", "#{ordenador_de_despesa_do_pedido.try(:matricula_municipal)}") if conteudo.include?("{{MATRICULA_DO_ORDENADOR}}")
		conteudo = conteudo.gsub("{{CPF_DO_ORDENADOR_DO_PEDIDO}}", "#{ordenador_de_despesa_do_pedido.try(:cpf).try(:as_cpf_mascarado)}") if conteudo.include?("{{CPF_DO_ORDENADOR_DO_PEDIDO}}")
		conteudo = conteudo.gsub("{{NOME_E_CARGO}}", "#{ordenador_de_despesa_do_pedido.try(:nome).try(:humanize).try(:upcase)} - #{ordenador_de_despesa_do_pedido&.tipo_de_cargo_i18n.try(:upcase)}") if conteudo.include?("{{NOME_E_CARGO}}")
		# Fornecedor com Menor Cotação
		conteudo = conteudo.gsub("{{RAZAO_SOCIAL_DO_FORNECEDOR}}", "#{fornecedores_com_menor_cotacao.map(&:nome).join(', ')}") if conteudo.include?("{{RAZAO_SOCIAL_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{CNPJ_DO_FORNECEDOR}}", "#{fornecedores_com_menor_cotacao.map(&:cpf_ou_cnpj).join(', ')}") if conteudo.include?("{{CNPJ_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{ENDERECO_DO_FORNECEDOR}}", "#{fornecedores_com_menor_cotacao.map(&:endereco_completo).join(', ')}") if conteudo.include?("{{ENDERECO_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{TELEFONE_DO_FORNECEDOR}}", "#{fornecedores_com_menor_cotacao.map(&:telefone_formatado).join(', ')}") if conteudo.include?("{{TELEFONE_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{EMAIL_DO_FORNECEDOR}}", "#{fornecedores_com_menor_cotacao.map(&:email).join(', ')} - #{fornecedores_com_menor_cotacao.map(&:email_alternativo).join(', ')}") if conteudo.include?("{{EMAIL_DO_FORNECEDOR}}")

		conteudo
	end

	def substitui_outras_variaveis(conteudo)
		if conteudo.present?
			conteudo = conteudo.gsub("{{DATA}}", "#{I18n.l(Date.today, format: :long, locale: 'pt-BR')}") if conteudo.include?("{{DATA}}")
			conteudo = conteudo.gsub("{{LOCAL_E_DATA}}", "#{@configuracao.try(:cidade).try(:nome)}, #{I18n.l(Date.today, format: :long, locale: 'pt-BR')}") if conteudo.include?("{{LOCAL_E_DATA}}")
			conteudo = conteudo.gsub("{{MUNICIPIO_E_ESTADO}}", "Município de #{@configuracao.try(:cidade).try(:nome)}, Estado do #{@configuracao.try(:estado).try(:nome)}") if conteudo.include?("{{MUNICIPIO_E_ESTADO}}")
			conteudo = conteudo.gsub("{{PREFEITURA}}", "#{@configuracao.try(:nome_da_prefeitura)}") if conteudo.include?("{{PREFEITURA}}")
			conteudo = conteudo.gsub("{{EXERCICIO_ATUAL}}", "#{contexto_atual.exercicio}") if conteudo.include?("{{EXERCICIO_ATUAL}}")
			conteudo = conteudo.gsub("{{CNPJ_DA_PREFEITURA}}", "#{@configuracao.try(:cnpj_da_prefeitura)}") if conteudo.include?("{{CNPJ_DA_PREFEITURA}}")
			conteudo = conteudo.gsub("{{ENDERECO_DA_PREFEITURA}}", "#{@configuracao.try(:endereco_da_prefeitura)}") if conteudo.include?("{{ENDERECO_DA_PREFEITURA}}")
			conteudo = conteudo.gsub("{{TELEFONE_DA_PREFEITURA}}", "#{@configuracao.try(:telefone_da_prefeitura)}") if conteudo.include?("{{TELEFONE_DA_PREFEITURA}}")
			conteudo = conteudo.gsub("{{HORARIO_DA_PREFEITURA}}", "De #{@configuracao.try(:horario_inicio_funcionamento_da_prefeitura)} ás #{@configuracao.try(:horario_fim_funcionamento_da_prefeitura)} ") if conteudo.include?("{{HORARIO_DA_PREFEITURA}}")
			conteudo = conteudo.gsub("{{NOME_DO_PREGOEIRO}}", "#{@configuracao.try(:nome_do_pregoeiro)}") if conteudo.include?("{{NOME_DO_PREGOEIRO}}")
			conteudo = conteudo.gsub("{{DATA_DO_DOCUMENTO}}", "#{params[:data_do_documento].present? ? I18n.l(params[:data_do_documento].to_date, format: :long, locale: 'pt-BR') : ''}") if conteudo.include?("{{DATA_DO_DOCUMENTO}}")
			conteudo = conteudo.gsub("{{ANO_DO_DOCUMENTO}}", "#{params[:data_do_documento].present? ? params[:data_do_documento].to_date.year : ''}") if conteudo.include?("{{ANO_DO_DOCUMENTO}}")

			conteudo
		end
	end

	##########################################################################################
	# VARIÁVEIS REFERENTES AO PEDIDO

	def ordenador_de_despesa_do_pedido
		data_referencia = params[:data_do_documento].present? ? params[:data_do_documento].to_date : @pedido.data_do_pedido
		ordenador = @pedido.unidade_orcamentaria.ordenadores_de_despesas_ativos(data_referencia.to_date).last
		
		if ordenador.blank?
			return @pedido.unidade_orcamentaria.ordenadores_de_despesa.atual.try(:agente_publico)
		else
			return ordenador.try(:agente_publico)
		end
	end

	def fornecedores_com_menor_cotacao
		if @pedido.fornecedores_com_todos_os_itens_cotados.present?
			fornecedores_validos = @pedido.fornecedores_com_todos_os_itens_cotados.uniq
		else
			fornecedores_validos = @pedido.pessoas_do_pedido.validos.includes(:itens_do_pedido_por_pessoa, :pessoa).distinct
		end

		if @pedido.contem_itens_por_preco?
			fornecedores_validos.select(&:fornecedor_tem_menor_cotacao?).map{|pessoa_do_pedido| pessoa_do_pedido.pessoa }
		else
			fornecedores_validos.select(&:fornecedor_tem_maior_cotacao?).map{|pessoa_do_pedido| pessoa_do_pedido.pessoa }
		end
	end

	def dotacoes_do_pedido
		lista = '<ul style="font-family: arial; font-size: 10pt;">'

		@pedido.orcamentos_da_despesa_por_pedido.map do |orcamento|
			lista << '<li>' << "#{orcamento.classificacao_completa_com_subelemento}" << '</li>'
		end

		lista << '</ul>'
	end

	def dotacoes_do_pedido_subelemento
		lista = '<ul style="font-family: arial; font-size: 10pt;">'

		@pedido.orcamentos_da_despesa_por_pedido.map do |orcamento|
			lista << '<li>' << "#{orcamento.variante_da_classificacao_completa_com_subelemento}" << '</li>'
		end

		lista << '</ul>'
	end

	def orgaos_participantes
		@pedido.unidades_convidadas.map do |unidade|
			"#{unidade.unidade_orcamentaria.orgao.nome}"
		end
	end

	def ordenadores_de_despesa
		@pedido.unidades_convidadas.map do |unidade|
			"#{unidade.unidade_orcamentaria.ordenadores_de_despesa.atual.try(:agente_publico).try(:nome)}"
		end
	end

	def endereco_orgaos_participantes
		@pedido.unidades_convidadas.map do |unidade|
			"#{unidade.unidade_orcamentaria.orgao.try(:endereco)}"
		end
	end

	##########################################################################################
	# TABELA DOS DADOS DO ÓRGÃO GERENCIADOR

	def table_orgao_gerenciador
		table = "<table style=\"font-family: arial; font-size: 10pt; border: 1px solid black; border-collapse: collapse; margin-bottom: 5px;\">
			<thead>
				<tr>
					<th style=\"width: 35%; border: 1px solid black;\">ÓRGÃO GERENCIADOR</th>
					<th style=\"width: 30%; border: 1px solid black;\">ORDENADOR DE DESPESA</th>
					<th style=\"width: 35%; border: 1px solid black;\">ENDEREÇO DO ÓRGÃO GERENCIADOR</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td style=\"border: 1px solid black; text-align: center;\">#{@pedido.unidade_orcamentaria.orgao.nome}</td>
					<td style=\"border: 1px solid black; text-align: center;\">#{ordenador_de_despesa_do_pedido.try(:nome)}</td>
					<td style=\"border: 1px solid black; text-align: justify;\">#{@pedido.unidade_orcamentaria.orgao.try(:endereco)}</td>
				</tr>
			</tbody> </table>"
	end

	##########################################################################################
	# TABELA DOS DADOS DOS ÓRGÃOS PARTICIPANTES

	def table_orgaos_participantes
		table = "<table style=\"font-family: arial; font-size: 10pt; border: 1px solid black; border-collapse: collapse; margin-bottom: 5px;\">
			<thead>
				<tr>
					<th style=\"width: 35%; border: 1px solid black;\">ÓRGÃOS PARTICIPANTES</th>
					<th style=\"width: 30%; border: 1px solid black;\">ORDENADORES DE DESPESA</th>
					<th style=\"width: 35%; border: 1px solid black;\">ENDEREÇOS DOS ÓRGÃOS PARTICIPANTES</th>
				</tr>
			</thead> <tbody>"
		@pedido.unidades_convidadas.joins(:itens_do_pedido_por_unidade_orcamentaria).distinct(:unidade_orcamentaria_por_pedido_id).order(:id).each do |convidada|
			unidade = convidada.unidade_orcamentaria
			table <<
				"<tr>
					<td style=\"border: 1px solid black; text-align: center;\">#{unidade.orgao.try(:nome)}</td>
					<td style=\"border: 1px solid black; text-align: center;\">#{unidade.ordenadores_de_despesa.atual.try(:agente_publico).try(:nome)}</td>
					<td style=\"border: 1px solid black; text-align: justify;\">#{unidade.orgao.try(:endereco)}</td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	##########################################################################################
	# TABELA DE ITENS DO PEDIDO SIMPLIFICADA

	def table_itens_do_pedido
		if @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo?
			table_itens_do_pedido_por_preco <<
				table_itens_do_pedido_por_desconto
		elsif @pedido.por_valor_previsto? && @pedido.contem_itens_por_preco?
			table_itens_do_pedido_por_valor_previsto
		elsif @pedido.por_valor_previsto? && @pedido.contem_itens_por_desconto?
			table_itens_do_pedido_por_desconto
		else
			table_itens_do_pedido_por_preco
		end
	end

	def table_itens_do_pedido_por_preco
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table = "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%; border: 1px solid black;\"> #{caption}
			<thead>
				<tr>
					<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
					<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
					<th style=\"border: 1px solid black;width: 20%;\">UNIDADE</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
				</tr>
			</thead> <tbody>"

		itens_por_preco = @pedido.itens_do_pedido.por_preco.validos.order(:id)
		itens_por_preco.includes(:item, :itens_do_pedido_por_unidade_orcamentaria).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.quantidade_total_requisitada.to_f.valor_contabil}</td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	# def table_itens_do_pedido_por_lote
	# 	caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Lote</caption>' : '')

	# 	table = "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%; border: 1px solid black;\"> #{caption}
	# 		<thead>
	# 			<tr>
	# 				<th style=\"border: 1px solid black;width: 5%;\">LOTE</th>
	# 				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
	# 				<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
	# 				<th style=\"border: 1px solid black;width: 20%;\">UNIDADE</th>
	# 				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
	# 				<th style=\"border: 1px solid black;width: 10%;\">VALOR UNIT.</th>
	# 				<th style=\"border: 1px solid black;width: 10%;\">VALOR TOTAL</th>
	# 			</tr>
	# 		</thead> <tbody>"

	# 	itens_por_preco = @pedido.itens_do_pedido.por_preco.validos.order(:id)
	# 	itens_por_preco.includes(:item, :itens_do_pedido_por_unidade_orcamentaria).each_with_index do |item_do_pedido, index|
	# 		table <<
	# 			"<tr>
	# 				<td style=\"border: 1px solid black;text-align: center;\"></td>
	# 				<td style=\"border: 1px solid black;text-align: center;\"></td>
	# 				<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
	# 				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
	# 				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.quantidade_total_requisitada.to_f.valor_contabil}</td>
	# 				<td style=\"border: 1px solid black;text-align: center;\"></td>
	# 				<td style=\"border: 1px solid black;text-align: center;\"></td>
	# 			</tr>"
	# 	end

	# 	table << '</tbody> </table>'
	# end

	def table_itens_do_pedido_por_desconto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Desconto</caption>' : '')

		table =
			"<table style=\"margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 20%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">VALOR ESTIMADO</th>
			</tr>"

		itens_por_desconto = @pedido.itens_do_pedido.por_desconto.validos.order(:id)
		itens_por_desconto.includes(:item, :itens_do_pedido_por_unidade_orcamentaria).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	def table_itens_do_pedido_por_valor_previsto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table =
			"<table style=\"margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 20%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">VALOR ESTIMADO</th>
			</tr>"

		itens_por_preco = @pedido.itens_do_pedido.por_preco.validos.order(:id)
		itens_por_preco.includes(:item, :itens_do_pedido_por_unidade_orcamentaria).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

##########################################################################################
	# TABELA DE ITENS COM PERIODICIDADE

	def table_itens_com_periodicidade
		if @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo?
			table_itens_com_periodicidade_por_preco <<
				table_itens_com_periodicidade_por_desconto
		elsif @pedido.contem_itens_por_preco?
			table_itens_com_periodicidade_por_preco
		else
			table_itens_com_periodicidade_por_desconto
		end
	end

	def table_itens_com_periodicidade_por_preco
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption> <tr><th colspan=\"8\" style=\"border: 1px solid black;text-align: center;\"> ITENS COM PERIODICIDADE POR PREÇO </th></tr></caption>' : '')
		table = "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%; border: 1px solid black;\"> <tbody>
			#{caption}
		<thead>
			<tr>
				<th style=\"border: 1px solid black;width: 4%;\">CÓD</th>
				<th style=\"border: 1px solid black;width: 20%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 8%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 8%;\">QUANTIDADE</th>
				<th style=\"border: 1px solid black;width: 8%;\">PERIODICIDADE</th>
			</tr>
		</thead> <tbody>"

		itens_por_preco = @pedido.itens_do_pedido.por_preco.validos.order(:id)
		itens_por_preco.includes(:item, :itens_do_pedido_por_unidade_orcamentaria).each_with_index do |item_do_pedido, index|
			table <<
			"<tr>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.id}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.descricao}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.quantidade_total_requisitada_sem_periodicidade.try(:valor_contabil)}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.periodicidade_e_unidade_de_medida}</td>
			</tr>"
		end

		table << '</tbody> </table>'
	end

	def table_itens_com_periodicidade_por_desconto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption> <tr><th colspan=\"8\" style=\"border: 1px solid black;text-align: center;\"> ITENS COM PERIODICIDADE POR DESCONTO </th></tr></caption>' : '')
		table = "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%; border: 1px solid black;\"> <tbody>
			#{caption}
		<thead>
			<tr>
				<th style=\"border: 1px solid black;width: 4%;\">CÓD</th>
				<th style=\"border: 1px solid black;width: 19.5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 12%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 12%;\">VALOR ESTIMADO</th>
			</tr>
		</thead> <tbody>"

		itens_por_preco = @pedido.itens_do_pedido.por_desconto.validos.order(:id)
		itens_por_preco.includes(:item, :itens_do_pedido_por_unidade_orcamentaria).each_with_index do |item_do_pedido, index|
			table <<
			"<tr>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.id}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.descricao}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
				<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
			</tr>"
		end

		table << '</tbody> </table>'
	end

	##########################################################################################
	# TABELA DE ITENS DO PEDIDO COMPLETO (POR FORNECEDOR)

	def table_itens_do_pedido_completo
		fornecedores_cotados = @pedido.pessoas_do_pedido.includes(:pessoa).validos.select(&:cotado?)
		table = ''

		fornecedores_cotados.each_with_index do |pessoa_do_pedido, index_fornecedores|
			table << "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\">
				<tbody>
					<tr>
						<th colspan=\"2\" style=\"border: 1px solid black;text-align: center;\">FORNECEDOR ##{index_fornecedores + 1}</th>
						<td colspan=\"4\" style=\"border: 1px solid black;text-align: center;\">#{pessoa_do_pedido.pessoa.nome} (#{pessoa_do_pedido.pessoa.cpf_ou_cnpj})</th>
					</tr>"

			table <<
				if pessoa_do_pedido.cotou_itens_por_preco_e_por_desconto?
					table_itens_por_preco_do_fornecedor(pessoa_do_pedido) <<
						table_itens_por_desconto_do_fornecedor(pessoa_do_pedido)
				elsif pessoa_do_pedido.cotou_itens_por_valor_previsto?
					if pessoa_do_pedido.cotou_itens_por_preco?
						table_itens_por_valor_previsto_do_fornecedor(pessoa_do_pedido)
					else
						table_itens_por_desconto_do_fornecedor(pessoa_do_pedido)
					end
				else
					table_itens_por_preco_do_fornecedor(pessoa_do_pedido)
				end
			table << '</tbody> </table>'
		end

		return table
	end
	##########################################################################################
	# TABELA DE ITENS DO PEDIDO COMPLETO GLOBAL

	def table_itens_do_pedido_completo_global
		fornecedor_ganhador = @pedido.fornecedor_menor_cotacao_global
		table = ''

		table << "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\">
			<tbody>

				<tr>
					<td colspan=\"6\" style=\"border: 1px solid black;text-align: center;\"><b>FORNECEDOR: </b>#{fornecedor_ganhador.pessoa.nome} (#{fornecedor_ganhador.pessoa.cpf_ou_cnpj})</th>
				</tr>"

		table <<

			if fornecedor_ganhador.cotou_itens_por_preco_e_por_desconto?
				table_itens_por_preco_do_fornecedor(fornecedor_ganhador) <<
					table_itens_por_desconto_do_fornecedor(fornecedor_ganhador)
			elsif fornecedor_ganhador.cotou_itens_por_valor_previsto? && fornecedor_ganhador.cotou_itens_por_preco?
				table_itens_por_valor_previsto_do_fornecedor(fornecedor_ganhador)
			elsif fornecedor_ganhador.cotou_itens_por_valor_previsto? && fornecedor_ganhador.cotou_itens_por_desconto?
				table_itens_por_desconto_do_fornecedor(fornecedor_ganhador)
			else
				table_itens_por_preco_do_fornecedor(fornecedor_ganhador)
			end

		table <<"<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 45%;border:rigth 1px solid black;\">
		<tbody>
			<tr>
				<th colspan=\"4\" style=\"border: 1px solid black;text-align: rigth;\"></th>
				<th colspan=\"2\" style=\"border: 1px solid black;text-align: rigth;\">VALOR TOTAL:#{fornecedor_ganhador.total_da_cotacao.to_f.try(:real_contabil)}</th>
			</tr>"


		return table
		end
	##########################################################################################
# TABELA DE ITENS DO PEDIDO UNITÁRIO

	def table_itens_do_pedido_completo_unitario
		table = ''
		@pedido.itens_do_pedido.each do |item|
			valor_do_item = item.menor_preco
			fornecedor = item.fornecedor_do_menor_preco
			table << "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\">
				<tbody>

					<tr>
						<td colspan=\"6\" style=\"border: 1px solid black;text-align: center;\"><b>FORNECEDOR: </b>#{fornecedor.pessoa.nome} (#{fornecedor.pessoa.cpf_ou_cnpj})</th>
					</tr>"

			table <<
			"<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 15%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR UNIT.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR TOTAL</th>
			</tr>"

			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{item.item.id}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item.item.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item.quantidade_total_requisitada.to_f.round(2).valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{valor_do_item.to_f.round(2).valor_financeiro}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{(valor_do_item * item.quantidade_total_requisitada).to_f.round(2).valor_financeiro }</td>
				</tr>"

			table << "<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 45%;border:rigth 1px solid black;\">
			<tbody>"

		end

		return table
	end

	def table_itens_por_preco_do_fornecedor(pessoa_do_pedido)
		table = ''
		if pessoa_do_pedido.cotou_itens_por_preco_e_por_desconto?
			table << "<tr> <td colspan=\"6\" style=\"border: 1px solid black;text-align: center;\" >Itens por Preço</td> </tr>"
		end

		table <<
			"<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 15%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR UNIT.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR TOTAL</th>
			</tr>"

		itens_do_pedido_por_pessoa = pessoa_do_pedido.itens_do_pedido_por_pessoa.validos
			.joins(:item_do_pedido).merge(Licitacao::ItemDoPedido.por_preco).includes(:item_do_pedido)

		itens_do_pedido_por_pessoa.each_with_index do |item_do_pedido_por_pessoa, index_itens|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index_itens + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.item_do_pedido.quantidade_total_requisitada.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.preco_de_cotacao.to_f.valor_financeiro}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.total.to_f.real_contabil}</td>
				</tr>"
		end

		return table
	end

	def table_itens_por_desconto_do_fornecedor(pessoa_do_pedido)
		table = ''

		if pessoa_do_pedido.cotou_itens_por_preco_e_por_desconto?
			table << "<tr> <td colspan=\"6\" style=\"border: 1px solid black;text-align: center;\">Itens por Desconto</td> </tr>"
		end

		table <<
			"<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th>DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 15%;\">UNIDADE</th>
				<th colspan=\"2\" style=\"border: 1px solid black;width: 10%;\">VALOR ESTIMADO</th>
				<th style=\"border: 1px solid black;width: 15%;\">% DE DESCONTO</th>
			</tr>"

		itens_do_pedido_por_pessoa = pessoa_do_pedido.itens_do_pedido_por_pessoa.validos
			.joins(:item_do_pedido).merge(Licitacao::ItemDoPedido.por_desconto).includes(:item_do_pedido)

		itens_do_pedido_por_pessoa.each_with_index do |item_do_pedido_por_pessoa, index_itens|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index_itens + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\" colspan=\"2\">#{item_do_pedido_por_pessoa.item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.preco_de_cotacao.to_f.valor_contabil}%</td>
				</tr>"
		end

		table <<
			"<tr>
				<td colspan=\"5\" style=\"border: 1px solid black;text-align: center;\"><b>VALOR GLOBAL: </b></td>
				<td style=\"border: 1px solid black;text-align: center;\">#{pessoa_do_pedido.total_da_cotacao.to_f.real_contabil}</td>
			</tr>"
	end

	def table_itens_por_valor_previsto_do_fornecedor(pessoa_do_pedido)
		table = ''

		if pessoa_do_pedido.cotou_itens_por_preco_e_por_desconto?
			table << "<tr> <td colspan=\"6\" style=\"border: 1px solid black;text-align: center;\">Itens por Desconto</td> </tr>"
		end

		table <<
			"<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th>DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 15%;\">UNIDADE</th>
				<th colspan=\"2\" style=\"border: 1px solid black;width: 10%;\">VALOR ESTIMADO</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR</th>
			</tr>"

		itens_do_pedido_por_pessoa = pessoa_do_pedido.itens_do_pedido_por_pessoa.validos
			.joins(:item_do_pedido).merge(Licitacao::ItemDoPedido.por_preco).includes(:item_do_pedido)

		itens_do_pedido_por_pessoa.each_with_index do |item_do_pedido_por_pessoa, index_itens|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index_itens + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\" colspan=\"2\">#{item_do_pedido_por_pessoa.item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.preco_de_cotacao.to_f.real_contabil}</td>
				</tr>"
		end

		table <<
			"<tr>
				<td colspan=\"5\" style=\"border: 1px solid black;text-align: center;\"><b>VALOR GLOBAL: </b></td>
				<td style=\"border: 1px solid black;text-align: center;\">#{pessoa_do_pedido.total_da_cotacao.to_f.real_contabil}</td>
			</tr>"
	end

	def table_itens_por_valor_previsto_do_fornecedor(pessoa_do_pedido)
		table = ''

		if pessoa_do_pedido.cotou_itens_por_preco_e_por_desconto?
			table << "<tr> <td colspan=\"6\" style=\"border: 1px solid black;text-align: center;\">Itens por Desconto</td> </tr>"
		end

		table <<
			"<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th>DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 15%;\">UNIDADE</th>
				<th colspan=\"2\" style=\"border: 1px solid black;width: 10%;\">VALOR ESTIMADO</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR</th>
			</tr>"

		itens_do_pedido_por_pessoa = pessoa_do_pedido.itens_do_pedido_por_pessoa.validos
			.joins(:item_do_pedido).merge(Licitacao::ItemDoPedido.por_preco).includes(:item_do_pedido)

		itens_do_pedido_por_pessoa.each_with_index do |item_do_pedido_por_pessoa, index_itens|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index_itens + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\" colspan=\"2\">#{item_do_pedido_por_pessoa.item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_pessoa.preco_de_cotacao.to_f.real_contabil}</td>
				</tr>"
		end

		table <<
			"<tr>
				<td colspan=\"5\" style=\"border: 1px solid black;text-align: center;\"><b>VALOR GLOBAL: </b></td>
				<td style=\"border: 1px solid black;text-align: center;\">#{pessoa_do_pedido.total_da_cotacao.to_f.real_contabil}</td>
			</tr>"
	end

	##########################################################################################
	# TABELA DE ITENS DO PEDIDO POR UNIDADE GESTORA

	def table_itens_do_pedido_por_unidade_gestora
		if @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo?
			table_itens_do_pedido_por_unidade_gestora_por_preco <<
				table_itens_do_pedido_por_unidade_gestora_por_desconto
		elsif @pedido.contem_itens_por_preco?
			table_itens_do_pedido_por_unidade_gestora_por_preco
		else
			table_itens_do_pedido_por_unidade_gestora_por_desconto
		end
	end

	def table_itens_do_pedido_por_unidade_gestora_por_preco
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table =
			"<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 20%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
			</tr>"

		itens_do_pedido_por_unidade = @pedido.unidade_orcamentaria_por_pedido.itens_do_pedido_por_unidade_orcamentaria
			.joins(:item_do_pedido).merge(Licitacao::ItemDoPedido.por_preco).includes(:item_do_pedido)

		itens_do_pedido_por_unidade.each_with_index do |item_do_pedido_por_unidade, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido_por_unidade.item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_unidade.item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_unidade.quantidade.to_f.valor_contabil}</td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	def table_itens_do_pedido_por_unidade_gestora_por_desconto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Desconto</caption>' : '')

		table = "<table style=\"margin: auto; width: 95%; border: 1px solid black;\"> #{caption}
			<tbody>
				<tr>
					<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
					<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
					<th style=\"border: 1px solid black;width: 20%;\">UNIDADE</th>
					<th style=\"border: 1px solid black;width: 10%;\">VALOR PREVISTO</th>
				</tr>"

		itens_do_pedido_por_unidade = @pedido.unidade_orcamentaria_por_pedido.itens_do_pedido_por_unidade_orcamentaria
			.joins(:item_do_pedido).merge(Licitacao::ItemDoPedido.por_desconto).includes(:item_do_pedido)

		itens_do_pedido_por_unidade.each_with_index do |item_do_pedido_por_unidade, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido_por_unidade.item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_unidade.item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido_por_unidade.valor_previsto_desconto.to_f.real_contabil}</td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	##########################################################################################
	# TABELA DE ITENS DO PEDIDO DIVIDOS POR LOTE

	def table_itens_do_pedido_por_lote
		caption = '<caption>Itens por Lote</caption>'

		if @pedido.por_valor_previsto?
			table = "<table style=\"margin: auto; width: 95%; border: 1px solid black;\"> #{caption}
				<tbody>
					<tr>
						<th style=\"border: 1px solid black;width: 8%;\">LOTE</th>
						<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
						<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
						<th colspan=#{@pedido.unidades_orcamentarias_por_pedido.count} style=\"border: 1px solid black;width: 20%;\">VALOR POR SECRETÁRIA</th>
						<th style=\"border: 1px solid black;width: 10%;\">VALOR PREVISTO TOTAL</th>
						<th style=\"border: 1px solid black;width: 10%;\"></th>
						<th style=\"border: 1px solid black;width: 10%;\"></th>
					</tr>"

			table << "<tr> <th colspan=\"3\" style=\"border: 1px solid black;\"></th> "

			@pedido.unidades_orcamentarias_por_pedido.each do |unidade|
				table << "<th style=\"border: 1px solid black;\">#{unidade.unidade_orcamentaria.sigla}</th> "
			end

			table << "<th colspan=\"3\" style=\"border: 1px solid black;\"></th></tr>"

			@pedido.lotes_do_pedido.each do |lote|
				table <<
					"<tr>
						<td rowspan =\"#{lote.itens_do_lote_do_pedido.count}\" style=\"border: 1px solid black;text-align: center;\">#{lote.numero}</td>"

				lote.itens_do_lote_do_pedido.each do |item|
					table << "<tr>" unless lote.itens_do_lote_do_pedido.first == item

					table <<
						"<td style=\"border: 1px solid black;text-align: center;\">#{item.item_do_pedido.item.id}</td>
							<td style=\"border: 1px solid black;text-align: justify;\">#{item.item_do_pedido.item&.codigo_descricao_unidade_codigo_da_prefeitura}</td>"

					@pedido.unidades_orcamentarias_por_pedido.each do |unidade_do_pedido|
						table << "<td style=\"border: 1px solid black;text-align: center;\">#{item.item_do_pedido.valor_previsto_por_unidade_orcamentaria(unidade_do_pedido.unidade_orcamentaria.id).to_f.try(:valor_financeiro)}</td>"
					end

					table << "<td style=\"border: 1px solid black;text-align: center;\">#{item.item_do_pedido.valor_total_previsto_por_desconto.to_f.try(:valor_financeiro)}</td>
						<td style=\"border: 1px solid black;text-align: center;\"></td>
						<td style=\"border: 1px solid black;text-align: center;\"></td>"

					table << "</tr>" unless lote.itens_do_lote_do_pedido.last == item
				end

				table << "</tr>"
			end
		else
			table = "<table style=\"margin: auto; width: 95%; border: 1px solid black;\"> #{caption}
				<tbody>
					<tr>
						<th style=\"border: 1px solid black;width: 8%;\">LOTE</th>
						<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
						<th style=\"border: 1px solid black;\">DESCRIÇÃO</th>
						<th colspan=#{@pedido.unidades_orcamentarias_por_pedido.count} style=\"border: 1px solid black;width: 20%;\">QUANTIDADE POR SECRETÁRIA</th>
						<th style=\"border: 1px solid black;width: 10%;\">QUANTIDADE TOTAL</th>
						<th style=\"border: 1px solid black;width: 10%;\">VALOR UNITÁRIO</th>
						<th style=\"border: 1px solid black;width: 10%;\">VALOR TOTAL</th>
					</tr>"

			table << "<tr> <th colspan=\"3\" style=\"border: 1px solid black;\"></th> "

			@pedido.unidades_orcamentarias_por_pedido.each do |unidade|
				table << "<th style=\"border: 1px solid black;\">#{unidade.unidade_orcamentaria.sigla}</th> "
			end

			table << "<th colspan=\"3\" style=\"border: 1px solid black;\"></th></tr>"

			@pedido.lotes_do_pedido.each do |lote|
				table <<
					"<tr>
						<td rowspan =\"#{lote.itens_do_lote_do_pedido.count}\" style=\"border: 1px solid black;text-align: center;\">#{lote.numero}</td>"

				lote.itens_do_lote_do_pedido.each do |item|
					table << "<tr>" unless lote.itens_do_lote_do_pedido.first == item

					table <<
						"<td style=\"border: 1px solid black;text-align: center;\">#{item.item_do_pedido.item.id}</td>
							<td style=\"border: 1px solid black;text-align: justify;\">#{item.item_do_pedido.item&.codigo_descricao_unidade_codigo_da_prefeitura}</td>"

					@pedido.unidades_orcamentarias_por_pedido.each do |unidade_do_pedido|
						table << "<td style=\"border: 1px solid black;text-align: center;\">#{unidade_do_pedido.itens_do_pedido_por_unidade_orcamentaria.find_by(item_do_pedido: item.item_do_pedido).try(:quantidade).to_f.try(:contabil)}</td>"
					end

					table << "<td style=\"border: 1px solid black;text-align: center;\">#{item.item_do_pedido.itens_do_pedido_por_unidade_orcamentaria.sum(:quantidade).to_f.try(:contabil)}</td>
						<td style=\"border: 1px solid black;text-align: center;\"></td>
						<td style=\"border: 1px solid black;text-align: center;\"></td>"

					table << "</tr>" unless lote.itens_do_lote_do_pedido.last == item
				end

				table << "</tr>"
			end
		end

		table << '</tbody> </table>'
	end

	##########################################################################################
	# TABELA DE ITENS COM VALOR MEDIO DA COLETA

	def table_de_itens_com_valor_medio_da_coleta
		
		table =
			"<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\"> <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 35%;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 10%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR UNIT.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR TOTAL</th>
			</tr>"

		valor_total = 0
		@pedido.itens_do_pedido.each do |item_do_pedido|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.id.to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.quantidade_total_requisitada.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.preco_medio.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.total_medio.to_f.valor_contabil}</td>
				</tr>"

				valor_total += item_do_pedido.total_medio.to_d
		end

		table <<
			"<tr>
				<td colspan='4' style=\"border: 1px solid black;text-align: right;\">  </td>
				<td colspan='2' style=\"border: 1px solid black;text-align: center;\"> <b>TOTAL: #{valor_total.to_f.valor_contabil}</b> </td>
			</tr> </tbody> </table>"
	end

	##########################################################################################
	# TABELA DE ITENS DO PEDIDO PARA COTAÇÃO

	def table_itens_do_pedido_para_cotacao
		if @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo?
			table_itens_do_pedido_para_cotacao_por_preco <<
				table_itens_do_pedido_para_cotacao_por_desconto
		elsif @pedido.por_valor_previsto? && @pedido.contem_itens_por_preco?
			table_itens_do_pedido_para_cotacao_por_valor_previsto
		elsif @pedido.por_valor_previsto? && @pedido.contem_itens_por_desconto?
			table_itens_do_pedido_para_cotacao_por_desconto
		else
			table_itens_do_pedido_para_cotacao_por_preco
		end
	end

	def table_itens_do_pedido_para_cotacao_por_preco
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table =
			"<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 35%;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 10%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">MARCA</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR UNIT.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR TOTAL</th>
			</tr>"

		@pedido.itens_do_pedido.por_preco.validos.order(:id).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.quantidade_total_requisitada.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
				</tr>"
		end

		table <<
			'<tr>
				<td colspan="7" style=\"border: 1px solid black;text-align: center;\"> <b>TOTAL: </b> </td>
			</tr> </tbody> </table>'
	end

	def table_itens_do_pedido_para_cotacao_por_desconto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Desconto</caption>' : '')

		table =
			"<table style=\"margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 45%;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 10%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">VALOR PREVISTO</th>
				<th style=\"border: 1px solid black;width: 15%;\">% DE DESCONTO</th>
			</tr>"

		@pedido.itens_do_pedido.por_desconto.validos.order(:id).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	def table_itens_do_pedido_para_cotacao_por_valor_previsto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table =
			"<table style=\"margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 45%;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 10%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">VALOR PREVISTO</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR</th>
			</tr>"

		@pedido.itens_do_pedido.por_preco.validos.order(:id).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	def table_itens_do_pedido_para_cotacao_por_valor_previsto
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table =
			"<table style=\"margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 45%;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 10%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">VALOR PREVISTO</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR</th>
			</tr>"

		@pedido.itens_do_pedido.por_preco.validos.order(:id).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.valor_total_previsto_por_desconto.to_f.real_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
				</tr>"
		end

		table << '</tbody> </table>'
	end

	def table_itens_do_pedido_para_cotacao_de_servico
		if @pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo?
			table_itens_do_pedido_para_cotacao_de_servico_por_preco <<
				table_itens_do_pedido_para_cotacao_por_desconto #utiliza a mesma função da tabela de itens por desocnto normal
		elsif @pedido.por_valor_previsto? && @pedido.contem_itens_por_preco?
			table_itens_do_pedido_para_cotacao_por_valor_previsto
		elsif @pedido.por_valor_previsto? && @pedido.contem_itens_por_desconto?
			table_itens_do_pedido_para_cotacao_por_desconto
		else
			table_itens_do_pedido_para_cotacao_de_servico_por_preco
		end
	end

	def table_itens_do_pedido_para_cotacao_de_servico_por_preco
		caption = (@pedido.contem_itens_por_preco_e_desconto_ao_mesmo_tempo? ? '<caption>Itens por Preço</caption>' : '')

		table =
			"<table style=\"font-family: arial; font-size: 10pt; margin: auto; width: 95%;border: 1px solid black;\"> #{caption} <tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 40%;\">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 15%;\">UNIDADE</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR UNIT.</th>
				<th style=\"border: 1px solid black;width: 15%;\">VALOR TOTAL</th>
			</tr>"

		@pedido.itens_do_pedido.por_preco.validos.order(:id).each_with_index do |item_do_pedido, index|
			table <<
				"<tr>
					<td style=\"border: 1px solid black;text-align: center;\">#{(index + 1).to_s}</td>
					<td style=\"border: 1px solid black;text-align: justify;\">#{item_do_pedido.item.codigo_e_descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.item.unidade_de_medida.descricao}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_pedido.quantidade_total_requisitada.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
					<td style=\"border: 1px solid black;text-align: center;\"></td>
				</tr>"
		end

		table <<
			'<tr>
				<td colspan="6" style=\"border: 1px solid black;text-align: center;\"> <b>TOTAL: </b> </td>
			</tr> </tbody> </table>'
	end
end
