Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

As fórmulas são compostas por funções e podem ser vinculadas nas etapas, para executar processos nos atendimentos, como por exemplo, alterar valor de um campo, avançar etapas, repassar atendimento, entre outros.  As funções são as ações que serão executadas nas fórmulas, e podem conter um ou mais parâmetros para execução. 


Informações
titleFunções TAA


ALTERARCLIENTEATENDIMENTO
Altera o cliente do atendimento
PAR. 1 - Coligada do cliente [inteiro]
PAR. 2 - Código do cliente [texto]
PAR. 3 - Tipo do cliente podendo ser 'P' para Pessoa, 'C' para Cliente, 'T' para Prospect, 'A' para
Aluno ou 'R' para Professor [texto]


AVANCARETAPAATENDIMENTO
Avança/Posiciona o atendimento para a etapa informada como parâmetro.

PAR. 1 - Código da etapa a avançar [inteiro]


ALTERARCAMPOATENDIMENTO
Altera um ou mais campos ou parâmetros (segundo o tipo de atendimento) do atendimento. Sem espaços e aspas para campos texto.
Pares de valor: CAMPO1=VALOR1; CAMPO2=VALOR2;PARAMETRO1.<nome doparametro>=VALORPAR1; CAMPO3=VALOR3;PARAMETRO2.<nome do parametro>=VALOR4;...

PAR. 1 - Campos e valores [texto]

Exemplo: ALTERARCAMPOATENDIMENTO('CODCATEGORIAGERAL=9;PARAMETRO.Nome Atendente = Vivian')


AGENDARARESPONDER
Altera o status de um atendimento para Agendado a responder.

PAR. 1 - Data de despertamento [data];
PAR. 2 - Prazo limite [data];
PAR. 3 - Motivo do repasse [inteiro];
PAR. 4 - Justificativa [texto]

Exemplo: AGENDARARESPONDER("10/10/2006", "20/10/2006", -1 , '' )


AGENDADORESPONDIDO
Altera o status de um atendimento para Agendado Respondido.


ALTERARPARAMETROATENDIMENTO
Altera o valor de um parâmetro de um atendimento (de acordo com o tipo de atendimento). Deve ser informado o nome do parâmetro e o seu valor.

PAR. 1 - Nome do parâmetro [texto]

PAR. 2 - Valor do parâmetro [texto]


ADICIONARSOLICITACAO
Atualiza o campo solicitação do atendimento(do contexto) com o texto informado como parâmetro, adicionando novo texto.
PAR. 1 - Novo texto a ser gravado/adicionado [texto].


ADICIONARDISCUSSAO
Atualiza o campo discussão do atendimento(do contexto) com o texto informado como parâmetro, adicionando novo texto.
PAR. 1 - Novo texto a ser gravado/adicionado [texto].


ADICIONARSOLUCAO
Atualiza o campo solução do atendimento(do contexto) com o texto informado como parâmetro, adicionando novo texto. 
PAR. 1 - Novo texto a ser gravado/adicionado [texto].


APROVARENTENDIMENTO
Para o atendimento do contexto, aprova o entendimento mais recente que esteja não aprovado ou aguardando aprovação/desaprovação. Retorna 1 (um) caso efetue a aprovação com sucesso ou 0 (zero) gere algum erro ou não encontre um entendimento a ser aprovado.


DESAPROVARENTENDIMENTO
Para o atendimento do contexto, desaprova o entendimento mais recente que esteja aprovado. Retorna 1 (um) caso efetue a desaprovação com sucesso ou 0 (zero) gere algum erro ou não encontre um entendimento a ser desaprovado.


CAMPOSATENDIMENTO
Retorna qualquer campo ou parâmetro (segundo o tipo de atendimento) de um atendimento. Para buscar o valor de um parâmetro deve-se usar o campo no formato PARAMETRO.<nome do parâmetro>.

PAR. 1 - Campo [texto]

Exemplo:

Retornar um campo: CAMPOSATENDIMENTO('CODSTATUS')

