Versões comparadas

Chave

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

...

Informações
titleExemplos 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