Versões comparadas

Chave

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

...

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]

RETORNAPROXIMAHIERARQUIARH

Retorna a coligada e código da hierarquia superior a que foi passada como parâmetro e respeitando o numero de níveis informado, no caso, é a hierarquia do RH, ou seja, tabela VHIERARQUIA

PAR. 1 - Número de níveis a buscar [inteiro]

PAR. 2 - Texto contendo coligada e ID da hierarquia separados por ; [texto]

Exemplo: RETORNAPROXIMAHIERARQUIARH(1, '1;2')

Nesse exemplo, foi solicitado a hierarquia imediatamente superior (1 no primeiro parâmetro) a hierarquia de código 2 da coligada 1, supondo que a hieraquia imediatamente superior a de código 2, for da coligada 1 e código 3, o retorno será: '1;3'

RETORNAPROXIMOATENDENTEHIERARQUIARH

Retorna o atendente da próxima hierarquia da requisição que está associado ao atendimento de acordo com o número de níveis informado como parâmetro. Para usar essa fórmula, é necessário que o atendimento esteja associada a um requisição do RH.

PAR. 1 - Número de níveis a buscar [inteiro]

Exemplo RETORNAPROXIMOATENDENTEHIERARQUIARH(1)

Nesse exemplo, foi solicitado o atendente da hierarquia imediatamente superior a requisição associada ao atendimento, supondo que esse atendente seja da coligada 1 e de código 5, o retorno será: '1;5'

Informações
titleFunções TAA


ABS    

Retorna o valor absoluto de um número.


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].


ADICIONARDISCUSSAOATENDIMENTO    
Adiciona um determinado texto à discussão do atendimento passado como parâmetro.ALTERARCLIENTEATENDIMENTO
Altera o cliente do atendimento

PAR. 1 - Coligada do cliente atendimento [inteiro]
PAR. 2 - Código Localidade do cliente atendimento [textointeiro]
PAR. 3 - Código do atendimento [inteiro]
PAR. 4 - Texto a ser adicionado à discussão do atendimento [texto]


ADICIONARSOLICITACAO
Atualiza o campo solicitação do atendimento(do contexto) com o texto informado como parâmetro, adicionando novo texto
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]

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].


AGENDADORESPONDIDO
Altera o status de um atendimento para Agendado Respondido.
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 , '' )


ALTERARCAMPOATENDIMENTOAGENDADORESPONDIDO
Altera o status de um atendimento para Agendado Respondido.
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')


ALTERARCLIENTEATENDIMENTO
Altera o cliente do atendimentoALTERARPARAMETROATENDIMENTO
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 Coligada do parâmetro cliente [textointeiro]
PAR. 2 - Valor Código do parâmetro 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]


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 valorADICIONARSOLICITACAO
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 Nome do parâmetro [texto]

PAR. 2 - Valor do parâmetro [texto].ADICIONARDISCUSSAO
Atualiza o campo discussão do atendimento(do contexto) com o texto informado como parâmetro, adicionando novo texto.


ANALISAR
Interrompe a execução e exibe ao usuário as 4 variáveis passadas como parâmetro separadas por espaço

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


ANODT
Retorna o ano de uma data

PAR. 1 - Data [data]


APROVARENTENDIMENTOPara 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 aprova o entendimento mais recente que esteja não aprovado ou aguardando aprovação/desaprovação. Retorna 1 (um) caso efetue a desaprovação aprovação com sucesso ou 0 (zero) gere algum erro ou não encontre um entendimento a ser desaprovadoaprovado.


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>.
ARRED
Arredonda um valor sem casas decimais

PAR. 1 - Campo Valor [textodecimal]


ARREDONDAExemplo:

Retornar um campo: CAMPOSATENDIMENTO('CODSTATUS')

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

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

Arredonda um valor com casas decimais

PAR. 1 - Valor [decimal]
PAR. 2 - Valor [decimal]


ARREDVALOR
Arredonda um valor com casas decimais(Para Labore, Vitae e Chronus retorna o maior múltiplo de valor2 mais próximo e maior que o valor1)

