Sem categoria

Documentação para relatórios Apolo 6

Spread the love

Esse documento serve como guia para o programador criar relatórios utilizando a linguagem de script do software da FCA Tecnologia Apolo versão 6.

Obs. 1: Utilizar ao invés do aliás de tabelas com letras (como “a”, “b” etc…), utilizar os aliás de tabelas sempre com o nome da tabela, exemplo sg001, sg002 etc… Isso por que facilita a documentação da query, para evitar termos que consultar que tabela a = sg001, b = sg002 etc…

Uma das principais mudanças é que o código fonte não precisa ter um método pré determinado para ser executado. Além de poder contar com variáveis públicas, ou seja, que todos os métodos acessem. No código abaixo vemos um exemplo de código que executa o método start(). Veja também que os filtros podem ser carregados de uma única vez de forma completa (método getModulo.getFiltroSqlAtual()), ou verificarmos de um a um cada campo, para saber se o mesmo está ativo (exemplo do método getModulo.getPonteiroFiltro().filtroEstaAtivo(“sw019.PESQUISA_CODIGO”)), e se estiver, trazer o filtro apenas daquele campo (método getModulo.getPonteiroFiltro().montafiltroPeloNomeCampo(“sw019.PESQUISA_CODIGO”). Isso pode ser útil para se utilizar por exemplo em subselects, que usam apenas um dos filtros.

Obs.2: Notar que o código sql gerado deve ser sempre exportado pelo método getModulo.setCodigoSqlCompleto(string_sql); Ou seja, o script deve finalizar com a chamada a esse método no caso de relatórios.

Obs.3: Nas concatenações que exigem aspas dentro do código SQL, sempre usar aspas simples, pois desta forma não choca com o uso das aspas duplas do código em java no script.

Obs.4: Ainda são válidas as palavras chaves que são feitas no parser durante o processamento do SQL pelo framework, são elas:

<<EMPRESA>>
<<CONTRATO>>
<<EMPRESA_GRUPO>>
<<USUARIO>>
<<USUARIO_ID>>
<<DATA_ATUAL>>
<<DATA>>
<<ONTEM>>
<<AGORA>>
/*
  Por Fulvio em 22/02/2021
  Exemplo de script para relatorios
*/

start();

// O metodo start() e o padrao a ser chamado em qualquer modulo
function start() {
	getMain.addToLog("Exemplo Para Saber se Campo sw019.PESQUISA_CODIGO está sendo usado : " + getModulo.getPonteiroFiltro().filtroEstaAtivo("sw019.PESQUISA_CODIGO"));

	getMain.addToLog("Filtro do Campo sw019.PESQUISA_CODIGO : " + getModulo.getPonteiroFiltro().montafiltroPeloNomeCampo("sw019.PESQUISA_CODIGO"));

	getMain.addToLog("Filtro Completo do Modulo: " + getModulo.getFiltroSqlAtual());


	// Vamos montar o sql dinamicamente
	// E exportar o codigo completo para ser executado
    var _sql = "select sw019.questionario_numero as 'Entrevista', "
             + " sw019.DATA_INICIO as 'Data',time(sw019.DATA_INICIO) as 'Hora Inicio', "
             +" time(sw019.DATA_FIM) as 'Hora Fim', "
             +" TIME_FORMAT(sec_to_time(sw019.DURACAO),'%H:%i:%S') as 'Tempo Coleta',"
             +"case sw003.coleta_maxima"
             +" when 1 then "
             +"concat(sw003.numero,'-',sw003.descricao) "
             +" else "
             +" concat(sw003.numero,'.',sw007.coleta_sequencia,'-',sw003.descricao) "
             +" end as Pergunta,"
             +" concat(sw004.numero,'-',sw004.descricao) as Resposta, "
             +" sw007.RESPOSTA_ABERTA AS 'Citação Aberta', "
             +" sw007.pergunta_tipo, "
             +" sw008.DESCRICAO as 'Localidade', "
             +" sw002.descricao as 'Pesquisa', "
             +" sw002.objetivo,sw026.nome as 'Entrevistador',"
             +" sw019.USUARIO_CRIACAO as 'Dispositivo',sw019.valido"
             +" from sw019 "
             +" join sw007 on (sw019.codigo = sw007.questionario_codigo and sw007.SW006_ID = sw019.SW006_ID) "
             +" left join sw008 on (sw019.sw008_id = sw008.id) "
             +" left join sw003 on (sw007.pergunta_codigo = sw003.codigo and sw003.SW006_ID = sw019.SW006_ID) "
             +" left join sw004 on (sw007.resposta_codigo = sw004.codigo and sw004.SW006_ID = sw019.SW006_ID) "
             +" join sw002 on (sw019.pesquisa_codigo = sw002.codigo) "
             +" left join sw026 on (sw019.sw026_id = sw026.id) "
             +" where sw019.SW006_ID = '<<CONTRATO>>' and " + getModulo.getFiltroSqlAtual();
             +" order by CONVERT(sw019.questionario_numero,UNSIGNED),CONVERT(sw003.numero,UNSIGNED),sw007.coleta_sequencia";

	getModulo.setCodigoSqlCompleto(_sql);
	getMain.addToLog("Codigo sql completo : " + _sql);

} // Fim do Metodo Start