Retornar um parâmetro: CAMPOSATENDIMENTO('PARAMETRO.PARAMETRO_OBSERVACAO)


CAMPOSATENDENTE
Retorna qualquer campo do atendente informado como parâmetro.

PAR. 1 - Código do atendente [inteiro]

PAR. 2 - Campo a ser retornado [texto]


CANCELAR
Executa a função de Cancelar um atendimento.


CODATENDENTERESPONSAVEL
Retorna o código do atendente responsável pelo atendimento.


NOMEATENDENTERESPONSAVEL
Retorna o nome do atendente responsável pelo atendimento.


CODIGOCLIENTE
Retorna o código do cliente do atendimento.


NOMECLIENTE
Retorna o nome do cliente.


CODIGOREPRESENTANTE
Retorna o código do representante do cliente do atendimento.


NOMEREPRESENTANTE
Retorna o nome do representante.


NOMECONTATOCLIRPR
Retorna o nome do contato do cliente ou representante (nesta ordem).


NOMECONTATOREPRESENTANTE
Retorna o nome do contato do representante.


CODIGOPRODUTO
Retorna o código do produto do atendimento.


NOMEPRODUTO
Retorna o nome do produto.


CODIGODETALHEPRODUTO
Retorna o código do detalhe do produto do atendimento.


CODIGOPRODUTOPAI
Retorna o código do produto pai (no RMNucleus).


CODATENDENTECONTATOCOMCLIENTE
Retorna o código do atendente responsável pelo contato com o cliente.


COLOCAREMANDAMENTO
Altera o status de um atendimento colocando-o Em Andamento.


CHEFEIMEDIATOATENDENTE 
Retorna a coligada e código do atendente (no formato valor;valor) do chefe imediato do atendente informado como parâmetro (coligada do atendente, código do atendente).

PAR. 1 - Coligada do atendente [inteiro]

PAR. 2 - Código do atendente [inteiro]


CRIARNOVOATENDIMENTO
Cria um atendimento em branco para o atendente responsável pelo atendimento do contexto e preenche o assunto e a solicitação deste novo atendimento como sendo o texto informado nos parâmetro (nesta ordem, assunto e solicitação)! Retorna o número do atendimento criado.

PAR. 1 - Novo assunto [texto]

PAR. 2 - Nova solicitação [texto]


CRIARCOPIAATENDIMENTO
Cria cópia de um atendimento para o atendente responsável pelo atendimento original. O atendimento original deve ser informado via parâmetro, se não informado, o atendimento original será o atendimento do contexto. Retorna o código do atendimento gerado.

PAR. 1 - Localidade do atendimento a se copiar [inteiro];
PAR. 2 - Coligada do atendimento a se copiar [inteiro];
PAR. 3 - Código do atendimento a se copiar [inteiro];
PAR. 4 - Lista de campos e valores a serem alterados no atendimento criado [texto].
 Formato: Sem espaços e aspas para campos texto.
Pares de valor: (CAMPO1=VALOR1; CAMPO2=VALOR2;PARAMETRO1.<nome do parametro>=VALORPAR1; CAMPO3=VALOR3;PARAMETRO2.<nome do parametro>=VALOR4;...);
PAR. 5 - Indicativo se é para relacionar o novo atendimento com o original (0=Não Relacionar, 1=Relacionar) [inteiro]


CONCLUIDOCONFIRMADO
Executa a função de Concluído confirmado para o atendimento.


CONCLUIRARESPONDER
Executa a função de Concluir a Responder para o atendimento.


CONCLUIDORESPONDIDO
Executa a função de Concluído Respondido para um atendimento.


DESCRICAODETALHEPRODUTO
Retorna a descrição do detalhe do produto.


DEFINECONTAOCLIENTE
Define o atendente contato com o cliente como sendo o atendente informado como parâmetro.

PAR. 1 - Novo contato com cliente [inteiro]


DATAALARME
Calcula a data de alarme de um atendimento. Os parâmetros indicam de qual atendimento será calculado a data de alarme, se informados valores menores que zero será calculado a data de alarme do atendimento do contexto. Retorna a data formatada como texto (dd/mm/yyyy)!

PAR. 1 - Localidade do atendimento a se copiar [inteiro];
PAR. 2 - Coligada do atendimento a se copiar [inteiro];
PAR. 3 - Código do atendimento a se copiar [inteiro];


INSERIRAPONTAMENTO
Cria um novo apontamento para o atendimento do contexto.
PAR. 1 - Data de início da atividade[data];
PAR. 2 - Hora de início da atividade[texto no formato 00:00 ou 0,00 ou 0.00];
PAR. 3 - Número de horas gastas na atividade[texto no formato 00:00 ou 0,00 ou 0.00];
PAR. 4 - Data de término da atividade[data];
PAR. 5 - Hora de término da atividade[texto no formato 00:00 ou 0,00 ou 0.00];
PAR. 6 - Percentual de completude da atividade[inteiro]
PAR. 7 - Comentário sobre o apontamento[texto]
PAR. 8 - Código do atendente do qual o apontamento será gerado[inteiro]


DATAALARMEDT
Calcula a data de alarme de um atendimento. Os parâmetros indicam de qual atendimento será calculado a data de alarme, se informados valores menores que zero será calculado a data de alarme do atendimento do contexto. Retorna a data.
PAR. 1 - Localidade do atendimento a se copiar [inteiro]
PAR. 2 - Coligada do atendimento a se copiar [inteiro]
PAR. 3 - Código do atendimento a se copiar [inteiro]


ENVIAEMAIL
Permite enviar e-mail quando a fórmula é executada e registra* na discussão do atendimento a mensagem enviada.
*registra = No campo discussão serão apresentadas as informações: De (From), Para (To), Cópia (CC), Data, Assunto, Mensagem.
Caso o email for do tipo HTML e tiver a palavra chave [ACOESDOATENDIMENTO] em seu corpo, serão incluídos links cada uma das possíveis ações do atendimento no contexto da tarefa atual.

PAR. 1 - Informar o endereço de e-mail do remetente [texto].
PAR. 2 - Informar o endereço de e-mail do destinatário [texto].
PAR. 3 - Informar o endereço de e-mail que receberá uma cópia do e-mail [texto].
PAR. 4 - Informar o assunto do e-mail [texto].
PAR. 5 - Informar o corpo do e-mail [texto].
PAR. 6 - Informar o formato do e-mail (True caso for HTML e false caso for Texto) [Bool].

Exemplo: ENVIAEMAIL('teste@teste.com.br','teste@teste.com.br','teste@teste.com.br','Assunto Teste',A função permite enviar o e-mail e registra a mensagem na discussão do atendimento para maior controle das informações. Até Breve!',True)


EXECUTARRELATORIOENVIAREMAIL
Executa o relatório no contexto do atendimento e envia para o(s) e-mail(s) passados como parâmetro.

PAR. 1 - Coligada do Relatório [inteiro]
PAR. 2 - Id do Relatório [inteiro]
PAR. 3 - Assunto do E-mail [texto]
PAR. 4 - Endereço de E-mail do Destinatário [texto]
PAR. 5 - Endereço de E-mail do ReplyTo [texto]
PAR. 6 - Endereço de E-mail ao qual será enviada uma cópia do e-mail [texto]
PAR.7 - Endereço de E-mail ao qual será enviada uma cópia oculta do e-mail [texto]

Exemplo: EXECUTARRELATORIOENVIAREMAIL(1,5,'Teste da Função de Fórmula','[email protected]','[email protected]','[email protected]','[email protected]')


GRUPOATENDENTECAMPOCOMPLEMENTAR
Retorna qualquer campo complementar do grupo de atendente informando os parâmetros.

PAR. 1 - Código do grupo de atendente [inteiro];
PAR. 2 - Campo complementar cujo valor deseja-se retornar, esta função permite operações de soma [texto].


INTERROMPE 
Interrompe o processamento da fórmula e exibe a mensagem passada no parâmetro.

PAR. 1 - Mensagem exibida ao final do processo. [texto]


PRODUTOCAMPOCOMPLEMENTAR
'Retorna qualquer campo complementar do produto informando os parâmetros 'PAR. 1 - Código do produto [inteiro]; '+'PAR. 2 - Campo complementar cujo valor deseja-se retornar [string]. Esta operação permite operações de soma.

PAR. 1 - Código do produto [inteiro]

PAR. 2 - Campo [texto]


REPASSARATENDIMENTO
Repassar o atendimento a outro Atendente/Grupo.

PAR. 1 - Código do atendente [inteiro];
PAR. 2 - EMailRepasse [texto];
PAR. 3 - Motivo do repasse [inteiro];
PAR. 4 - Discussão [texto];
PAR. 5 - EMailCopia [texto]


REPASSARDEVOLTA

Repassa o atendimento de volta para o atendente anterior

PAR. 1 - Código do motivo de repasse [inteiro]

PAR. 2 - Justificativa do repasse [texto]


RetNAOREPASSA
Retorno não repassa o atendimento, NÃO atualiza histórico, NÃO atualiza etapa no atendimento, NÃO executa fórmula do fluxo.


RetNAOREPASSAATULIZARESTANTE
Retorno não repassa o atendimento, atualiza histórico, atualiza etapa no atendimento, executa fórmula do fluxo.


STATUSCONCLUSAOETAPA
Retorna o status (texto) de conclusão da etapa. Só funciona se usada em uma fórmula dentro da etapa.


TIPOATENDENTE
Retorna o tipo do atendente que foi informado como parâmetro.

PAR. 1 - Código do atendente [inteiro]


TIPOCLIENTE
Retorna o tipo do cliente do atendimento. Os possíveis tipos de retorno são:'P', 'C', 'T', 'A' ou 'R' para respectivamente Pessoa, Cliente, Prospect, Aluno ou Professor.



Informações
titleFunções Requisição RH


GETIDDAREQUISICAO
Retorna o ID da requisição baseado nos dados do atendimento.


RETPROXIMOCHEFESECAOLABORE
Retorna o código do atendente do chefe pelo atendente responsável pelo atendimento utilizando a hierarquia de seções do RMLabore.
PAR. 1 - Nível - Número de níveis de chefia a ser verificado em relação ao atendente responsável pela abertura do atendimento.


RETORNAPROXIMOCHEFESECAOLABORE
Retorna o código do atendente do chefe pelo atendente responsável pelo atendimento utilizando a hierarquia de seções do RMLabore.
PAR. 1 - CodSecao - Código da Seção em que o funcionário deve ser chefe.
PAR. 2 - CodFuncao - Código da Função que este funcionário deve ter.


SECAOORIGEMREQUISICAO
Retorna o código de seção de origem da requisição.

PAR. 1 - Código da coligada da requisição [inteiro]
PAR. 2 - Identificador (ID) da requisição [inteiro]


SECAOPAI
Busca a seção pai a partir de uma seção de referência em uma quantidade de níveis solicitado.

PAR. 1 - Código da coligada da seção [inteiro]
PAR. 2 - Código da seção de referência [texto]
PAR. 3 - Nível para buscar a seção pai [inteiro]

Informações
titleFunções Gerais


USUARIOCORRENTE
Usuário logado no sistema.


EXECSQL

Executa uma sentença SQL previamente cadastrada.

PAR. 1 - Código da sentença SQL previamente cadastrada que será executada


RESULTSQL

Acessa o resultado de uma sentença SQL previamente executada pela função EXECSQL

PAR. 1 - Código da sentença SQL previamente executada pela função EXECSQL [texto]

PAR. 2 - Campo da sentença SQL que se deseja retornar o valor, havendo mais de um registro, sempre será retornado o primeiro. [texto]

Exemplo:

SE EXECSQL( '_AUT.ESP.SQL' ) = VERDADE ENTAO 
  SETVAR( CODETP, RESULTSQL(  '_AUT.ESP.SQL', 'CODTAREFADESTINO' )); 
FIMSE; 

Informações
titleExemplos de Fórmulas


Define qual grupo receberá a ocorrência dependendo de um parâmetro do atendimento
 
SE CAMPOSATENDIMENTO ( 'PARAMETRO.Tipo de Requisito' ) = "Delphi Win32" ENTAO
  215
SENAO
  193
FIMSE


Executa uma SQL
 
Decl Texto;
SE EXECSQL('03.000047') = VERDADE ENTAO
  SETVAR(b,RESULTSQL ( '03.000047' , 'Texto'))
FIMSE;


Envia a ocorrência para um usuário específico
 
CodColigada;Codatendente.
 Ex.: "1;215"


Conclui um Atendimento:
 
SE CAMPOSATENDIMENTO ( 'CODSTATUS' ) <> 'R' ENTAO
  CONCLUIRARESPONDER
FIMSE;
 
CONCLUIDORESPONDIDO


Repassar atendimento para atendente anterior
 
REPASSARDEVOLTA ( 10 )


Definir Etapa do atendimento na abertura do mesmo
 
SE TIPOATENDENTE ( CODATENDENTERESPONSAVEL ) = 4 ENTAO
  AVANCARETAPAATENDIMENTO(1); /* STE */
SENAO
  AVANCARETAPAATENDIMENTO(2); /* PDE */
FIMSE;
RetNAOREPASSA
Repassa para a etapa anterior
AVANCARETAPAATENDIMENTO ( CAMPOSATENDIMENTO ( 'CODTAREFAANTERIOR' )  )


Etapa Abertura
 
FOR('06.00015');  /* ATUALIZAÇÃO DE CAMPOS DEFAULT */
 
SE (CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00017") ENTAO /* TEC-DOCUMENTAÇÃO */
  AVANCARETAPAATENDIMENTO(167) /* teste funcional */
SENAO
  SE TIPOATENDENTE ( CODATENDENTERESPONSAVEL ) = 14 ENTAO /* EQUIPE DO MSCRM */
    AVANCARETAPAATENDIMENTO ( 164 ) /Etapa de Entendimento PDE/
  SENAO
    SE (CAMPOSATENDIMENTO ( 'PARAMETRO.Tipo de Requisito' ) = "WebForms.NET" OU CAMPOSATENDIMENTO ( 'PARAMETRO.Tipo de Requisito' ) = "WinForms.NET") E 
       (CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00002" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00047" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00048" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00049" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00025" ) ENTAO
      AVANCARETAPAATENDIMENTO ( 164 ) /Etapa de Entendimento PDE/
    SENAO /* SE FOR PORTUGAL E MELHORIA OU IMPLEMENTAÇÃO */
      SE (CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00002" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00047" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00048" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00049" OU CAMPOSATENDIMENTO('CODCLASSIFICACAO')= "00025" ) E  FOR("W.T.29") = "Sim" ENTAO
        AVANCARETAPAATENDIMENTO ( 164 ) /Etapa de Entendimento PDE/
      SENAO
        SE TIPOATENDENTE ( CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )  ) = 6 E (FOR("05.00031") = VERDADE ) ENTAO /* QUALQUER OCORRENCIA ABERTA PELO QSW */
          AVANCARETAPAATENDIMENTO(167) /* teste funcional */
        SENAO
          SE TIPOATENDENTE ( CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )  ) = 6 E (FOR("05.00032") = VERDADE) ENTAO /* QUALQUER OCORRENCIA ABERTA PELO QSW */
            AVANCARETAPAATENDIMENTO(356) /* HELP */
          SENAO
            SE CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00044"  ENTAO /* Caso de Teste */
              AVANCARETAPAATENDIMENTO(223) /* Caso de Teste */
            SENAO
              AVANCARETAPAATENDIMENTO ( 161 ) /Etapa de Entendimento STE/
            FIMSE
          FIMSE
        FIMSE
      FIMSE
    FIMSE
  FIMSE
FIMSE;
 
SE (TIPOATENDENTE ( CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )  ) = 4) OU (TIPOATENDENTE ( CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )  ) = 5) OU (CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )   = 2738 ) OU /* USUARIO AGILIS */ (TIPOATENDENTE ( CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )  ) = 18) ENTAO
  DEFINECONTAOCLIENTE ( CODATENDENTERESPONSAVEL )