PAR. 1 - Valor [decimalPAR. 1 - Código do atendente [inteiro]
PAR. 2 - Campo a ser retornado [textoValor [decimal]

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]


ASCII
Retorna o valor que representa um determinado caractere na tabela ASCII

PAR. 1 - Valor [texto]


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

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


CALLWEBSERVICE
Chama um webService de acordo com os parâmetros usados

PAR. 1 - Endereço de acesso do webService [texto] (Ex. http://abc.defgh/webService.asmx)
PAR. 2 - NameSpace da action/metodo do webService que erá utilizado [texto] (Ex. http://namespace.com)
PAR. 3 - Nome da Action/Método [texto]
PAR. 4 - Parametro [texto]


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

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

PAR. 2 - Campo a ser retornado [texto]


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)


CAMPOSATENDIMENTOTIPADO
Retorna qualquer campo ou parâmetro (segundo o tipo de atendimento) de um atendimento (caso o tipo retornado for uma data ele será do tipo DateTime).Para buscar o valor de um parâmetro deve-se usar o campo no formato PARAMETRO.<nome do parametro>

PAR. 1 - Campo do atendimento cujo valor deseja-se retornar [texto]


CAMPOSPROXIMATAREFA
Retorna um determinado campo da próxima tarefa do atendimento do contexto

PAR. 1 - Campo da tarefa à ser retornado [texto]


CAMPOSTAREFAATUAL
Retorna um determinado campo da tarefa atual do atendimento do contexto

PAR. 1 - Campo da tarefa à ser retornado [texto]


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


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]


CHEFEIMEDIATORESPATENDIMENTO
Retorna a coligada e código do atendente (no formato valor;valor) do chefe imediato do atual atendente responsável pelo atendimento


CHR
Retorna o caractere representado pelo número

PAR. 1 - Valor [decimal]


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


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


CODIGOCLIENTE
Retorna o código do cliente do atendimento.


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


CODIGOPRODUTO
Retorna o código do produto do atendimento.


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


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


COLIGADACORRENTE
Retorna a coligada corrente


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


CONCAT
Concatena as strings a e b

PAR. 1 - string1 [texto]
PAR. 2 - string2 [texto]


CONCAT2
Concatena as strings a e b com um espaço entre elas

PAR. 1 - string1 [texto]
PAR. 2 - string2 [texto]


CONCATENA
Concatena dois valores (parâmetros um e três) usando um separador (parâmetro dois)

PAR. 1 - Valor a se concatenado [object]
PAR. 2 - Separador [object]
PAR. 3 - Valor a ser concatenado com o primeiro parâmetro [object]


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


CONCLUIDOCONFIRMADOCOMEMAIL
Executa a função de Concluído confirmado para um atendimento enviando email para o cliente


CONCLUIDOCONFIRMADOSEMEMAIL
Executa a função de Concluído confirmado para um atendimento sem enviar email para o cliente


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


CONCLUIDORESPONDIDOCOMEMAIL
Executa a função de Concluído Respondido para um atendimento enviando email para o cliente


CONCLUIDORESPONDIDOSEMEMAIL
Executa a função de Concluído Respondido para um atendimento sem enviar email para o cliente


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


CONTEMVALOR
Procura um determinado valor em um conjunto de valores.

PAR. 1 - Conjunto de valores [texto]
PAR. 2 - Valor a procurar [object]
PAR. 3 - Tipo [texto]


COTACAOMOEDA
Cotação de uma moeda

PAR. 1 - Símbolo [texto]
PAR. 2 - Data [data]


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
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

;
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]


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]


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];


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]


DATANULA
Retorna a data mínima do sistema


DECANO
Subtrai um número de meses de um mês/ano e retorna o ano do resultado

PAR. 1 - Mês [inteiro]
PAR. 2 - Ano [inteiro]
PAR. 3 - Quantidade [inteiro]


DECMES
Subtrai de um mês (1 a 12), um número de meses

PAR. 1 - Mês [inteiro]
PAR. 2 - Quantidade [inteiro]


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

