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. 


Funçõ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.

PAR. 1 - Coligada do atendimento [inteiro]
PAR. 2 - Localidade do atendimento [inteiro]
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.

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


AGENDADORESPONDIDO
Altera o status de um atendimento para Agendado Respondido.


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


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


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]


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]


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

PAR. 1 - variaval1 [texto]
PAR. 2 - variaval2 [texto]
PAR. 3 - variaval3 [texto]
PAR. 4 - variaval4 [texto]


ANODT
Retorna o ano de uma data

PAR. 1 - Data [data]


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.


ARRED
Arredonda um valor sem casas decimais

PAR. 1 - Valor [decimal]


ARREDONDA
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 [decimal]
PAR. 2 - Valor [decimal]


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.

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]


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]



Exemplos de Fórmulas


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

  • Sem rótulos