FIMSE;
 
RetNAOREPASSA


Etapa Implementação
 
for("06.00050"); /* verifica se a classificacao está ativa */
for("07.00104"); /* Campos defaults do First */
for("05.00008"); /* Exige preenchimento do percentual de conclusão */
for("06.00007"); /* Não permite o repasse de oc TEC-HOMOLOGAÇÃO */
for("06.00022"); /* Valida preenchimento de campos */
for("06.00026"); /* Valida o prazo limite com o prazo da versão */
for("05.00007"); /* Cria ocorrência de caso de teste */
for("06.00046"); /* Caso não seja bug, valida campos */
for("03.00806"); /* Atribui a e espec. necess como sim, caso seja oc de .net */
for("07.00106"); /* Valida se a ocorrência é de melhoria futura */
 
/* Avança etapa da ocorrência filha para a mesma etapa da oc PAI */
SE for("06.00042") = VERDADE ENTAO
  RetNAOREPASSA 
SENAO
  SE ((CAMPOSATENDIMENTO ( 'PARAMETRO.Tipo de Requisito' ) = "WebForms.NET" OU CAMPOSATENDIMENTO ( 'PARAMETRO.Tipo de Requisito' ) = "WinForms.NET" OU CAMPOSATENDIMENTO ( 'PARAMETRO.Tipo de Requisito' ) = "Delphi Win32") E
      CAMPOSATENDIMENTO ( 'CODTAREFA' ) <> 242 e CAMPOSATENDIMENTO ( 'CODTAREFA' ) <> 173 E CAMPOSATENDIMENTO ( 'CODTAREFA' ) <> 174) E CAMPOSATENDIMENTO ( 'Parametro.Especificação Necessária') = "Sim" ENTAO 
    AVANCARETAPAATENDIMENTO ( 173 )   /*ETAPA DE ESPECIFICAÇÃO */
  SENAO
    SE EXECSQL ( '03.000054' ) <> VERDADE E CAMPOSATENDIMENTO ( 'Parametro.Script') = "Sim" ENTAO
      INTERROMPE ( 'Favor cadastrar uma ocorrência de criação de script vinculada a esta!' )
    SENAO /* SE O REQUISITO IMPACTAR EM LOCALIZAÇÃO ENTAO ENVIA PARA ETAPA DE PROP. LOCALIZAÇÃO */
      SE FOR("06.00025") = VERDADE E CAMPOSATENDIMENTO ( 'CODTAREFA' ) <> 242 ENTAO
        AVANCARETAPAATENDIMENTO ( 242 )
      SENAO /* caso já exista alguém definido na aba parametro, a preferência é dele */
        SE concatena(CAMPOSATENDIMENTO ( 'PARAMETRO.Responsável pela Implementação'),'','') <> '' ENTAO
          CONCATENA('1',CAMPOSATENDIMENTO ( 'PARAMETRO.Responsável pela Implementação'),';')
        SENAO
          "" /*ATENDENTE CORRENTE */
        FIMSE
      FIMSE
    FIMSE
  FIMSE