PAR. 1 - Novo contato com cliente [inteiro]


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.


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


DESCRICAOPRODUTOPAI
Retorna o nome do produto pai (no TOTVS Gestão de Estoque, Compras e Faturamento)


DIADT
Retorna o dia de uma data

PAR. 1 - Data [data]


DIASEMANA
Retorna o dia da semana de uma data

PAR. 1 - Data [data]


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)


ENVIAEMAILABERTURA
Envia email de abertura para o cliente do atendimento


ENVIAEMAILIMEDIATAMENTE
Envia um email imediatamente. Caso o email for do tipo HTML e tiver a palavra chave [ACOESDOATENDIMENTO] em seu corpo, serão incluidos links ao corpo do email para cada uma das possíveis ações do atendimento do contexto para sua tarefa atual.

PAR. 1 - Endereço de email do remetente [texto]
PAR. 2 - Endereço de email do destinatário [texto]
PAR. 3 - Endereço de email ao qual será enviada uma cópia do email [texto]
PAR. 4 - Assunto do email [texto]
PAR. 5 - Corpo do email [texto]
PAR. 6 - Formato do email (true caso for HTML e false caso for texto) [bool]


ENVIAEMAILREPASSE
Envia um email de repasse para o endereço informado.

PAR. 1 -Endereço de email do remetente [texto]
PAR. 2 -Endereço de email do destinatário [texto]
PAR. 3 -Endereço de email ao qual será enviada uma cópia do email [texto]
PAR. 4 -Atendente ao qual o repasse será realizado, lembrando que isso será apenas para informações do email, não definirá de fato quem receberá o atendimento[texto]


ENVIAEMAILREPASSEIMEDIATAMENTE
Envia imediatamente um email de repasse para o endereço informado.

PAR. 1 - Endereço de email do remetente [texto]
PAR. 2 - Endereço de email do destinatário [texto]
PAR. 3 - Endereço de email ao qual será enviada uma cópia do email [texto]
PAR. 4 - Atendente ao qual o repasse será realizado, lembrando que isso será apenas para informações do email, não definirá de fato quem receberá o atendimento [texto]


ENVIASMS
Envia um SMS para o telefone destinatário informado no parâmetro.

PAR. 1 - Usuário do serviço de SMS [texto]
PAR. 2 - Senha do serviço de SMS [texto]
PAR. 3 - Remetente [texto]
PAR. 4 - Telefone destino [texto]
PAR. 5 - Mensagem [texto]


ESCREVELOG
Escreve uma mensagem no Log.

PAR. 1 - Log [texto]


EXECSQL

Executa uma sentença SQL previamente cadastrada.

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


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]')


FOR
Executa uma fórmula

PAR. 1 - Código da fórmula [texto]


FRAC
Retorna a parte fracionada de um valor

PAR. 1 - Valor [decimal]


GERARLANCAMENTO
Gera um lançamento financeiro no TOTVS Gestão Financeira.

PAR. 1 - Coligada do cliente [inteiro]
PAR. 2 - Código do cliente [texto]
PAR. 3 - Código da filial [inteiro]
PAR. 4 - Tipo do documento [texto]
PAR. 5 - Data do vencimento [data]
PAR. 6 - Tipo contábil [texto]
PAR. 7 - Tipo pagar ou receber [texto]
PAR. 8 - Valor [texto]


GERARLANCAMENTOCAMPOSEXTRAS
Gera um lançamento financeiro no TOTVS Gestão Financeira com campos extras.

PAR. 1 - Coligada do cliente [inteiro]
PAR. 2 - Código do cliente [texto]
PAR. 3 - Código da filial [inteiro]
PAR. 4 - Tipo do documento [texto]
PAR. 5 - Data do vencimento [data]
PAR. 6 - Tipo contábil [texto]
PAR. 7 - Tipo pagar ou receber [texto]
PAR. 8 - Valor [texto]
PAR. 9 - Lista Campos [texto]
PAR. 10 - Lista Valores [texto]


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


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].


