module Licitacao::DocumentosDoContratoHelper
	include Licitacao::DocumentosDoPedidoHelper
	include Licitacao::DocumentosDoProcessoHelper

	def substitui_variaveis_do_contrato(conteudo)
		conteudo = conteudo.gsub("{{NUMERO_DO_CONTRATO}}", "#{@contrato.try(:numero)}") if conteudo.include?("{{NUMERO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{NUMERO_DO_PEDIDO_DO_CONTRATO}}", "#{@contrato.numero_do_projeto_basico_do_contrato}") if conteudo.include?("{{NUMERO_DO_PEDIDO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{NUMERO_DO_PROJETO_BASICO_DO_CONTRATO}}", "#{@contrato.numero_do_projeto_basico_do_contrato}") if conteudo.include?("{{NUMERO_DO_PROJETO_BASICO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{NUMERO_DA_ATA}}", "#{@contrato.try(:ata_de_registro_de_precos).try(:numero)}") if conteudo.include?("{{NUMERO_DA_ATA}}")
		conteudo = conteudo.gsub("{{UNIDADE_GESTORA_DO_CONTRATO}}", "#{@contrato.unidade_orcamentaria_do_exercicio.unidade_gestora.try(:nome)}") if conteudo.include?("{{UNIDADE_GESTORA_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{OBJETO_DO_CONTRATO}}", "#{@contrato.objeto_atualizada}") if conteudo.include?("{{OBJETO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{JUSTIFICATIVA_DO_CONTRATO}}", "#{@contrato.aditivos.any? ? @contrato.justificativa_atualizada : @contrato.try(:justificativa)}") if conteudo.include?("{{JUSTIFICATIVA_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{VIGENCIA_DO_CONTRATO}}", "#{@contrato.try(:data_final_de_acordo_com_aditivos)}") if conteudo.include?("{{VIGENCIA_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{DOTACOES_DO_CONTRATO}}", "#{dotacoes_do_contrato}") if conteudo.include?("{{DOTACOES_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{DOTACOES_DO_CONTRATO_SUBELEMENTO}}", "#{dotacoes_do_contrato_subelemento}") if conteudo.include?("{{DOTACOES_DO_CONTRATO_SUBELEMENTO}}")
		conteudo = conteudo.gsub("{{VALOR_TOTAL_POR_EXTENSO}}", "#{@contrato.valor_do_contrato.try(:real_contabil) + " (" + @contrato.valor_do_contrato.try(:real_contabil).try(:real).try(:por_extenso_em_reais).upcase + ")" if @contrato.valor_do_contrato > 0}") if conteudo.include?("{{VALOR_TOTAL_POR_EXTENSO}}")
		conteudo = conteudo.gsub("{{VIGENCIA_COMPLETA}}", "#{@contrato.try(:inicio_da_vigencia)} até #{@contrato.try(:data_final_de_acordo_com_aditivos)}") if conteudo.include?("{{VIGENCIA_COMPLETA}}")
		# Itens do Contrato
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_POR_LOTE}}", "#{table_itens_do_contrato_por_lote}") if conteudo.include?("{{ITENS_DO_CONTRATO_POR_LOTE}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_POR_LOTE_SEM_CODIGO}}", "#{table_itens_do_contrato_por_lote_sem_codigo}") if conteudo.include?("{{ITENS_DO_CONTRATO_POR_LOTE_SEM_CODIGO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_POR_LOTE_SEM_CODIGO_DE_SERVICO}}", "#{table_itens_do_contrato_por_lote_sem_codigo_de_servico}") if conteudo.include?("{{ITENS_DO_CONTRATO_POR_LOTE_SEM_CODIGO_DE_SERVICO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO}}", "#{table_itens_do_contrato}") if conteudo.include?("{{ITENS_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_COMPLETO}}", "#{table_itens_do_contrato_completo}") if conteudo.include?("{{ITENS_DO_CONTRATO_COMPLETO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_COMPLETO_POR_DESCONTO}}", "#{table_itens_do_contrato_completo_por_desconto}") if conteudo.include?("{{ITENS_DO_CONTRATO_COMPLETO_POR_DESCONTO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_COMPLETO_SEM_CODIGO}}", "#{table_itens_do_contrato_completo_sem_codigo}") if conteudo.include?("{{ITENS_DO_CONTRATO_COMPLETO_SEM_CODIGO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_CONTRATO_COMPLETO_SEM_CODIGO_DE_SERVICO}}", "#{table_itens_do_contrato_completo_sem_codigo_de_servico}") if conteudo.include?("{{ITENS_DO_CONTRATO_COMPLETO_SEM_CODIGO_DE_SERVICO}}")

		# Contratado
		conteudo = conteudo.gsub("{{RAZAO_SOCIAL_DO_CONTRATADO}}", "#{pessoa_contratada.try(:nome)}") if conteudo.include?("{{RAZAO_SOCIAL_DO_CONTRATADO}}")
		conteudo = conteudo.gsub("{{CNPJ_DO_CONTRATADO}}", "#{pessoa_contratada.try(:cpf_ou_cnpj)}") if conteudo.include?("{{CNPJ_DO_CONTRATADO}}")
		conteudo = conteudo.gsub("{{ENDERECO_DO_CONTRATADO}}", "#{endereco_completo}") if conteudo.include?("{{ENDERECO_DO_CONTRATADO}}")
		conteudo = conteudo.gsub("{{TELEFONE_DO_CONTRATADO}}", "#{pessoa_contratada.try(:telefone)}") if conteudo.include?("{{TELEFONE_DO_CONTRATADO}}")
		conteudo = conteudo.gsub("{{EMAIL_DO_CONTRATADO}}", "#{emails_do_contratado}") if conteudo.include?("{{EMAIL_DO_CONTRATADO}}")
		# Órgão do Contrato
		conteudo = conteudo.gsub("{{NOME_DO_ORGAO_DO_CONTRATO}}", "#{orgao_do_contrato.nome}") if conteudo.include?("{{NOME_DO_ORGAO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{CNPJ_DO_ORGAO_DO_CONTRATO}}", "#{orgao_do_contrato.try(:cnpj).try(:as_cnpj)}") if conteudo.include?("{{CNPJ_DO_ORGAO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{ENDERECO_DO_ORGAO_DO_CONTRATO}}", "#{orgao_do_contrato.try(:endereco)}") if conteudo.include?("{{ENDERECO_DO_ORGAO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{TELEFONE_DO_ORGAO_DO_CONTRATO}}", "#{orgao_do_contrato.try(:telefone).try(:as_telefone)}") if conteudo.include?("{{TELEFONE_DO_ORGAO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{EMAIL_DO_ORGAO_DO_CONTRATO}}", "#{orgao_do_contrato.try(:email)}") if conteudo.include?("{{EMAIL_DO_ORGAO_DO_CONTRATO}}")
		# Ordenador de Despesa
		conteudo = conteudo.gsub("{{NOME_DO_ORDENADOR_DO_CONTRATO}}", "#{ordenador_de_despesa_do_contrato.try(:nome)}") if conteudo.include?("{{NOME_DO_ORDENADOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{TIPO_DE_CARGO_ORDENADOR_DO_CONTRATO}}", "#{ordenador_de_despesa_do_contrato.try(:tipo_de_cargo_i18n).try(:upcase)}") if conteudo.include?("{{TIPO_DE_CARGO_ORDENADOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{MATRICULA_DO_ORDENADOR_DO_CONTRATO}}", "#{ordenador_de_despesa_do_contrato.try(:matricula_municipal)}") if conteudo.include?("{{MATRICULA_DO_ORDENADOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{CPF_DO_ORDENADOR_DO_CONTRATO}}", "#{ordenador_de_despesa_do_contrato.try(:cpf).try(:as_cpf_mascarado)}") if conteudo.include?("{{CPF_DO_ORDENADOR_DO_CONTRATO}}")

		# Representante do Contrato
		conteudo = conteudo.gsub("{{REPRESENTANTE_DO_CONTRATADO}}", "#{@contrato.responsavel.try(:nome)}") if conteudo.include?("{{REPRESENTANTE_DO_CONTRATADO}}")
		conteudo = conteudo.gsub("{{CPF_REPRESENTANTE_DO_CONTRATADO}}", "#{@contrato.responsavel.try(:cpf).try(:as_cpf_mascarado)}") if conteudo.include?("{{CPF_REPRESENTANTE_DO_CONTRATADO}}")
		conteudo = conteudo.gsub("{{RG_REPRESENTANTE_DO_CONTRATADO}}", "#{@contrato.responsavel.try(:rg)}") if conteudo.include?("{{RG_REPRESENTANTE_DO_CONTRATADO}}")

		# Fiscais do Contrato
		conteudo = conteudo.gsub("{{FISCAL_DO_CONTRATO}}", "#{@contrato.fiscais_do_contrato.ativos.collect{|fiscal| fiscal.agente_publico_municipal.pessoa.nome.to_s}.join(", ")}") if conteudo.include?("{{FISCAL_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{CARGO_FISCAL_DO_CONTRATO}}", "#{@contrato.fiscais_do_contrato.ativos.map(&:cargo).join(', ')}") if conteudo.include?("{{CARGO_FISCAL_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{CPF_OU_CNPJ_FISCAL_DO_CONTRATO}}", "#{@contrato.fiscais_do_contrato.ativos.collect{|fiscal| fiscal.agente_publico_municipal.pessoa.texto_cpf_ou_cnpj}.join(", ")}") if conteudo.include?("{{CPF_OU_CNPJ_FISCAL_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{NUMERO_DE_MATRICULA_DO_FISCAL}}", "#{@contrato.fiscais_do_contrato.ativos.map(&:matricula).join(', ')}") if conteudo.include?("{{NUMERO_DE_MATRICULA_DO_FISCAL}}")
		conteudo = conteudo.gsub("{{NUMERO_PORTARIA_FISCAL_DO_CONTRATO}}", "#{@contrato.fiscais_do_contrato.ativos.map(&:numero_da_portaria).join(', ')}") if conteudo.include?("{{NUMERO_PORTARIA_FISCAL_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{VIGENCIA_INICIAL_PORTARIA_FISCAL_DO_CONTRATO}}", "#{@contrato.fiscais_do_contrato.ativos.map(&:vigencia_inicial_da_portaria).join(', ')}") if conteudo.include?("{{VIGENCIA_INICIAL_PORTARIA_FISCAL_DO_CONTRATO}}")

		# Gestores do Contrato
		conteudo = conteudo.gsub("{{GESTOR_DO_CONTRATO}}", "#{@contrato.gestores_do_contrato.ativos.collect{|gestor| gestor.agente_publico_municipal.pessoa.nome.to_s}.join(", ")}") if conteudo.include?("{{GESTOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{CARGO_GESTOR_DO_CONTRATO}}", "#{@contrato.gestores_do_contrato.ativos.map(&:cargo).join(', ')}") if conteudo.include?("{{CARGO_GESTOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{CPF_OU_CNPJ_GESTOR_DO_CONTRATO}}", "#{@contrato.gestores_do_contrato.ativos.collect{|gestor| gestor.agente_publico_municipal.pessoa.texto_cpf_ou_cnpj}.join(", ")}") if conteudo.include?("{{CPF_OU_CNPJ_GESTOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{NUMERO_DE_MATRICULA_DO_GESTOR}}", "#{@contrato.gestores_do_contrato.ativos.map(&:matricula).join(', ')}") if conteudo.include?("{{NUMERO_DE_MATRICULA_DO_GESTOR}}")
		conteudo = conteudo.gsub("{{NUMERO_PORTARIA_GESTOR_DO_CONTRATO}}", "#{@contrato.gestores_do_contrato.ativos.map(&:numero_da_portaria).join(', ')}") if conteudo.include?("{{NUMERO_PORTARIA_GESTOR_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{VIGENCIA_INICIAL_PORTARIA_GESTOR_DO_CONTRATO}}", "#{@contrato.gestores_do_contrato.ativos.map(&:vigencia_inicial_da_portaria).join(', ')}") if conteudo.include?("{{VIGENCIA_INICIAL_PORTARIA_GESTOR_DO_CONTRATO}}")

		# Ata de registro
		
		conteudo = conteudo.gsub("{{NUMERO_DA_ARP}}", "#{@contrato.try(:ata_de_registro_de_precos).try(:numero)}") if conteudo.include?("{{NUMERO_DA_ARP}}")
		conteudo = conteudo.gsub("{{VIGENCIA_FINAL_DA_ATA}}", "#{@contrato.try(:ata_de_registro_de_precos).try(:data_final_de_vigencia)}") if conteudo.include?("{{VIGENCIA_FINAL_DA_ATA}}")
		conteudo = conteudo.gsub("{{VIGENCIA_DA_ATA}}", "#{@contrato.try(:ata_de_registro_de_precos).try(:data_inicio_de_vigencia)} A #{@contrato.try(:ata_de_registro_de_precos).try(:data_final_de_vigencia)}") if conteudo.include?("{{VIGENCIA_DA_ATA}}")
		conteudo = conteudo.gsub("{{VIGENCIA_INICIAL_DA_ATA}}", "#{@contrato.try(:ata_de_registro_de_precos).try(:data_inicio_de_vigencia)}") if conteudo.include?("{{VIGENCIA_INICIAL_DA_ATA}}")
		# Apostilamento
		conteudo = conteudo.gsub("{{APOSTILAMENTOS}}", "#{apostilamento}") if conteudo.include?("{{APOSTILAMENTOS}}")

		conteudo
	end

	##########################################################################################
	# VARIÁVEIS REFERENTES AO CONTRATO

	def apostilamento
		bloco = ''
		@contrato.apostilamentos.each do |apostilamento|
			bloco <<
			"
				<div style=\"font-family: arial; font-size: 10pt; margin-bottom: 5px;\">
					<div style=\"font-weight: bold;\">Legislação : </div>
					#{apostilamento.try(:legislacao).titulo}
					<div style=\"font-weight: bold;\">Objeto : </div>
					#{apostilamento.try(:objeto)}
				</div>
			"
			apostilamento.orcamentos_da_despesa_do_apostilamento.each do |orcamento|
				bloco <<
				"
					<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%; border: 1px solid black; \">
						<tr>
							<th style=\"width: 35%; border: 1px solid black;\">CLASSIFICAÇÃO</th>
							<th style=\"width: 30%; border: 1px solid black;\">SUB-ELEMENTO DE DESPESA</th>
							<th style=\"width: 35%; border: 1px solid black;\">FONTE DE RECURSOS</th>
						</tr>
						<tr>
							<td style=\"border: 1px solid black; text-align: center;\">#{orcamento.classificacao_completa}</td>
							<td style=\"border: 1px solid black; text-align: center;\">#{orcamento.sub_elemento_de_despesa.codigo_e_descricao}</td>
							<td style=\"border: 1px solid black; text-align: justify;\">#{orcamento.orcamento_da_despesa.try(:fonte_de_recursos).try(:codigo_e_descricao)}</td>
						</tr>
					</table>
				"
			end

			bloco << "<br>"
		end
		return bloco
	end

	def endereco_completo
		if pessoa_contratada.numero.present? && pessoa_contratada.complemento.present? && pessoa_contratada.bairro.present? && pessoa_contratada.cep.present?
			"#{pessoa_contratada.logradouro}, #{pessoa_contratada.numero}, #{pessoa_contratada.complemento}, #{pessoa_contratada.bairro}, #{pessoa_contratada.cidade.try(:nome)} - #{pessoa_contratada.cidade.try(:estado).try(:nome)}, CEP: #{pessoa_contratada.cep.try(:as_cep)}"
		elsif pessoa_contratada.numero.present? && pessoa_contratada.bairro.present? && pessoa_contratada.cep.present?
			"#{pessoa_contratada.logradouro}, #{pessoa_contratada.numero}, #{pessoa_contratada.bairro}, #{pessoa_contratada.cidade.try(:nome)} - #{pessoa_contratada.cidade.try(:estado).try(:nome)}, CEP: #{pessoa_contratada.cep.try(:as_cep)}"
		elsif pessoa_contratada.numero.present? && pessoa_contratada.cep.present?
			"#{pessoa_contratada.logradouro}, #{pessoa_contratada.numero}, #{pessoa_contratada.cidade.try(:nome)} - #{pessoa_contratada.cidade.try(:estado).try(:nome)}, CEP: #{pessoa_contratada.cep.try(:as_cep)}"
		else
			"#{pessoa_contratada.logradouro}, #{pessoa_contratada.cidade.try(:nome).try(:upcase)} - #{pessoa_contratada.cidade.try(:estado).try(:nome).try(:upcase)}"
		end
	end

	def emails_do_contratado
		emails = "#{pessoa_contratada.try(:email)}"
		if pessoa_contratada.email_alternativo.present?
			emails << " - #{pessoa_contratada.try(:email_alternativo)}"
		end
		return emails
	end

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

		@contrato.dotacoes_ativas.each do |orcamento|
			lista << "<li>#{orcamento.classificacao_completa_com_subelemento}</li>"
		end

		lista << '</ul>'
	end

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

		@contrato.dotacoes_ativas.each do |orcamento|
			lista << "<li>#{orcamento.variante_da_classificacao_completa_com_subelemento}</li>"
		end

		lista << '</ul>'
	end

	def pessoa_contratada
		@contrato.contratado.try(:pessoa)
	end

	def ordenador_de_despesa_do_contrato
		ordenador = @contrato.unidade_orcamentaria_do_exercicio.ordenadores_de_despesa.where("loa_ordenadores_de_despesa.data_inicio_da_gestao <= ? AND loa_ordenadores_de_despesa.data_fim_de_gestao >= ?", params[:data_do_documento].to_date,params[:data_do_documento].to_date).last

		if ordenador.blank?
			return @contrato.unidade_orcamentaria_do_exercicio.ordenadores_de_despesa.atual.try(:agente_publico)
		else
			return ordenador.try(:agente_publico)
		end
	end

	def orgao_do_contrato
		@contrato.unidade_orcamentaria_do_ultimo_aditivo_confirmado.orgao
	end

	##########################################################################################
	# TABELA DE ITENS DO CONTRATO SIMPLIFICADA

	def table_itens_do_contrato
		table = '<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%;border: 1px solid black;\">
			<tbody>
			<tr>
				<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
				<th style=\"border: 1px solid black;width: 10%;\">CÓD. NO ÓRGÃO</th>
				<th style=\"border: 1px solid black \">DESCRIÇÃO</th>
				<th style=\"border: 1px solid black;width: 10%;\">MARCA</th>
				<th style=\"border: 1px solid black;width: 10%;\">UNID.</th>
				<th style=\"border: 1px solid black;width: 10%;\">QTD. CONTRATADA</th>
				<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
				<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
			</tr>'

		@contrato.itens_do_contrato.por_ordem_dos_itens_do_lote.each_with_index do |item_do_contrato, 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: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:codigo_na_prefeitura)}</td>
					<td style=\"border: 1px solid black;text-align: justify;\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.codigo_e_descricao}</div></td>
					<td style=\"border: 1px solid black;\">#{item_do_contrato.marca_oficial_do_item}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;\"></td>
					<td style=\"border: 1px solid black;\"></td>
				</tr>"
		end

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

	##########################################################################################
	# TABELA DE ITENS DO CONTRATO COMPLETO

	def table_itens_do_contrato_completo_sem_codigo
		table = '<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%;border: 1px solid black;\">
			<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: 10%;\">MARCA</th>
					<th style=\"border: 1px solid black;width: 10%;\">UNID.</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
					<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
				</tr>'

		@contrato.itens_do_contrato.por_ordem_dos_itens_do_lote.each_with_index do |item_do_contrato, 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;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.codigo_e_descricao}</div></td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.marca_oficial_do_item}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_unitario.to_f.valor_financeiro}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
				</tr>"
		end

		table <<
			"<tr>
				<th colspan='7' align=\"right\"style=\"border: 1px solid black;\">TOTAL: #{@contrato.valor_total_itens_do_contrato.to_f.real_contabil}</th>
			</tr> </tbody> </table>"
	end

	def table_itens_do_contrato_completo_sem_codigo_de_servico
		table = '<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%;border: 1px solid black;\">
			<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: 10%;\">UNID.</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
					<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
				</tr>'

		@contrato.itens_do_contrato.por_ordem_dos_itens_do_lote.each_with_index do |item_do_contrato, 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;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.codigo_e_descricao}</div></td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_unitario.to_f.valor_financeiro}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
				</tr>"
		end

		table <<
			"<tr>
				<th colspan='6' align=\"right\"style=\"border: 1px solid black;\">TOTAL: #{@contrato.valor_total_itens_do_contrato.to_f.real_contabil}</th>
			</tr> </tbody> </table>"
	end


	def table_itens_do_contrato_completo
		table = '<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%;border: 1px solid black;\">
			<tbody>
				<tr>
					<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
					<th style=\"border: 1px solid black;width: 10%;\">CÓD. NO ÓRGÃO</th>
					<th style=\"border: 1px solid black \">DESCRIÇÃO</th>
					<th style=\"border: 1px solid black;width: 10%;\">MARCA</th>
					<th style=\"border: 1px solid black;width: 10%;\">UNID.</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD. CONTRATADA</th>
					<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
				</tr>'

		@contrato.itens_do_contrato.por_ordem_dos_itens_do_lote.each_with_index do |item_do_contrato, 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: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:codigo_na_prefeitura)}</td>
					<td style=\"border: 1px solid black;text-align: justify;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.codigo_e_descricao}</div></td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.marca_oficial_do_item}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_unitario.to_f.valor_financeiro}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
				</tr>"
		end

		table <<
			"<tr>
				<th colspan='8' align=\"right\"style=\"border: 1px solid black;\">TOTAL: #{@contrato.valor_total_itens_do_contrato.to_f.real_contabil}</th>
			</tr> </tbody> </table>"
	end

	#inicio
	def table_itens_do_contrato_completo_por_desconto
		table = '<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%;border: 1px solid black;\">
			<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: 10%;\">UNIDADE.</th>
					<th style=\"border: 1px solid black;width: 12%;\">% DE DESCONTO</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR CONTRATADO</th>
				</tr>'

		@contrato.itens_do_contrato.por_ordem_dos_itens_do_lote.each_with_index do |item_do_contrato, 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;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.codigo_e_descricao}</div></td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.lote.pessoa_do_projeto_do_lote_ganhadora.pessoa_do_projeto.desconto_final_do_lote(item_do_contrato.item_do_lote.lote).contabil}'%'</td>
					<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
					</tr>"
		end

		table <<
			"<tr>
				<th colspan='8' align=\"right\"style=\"border: 1px solid black;\">TOTAL: #{@contrato.valor_total_itens_do_contrato.to_f.real_contabil}</th>
			</tr> </tbody> </table>"
	end
	#final

	def table_itens_do_contrato_por_lote_sem_codigo
		tables = ''

		@contrato.itens_do_contrato.includes(item_do_lote: :lote).order('licitacao_lotes.numero').group_by {|item_do_contrato| item_do_contrato.item_do_lote.lote}.each do |lote, itens_do_contrato|
			tables << "<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%; border:1px solid black;\"> <thead>
				<tr>
					<th align=\"left\" colspan=\"8\">
						LOTE ##{lote.numero}
					</th>
				</tr>
				<tr>
					<th style=\"border: 1px solid black;width: 5%;\">SEQ</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: 10%;\">MARCA</th>
					<th style=\"border: 1px solid black;width: 10%;\">UNID.</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
					<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
				</tr> </thead> <tbody>"
			itens_do_contrato.sort_by { |item_do_contrato| item_do_contrato.item_do_lote.try(:sequencia) }.each do |item_do_contrato|
				tables <<
					"<tr>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.try(:sequencia)}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.id}</td>
						<td style=\"border: 1px solid black;text-align: justify;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.descricao}</div></td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.marca_oficial_do_item}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_unitario.to_f.valor_financeiro}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
					</tr>"
			end

			tables <<
				"</tbody> <tfoot> <tr style=\"border-top: 1px solid black;\">
					<th colspan='8' style=\"border:1px solid black;\">TOTAL: #{itens_do_contrato.sum(&:valor_total).try(:real_contabil)}</th>
				</tr> </tfoot> </table>"
		end

		tables
	end

	def table_itens_do_contrato_por_lote_sem_codigo_de_servico
		tables = ''

		@contrato.itens_do_contrato.includes(item_do_lote: :lote).order('licitacao_lotes.numero').group_by {|item_do_contrato| item_do_contrato.item_do_lote.lote}.each do |lote, itens_do_contrato|
			tables << "<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%; border:1px solid black;\"> <thead>
				<tr>
					<th align=\"left\" colspan=\"7\">
						LOTE ##{lote.numero}
					</th>
				</tr>
				<tr>
					<th style=\"border: 1px solid black;width: 5%;\">SEQ</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: 10%;\">UNID.</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
					<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
				</tr> </thead> <tbody>"
			itens_do_contrato.sort_by { |item_do_contrato| item_do_contrato.item_do_lote.try(:sequencia) }.each do |item_do_contrato|
				tables <<
					"<tr>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.try(:sequencia)}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.id}</td>
						<td style=\"border: 1px solid black;text-align: justify;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.descricao}</div></td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_unitario.to_f.valor_financeiro}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
					</tr>"
			end

			tables <<
				"</tbody> <tfoot> <tr style=\"border-top: 1px solid black;\">
					<th colspan='7' style=\"border:1px solid black;\">TOTAL: #{itens_do_contrato.sum(&:valor_total).try(:real_contabil)}</th>
				</tr> </tfoot> </table>"
		end

		tables
	end

	def table_itens_do_contrato_por_lote
		tables = ''

		@contrato.itens_do_contrato.includes(item_do_lote: :lote).order('licitacao_lotes.numero').group_by {|item_do_contrato| item_do_contrato.item_do_lote.lote}.each do |lote, itens_do_contrato|
			tables << "<table style=\"font-family: arial; font-size: 8pt; margin: auto; margin-bottom: 5px; width: 100%; border:1px solid black;\"> <thead>
				<tr>
					<th align=\"left\" colspan=\"9\">
						LOTE ##{lote.numero}
					</th>
				</tr>
				<tr>
					<th style=\"border: 1px solid black;width: 5%;\">SEQ</th>
					<th style=\"border: 1px solid black;width: 5%;\">ITEM</th>
					<th style=\"border: 1px solid black;width: 10%;\">CÓD. NO ÓRGÃO</th>
					<th style=\"border: 1px solid black \">DESCRIÇÃO</th>
					<th style=\"border: 1px solid black;width: 10%;\">MARCA</th>
					<th style=\"border: 1px solid black;width: 10%;\">UNID.</th>
					<th style=\"border: 1px solid black;width: 10%;\">QTD. CONTRATADA</th>
					<th style=\"border: 1px solid black;width: 12%;\">VALOR UNIT.</th>
					<th style=\"border: 1px solid black;width: 14%;\">VALOR TOTAL</th>
				</tr> </thead> <tbody>"
			itens_do_contrato.each do |item_do_contrato|
				tables <<
					"<tr>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.try(:sequencia)}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.id}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:codigo_na_prefeitura)}</td>
						<td style=\"border: 1px solid black;text-align: justify;\"align=\"justify\"><div>#{item_do_contrato.item_do_lote.item_do_pedido.item.descricao}</div></td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.marca_oficial_do_item}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.item_do_lote.item_do_pedido.item.try(:unidade_de_medida).try(:descricao)}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.quantidade.to_f.valor_contabil}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_unitario.to_f.valor_financeiro}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_contrato.valor_total.to_f.valor_financeiro}</td>
					</tr>"
			end

			tables <<
				"</tbody> <tfoot> <tr style=\"border-top: 1px solid black;\">
					<th colspan='9' style=\"border:1px solid black;\">TOTAL: #{itens_do_contrato.sum(&:valor_total).try(:real_contabil)}</th>
				</tr> </tfoot> </table>"
		end

		tables
	end
end