FIMSE


Admissão
 

Etapa Inicial
Decl a, b, c, d;
 
SETVAR ( a, '' );
SETVAR ( b, '' );
SETVAR ( c, '' );
SETVAR ( d, 'Relações Humanas - Workflow Admissão ' );
 
SE EXECSQL ( '03.000150' ) = VERDADE
      ENTAO SETVAR ( a, RESULTSQL ( '03.000150' , 'email' ) )
FIMSE;
SE EXECSQL ( '03.000151' ) = VERDADE
      ENTAO SETVAR ( b, RESULTSQL ( '03.000151' , 'mensagem' ) )
FIMSE;
SE EXECSQL ( '03.000152' ) = VERDADE
      ENTAO SETVAR ( c, RESULTSQL ( '03.000152' , 'funcionario' ) )
FIMSE;
ENVIAEMAIL ( 'rh@rm.com.br' , a , '' , concat ( d, c ), b ,  1 );
"1307"

DECL USUARIO;
 
CONCLUIRARESPONDER;
 
SE EXECSQL('03.000154') = VERDADE ENTAO
  SETVAR(USUARIO,RESULTSQL ( '03.000154' , 'CodAtendente' ));
  REPASSARATENDIMENTO ( USUARIO, '' , 10 , '' , '' )
FIMSE;
 
RetNAOREPASSAATULIZARESTANTE

ALTERARCAMPOATENDIMENTO ( "CODCOLIGPRD=1;CODPRODUTO=140" );
decl a, b;
 