HIERARQUIARHDESTINOREQUISICAO
Retorna a hierarquia do Gestão de Pessoas destino da requisição.


HIERARQUIARHORIGEMREQUISICAO
Retorna a hierarquia do Gestão de Pessoas origem da requisição.


HOJE
Retorna a data de hoje


INCANO
Adiciona um número de meses a um mes/ano e retorna o ano do resultado

PAR. 1 - Mês [inteiro]
PAR. 2 - Ano [inteiro]
PAR. 3 - Quantidade [inteiro]


INCMES
Adiciona a um mês (1 a 12), um número de meses

PAR. 1 - Mês [inteiro]
PAR. 2 - Quantidade [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]


INT
Trunca um valor

PAR. 1 - Valor a truncar [decimal]


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

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


INTTOSTRFORMAT
Converte um valor inteiro para string (texto) preenchendo com zeros

PAR. 1 - Valor [inteiro]
PAR. 2 - Zeros [inteiro]


MAX
Retorna o maior número

PAR. 1 - valor1 [decimal]
PAR. 2 - valor2 [decimal]


MESDT
Retorna o mês de uma data

PAR. 1 - Data [data]


MIN
Retorna o menor número

PAR. 1 - Valor1 [decimal]
PAR. 2 - Valor2 [decimal]


MTDATA
Monta uma data a partir do dia, mês e ano

PAR. 1 - Dia [inteiro]
PAR. 2 - Mês [inteiro]
PAR. 3 - Ano [inteiro]


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


NOMECLIENTE
Retorna o nome do cliente.


NOMECONTATOCLIENTE
Retorna o nome do contato do cliente


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


NOMECONTATOREPRESENTANTE
Retorna o nome do contato do representante.


NOMEPRODUTO
Retorna o nome do produto.


NOMEREPRESENTANTE
Retorna o nome do representante.


PAR
Variável genérica. Utilizada também para validação de campos complementares.


PARAMETROSATENDIMENTO
Busca o valor de um parâmetro de um atendimento (de acordo com o tipo de atendimento).

PAR. 1 - Código do parâmetro [inteiro]


POTENCIA
Retorna a potência

PAR. 1 - Base [decimal]
PAR. 2 - Expoente [inteiro]


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]


PROXREGSQL
Avança um registro na Consulta SQL executada.

PAR. 1 - Código sentença SQL [texto]


RAIZ
Retorna a raiz quadrada de um valor

PAR. 1 - Valor [decimal]


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]


REPASSARATENDPARAGRUPO
Repassa o atendimento do contexto para um determinado grupo de atendentes.

PAR. 1 - Código do grupo de atendentes que o atendimento será repassado [inteiro]
PAR. 2 - Código do motivo de repasse [inteiro]
PAR. 3 - Justificativa do repasse [texto]
PAR. 4 - Endereço de email para o qual será encaminhada uma cópia do email de repasse [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]


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; 


RETIRACARACTERES
Retira do texto todas as ocorrências dos caracteres da string chars

