module Contabilidade::DocumentosDaLiquidacaoHelper
	def substitui_variaveis_da_liquidacao(conteudo)
		conteudo = conteudo.gsub("{{DATA_DA_LIQUIDACAO}}", "#{ @liquidacao.data_da_liquidacao}") if conteudo.include?("{{DATA_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{NUMERO_DO_EMPENHO}}", "#{@liquidacao.empenho.numero_do_empenho}") if conteudo.include?("{{NUMERO_DO_EMPENHO}}")
		conteudo = conteudo.gsub("{{UNIDADE_GESTORA_DA_LIQUIDACAO}}", "#{@liquidacao.unidade_orcamentaria.unidade_gestora.nome}") if conteudo.include?("{{UNIDADE_GESTORA_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{VALOR_DA_LIQUIDACAO}}", "#{@liquidacao.valor.to_f.real_contabil}") if conteudo.include?("{{VALOR_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{NUMERO_DA_LIQUIDACAO}}", "#{@liquidacao.empenho_e_numero}") if conteudo.include?("{{NUMERO_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{ORGAO}}", "#{@liquidacao.unidade_orcamentaria.orgao.nome.capitalize.try(:upcase)}") if conteudo.include?("{{ORGAO}}")
		conteudo = conteudo.gsub("{{NUMERO_DO_CONTRATO}}", "#{@liquidacao.empenho.numero_do_contrato}") if conteudo.include?("{{NUMERO_DO_CONTRATO}}")
		conteudo = conteudo.gsub("{{NUMERO_DO_PROCESSO}}", "#{@liquidacao.try(:empenho).try(:projeto).try(:numero_do_processo)}") if conteudo.include?("{{NUMERO_DO_PROCESSO}}")
		conteudo = conteudo.gsub("{{MODALIDADE_DO_EMPENHO}}", "#{@liquidacao.empenho.modalidade.capitalize}") if conteudo.include?("{{MODALIDADE_DO_EMPENHO}}")
		conteudo = conteudo.gsub("{{HISTORICO_EMPENHO}}", "#{@liquidacao.empenho.historico}") if conteudo.include?("{{HISTORICO_EMPENHO}}")
		conteudo = conteudo.gsub("{{DOTACAO_DO_EMPENHO}}", "#{@liquidacao.empenho.valor_restante_da_dotacao.to_f.valor_financeiro}") if conteudo.include?("{{DOTACAO_DO_EMPENHO}}")
		conteudo = conteudo.gsub("{{DATA_DO_EMPENHO}}", "#{@liquidacao.empenho.data_do_empenho}") if conteudo.include?("{{DATA_DO_EMPENHO}}")
		conteudo = conteudo.gsub("{{ITENS_DO_EMPENHO}}", "#{table_itens_do_empenho}") if conteudo.include?("{{ITENS_DO_EMPENHO}}")
		conteudo = conteudo.gsub("{{VALOR_TOTAL_EMPENHADO}}", "#{@liquidacao.empenho.valor_total_do_empenho.to_f.real_contabil}") if conteudo.include?("{{VALOR_TOTAL_EMPENHADO}}")
		conteudo = conteudo.gsub("{{NUMERO_DA_NOTA}}", "#{@liquidacao.nota_fiscal_numero}") if conteudo.include?("{{NUMERO_DA_NOTA}}")
		conteudo = conteudo.gsub("{{VALOR_DA_NOTA}}", "#{@liquidacao.valor.to_f.real_contabil} (#{@liquidacao.valor.to_f.try(:por_extenso_em_reais).upcase})") if conteudo.include?("{{VALOR_DA_NOTA}}")
		conteudo = conteudo.gsub("{{MES_DE_COMPETENCIA}}", "#{@liquidacao.mes_de_competencia.present? ? @liquidacao.localizar(:mes_de_competencia) : ''}") if conteudo.include?("{{MES_DE_COMPETENCIA}}")
		conteudo = conteudo.gsub("{{ANO_DE_COMPETENCIA}}", "#{@liquidacao.ano_de_competencia}") if conteudo.include?("{{ANO_DE_COMPETENCIA}}")
		conteudo = conteudo.gsub("{{HISTORICO_DA_LIQUIDACAO}}", "#{@liquidacao.historico}") if conteudo.include?("{{HISTORICO_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{ITENS_DA_LIQUIDACAO}}", "#{table_itens_da_liquidacao}") if conteudo.include?("{{ITENS_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{VALOR_TOTAL_LIQUIDADO}}", "#{@liquidacao.empenho.valor_total_liquidado.to_f.real_contabil}") if conteudo.include?("{{VALOR_TOTAL_LIQUIDADO}}")
		conteudo = conteudo.gsub("{{RAZAO_SOCIAL_DO_FORNECEDOR}}", "#{@liquidacao.pessoa.nome}") if conteudo.include?("{{RAZAO_SOCIAL_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{ENDERECO_DO_FORNECEDOR}}", "#{@liquidacao.pessoa.try(:endereco_completo)}") if conteudo.include?("{{ENDERECO_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{NOME_DO_ORDENADOR_DA_LIQUIDACAO}}", "#{ordenador_de_despesa_da_liquidacao.try(:nome)}") if conteudo.include?("{{NOME_DO_ORDENADOR_DA_LIQUIDACAO}}")
		conteudo = conteudo.gsub("{{CNPJ_DO_FORNECEDOR}}", "#{@liquidacao.empenho.pessoa.cpf_ou_cnpj}") if conteudo.include?("{{CNPJ_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{TELEFONE_DO_FORNECEDOR}}", "#{@liquidacao.pessoa.try(:telefone)}") if conteudo.include?("{{TELEFONE_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{EMAIL_DO_FORNECEDOR}}", "#{emails_do_fornecedor}") if conteudo.include?("{{EMAIL_DO_FORNECEDOR}}")
		conteudo = conteudo.gsub("{{CONTA_BANCARIA_DO_FORNECEDOR}}", "#{conta_bancaria_do_fornecedor}") if conteudo.include?("{{CONTA_BANCARIA_DO_FORNECEDOR}}")

		# VARIAVEIS RELACIONADAS AO CONTRATO
		conteudo = conteudo.gsub("{{OBJETO_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.try(:objeto)}") if conteudo.include?("{{OBJETO_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{VIGENCIA_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.try(:data_final_de_acordo_com_aditivos)}") if conteudo.include?("{{VIGENCIA_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{REPRESENTANTE_DO_CONTRATADO}}", "#{@liquidacao.empenho.contrato.responsavel.try(:nome)}") if conteudo.include?("{{REPRESENTANTE_DO_CONTRATADO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{CPF_REPRESENTANTE_DO_CONTRATADO}}", "#{@liquidacao.empenho.contrato.responsavel.try(:cpf).try(:as_cpf_mascarado)}") if conteudo.include?("{{CPF_REPRESENTANTE_DO_CONTRATADO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{RG_REPRESENTANTE_DO_CONTRATADO}}", "#{@liquidacao.empenho.contrato.responsavel.try(:rg)}") if conteudo.include?("{{RG_REPRESENTANTE_DO_CONTRATADO}}") && @liquidacao.empenho.contrato.present?

		# Órgão do Contrato
		conteudo = conteudo.gsub("{{NOME_DO_ORGAO_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.unidade_orcamentaria_do_exercicio.orgao.nome}") if conteudo.include?("{{NOME_DO_ORGAO_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?

		# Fiscais do Contrato
		conteudo = conteudo.gsub("{{FISCAL_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.fiscais_do_contrato.ativos.collect{|fiscal| fiscal.agente_publico_municipal.pessoa.nome.to_s}.join(", ")}") if conteudo.include?("{{FISCAL_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{CARGO_FISCAL_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.fiscais_do_contrato.ativos.map(&:cargo).join(', ')}") if conteudo.include?("{{CARGO_FISCAL_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{CPF_OU_CNPJ_FISCAL_DO_CONTRATO}}", "#{@liquidacao.empenho.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}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{NUMERO_DE_MATRICULA_DO_FISCAL}}", "#{@liquidacao.empenho.contrato.fiscais_do_contrato.ativos.map(&:matricula).join(', ')}") if conteudo.include?("{{NUMERO_DE_MATRICULA_DO_FISCAL}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{NUMERO_PORTARIA_FISCAL_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.fiscais_do_contrato.ativos.map(&:numero_da_portaria).join(', ')}") if conteudo.include?("{{NUMERO_PORTARIA_FISCAL_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?
		conteudo = conteudo.gsub("{{VIGENCIA_INICIAL_PORTARIA_FISCAL_DO_CONTRATO}}", "#{@liquidacao.empenho.contrato.fiscais_do_contrato.ativos.map(&:vigencia_inicial_da_portaria).join(', ')}") if conteudo.include?("{{VIGENCIA_INICIAL_PORTARIA_FISCAL_DO_CONTRATO}}") && @liquidacao.empenho.contrato.present?

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

    conteudo
	end

	def substitui_outras_variaveis(conteudo)
		conteudo = conteudo.gsub("{{DATA}}", "#{I18n.l(Date.today, format: :long, locale: 'pt-BR')}") if conteudo.include?("{{DATA}}")
		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 = 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
	end

	def emails_do_fornecedor
		emails = "#{@liquidacao.pessoa.try(:email)}" 
		if @liquidacao.pessoa.email_alternativo.present?
			emails << " - #{@liquidacao.pessoa.try(:email_alternativo)}"
		end
		return emails
	end

	def table_itens_do_empenho
		if @empenho.valor_anulado == 0
			return table_itens_do_empenho_nao_anulado
		else
			return table_itens_do_empenho_anulado
		end
	end

	def ordenador_de_despesa_da_liquidacao
		@liquidacao.unidade_orcamentaria.ordenadores_de_despesa.atual.try(:agente_publico)
	end

	def table_itens_da_liquidacao
		tables = '<table style="margin: auto; margin-bottom: 10px; width: 100%;border: 1px solid black;">
				<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: 9%;\">UNID.</th>
						<th style=\"border: 1px solid black;width: 10%;\">QTD.</th>
						<th style=\"border: 1px solid black;width: 10%;\">VALOR TOTAL.</th>
					</tr>
				</thead> <tbody>'
				@liquidacao.itens_da_nota_fiscal.each_with_index do |item_da_nota_fiscal, index|
				tables <<
					"<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_da_nota_fiscal.descricao_do_item}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_da_nota_fiscal.valor_unitario.to_f.valor_financeiro}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_da_nota_fiscal.quantidade.to_f.valor_contabil}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_da_nota_fiscal.total.to_f.valor_financeiro}</td>
					</tr>"
		end
		tables <<
			"</tbody> <tfoot> <tr>
			</tr> </tfoot> </table>"
	end

	def table_itens_do_empenho_nao_anulado
		tables = '<table style="margin: auto; margin-bottom: 10px; width: 100%;border: 1px solid black;">
				<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: 10%;\">SALDO A EMPENHAR</th>
						<th style=\"border: 1px solid black;width: 9%;\">QTD.</th>
						<th style=\"border: 1px solid black;width: 10%;\">UNT.</th>
						<th style=\"border: 1px solid black;width: 10%;\">TOTAL.</th>
					</tr>
				</thead> <tbody>'
				@empenho.itens_do_empenho.each_with_index do |item_do_empenho, index|
				tables <<
					"<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_empenho.item.codigo_e_descricao_do_item}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.quantidade_disponivel_para_empenho.to_f.formato_decimal}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.quantidade.to_f.formato_decimal}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.valor_unitario.to_f.real_contabil}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.total.to_f.valor_financeiro}</td>
					</tr>"
		end
		tables <<
			"</tbody> <tfoot> <tr>
			</tr> </tfoot> </table>"
	end

	def table_itens_do_empenho_anulado
		tables = '<table style="margin: auto; margin-bottom: 10px; width: 100%;border: 1px solid black;">
				<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: 10%;\">SALDO A EMPENHAR</th>
						<th style=\"border: 1px solid black;width: 9%;\">QTD</th>
						<th style=\"border: 1px solid black;width: 9%;\">Q.ANULADA</th>
						<th style=\"border: 1px solid black;width: 10%;\">UNT.</th>
						<th style=\"border: 1px solid black\">TOTAL</th>
						<th style=\"border: 1px solid black\">TOTAL.ANULADO</th>
					</tr>
				</thead> <tbody>'
				@empenho.itens_do_empenho.each_with_index do |item_do_empenho, index|
				tables <<
					"<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_empenho.item.codigo_e_descricao_do_item}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.quantidade_disponivel_para_empenho.to_f.formato_decimal}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.quantidade.to_f.formato_decimal}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.quantidade_anulada.to_f.formato_decimal}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.valor_unitario.to_f.real_contabil}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.total.to_f.valor_financeiro}</td>
						<td style=\"border: 1px solid black;text-align: center;\">#{item_do_empenho.total_anulado.to_f.valor_financeiro}</td>
					</tr>"
		end
		tables <<
			"</tbody> <tfoot> <tr>
			</tr> </tfoot> </table>"
	end

	def conta_bancaria_do_fornecedor
		"<p>#{@liquidacao.pessoa_conta_bancaria.try(:banco).try(:nome)}</p>
		<p>Agência: nº #{@liquidacao.pessoa_conta_bancaria.try(:agencia)}</p>
		<p> C/C: nº #{@liquidacao.pessoa_conta_bancaria.try(:numero_da_conta)}</p>"
		
	end
end