setvar ( a, '' );
setvar ( b, '' )

Decl a, b, c, d;
 
SETVAR ( a, '' );
SETVAR ( b, '' );
SETVAR ( c, '' );
SETVAR ( d, 'Relações Humanas - Workflow Admissão ' );
 
SE EXECSQL ( '03.000150' ) = VERDADE
      ENTAO SETVAR ( a, RESULTSQL ( '03.000150' , 'email' ) )
FIMSE;
SE EXECSQL ( '03.000151' ) = VERDADE
      ENTAO SETVAR ( b, RESULTSQL ( '03.000151' , 'mensagem' ) )
FIMSE;
SE EXECSQL ( '03.000152' ) = VERDADE
      ENTAO SETVAR ( c, RESULTSQL ( '03.000152' , 'funcionario' ) )
FIMSE;
ENVIAEMAIL ( 'rh@rm.com.br' , a , '' , concat ( d, c ), b ,  1 );
 
Decl x;
SETVAR(x, '');
SE EXECSQL('03.000155') = VERDADE ENTAO
  SETVAR(x,RESULTSQL ( '03.000155' , 'mensagem'))
FIMSE;
 
ENVIAEMAIL ( 'rh@rm.com.br' , 'patricia.almeida@totvs.com.br; [email protected]' , '' , 'WorkFlow Admissão - Dados do Novo Usuário' , x ,  1)


Etapa Cria atendimento de documentação
 
DECL H, A, P, V, R;
SETVAR(A,0);
SETVAR(P, 357);
SETVAR(V, CONCATENA(';PARAMETRO.Versão de liberação=', CAMPOSATENDIMENTO ( 'PARAMETRO.Versão de liberação'),''));
SETVAR(R, CONCATENA(';PARAMETRO.Requisito=', CAMPOSATENDIMENTO ( 'PARAMETRO.Requisito'),'')); 
SE CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.Responsável pela Homologação' ),'','') <> '' ENTAO
  SETVAR(A, CAMPOSATENDIMENTO ( 'PARAMETRO.Responsável pela Homologação' ) )
FIMSE;
 
/* BUSCA O ATENDENTE DO GRUPO PARA REPASSAR OCORRÊNCIA */
SE EXECSQL('03.000298') = VERDADE E A < 1 ENTAO
  SETVAR(A, RESULTSQL('03.000298', 'CODATENDENTEFIXO'))
FIMSE;
 
SE A = 0 ENTAO
  SETVAR(A,CODATENDENTERESPONSAVEL)
FIMSE;
 
SETVAR(H,CONCATENA('CODTIPOATENDIMENTO=62;CODCLASSIFICACAO=00050;CODCFO=007622;IDCONTATO=;CODTAREFAANTERIOR=;CODATENDENTERESP=',A,''));
SETVAR(H,CONCATENA(H, P, ';CODTAREFA='));
SETVAR(H,CONCATENA(H, V, ''));
/*Concatenando o código do Requisito */
SETVAR(H,CONCATENA(H, R, ''));
 
/*cria uma cópia do atendimento do contexto se não tiver outra criada */
SE  EXECSQL('03.000299') = FALSO ENTAO
  CRIARCOPIAATENDIMENTO (   CAMPOSATENDIMENTO ( 'CODCOLIGADA' ),  CAMPOSATENDIMENTO ( 'CODLOCAL' ) , CAMPOSATENDIMENTO ( 'CODATENDIMENTO' ), H,  1)
FIMSE;


Etapa Solucionado com Versão Específica
 
Decl a, b, t;
 
/* Impede a continuidade da ocorrênica se a classificação for igual TEC-A CLASSIFICAR */
SE CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00000" ENTAO
  INTERROMPE ("Favor alterar a classificação da ocorrência!" )
FIMSE;
 
SETVAR(a, '');
SETVAR(b, '');
SETVAR(t, Concatena('Sr. Analista, favor criar nova ocorrência baseada na de número ', CAMPOSATENDIMENTO ( 'CODATENDIMENTO' ), '' ) );
 
SE EXECSQL('03.000069') = VERDADE ENTAO
  SETVAR(a, RESULTSQL ( '03.000069' , 'email'))
FIMSE;
 
SE EXECSQL('03.000070') = VERDADE ENTAO
  SETVAR(b, RESULTSQL ( '03.000070' , 'email'))
FIMSE;
 
AVANCARETAPAATENDIMENTO ( 177 ) ;
 
ENVIAEMAIL('[email protected]' , CONCATENA(a,b,',') , '' , 'Finalização de ocorrência Solucionada com Versão Específica' ,t ,  1) ;


Etapa Apresentar Proposta de Entendimento
 
/* VERIFICA SE O CAMPO ENTENDIMENTO ESTÁ  PREENCHIDO */
SE EXECSQL("03.000090") = VERDADE E RESULTSQL("03.000090", "QTD") = 0 ENTAO
  INTERROMPE("Favor preencher o entendimento!")
FIMSE;
 
CONCATENA ( 1 , CODATENDENTECONTATOCOMCLIENTE , ';' )


Etapa Não aceitar Agendamento e voltar etapa
 
COLOCAREMANDAMENTO;
/*devido a problemas no .net, não pode usar avançaretapa */
ALTERARCAMPOATENDIMENTO
 ( concatena('CODTAREFA=',CAMPOSATENDIMENTO ( 'PARAMETRO.CODTAREFAANTERIOR' ),'' ) );
REPASSARATENDIMENTO ( CAMPOSATENDIMENTO ( 'PARAMETRO.CODATENDENTEANTERIOR' ) , '' , 20 , '' , '' );
 
RetNAOREPASSA


Retorna Superior Imediato
 
CHEFEIMEDIATORESPATENDIMENTO


Retorna Grupo PDE
 
DECL N;
 
SE (CAMPOSATENDIMENTO ("CODCLASSIFICACAO") = "00005") ENTAO /* INT - INSTALACAO DO APLICATIVO */
  SETVAR(N,"253") /* GROSSI */