PAR. 1 - Caracteres à retirar [texto]
PAR. 2 - Texto [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.


RETORNAATENDENTEHIERARQUIARH
Retorna o atendente da hierarquia do Gestão de pessoas que foi informada.

PAR. 1 - Texto contendo coligada e ID da hierarquia separados por ; [texto]


RETORNAHIERARQUIARHATUALREQ
Retorna a hierarquia do Gestão de Pessoas do atendente atual.


RETORNAPROXIMAHIERARQUIARH

Retorna a coligada e código da hierarquia superior a que foi passada como parâmetro e respeitando o numero de níveis informado, no caso, é a hierarquia do RH, ou seja, tabela VHIERARQUIA

PAR. 1 - Número de níveis a buscar [inteiro]

PAR. 2 - Texto contendo coligada e ID da hierarquia separados por ; [texto]

Exemplo: RETORNAPROXIMAHIERARQUIARH(1, '1;2')

Nesse exemplo, foi solicitado a hierarquia imediatamente superior (1 no primeiro parâmetro) a hierarquia de código 2 da coligada 1, supondo que a hieraquia imediatamente superior a de código 2, for da coligada 1 e código 3, o retorno será: '1;3'


RETORNAPROXIMOATENDENTEHIERARQUIARH

Retorna o atendente da próxima hierarquia da requisição que está associado ao atendimento de acordo com o número de níveis informado como parâmetro. Para usar essa fórmula, é necessário que o atendimento esteja associada a um requisição do RH.

PAR. 1 - Número de níveis a buscar [inteiro]

Exemplo RETORNAPROXIMOATENDENTEHIERARQUIARH(1)

Nesse exemplo, foi solicitado o atendente da hierarquia imediatamente superior a requisição associada ao atendimento, supondo que esse atendente seja da coligada 1 e de código 5, o retorno será: '1;5'


RETORNAPROXIMOCHEFEHIERARQUIASECAOLABORE
Retorna o código do Chefe do atendente atual da requisição, se baseando na hierarquia de seções do TOTVS RH (Linha RM). Esta função de fórmula não reconhece Chefe de outra coligada.

PAR. 1 - Retornar somente chefe (1 sim, 0 não) [inteiro]


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.


RETPROXIMOCHEFEINTERNOSECAOLABORE
Retorna o código de atendente do chefe interno do atendente responsável pelo atendimento utilizando a hierarquia de seções do RMLabore.

É importante observar que serão listados somente chefes internos.

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.


RETPROXIMOCHEFESECAOLABORE
Retorna o código de atendente do chefe do atendente responsável pelo atendimento utilizando a hierarquia de seções do RMLabore.

É importante observar que a prioridade serão os chefes externos, somente depois de todos os chefes externos das hierarquias superiores à do atendente responsável pelo atendimento, serão listados os chefes internos.

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.


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]


SETVAR
Atribui um valor a uma variável

PAR. 1 - Variável [var]
PAR. 2 - Valor [object]


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


STR
Retorna número de acordo com máscara informada

PAR. 1 - Valor
PAR. 2 - Mascará


STRLEFT
Copia o lado DIREITO de um string (texto) um número de caracteres (quantidade)

PAR. 1 - Texto [texto]
PAR. 2 - Quantidade [inteiro]


STRRIGHT
Copia o lado ESQUERDO de um string (texto) um número de caracteres (quantidade)

PAR. 1 - Texto [texto]
PAR. 2 - Quantidade [inteiro]


SUBSTR
Copia a partir da posição início um número de caracteres de texto

PAR. 1 - Texto [texto]
PAR. 2 - Início [inteiro]
PAR. 3 - Quantidade [inteiro]


SUBTRAIDATAS
Retorna a subtração entre duas datas

PAR. 1 - Data1 [data]
PAR. 2 - Data2 [data]


TABCOLIGADA
Retorna o valor de uma Coluna da tabela GCOLIGADA da coligada corrente que o usuário tem acesso na GPERMISS    TABCOLIGADA

PAR. 1 - Coluna [texto]
PAR. 2 - Sistema [texto]


TAMSTR
Retorna o tamanho da string

PAR. 1 - Texto [texto]


TETO
Retorna o valor truncado mais um

PAR. 1 - Valor [decimal]


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.


TRUNCVALOR
Trunca um valor com casas decimais

PAR. 1 - Valor [decimal]
PAR. 2 - Casas [inteiro]


ULTDIAMES
Retorna o último dia do mês de uma data

PAR. 1 - Data [data]


USUARIOCORRENTE
Usuário logado no sistema.


VAL
Converte um string para valor

PAR. 1 - Valor [texto]

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 o atendimento 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 atendimento 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 ATENDIMENTO ABERTA PELO QSW */
          AVANCARETAPAATENDIMENTO(167) /* teste funcional */
        SENAO
          SE TIPOATENDENTE ( CAMPOSATENDIMENTO ( 'CODATENDENTERESP' )  ) = 6 E (FOR("05.00032") = VERDADE) ENTAO /* QUALQUER OCORRENCIA ATENDIMENTO 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