SENAO
  SE (CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "EduPS.11" OU CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "EduPS.9" OU CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "EduWf.Sel" OU CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "EduEb.Sel") ENTAO
    SETVAR(N,"221") /* EDUARDO BELO / / PROCESSO SELETIVO*/
  SENAO
    SE (CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "EduEB.014" ou CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "Edu.013" ou CAMPOSATENDIMENTO ( 'CODITEMPRD' ) = "EduES.014") E (CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00000" OU CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00001" OU CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00003") ENTAO 
      SETVAR(N,"235") /* Luiz Antonio */
    SENAO
      SE (CAMPOSATENDIMENTO ( 'CODPRODUTO' ) = 39 OU CAMPOSATENDIMENTO ( 'CODPRODUTO' ) = 43) E CAMPOSATENDIMENTO ( 'CODITEMPRD' ) <> "EduEb.014" E CAMPOSATENDIMENTO ( 'CODITEMPRD' ) <> "EduEs.014" E (CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00000" OU CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00001" OU CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00003") ENTAO
        SETVAR(N,"35") /* SADE */
      SENAO 
        SE (CAMPOSATENDIMENTO ( 'CODPRODUTO' ) = 39 OU CAMPOSATENDIMENTO ( 'CODPRODUTO' ) = 43 OU CAMPOSATENDIMENTO ( 'CODPRODUTO' ) = 50) ENTAO
          SETVAR(N,"36") /* RAFAEL */
        SENAO 
          SE CAMPOSATENDIMENTO ( 'CODITEMPRD' )  =  "Fop.1.4.1.91" ENTAO
            SETVAR(N,"258") /* Eliane */
          SENAO 
            SE CAMPOSATENDIMENTO ( 'CODITEMPRD' )  =  "Fop.1.4.1.92" ENTAO
              SETVAR(N,"312") /* Guilherme */
            SENAO
              SETVAR(N, FOR("05.00028"))
            FIMSE
          FIMSE
        FIMSE
      FIMSE
    FIMSE
  FIMSE
FIMSE;
 
SE N = '0' ENTAO
  SETVAR(N,"")
FIMSE;
 
N


Agenda Atendimento
 
DECL Motivo;
 
SETVAR(Motivo, FOR("06.00005") ); /Motivo de Repasse/
 
SE CONCATENA(CAMPOSATENDIMENTO ( 'AGENDADOPARA' ),'','') = '12:00:00 AM' E (CAMPOSATENDIMENTO  ( "PARAMETRO.Tipo de Lib. de Versão" ) = "Específica" ou CAMPOSATENDIMENTO  ( "PARAMETRO.Tipo de Lib. de Versão" ) = "Patch") ENTAO
  AGENDARARESPONDER (CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.Data para Despertar' ),'',''), CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.Data Prazo Limite'),'',''), Motivo , CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.Motivo de Agendamento'),CAMPOSATENDIMENTO  ( "PARAMETRO.Tipo de Lib. de Versão" ),'-' ) )
SENAO
  SE CONCATENA(CAMPOSATENDIMENTO ( 'AGENDADOPARA' ),'','') = '' ou CONCATENA(CAMPOSATENDIMENTO ( 'AGENDADOPARA' ),'','') = '12:00:00 AM' ENTAO
    AGENDARARESPONDER (CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.Data para Despertar' ),'',''), CONCATENA(FOR("06.00004"),'',''), Motivo , CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.Motivo de Agendamento'),'Normal','-') )
  FIMSE
FIMSE;


Etapa Confirmar Agendamento e enviar para Etapa Anterior
 
for("06.00049"); /* agenda o atendimento, caso não tenha sido feito ainda */
 
SE CAMPOSATENDIMENTO ( 'CODSTATUS' ) = 'G' ENTAO
  AGENDADORESPONDIDO
FIMSE;
 
SE CONCATENA(CAMPOSATENDIMENTO ( 'AGENDADOPARA' ),'','') = '' ENTAO
  COLOCAREMANDAMENTO;
  INTERROMPE('Favor cadastrar a data de despertamento')
FIMSE;
 
SE CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.CODTAREFAANTERIOR' ),'','') = '215' OU CONCATENA(CAMPOSATENDIMENTO ( 'PARAMETRO.CODTAREFAANTERIOR' ),'','') = '172' ENTAO
  COLOCAREMANDAMENTO;  
  INTERROMPE('Erro de agendamento, favor procurar o Juliano!')
FIMSE;
 
ALTERARCAMPOATENDIMENTO ( 'CODSTATUS=A' );
ALTERARCAMPOATENDIMENTO ( concatena('CODTAREFA=', CAMPOSATENDIMENTO ( 'PARAMETRO.CODTAREFAANTERIOR' ), '') );
SE (CONCATENA( CAMPOSATENDIMENTO ( 'PARAMETRO.CODATENDENTEANTERIOR' ),'','') <> '') ENTAO
  REPASSARATENDIMENTO ( CAMPOSATENDIMENTO ( 'PARAMETRO.CODATENDENTEANTERIOR' ) , '' , -1 , '' , '' )
FIMSE;
  
ALTERARCAMPOATENDIMENTO ( 'CODSTATUS=E' ); /* devido a falha  no .net, obraga-se */
 
RetNAOREPASSA


Obriga o preenchimento do campo percentual
 
/* verifica se na etapa atual foi apontado 100 % de conclusão */
DECL T, Q, B, ETAPA;
SETVAR(T, 0);
/* retorna % de completude */
SE EXECSQL( '03.000057' ) = VERDADE ENTAO
  SETVAR(T, RESULTSQL ( '03.000057' , 'VALOR' ) )
FIMSE;
 
/* retorna o total apontado*/
SE EXECSQL( '03.000073' ) = VERDADE ENTAO
  SETVAR(Q, RESULTSQL ( '03.000073' , 'VALOR' ) )
FIMSE;
 
/* retorna o total apontado nas etapas de entedimnto, implementação, especifcação e planejamento*/
SE EXECSQL( '03.000107' ) = VERDADE ENTAO
  SETVAR(B, RESULTSQL ( '03.000107' , 'VALOR' ) )
FIMSE;
 
SETVAR(ETAPA, "NAO");
/* Impede a continuidade da ocorrênica se a classificação for igual TEC-A CLASSIFICAR */
SE CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00000" ENTAO
  INTERROMPE ("Favor alterar a classificação da ocorrência!" )
FIMSE;
 
/* Verifica se a etapa atual necessidade de apontamento na tabela dinâmica e não é bug(Retirado por Juliano o teste se é Bug*/
SE  T < 100 E EXECSQL('03.000063') = VERDADE E ETAPA <> "SIM" ENTAO
  INTERROMPE ("Para avançar de etapa é necessário apontar 100% de conclusão da mesma!" )
FIMSE;
 
/* Verifica se a etapa atual necessidade de apontamento na tabela dinâmica */
SE  /CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) <> '00001' Juliano e/ Q <= 0 E EXECSQL('03.000063') = VERDADE ENTAO
  INTERROMPE ("Favor apontar a quantidade de horas gastas na ocorrência (não pode ser 0)!" )
FIMSE;
 
/* Verifica na saída da implementação, se ocorreu algum apontamento nas etapas de especf., impl., planejamento e entendimento*/
SE  CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = '00001' e B <= 0 E CAMPOSATENDIMENTO ( 'CODTAREFA' ) = 166 ENTAO
  INTERROMPE ("Favor apontar a quantidade de horas gastas na ocorrência (não pode ser 0)!" )
FIMSE;


Retorna analista do campo Responsável pela Implementação
 
DECL A;
SETVAR(A, "");
 
/* caso já exista alguém definido na aba parametro, a preferência é dele */
SE concatena(CAMPOSATENDIMENTO ( 'PARAMETRO.Responsável pela Implementação'),'','') <> '' ENTAO
  SETVAR(A, CONCATENA('1',CAMPOSATENDIMENTO ( 'PARAMETRO.Responsável pela Implementação'),';'))
SENAO
  SETVAR(A, FOR("05.00002") )
FIMSE;
 
A


Retorna Próximo Chefe
 
DECL CODPROXCHEFE;
 
SETVAR(CODPROXCHEFE,  RETPROXIMOCHEFESECAOLABORE ( 1 ));
SE CODPROXCHEFE = '-1' ENTAO
  AVANCARETAPAATENDIMENTO ( 303 )
SENAO
  CODPROXCHEFE
FIMSE


Repassar chefe seção destino
 
DECL PRIMEIRAETAPA;
 
SETVAR (PRIMEIRAETAPA, CAMPOSATENDIMENTO('CODTAREFA'));
SE PRIMEIRAETAPA = 0 ENTAO
  DECL CODSECAO;
  EXECSQL ('VISQL01' );
  SETVAR(CODSECAO,resultsql('VISQL01','CODSECAO'));
  RETORNAPROXIMOCHEFESECAOLABORE ( CODSECAO ,'-1' )
SENAO
  DECL CODPROXCHEFE;
  SETVAR(CODPROXCHEFE,
  RETPROXIMOCHEFESECAOLABORE ( 1 ));
  SE CODPROXCHEFE = '-1' ENTAO
    AVANCARETAPAATENDIMENTO ( 348  )
  SENAO
    CODPROXCHEFE
  FIMSE
FIMSE


Conclusão
 
FOR("03.00507");
 
SE EXECSQL ( '03.000052' ) <> VERDADE ENTAO
  INTERROMPE ( 'Preencha o campo Solução!' )
FIMSE;
 
SE CAMPOSATENDIMENTO ( 'CAIXAPOSTAL' ) > 0 ENTAO
  INTERROMPE ( 'Ainda existem mensagens na sua caixa postal de voz. Caso já as tenha ouvido, zere o valor do campo Caixa Postal.' )
FIMSE;
 
ALTERARCAMPOATENDIMENTO ( 'CODSTATUS=R' ) ;
 
CONCLUIDORESPONDIDO


Solucionar Atendimentos
 
FOR("03.00507");
SE CAMPOSATENDIMENTO ( 'CODTIPOATENDIMENTO' ) <> 29 e CAMPOSATENDIMENTO ( 'CODTIPOATENDIMENTO' ) <> 23 E  CAMPOSATENDIMENTO ( 'CODCLASSIFICACAO' ) = "00000" ENTAO
  INTERROMPE ( 'Não é possível concluir atendimento com a classificação: "A Classificar"' )
SENAO
  CONCLUIRARESPONDER
FIMSE


Repassar para o Contato com o Cliente
 
REPASSARATENDIMENTO (CODATENDENTECONTATOCOMCLIENTE , '' , 9 , '' , '' )


Exemplos de fórmulas complexas de repasse
 
Etapas:
            (Código - descrição - para quem esta repassando)
 
            32 - Enviar para RH --> grupo
33 - Enviar para Chefe Imediato ou solicitante --> formula tstAume2
34 - concluir --> formula VIFRM02
35 - reprovar --> formula VIFRM02
36 - chefe imediato --> formula tstAumen
56 - solicitante --> formula tstSolic
 
 
Fluxos:
            Enviar para RH --> Em Análise --> Enviar para RH
            Enviar para RH --> Recusada --> Enviar para Chefe Imediato ou solicitante
            Enviar para RH --> Cancelada --> Reprovar
            Enviar para RH --> Aprovar --> Chefe Imediato
            Chefe Imediato --> Aprovar -->  Chefe Imediato
            Chefe Imediato --> Reprovar --> Reprovar
            Enviar para Chefe Imediato ou solicitante --> Aprovar --> Chefe Imediato
            Enviar para Chefe Imediato ou solicitante --> Reprovar --> Reprovar
            Concluir --> Concluir em definitivo --> Concluir
            Solicitante --> Aprovar --> Enviar para Chefe Imediato ou solicitante
            Reprovar --> Reprovar --> Reprovar
 
Fórmulas utilizadas nas etapas:
           tstAume2:
        se execsql('AumentoQuadro3') = verdade entao
          /interrompe(resultsql('AumentoQuadro3','ATENDENT'));/
          REPASSARATENDIMENTO ( resultsql('AumentoQuadro3','ATENDENT') , '' , 3 , '' , '' )
        senao
          execsql('AumentoQuadro1');
          RETORNAPROXIMOCHEFESECAOLABORE (resultsql('AumentoQuadro1','CODSECAO'), '-1')
        fimse
 
 tstAumen:
        se execsql('AumetoQuadro2') = verdade entao
          AVANCARETAPAATENDIMENTO ( 34 )
        senao
          execsql('AumentoQuadro1');
          RETORNAPROXIMOCHEFESECAOLABORE (resultsql('AumentoQuadro1','CODSECAO'), '-1')
        fimse
 
 VIFRM02:
        DECL CODATENDCONTATOCLIENTE;
        SETVAR(CODATENDCONTATOCLIENTE, CODATENDENTECONTATOCOMCLIENTE);
 
        DECL COLIGADAATENDENTE;
        SETVAR(COLIGADAATENDENTE, CAMPOSATENDENTE(CODATENDCONTATOCLIENTE, 'CODCOLIGADA' ));
 
        DECL TXTUPDCOLIGADA;
        SETVAR(TXTUPDCOLIGADA, CONCATENA('CODCOLIGADARESP=',  COLIGADAATENDENTE, ''));
 
        DECL TXTUPDCODATENDENTE;
        SETVAR(TXTUPDCODATENDENTE, CONCATENA('CODATENDENTERESP=',  CODATENDENTECONTATOCOMCLIENTE, ''));
 
        ALTERARCAMPOATENDIMENTO ( CONCATENA(TXTUPDCOLIGADA, TXTUPDCODATENDENTE, ';') );
 
        CONCLUIDORESPONDIDO
 tstSolic:
        DECL CODATENDCONTATOCLIENTE;
        SETVAR(CODATENDCONTATOCLIENTE, CODATENDENTECONTATOCOMCLIENTE);
 
        DECL COLIGADAATENDENTE;
        SETVAR(COLIGADAATENDENTE, CAMPOSATENDENTE(CODATENDCONTATOCLIENTE, 'CODCOLIGADA' ));
 
        DECL TXTUPDCOLIGADA;
        SETVAR(TXTUPDCOLIGADA, CONCATENA('CODCOLIGADARESP=',  COLIGADAATENDENTE, ''));
 
        DECL TXTUPDCODATENDENTE;
        SETVAR(TXTUPDCODATENDENTE, CONCATENA('CODATENDENTERESP=',  CODATENDENTECONTATOCOMCLIENTE, ''));
 
        ALTERARCAMPOATENDIMENTO ( CONCATENA(TXTUPDCOLIGADA, TXTUPDCODATENDENTE, ';') )
 
 
SQLs - AumentoQuadro3, AumentoQuadro1, AumetoQuadro2
 AumentoQuadro3:
        --> Verifica se o atendente é ponto de aprovação.
        SELECT HATENDENTE.CODATENDENTE AS ATENDENT
        FROM  VREQAUMENTOQUADRO
              LEFT JOIN PFUNC ON (VREQAUMENTOQUADRO.CODCOLREQUISICAO = PFUNC.CODCOLIGADA AND VREQAUMENTOQUADRO.CHAPAREQUISITANTE = PFUNC.CHAPA)
              LEFT JOIN HATENDENTE ON (PFUNC.CODCOLIGADA = HATENDENTE.CODCOLIGADA AND PFUNC.CODPESSOA = HATENDENTE.CODPESSOA)
              LEFT JOIN PFCOMPL ON (VREQAUMENTOQUADRO.CODCOLREQUISICAO = PFCOMPL.CODCOLIGADA AND VREQAUMENTOQUADRO.CHAPAREQUISITANTE = PFCOMPL.CHAPA)
        WHERE     PFCOMPL.SIMNAO = '01'
              AND VREQAUMENTOQUADRO.IDREQ = :FRM_VIFRM04
 
 AumentoQuadro1:
        --> retorna o chefe imediato
        SELECT PSUBSTCHEFE.CODSECAO
        FROM   VREQAUMENTOQUADRO, PSUBSTCHEFE
        WHERE      VREQAUMENTOQUADRO.IDREQ                     =  :FRM_VIFRM04
               AND VREQAUMENTOQUADRO.CODCOLREQUISICAO =  PSUBSTCHEFE.CODCOLIGADA
               AND PSUBSTCHEFE.CODSECAO                             <> VREQAUMENTOQUADRO.CODSECAO
               AND PSUBSTCHEFE.CODSECAO NOT IN (SELECT CODSECAO FROM PSUBSTCHEFE WHERE CHAPASUBST = VREQAUMENTOQUADRO.CHAPAREQUISITANTE)
               AND SUBSTRRING(VREQAUMENTOQUADRO.CODSECAO,1,LEN(PSUBSTCHEFE.CODSECAO)) = PSUBSTCHEFE.CODSECAO
               AND PSUBSTCHEFE.CHAPASUBST  NOT IN (SELECT PFUNC.CHAPA
                                                              FROM  PFUNC
                                                                    LEFT JOIN HATENDENTE ON (PFUNC.CODPESSOA = HATENDENTE.CODPESSOA AND PFUNC.CODCOLIGADA = HATENDENTE.CODCOLIGADA)
                                                              WHERE HATENDENTE.CODATENDENTE = :FRM_tstAtend)
        ORDER BY LEN(PSUBSTCHEFE.CODSECAO) DESC
 
     AumetoQuadro2:
        -->
        select 1 as pontoaprovacao:
        from VREQAUMENTOQUADRO A
             join HATENDIMENTOEXT B on (B.CODCOLIGADA = A.CODCOLREQUISICAO and B.CODATENDIMENTO = A.CODATENDIMENTO)
             join HATENDENTE C on (C.CODCOLIGADA = B.CODCOLIGADA and C.CODATENDENTE = B.CODATENDENTERESP)
             join PFUNC D on (D.CODCOLIGADA = C.CODCOLIGADA and D.CODPESSOA = C.CODPESSOA)
             join PFCOMPL E on (E.CODCOLIGADA = D.CODCOLIGADA and E.CHAPA = D.CHAPA)
        where
                IDREQ = :FRM_VIFRM04
                AND C.CODATENDENTE = :FRM_tstAtend
                AND E.SIMNAO = '01'
 
:FRM_VIFRM04 --> GETIDDAREQUISICAO
:FRM_tstAtend --> CODATENDENTERESPONSAVEL