Você está na página 1de 34

Assunto: Repositório de Fórmulas Visuais

Projeto: TOTVS Framework


Versão do Documento: 1.16
Data: 25/07/2011
Atualização: 22/05/2015

Conteúdo
1. VALIDA DATA DE ENTREGA DE IMÓVEL...............................................................................................................................................3
2. VALIDAÇÃO DE INCLUSÃO DE PROSPECT/SUSPECT.............................................................................................................................3
3. VALIDAÇÃO DE DUPLICIDADE DE ATENDIMENTOS..............................................................................................................................4
4. ATENDIMENTO DUPLICADO - ENVIO DE EMAIL PARA SUPERINTENDENTE..........................................................................................5
5. VALIDAÇÃO DO CAMPO EMAIL - CADASTRO DE PESSOAS...................................................................................................................6
6. VALIDAÇÃO DO CAMPO TELEFONE ADICIONAL - PROSPECT................................................................................................................6
7. VALIDAÇÃO DE DATA DA VISITA AO IMOVEL.......................................................................................................................................7
8. VALIDAÇÃO DO CAMPO EMAIL - CADASTRO DE USUÁRIOS.................................................................................................................7
9. VALIDAÇÃO DOS CAMPOS COMPLEMENTARES - FATURAMENTO DE MOVIMENTO.............................................................................8
10. VALIDAÇÃO DO NUMERO DO CONTRATO RM SOLUM - FATURAMENTO DE MOV................................................................................9
11. VALIDAÇÃO DE INCLUSÃO DE NOVOS PRODUTOS.............................................................................................................................10
12. ENVIO DE EMAIL NOVO USUÁRIO.....................................................................................................................................................10
13. ENVIO DE E-MAIL - ERRO NA ROTINA DE ENVIO DE E-MAIL´S AGENDADOS.......................................................................................11
14. ALTERA CAMPO DO CADASTRO DE EVENTO DO LABORE...................................................................................................................11
15. TORNAR ATENDENTE INATIVO QUANDO FUNCIONÁRIO FOR DEMITIDO...........................................................................................12
16. VALIDAÇÃO DO CAMPO CPF - CADASTRO DE FUNCIONÁRIOS...........................................................................................................13
17. VALIDAÇÃO DO CAMPO PIS - CADASTRO DE FUNCIONÁRIOS............................................................................................................13
18. VALIDA PERFIL DE USUÁRIO LOGADO...............................................................................................................................................14
19. VALIDA APROPRIAÇÃO DE ATENDIMENTO........................................................................................................................................14
20. VALIDA INCLUSÃO DE REQUISIÇÕES DO VITAE FORA DO PRAZO.......................................................................................................15
21. VALIDAR SE O CANDIDATO ESTÁ SENDO INSCRITO EM UM CURSO MAIS DE 2 VEZES.........................................................................16
22. TRATAR EXCEÇÃO ENVIANDO EMAIL.................................................................................................................................................17
23. VALIDAR SE O CANDIDATO ESTÁ SENDO INSCRITO EM UM CURSO MAIS DE 2 VEZES.........................................................................18
24. VALIDAR INCLUSÃO E EXCLUSÃO DE RESPONSÁVEL FINANCEIRO NO EDUCACIONAL.........................................................................19
25. PREENCHIMENTO DE CAMPO COMPLEMENTAR AUTOMATICAMENTE..............................................................................................20
26. VALIDAR DUPLICIDADE EM INCLUSÃO DE OCORRÊNCIAS PARA ALUNO............................................................................................21
27. MOSTRAR CAMPO COMPLEMENTAR NA VISÃO DE ALUNOS.............................................................................................................21
28. ENVIAR EMAIL PARA ALUNO COM 3 OCORRÊNCIAS..........................................................................................................................22
29. GRAVAR INFORMAÇÃO DO PRODUTO NO HISTÓRICO DO ITEM DE MOVIMENTO.............................................................................23
30. VALIDAR PREENCHIMENTO DE NOME DE FUNCIONÁRIO COM ACENTO............................................................................................24
31. VALIDAR INFORMAÇÃO ORIGINAL DO CAMPO DESCRIÇÃO DA SEÇÃO..............................................................................................24
32. VALIDAR INFORMAÇÃO DO CAMPO DESCRIÇÃO DA SEÇÃO..............................................................................................................24
33. ENVIAR EMAIL PELO VIA PROCESSO DO CADASTRO DE FUNCIONÁRIO.............................................................................................25
34. VALIDAR PREENCHIMENTO DE CENTRO DE CUSTO (CAMPO COMPLEMENTAR) POR INSUMO...........................................................26
35. VALIDAR TAMANHO DO CAMPO CODIGO DE PROJETO.....................................................................................................................27
36. CANCELAR ATENDIMENTO RELACIONADO........................................................................................................................................28
37. HABILITAR CAMPO IMPRODUTIVO PARA RECURSOS DA COMPOSIÇÃO............................................................................................29
38. ALTERAR STATUS DO LANÇAMENTO PARA CANCELAMENTO DE LANÇAMENTO NO SGI.....................................................................30
39. SALTAR ATENDENTE QUE JÁ APROVOU ATENDIMENTO.....................................................................................................................31
40. CONFIGURAÇÃO PARA A FÓRMULA VISUAL FUNCIONAR..................................................................................................................32

Analista: Felipe David Evangelista Página 1 de 34


FÓRMULA
1. VALIDA DATA DE ENTREGA DE IMÓVEL
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar o preenchimento da Data de Entrega de um imóvel
DESCRIÇÃO
no Sistema SGI, e o campo parâmetro do atendimento "INCLUIRSEMDATAENTREGA".

GATILHO Cadastro >> Antes de Salvar o Registro >> CRM >> Atendimentos
SELECT
CASE WHEN ( SELECT
XVENDA.DATAENTREGACHAVE

Activity=RMSWorkflow, Path=Fields["CODCFO"].AsString
FROM XVENDA (NOLOCK),

XEMPREENDIMENTO (NOLOCK),

XITEMVENDA (NOLOCK) Activity=RMSWorkflow, Path=Fields["CODCODCOLIGADA"].AsShort

WHERE

XEMPREENDIMENTO.COD_PESS_EMPR =
XVENDA.COD_PESS_EMPR AND XEMPREENDIMENTO.CODCOLIGADA =
XVENDA.CODCOLIGADA
Activity=RMSWorkflow,
Path=Tables["HPARAMATENDIMENTO"].Item["PARAMETRO_10"].AsString
CONSULTA SQL AND XITEMVENDA.NUM_VENDA =
XVENDA.NUM_VENDA AND XITEMVENDA.COD_PESS_EMPR =
XVENDA.COD_PESS_EMPR

AND XVENDA.CODCOLIGADA
=:CODCOLIGADA

ATIVIDADES AND XVENDA.CODCFO =:CODCFO

Activity=RMSWorkflow,
AND
XEMPREENDIMENTO.CODEMPREENDIMENTO =:PARAMETRO_10 Path=Tables["HPARAMATENDIMENTO"].Item["PARAMETRO_8"].AsString

AND XITEMVENDA.NUM_SUB_UNID
=:PARAMETRO_8 ) < GETDATE() THEN 0
ELSE 1
END AS RETORNO

FROM GCOLIGADA (NOLOCK)


WHERE CODCOLIGADA = 1

this.Tables["HATENDIMENTOBASE"]["CODGRUPOATENDIMENTO"].AsString
== "5" && this.Tables["HATENDIMENTOBASE"]
["CODTIPOATENDIMENTO"].AsString == "8" &&
SE/SENAO CONDIÇÃO DECLARATIVA this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added &&
this.rmsConsSQLActivity1.Fields["RETORNO"].AsInteger == 1 &&
(this.Tables["HPARAMATENDIMENTO"]["PARAMETRO_3"].AsString == "0" ||
this.Tables["HPARAMATENDIMENTO"]["PARAMETRO_3"].IsNull)
Campo "Data de Entrega das Chaves" no Sistema SGI maior que a
GERAR Data Atual. Verifique o preenchimento do campo, ou verifique se o
MENSAGEM DE ERRO
EXCEÇÃO campo "Salvar atendimento para Imóvel não Entregue" (Pasta
Parâmetros) deve ser marcado.

OBSERVAÇÃO É necessária a criação de Campos Parâmetros no TOTVS Gestão do Relacionamento com o Cliente.

FÓRMULA
2. VALIDAÇÃO DE INCLUSÃO DE PROSPECT/SUSPECT
VISUAL
Esta Fórmula Visual tem como objetivo validar se o CPF/CNPJ do Prospect-Suspect já existe na Base de Dados de
DESCRIÇÃO
Clientes.

GATILHO Cadastros >> Antes de Salvar o Registro >> CRM >> Prospect/Suspect
SELECT COUNT (CGCCFO) AS QTD Activity=RMSWorkflow, Path=Fields.Item["CGCCFO"].AsString
ATIVIDADES CONSULTA SQL FROM FCFO (NOLOCK)
WHERE CGCCFO = :CGCCFO

Analista: Felipe David Evangelista Página 2 de 34


this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added &&
SE/SENAO CONDIÇÃO DECLARATIVA this.retornaCNPJ.Fields["QTD"].AsInteger > 0
GERAR # Este CPF já existe no Cadastro de Clientes. Favor verificar se este registro
MENSAGEM DE ERRO pode ser incluído. #
EXCEÇÃO
OBSERVAÇÃO

FÓRMULA
3. VALIDAÇÃO DE DUPLICIDADE DE ATENDIMENTOS
VISUAL

DESCRIÇÃO Esta Fórmula Visual (Workflow) tem como objetivo validar duplicidade de atendimentos do Tipo 9 e 10.

GATILHO Cadastro >> Antes de Salvar o Registro >> CRM >> Atendimentos
/* CONSULTA SQL QUE RETORNA ATENDIMENTOS DUPLICADOS - VALIDACAO VIA
FORMULA VISUAL*/

IF (
Activity=RMSWorkflow, Path=Fields["CODATENDIMENTO"].AsInteger
SELECT COUNT(VALOR) AS OCORRENCIAS
FROM HPARAMATENDIMENTO (NOLOCK), HATENDIMENTOEXT (NOLOCK)
WHERE HPARAMATENDIMENTO.CODCOLIGADA = HATENDIMENTOEXT.CODCOLIGADA
AND HPARAMATENDIMENTO.CODATENDIMENTO =
HATENDIMENTOEXT.CODATENDIMENTO AND HPARAMATENDIMENTO.CODLOCAL =
HATENDIMENTOEXT.CODLOCAL
AND HPARAMATENDIMENTO.CODPARAMETRO = '50' Activity=RMSWorkflow, Path=Fields["CODCFO"].AsString
AND HPARAMATENDIMENTO.VALOR =:PARAMETRO_50

CONSULTA SQL AND HATENDIMENTOEXT.CODCFO =:CODCFO


AND HATENDIMENTOEXT.CODATENDIMENTO <>:CODATENDIMENTO
AND CONVERT(VARCHAR(10),ABERTURA,102) >=
CONVERT(VARCHAR(10),DATEADD(MONTH,-3,
CONVERT(VARCHAR(10),GETDATE(),102)),102)
AND HATENDIMENTOEXT.CODSTATUS <> 'C'
AND HATENDIMENTOEXT.CODSTATUS <> 'R'
AND HATENDIMENTOEXT.CODSTATUS <> 'O'
AND HATENDIMENTOEXT.CODSTATUS <> 'F'
AND HATENDIMENTOEXT.CODSTATUS <> 'U' ) > 0 Activity=RMSWorkflow, Path=Tables["HPARAMATENDIMENTO"].Item["PARAMETRO_50"].AsString
BEGIN
SELECT 1 AS RETORNO END
ELSE
BEGIN SELECT 0 AS RETORNO END

(this.Tables["HATENDIMENTOBASE"]["CODGRUPOATENDIMENTO"].AsString == "6" &&


this.Tables["HATENDIMENTOBASE"]["CODTIPOATENDIMENTO"].AsString == "9" ||
this.Tables["HATENDIMENTOBASE"]["CODGRUPOATENDIMENTO"].AsString == "6" &&
ATIVIDADES this.Tables["HATENDIMENTOBASE"]["CODTIPOATENDIMENTO"].AsString == "10") &&
this.rmsConsSQLActivity1.Fields["RETORNO"].AsInteger == 1 && (this.Tables[0].Rows[0].RowState ==
SE/SENAO CONDIÇÃO DECLARATIVA System.Data.DataRowState.Added || this.Tables[0].Rows[0].RowState ==
System.Data.DataRowState.Modified || this.Tables["HPARAMATENDIMENTO"]
["PARAMETRO_50"].IsModified) && (this.Tables["HPARAMATENDIMENTO"]
["PARAMETRO_55"].AsString == "0" || this.Tables["HPARAMATENDIMENTO"]
["PARAMETRO_55"].IsNull)
GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
NewLine + 'Já existe um atendimento para este CLIENTE e
EMPREENDIMENTO. Verifique o preenchimento do atendimento, ou
EXPRESSÕES verifique se o campo "Salvar Atendimento Duplicado" (Pasta
EXPRESSÃO Parâmetros) deve ser marcado.' + NewLine + NewLine
VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO É necessária a criação de Campos Parâmetros no TOTVS Gestão do Relacionamento com o Cliente.

Analista: Felipe David Evangelista Página 3 de 34


FÓRMULA
4. ATENDIMENTO DUPLICADO - ENVIO DE EMAIL PARA SUPERINTENDENTE
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo enviar um e-mail alertando o Superintendente de Vendas quanto à
inclusão de atendimentos duplicados do Tipo 9 e 10.
DESCRIÇÃO
Campo a ser testado: PARAMETRO_55
Tabela: HPARAMATENDIMENTO

GATILHO Cadastro >> Antes de Salvar o Registro >> CRM >> Atendimentos

SE/SENAO CONDIÇÃO DECLARATIVA this.Tables["HPARAMATENDIMENTO"]["PARAMETRO_55"].AsString == "1"

PARA CADA
LISTA DE ITENS Activity=RMSWorkflow, Path=Tables[0].Rows
ITERAÇÃO
DECLARE @GRUPO INT
SET @GRUPO = '19'

SELECT

PPESSOA.EMAIL,
PPESSOA.NOME,

CONSULTA SQL
@GRUPO AS GRUPO
FROM
HATENDENTE (NOLOCK)
INNER JOIN PPESSOA (NOLOCK)ON
HATENDENTE.CODPESSOA = PPESSOA.CODIGO
INNER JOIN HATENDENTEGRUPO (NOLOCK) ON
HATENDENTE.CODCOLIGADA = HATENDENTEGRUPO.CODCOLIGADA
AND HATENDENTE.CODATENDENTE = HATENDENTEGRUPO.CODATENDENTE
ATIVIDADES AND HATENDENTEGRUPO.CODGRUPO = @GRUPO

ASSUNTO [TOTVS CRM Informa] Inclusão de Atendimento Duplicado no Setor de Vendas

ENVIO DE DESTINATÁRIO Activity=rmsConsSQLActivity1, Path=Fields["EMAIL"].AsStringArray

EMAIL REMETENTE Company

TEXTO DO EMAIL Texto da Atividade Expressão


'----------------------------------------------------------------------------' +
NewLine + NewLine +
'Prezado(a) Superintendente de Vendas, ' + NewLine + NewLine +

EXPRESSÕES
'O sistema [TOTVS Gestão do Relacionamento com o Cliente] constatou que um
atendimento do Tipo [Ficha de Atendimento] foi incluído em duplicidade para o
EXPRESSÃO cliente: ' + RMSWorkflow.CODCFO + '.' + NewLine + NewLine + 'Número do Atendimento
Duplicado: ' + RMSWorkflow.CODATENDIMENTO + NewLine + NewLine +
'----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsSendEmailActivity1, Path=Body

IMAGEM

Analista: Felipe David Evangelista Página 4 de 34


FÓRMULA
5. VALIDAÇÃO DO CAMPO EMAIL - CADASTRO DE PESSOAS
VISUAL
Fórmula Visual que verifica se o campo EMAIL do Cadastro de Pessoas foi preenchido corretamente.

DESCRIÇÃO Tabela: PPESSOA


Campo Validado: EMAIL
Valor: e-mail válido
GATILHO Cadastros >> Antes da Atualização do Registro (Fim) >> Folha de Pagamento >> Pessoas
!new System.Text.RegularExpressions.Regex("^([0-9a-zA-Z]+([_.-]?[0-9a-zA-
SE/SENAO CONDIÇÃO DECLARATIVA Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+
$").IsMatch(this.Tables["PPESSOA"]["EMAIL"].AsString)
GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
ATIVIDADES '----------------------------------------------------------------------------' +
NewLine + NewLine +

EXPRESSÕES
'Favor preencher o campo EMAIL com um valor válido.' +
NewLine + '( Exemplo: usuario@totvs.com.br )' + NewLine + NewLine +
NewLine + NewLine +
EXPRESSÃO '----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO

FÓRMULA
6. VALIDAÇÃO DO CAMPO TELEFONE ADICIONAL - PROSPECT
VISUAL
Fórmula Visual que verifica se o campo TELEFONE ADICIONAL do Cadastro de Prospect foi preenchido
corretamente.
DESCRIÇÃO
Tabela: HPROSPECTCOMPL
Campo Validado: TELEFONEPROSPECT
GATILHO Cadastros >> Antes de Salvar o Registro >> CRM >> Prospect/Suspect
!this.Tables["HPROSPECTCOMPL"]["TELEFONEPROSPECT"].IsNull && !new
System.Text.RegularExpressions.Regex("^\\d{2}
SE/SENAO CONDIÇÃO DECLARATIVA [\\s-]\\d{4}-\\d{4}$").IsMatch(this.Tables["HPROSPECTCOMPL"]
["TELEFONEPROSPECT"].AsString)
GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
ATIVIDADES '----------------------------------------------------------------------------' +
NewLine + NewLine +
'Favor preencher o campo TELEFONE ADICIONAL (Pasta Campos Complementares) com um
EXPRESSÕES valor válido.'
NewLine + NewLine +
+ NewLine + '( Padrão: 31 0000-0000 )' +

EXPRESSÃO NewLine + NewLine +


'----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO

Analista: Felipe David Evangelista Página 5 de 34


FÓRMULA
7. VALIDAÇÃO DE DATA DA VISITA AO IMOVEL
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar o preenchimento da Data da Visita ao Imóvel.

DESCRIÇÃO Campo a ser testado: HPARAMATENDIMENTO.PARAMETRO_23


Tabela: HPARAMATENDIMENTO
Valor: Menor que HATENDIMENTOBASE.ABERTURA
GATILHO Cadastro >> Antes de Salvar o Registro >> CRM >> Atendimentos
this.Tables["HATENDIMENTOBASE"]["CODGRUPOATENDIMENTO"].AsString == "6" &&
this.Tables["HATENDIMENTOBASE"]["CODTIPOATENDIMENTO"].AsString == "9" &&
SE/SENAO CONDIÇÃO DECLARATIVA this.Tables["HPARAMATENDIMENTO"]["PARAMETRO_23"].AsDateTime >
this.Tables["HATENDIMENTOBASE"]["ABERTURA"].AsDateTime
GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
ATIVIDADES '----------------------------------------------------------------------------' +
NewLine + NewLine +

EXPRESSÕES
'O campo "Data da Visita ao Imóvel" (Pasta Parâmetros) deve ser preenchido com uma
Data anterior ou igual a Data Atual.' + NewLine + NewLine +
NewLine + NewLine +
EXPRESSÃO '----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO É necessária a criação de Campos Parâmetros no TOTVS Gestão do Relacionamento com o Cliente.

FÓRMULA
8. VALIDAÇÃO DO CAMPO EMAIL - CADASTRO DE USUÁRIOS
VISUAL
Fórmula Visual que verifica se o campo EMAIL do Cadastro de Usuários foi preenchido corretamente.

DESCRIÇÃO Tabela: GUSUARIO


Campo Validado: EMAIL
Valor: e-mail válido
GATILHO Cadastros >> Antes da Atualização do Registro (Fim) >> Globais >> Usuários
!this.Tables["GUSUARIO"]["EMAIL"].IsNull && !new
System.Text.RegularExpressions.Regex("^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-
SE/SENAO CONDIÇÃO DECLARATIVA Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$").IsMatch(this.Tables["GUSUARIO"]
["EMAIL"].AsString)
GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
ATIVIDADES '----------------------------------------------------------------------------' +
NewLine + NewLine +

EXPRESSÕES
'Favor preencher o campo EMAIL com um valor válido.' +
NewLine + '( Exemplo: usuario@caparao.com.br )' + NewLine + NewLine +
NewLine + NewLine +
EXPRESSÃO '----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO

Analista: Felipe David Evangelista Página 6 de 34


FÓRMULA
9. VALIDAÇÃO DOS CAMPOS COMPLEMENTARES - FATURAMENTO DE MOVIMENTO
VISUAL
Fórmula Visual que verifica se os campos PRECO (RELACAO CUSTO-BENEFICIO),PONTUAL ENTREGA NO PRAZO
ESTABELECIDO,ADEQUADACAO AS NORMAS TECNICAS,INOVACAO TECNOLOGICA,ADEQUADACAO PROJ DE
INTERFACE, FUNCIONALIDADE, etc, do Tipo Movimento 1.2.37 foram preenchidos, caso o Período do Contrato
do RM SOLUM associado ao movimento seja o último.
DESCRIÇÃO
Tabela: TMOVCOMPL
Campo Validado: PRECO, PONTUALIDADE, etc
Valor: Não Nulo
GATILHO Cadastros >> Antes de Salvar o Registro >> Estoque >> MovFaturamentoData
SELECT
CASE
WHEN

Activity=RMSWorkflow,
(
SELECT
DISTINCT(MPDO.IDCNT)
FROM

Path=Tables["TMOVRELAC"].Item["CODCOLORIGEM"].AsInteger
MPDO

INNER JOIN MCNT (NOLOCK) ON


MCNT.CODCOLIGADA = MPDO.CODCOLIGADA AND MCNT.IDPRJ = MPDO.IDPRJ AND MCNT.IDCNT = MPDO.IDCNT

CONSULTA SQL
INNER JOIN TMOV (NOLOCK) ON MPDO.IDMOV =
TMOV.IDMOV AND MPDO.CODCOLIGADA = TMOV.CODCOLIGADA

WHERE
MPDO.CODCOLIGADA =:CODCOLIGADA

Activity=RMSWorkflow,
Path=Tables["TMOVRELAC"].Item["IDMOVORIGEM"].AsInteger
AND MPDO.IDMOV =:IDMOVORIGEM

AND MPDO.DATAFIM = MCNT.DATAFIM


) IS NOT NULL
THEN 1
ELSE 0
END ULTIMOPERIODOSOLUM

/* CONSULTA SQL PARA FORMULA VISUAL QUE VALIDA TIPO DE MOVIMENTO 1.2.37
SE RETORNAR 1 EH PORQUE O PERIODO DO CONTRATO NO RM SOLUM EH O ULTIMO */

(this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added || this.Tables[0].Rows[0].RowState ==


System.Data.DataRowState.Modified)
&&
ATIVIDADES (this.Tables["TMOV"]["CODTMV"].AsString == "1.2.37" &&
this.rmsConsSQLActivity1.Fields["ULTIMOPERIODOSOLUM"].AsString == "1" && (this.Tables["TMOVCOMPL"]
SE/SENAO CONDIÇÃO DECLARATIVA ["PRECO"].IsNull || this.Tables["TMOVCOMPL"]["PONTUALIDADE"].IsNull || this.Tables["TMOVCOMPL"]
["ADEQUADACAO"].IsNull || this.Tables["TMOVCOMPL"]["INOVACAO"].IsNull || this.Tables["TMOVCOMPL"]
["ADEQPROJ"].IsNull || this.Tables["TMOVCOMPL"]["FUNCIONALIDADE"].IsNull || this.Tables["TMOVCOMPL"]
["ATENDSOLCONSTR"].IsNull || this.Tables["TMOVCOMPL"]["ACOMP"].IsNull || this.Tables["TMOVCOMPL"]
["RELAC"].IsNull || this.Tables["TMOVCOMPL"]["QUALIDADE"].IsNull))

GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
'----------------------------------------------------------------------------' + NewLine +
'Favor preencher os campos da Pasta Informações Adicionais >> Campos Complementares, visto ser o último
Período do Contrato associado no RM SOLUM. Os campos são: ' + NewLine + '"PRECO (RELACAO CUSTO-

EXPRESSÕES BENEFICIO)", "PONTUAL ENTREGA NO PRAZO ESTABELECIDO", "ADEQUADACAO AS NORMAS TECNICAS", "INOVACAO
TECNOLOGICA", "ADEQUADACAO PROJ DE INTERFACE", "FUNCIONALIDADE", "ATEND SOLIC DA CONSTRUTORA", "ACOMP
DURANTE EXECUCAO OBRA", "RELACIONAMENTO COM A CONSTRUTORA" e "QUALIDADE DAS INFOR DOS PROJETOS/LAUDOS"' +
EXPRESSÃO NewLine +
NewLine + '----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO É necessária a criação dos Campos Complementares no RM Nucleus e associar ao Tipo de Movimento.

Analista: Felipe David Evangelista Página 7 de 34


FÓRMULA
10. VALIDAÇÃO DO NUMERO DO CONTRATO RM SOLUM - FATURAMENTO DE MOV
VISUAL
Fórmula Visual que verifica se o Campo Complementar NUMERO CONTRATO EMPREITEIRO (Tipo de Movimento 1.2.37) é
igual ao campo NUMERO CONTRATO do Contrato do RM Solum associado ao movimento de origem (1.1.16).
DESCRIÇÃO
Tabela: TMOVCOMPL e MCNT
Campo Validado: TMOVCOMPL.NUMEROCONTRATO e MCNT.NUMCNT
Valor: TMOVCOMPL.NUMEROCONTRATO = MCNT.NUMCNT

GATILHO Cadastros >> Antes de Salvar o Registro >> Estoque >> MovFaturamentoData
SELECT MCNT.NUMCNT
FROM
MPDO (NOLOCK)
Activity=RMSWorkflow, Path=Tables["TMOVRELAC"].Item["CODCOLORIGEM"].AsShort
INNER JOIN MCNT
(NOLOCK) ON MCNT.CODCOLIGADA = MPDO.CODCOLIGADA AND
MCNT.IDPRJ = MPDO.IDPRJ AND MCNT.IDCNT = MPDO.IDCNT

INNER JOIN TMOV

CONSULTA SQL (NOLOCK) ON MPDO.IDMOV = TMOV.IDMOV AND


MPDO.CODCOLIGADA = TMOV.CODCOLIGADA

WHERE
MPDO.CODCOLIGADA =:CODCOLORIGEM Activity=RMSWorkflow,
Path=Tables["TMOVRELAC"].Item["IDMOVORIGEM"].AsInteger
AND MPDO.IDMOV
=:IDMOVORIGEM

/* CONSULTA SQL PARA FORMULA VISUAL QUE VALIDA TIPO


DE MOVIMENTO 1.2.37
RETORNA O NUMERO DO CONTRATO NO RM SOLUM */

(this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added ||
ATIVIDADES this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Modified)
&&
SE/SENAO CONDIÇÃO DECLARATIVA (this.Tables["TMOVCOMPL"]["FATDIRETO"].AsString == "1" && (this.Tables["TMOV"]
["CODTMV"].AsString == "1.2.37" && this.rmsConsSQLActivity1.Fields["NUMCNT"].AsString !=
this.Tables["TMOVCOMPL"]["NUMEROCONTRATO"].AsString))
GERAR
MENSAGEM DE ERRO Texto da Atividade Expressão
EXCEÇÃO
'----------------------------------------------------------------------------' + NewLine +
'Favor preencher o campo NUMERO CONTRATO EMPREITEIRO (Pasta Informações Adicionais >> Campos
Complementares), com o mesmo Número do Contrato associado no TOTVS OBRAS E PROJETOS (RM SOLUM).' +
NewLine +
NewLine +
EXPRESSÕES 'Número do Contrato no TOTVS OBRAS E PROJETOS: ' + rmsConsSQLActivity1.NUMCNT
+ NewLine +

EXPRESSÃO
NewLine +
'----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

OBSERVAÇÃO É necessária a criação dos Campos Complementares no RM Nucleus e associar ao Tipo de Movimento.

Analista: Felipe David Evangelista Página 8 de 34


FÓRMULA
11. VALIDAÇÃO DE INCLUSÃO DE NOVOS PRODUTOS
VISUAL
Fórmula Visual que envia e-mail para Grupo de Emails responsável pela administração do Cadastro de Produtos a cada novo produto
incluso.
DESCRIÇÃO Tabela: TPRD
Campo Validado: IDPRD
Valor: novo registro

GATILHO Cadastros >> Após Salvar o Registro >> Estoque >> Produtos

this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added
SE/SENAO CONDIÇÃO DECLARATIVA

ASSUNTO [TOTVS] Inclusão de Novo Produto no Sistema TOTVS


ENVIO DE DESTINATÁRIO totvs@totvs.com.br
EMAIL REMETENTE Company

ATIVIDADES TEXTO DO EMAIL Texto da Atividade Expressão


'----------------------------------------------------------------------------' +
NewLine + NewLine +
'Um novo Produto foi incluído no sistema TOTVS.'
+ NewLine + NewLine +
EXPRESSÕES 'Código do Produto: ' + RMSWorkflow.CODIGOPRD + NewLine +
'Código da Coligada: ' + RMSWorkflow.CODCOLIGADA
EXPRESSÃO + NewLine
+ NewLine + NewLine +
'----------------------------------------------------------------------------'

VALOR CALCULADO Activity=rmsSendEmailActivity1, Path=Body

OBSERVAÇÃO

FÓRMULA
12. ENVIO DE EMAIL NOVO USUÁRIO
VISUAL
Este Workflow tem como objetivo enviar um e-mail automático para o usuário do sistema que tiver seu login
incluído no sistema, ou tiver sua senha resetada.
DESCRIÇÃO
Campo a ser testado: "SENHA" da visão do cadastro de Usuários (GUSUARIO.SENHA).
GATILHO Cadastros >> Antes da Atualização do Registro (Fim) >> Globais >> Usuários
SE/SENAO CONDIÇÃO DECLARATIVA this.Fields["SENHA"].IsModified
ASSUNTO [TOTVS] Login de acesso aos Sistemas TOTVS
ENVIO DE DESTINATÁRIO Activity=RMSWorkflow, Path=Fields["EMAIL"].AsStringArray
EMAIL REMETENTE Company

ATIVIDADES TEXTO DO EMAIL Texto da Atividade Expressão


'Prezado [' + RMSWorkflow.NOME + '],' + Newline + NewLine +
'Seu cadastro como usuário nos Sistemas TOTVS foi finalizado
com sucesso!' + Newline + Newline + 'Seu login de acesso é:
EXPRESSÕES ' + RMSWorkflow.CODUSUARIO + Newline + 'Sua senha inicial:
EXPRESSÃO 123456' + Newline + NewLine + 'Agora você está apto a
utilizar o sistema.' + Newline + NewLine + 'Bom Trabalho!'

VALOR CALCULADO Activity=rmsSendEmailActivity1, Path=Body

OBSERVAÇÃO É possível indicar a senha que for informada no cadastro do usuário. O valor padrão ‘123456’ foi uma questão de segurança.

FÓRMULA 13. ENVIO DE E-MAIL - ERRO NA ROTINA DE ENVIO DE E-MAIL´S AGENDADOS

Analista: Felipe David Evangelista Página 9 de 34


VISUAL
Este Workflow tem como objetivo enviar um e-mail automático para os usuários-chave do sistema RM Agilis,
caso ocorram erros durante a geração da rotina de Envio de E-mail´s Automáticos (serviço 'Executar Fórmula a
partir de Consulta SQL'). Fazendo com que os usuários-chave tomem providência.
DESCRIÇÃO
Campo a ser testado: MENSAGEMSTATUS e DATAINIEXEC
Tabela: GJOBXEXECUCAO
GATILHO Execução Agendada: Acessar a opção “Salvar e Executar” dentro da edição da Fórmula Visual, e agendar a execução
SELECT
CASE
WHEN ( SELECT COUNT(*) FROM GJOBXEXECUCAO (NOLOCK)
WHERE CONVERT(VARCHAR(10),DATAINIEXEC,105) =
CONVERT(VARCHAR(10),GETDATE(),105)
AND MENSAGEMSTATUS LIKE '%ERRO%UPDATE%GAUTOINC%') > 0 THEN 1
CONSULTA SQL ELSE 0
END AS RETORNO

FROM GCOLIGADA (NOLOCK)


WHERE CODCOLIGADA = 1

SE/SENAO CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.Fields["RETORNO"].AsString == "1"


ASSUNTO [TOTVS] Atenção: Ocorreu erro durante o envio de e-mails automáticos
ENVIO DE DESTINATÁRIO Informar o e-mail do responsável pelos Sistemas TOTVS na empresa
EMAIL REMETENTE Company
ATIVIDADES
TEXTO DO EMAIL Texto da Atividade Expressão
'Ao Administrador dos Sistemas TOTVS: '
+ Newline + NewLine +

'Favor verificar se a rotina de envio de e-mail´s está funcionando corretamente' + NewLine +


'(conferência pode ser realizada através do RM Agilis em | Menu Utilitários | Histórico de E-mail´s
enviados)'
+ NewLine +
'Pois a rotina de envio de e-mail retornou o seguinte erro:'
+ NewLine +
'--------------------------' + NewLine +

EXPRESSÕES
'ERRO: Atendimento [xx-x-xxxx] - A fórmula COLIGADA não pode ser executada! A fórmula COLIGADA não pode
ser executada! --CRMMailServer UPDATE GAUTOINC SET VALAUTOINC = xxxx WHERE CODCOLIGADA = 0 AND

EXPRESSÃO CODSISTEMA = H AND CODAUTOINC = GMAILSEND AND VALAUTOINC = xxxx '


+ NewLine +
'ExecuteNonQuery requires an open and available Connection. The connections current state is closed. Erro
ao atualizar GAUTOINC'
+ NewLine +
'--------------------------'
+ NewLine + NewLine +

'OBS: Verificar o serviço "RM.Host.Service" no servidor onde o RM Agilis está instalado.' + NewLine

VALOR CALCULADO Activity=rmsSendEmailActivity1, Path=Body

OBSERVAÇÃO Esta Fórmula Visual só deve ser incluída caso o serviço agendado de Envio de Email esteja sendo utilizado.

FÓRMULA
14. ALTERA CAMPO DO CADASTRO DE EVENTO DO LABORE
VISUAL
Altera Campo do Cadastro de Evento do Labore

DESCRIÇÃO Campo: SEGUERATEIOSALCMP


Tabela: PEVENTO
Valor: 1
GATILHO Cadastros >> Antes da Atualização do Registro (Fim) >> Folha de Pagamento >> Evento
EXPRESSÕES 1
ATIVIDADES EXPRESSÃO
Activity=RMSWorkflow,
VALOR CALCULADO Path=Tables["PEVENTO"].Item["SEGUERATEIOSALCMP"].AsInteger

OBSERVAÇÃO Esta Fórmula Visual altera o conteúdo do campo independente da condição do registro.

Analista: Felipe David Evangelista Página 10 de 34


FÓRMULA
15. TORNAR ATENDENTE INATIVO QUANDO FUNCIONÁRIO FOR DEMITIDO
VISUAL
Este Workflow tem por objetivo tornar um Atendente Inativo caso o Funcionário seja Demitido no RM Labore.
DESCRIÇÃO

GATILHO Execução Agendada: Acessar a opção “Salvar e Executar” dentro da edição da Fórmula Visual, e agendar a execução
SELECT CODATENDENTE,
CODCOLIGADA,
CONSULTA SQL ATIVO
FROM HATENDENTE
WHERE CODPESSOA =:CODPESSOA

NOME DO DATASERVER CRMAtendenteData

ATIVIDADES LER REGISTRO CÓDIGO DO ATENDENTE Activity=RMSWorkflow, Path=Fields["CODATENDENTE"].AsInteger

COLIGADA Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsShort

EXPRESSÕES 0
EXPRESSÃO Activity=rmsReadRecordActivity1,
VALOR CALCULADO Path=Tables["HATENDENTE"].Item["ATIVO"].AsBoolean

SALVAR FONTE DE DADOS Activity=rmsReadRecordActivity1, Path=DataSet

REGISTRO NOME DO DATASERVER CRMAtendenteData

IMAGEM

Analista: Felipe David Evangelista Página 11 de 34


FÓRMULA
VISUAL
16. VALIDAÇÃO DO CAMPO CPF - CADASTRO DE FUNCIONÁRIOS

DESCRIÇÃO Fórmula Visual que valida se o CPF do funcionário já existe na Base de Dados.

GATILHO Cadastros >> Após da Atualização do Registro (Fim) >> Folha de Pagamento >> Funcionários

SELECT CPF FROM PPESSOA


CONSULTA SQL WHERE CPF =:CPF
AND CODIGO <>:CODIGO

ATIVIDADES
SE/SENAO CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.DataSet.Tables[0].Rows.Count > 0

GERAR
MENSAGEM DE ERRO CPF informado já existe na Base de Dados ! Favor informar outro CPF.
EXCEÇÃO

OBSERVAÇÃO

FÓRMULA
17. VALIDAÇÃO DO CAMPO PIS - CADASTRO DE FUNCIONÁRIOS
VISUAL
Fórmula Visual que valida o preenchimento do Campo PIS do Cadastro de Funcionários.
Caso o campo PIS estiver em branco, e o campo "Tipo de Admissão" for diferente de 'P' (1º Emprego), o Sistema
DESCRIÇÃO irá barrar a inclusão/alteração do registro.

Campo Verificado: PFUNC.PISPASEP e PFUNC.TIPOADMISSAO


GATILHO Cadastros >> Antes da Atualização do Registro (Fim) >> Folha de Pagamento >> Funcionários
this.Tables["PFUNC"]["PISPASEP"].IsNull &&
SE/SENAO CONDIÇÃO DECLARATIVA System.Convert.ToString(this.Tables["PFUNC"]
["TIPOADMISSAO"].Value).ToUpper() != "P"
ATIVIDADES
GERAR
MENSAGEM DE ERRO Campo PIS obrigatório, caso o Tipo de Admissão não seja '1º Emprego'.
EXCEÇÃO

OBSERVAÇÃO

Analista: Felipe David Evangelista Página 12 de 34


FÓRMULA
18. VALIDA PERFIL DE USUÁRIO LOGADO
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar a inclusão e alteração no cadastro de produtos com
DESCRIÇÃO
base no Perfil do Usuário logado.

GATILHO Cadastro >> Antes de Salvar o Registro >> Estoque >> Produtos
IF
(
SELECT COUNT(*)
FROM GUSRPERFIL (NOLOCK) Activity=RMSWorkflow, Path=Context.CodColigada
WHERE GUSRPERFIL.CODUSUARIO
=:FRM_USUARIO AND

GUSRPERFIL.CODCOLIGADA
=:FRM_COLCOR AND
CONSULTA SQL
GUSRPERFIL.CODSISTEMA = 'T' AND
Activity=RMSWorkflow, Path=Context.CodUsuario
ATIVIDADES GUSRPERFIL.CODPERFIL =
'IMPLANTACAO'
) > 0
BEGIN SELECT 1 AS RESULTADO
END
ELSE SELECT 0 AS RESULTADO

SE/SENAO CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.Fields["RESULTADO"].AsInteger == 1

Este Usuário está associado a um Perfil de Usuário que não permite


GERAR
MENSAGEM DE ERRO inclusões/alterações no cadastro de Produtos. Favor contatar o
EXCEÇÃO Administrador do Sistema.

OBSERVAÇÃO É necessário informar o Perfil a ser validado dentro da Consulta SQL.


Dentro da Condição Declarativa, ou da Consulta SQL pode-se incluir demais validações que se fizerem
OBSERVAÇÃO 2
necessárias.

FÓRMULA
19. VALIDA APROPRIAÇÃO DE ATENDIMENTO
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar a Apropriação de Novos Atendimentos com base na
DESCRIÇÃO
quantidade de atendimentos pendentes para o Atendente associado ao Usuário logado.

GATILHO Processo >> Antes da Execução >> Apropriar-se de um atendimento em uma fila
SELECT COUNT (H.CODATENDIMENTO) AS CONTADOR
FROM HATENDIMENTOBASE H (NOLOCK)
INNER JOIN HATENDENTE HA
(NOLOCK)
ON HA.CODCOLIGADA =
CONSULTA SQL H.CODCOLIGADARESP
AND HA.CODATENDENTE =
Activity=RMSWorkflow, Path=Context.CodUsuario
H.CODATENDENTERESP

WHERE HA.CODUSUARIO =:CODUSUARIO


ATIVIDADES AND H.CODSTATUS IN ('A')

SE/SENAO CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.Fields["CONTADOR"].AsInteger > 4

Você já possui mais de 5 atendimentos PENDENTES. Favor atuar


GERAR
MENSAGEM DE ERRO sobre os atendimentos sob sua responsabilidade antes de apropriar
EXCEÇÃO de mais atendimentos.

OBSERVAÇÃO A consulta SQL está considerando apenas o Status “Pendente” (A).

Analista: Felipe David Evangelista Página 13 de 34


Dentro da Condição Declarativa, ou da Consulta SQL pode-se incluir demais validações que se fizerem
OBSERVAÇÃO 2
necessárias.

FÓRMULA
20. VALIDA INCLUSÃO DE REQUISIÇÕES DO VITAE FORA DO PRAZO
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar a inclusão de Requisições de Treinamento (RM Vitae)
DESCRIÇÃO
para que sejam inclusas considerando um Prazo de 7 dias corridos para a Data Prevista.

GATILHO Cadastros >> Antes de Salvar o Registro >> RhuReqTreinamentoData

this.Tables["VTREINAMENTOCOMPL"]["TIPOTRE"].AsString == "01" &&


SE/SENAO CONDIÇÃO DECLARATIVA this.Tables["VREQTREINAMENTO"]["DATAPREVISTA"].AsDateTime <=
System.DateTime.Today.AddDays(7)

ATIVIDADES
GERAR
MENSAGEM DE ERRO IMPRIME MENSAGEM DA ATIVIDADE EXPRESSÃO
EXCEÇÃO
'Prezado usuário, a solicitação de
treinamento do tipo "Promoção" somente
poderá ser registrada com antecedência de 7
EXPRESSÃO EXPRESSÕES dias corridos. Nesse caso somente no dia '+
String(DateTime(Today+7)) +'. Favor alterar
o prazo para que seja possível gravar a
requisição.'

VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

É necessária a criação do campo complementar TIPOTRE, caso utilize a parte de validação de classificação da
OBSERVAÇÃO
requisição.
Dentro da Condição Declarativa, ou da Consulta SQL pode-se incluir demais validações que se fizerem
OBSERVAÇÃO 2
necessárias.

Analista: Felipe David Evangelista Página 14 de 34


FÓRMULA
21. VALIDAR SE O CANDIDATO ESTÁ SENDO INSCRITO EM UM CURSO MAIS DE 2 VEZES
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar se o candidato está sendo inscrito em um curso mais
DESCRIÇÃO
de 2 (duas) vezes.

GATILHO Cadastros >> Antes da Atualizações do Registro (Fim) >> RhuParticipantesData


SELECT COUNT(CODPESSOA) AS QTDEPARTICIPOU,
VTURMA.CODPESSOA,
VTURMAS.CODCURSO
FROM VTURMAS
INNER JOIN VTURMA (NOLOCK) ON
VTURMAS.CODTURMA = VTURMA.CODTURMA

Activity=RMSWorkflow,
CONSULTA SQL AND
VTURMAS.CODCOLIGADA = VTURMA.CODCOLIGADA Path=Tables["VTURMA"].Item["CODPESSOA"].AsInteger
WHERE
VTURMA.CODPESSOA=:CODPESSOA
AND VTURMAS.CODCURSO='1000015'
AND VTURMA.DTDESISTENCIA IS NULL
GROUP BY VTURMA.CODPESSOA,
VTURMAS.CODCURSO, VTURMA.DTDESISTENCIA
HAVING COUNT(CODPESSOA)>=2

SELECT DISTINCT VTURMAS.CODCURSO


FROM VTURMAS
INNER JOIN VTURMA (NOLOCK) ON Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsShort
VTURMAS.CODTURMA = VTURMA.CODTURMA

CONSULTA SQL AND


VTURMAS.CODCOLIGADA =
VTURMA.CODCOLIGADA
WHERE Activity=RMSWorkflow,
VTURMA.CODTURMA=:CODTURMA Path=Tables["VTURMA"].Item["CODTURMA"].AsString
ATIVIDADES AND VTURMA.CODCOLIGADA=:CODCOLIGADA

SELECT COUNT(CODUSUARIO) AS USU


FROM GUSRPERFIL (NOLOCK)
CONSULTA SQL WHERE CODPERFIL = 'AUT_TREINAMENTO' Activity=RMSWorkflow, Path=Context.CodUsuario
AND GUSRPERFIL.CODUSUARIO
=:CODUSUARIO

this.rmsConsSQLActivity1.Fields["CODCURSO"].AsString == "1000015" &&


this.Tables["VTURMA"]["DTDESISTENCIA"].IsNull && this.Tables["VTURMA"]
["CODPESSOA"].AsInteger ==
SE/SENAO CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.Fields["CODPESSOA"].AsInteger &&
(this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added ||
this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Modified)

'Prezado usuário, o colaborador selecionado excedeu o limite de reciclagem


EXPRESSÕES aceito pela empresa. Favor procurar a coordenação do treinamento.
Requisição não será gravada.'
EXPRESSÃO
VALOR CALCULADO Activity=rmsThrowActivity1, Path=Message

GERAR
MENSAGEM DE ERRO IMPRIME MENSAGEM DA ATIVIDADE EXPRESSÃO
EXCEÇÃO
Dentro da Condição Declarativa, ou da Consulta SQL pode-se incluir demais validações que se fizerem
OBSERVAÇÃO 1
necessárias.

Analista: Felipe David Evangelista Página 15 de 34


FÓRMULA
22. TRATAR EXCEÇÃO ENVIANDO EMAIL
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo enviar um email para um endereço eletrônico fixo quando o
DESCRIÇÃO processo de envio de email da Fórmula Visual não encontrar o destinatário, dentro do processo de inclusão de
Requisição de Transferência do RM Vitae.
GATILHO Cadastros >> Antes da Atualizações do Registro (Fim) >> RhuReqTransferenciaData

ASSUNTO Indicar o assunto do email que é enviado em condições normais.

DESTINATÁRIO Indicar o email dos usuários que devem receber o email da rotina.
ENVIO DE
EMAIL
REMETENTE Company

ATIVIDADES TEXTO DO EMAIL Texto do email que sempre é enviado pelo sistema

Acessar FAULT HANDLERS

Associar uma Atividade


SEQUÊNCIA FAULTTYPE System.Exception
TRATAR EXCEÇÃO
Informar os campos da atividade para que um email válido seja avisado
Associar uma Atividade ENVIO DE EMAIL sobre a exceção.

Dentro da Condição Declarativa, ou da Consulta SQL pode-se incluir demais validações que se fizerem
OBSERVAÇÃO 1
necessárias.
A primeira atividade ENVIO DE EMAIL será inclusa dentro da atividade SEQUENCIA, antes de acessar a
OBSERVAÇÃO 2 configuração do “Fault Handlers”. A configuração do “Fault Handlers” é realizada clicando com o botão direito
sobre a atividade que irá tratar a Exceção.
A atividade SEQUENCIA permite encapsular a exceção que será tratada. Neste caso apenas um erro no envio de
OBSERVAÇÃO 3 email da primeira atividade ENVIO DE EMAIL será tratada, enviando um outro email, porém para um endereço
válido.

Analista: Felipe David Evangelista Página 16 de 34


FÓRMULA
23. VALIDAR SE O CANDIDATO ESTÁ SENDO INSCRITO EM UM CURSO MAIS DE 2 VEZES
VISUAL
Esta Fórmula Visual (Workflow) tem como objetivo validar se existe vaga para a Função e Seção, baseado no
DESCRIÇÃO
Quadro de Lotação (RM Vitae | Menu Cadastros | Cargos/Funções | Funções | Anexos: Quadro de Lotação).

GATILHO Cadastros >> Antes da Atualizações do Registro (Fim) >> RhuReqTransferenciaData


DECLARE @CODIGOSECAO VARCHAR(50),@CODIGOCHAPA VARCHAR(100)

ATIVIDADES CONSULTA SQL Activity=RMSWorkflow,


SET @CODIGOSECAO =:CODSECAO
SET @CODIGOCHAPA =:CHAPA

SELECT SUM (TAB.POTENCIAL) AS POTENCIAL


FROM
(

Path=Tables["VREQTRANSFERENCIA"].Item["CHAPA"].AsString
SELECT
SUM(NUMVAGAS) AS POTENCIAL
FROM
VREQAUMENTOQUADRO (NOLOCK)
WHERE
VREQAUMENTOQUADRO.CODSTATUS IN ('1','3','5','7')

AND VREQAUMENTOQUADRO.DATACANCELAMENTO IS NULL

AND VREQAUMENTOQUADRO.CODSECAO =@CODIGOSECAO

Analista: Felipe David Evangelista Página 17 de 34


AND VREQAUMENTOQUADRO.CODFUNCAO IN ( SELECT CODFUNCAO

FROM PFUNC (NOLOCK)

WHERE PFUNC.CHAPA =@CODIGOCHAPA

UNION ALL

SELECT
COUNT(*) AS POTENCIAL
FROM
VREQSUBSTITUICAO (NOLOCK)
WHERE
VREQSUBSTITUICAO.CODSTATUS IN ('1','3','5','7')

AND VREQSUBSTITUICAO.CODSECAO =@CODIGOSECAO

AND VREQSUBSTITUICAO.CODFUNCAO IN ( SELECT CODFUNCAO

FROM PFUNC (NOLOCK)

WHERE PFUNC.CHAPA =@CODIGOCHAPA

UNION ALL

SELECT COUNT(*) AS POTENCIAL


FROM PFUNC (NOLOCK)
WHERE

Activity=RMSWorkflow,
CODSITUACAO
<> 'D'
AND CODTIPO
<> 'A'
AND
PFUNC.CODSECAO =@CODIGOSECAO
AND

Path=Tables["VREQTRANSFERENCIA"].Item["CODSECAO"].AsString
PFUNC.CODFUNCAO IN ( SELECT CODFUNCAO

FROM PFUNC
(NOLOCK)

WHERE PFUNC.CHAPA
=@CODIGOCHAPA

UNION ALL

SELECT (
(SELECT VLOTACAO.LIMITEVAGAS AS LIMITEVAGAS
FROM VLOTACAO (NOLOCK)
WHERE

VLOTACAO.CODSECAO =@CODIGOSECAO
AND
VLOTACAO.CODFUNCAO IN ( SELECT CODFUNCAO

FROM
PFUNC (NOLOCK)

WHERE
PFUNC.CHAPA =@CODIGOCHAPA

)
) -
(SELECT COUNT(*) AS ALOCADOS
FROM PFUNC (NOLOCK)
WHERE
CODSITUACAO
<> 'D'
AND CODTIPO
<> 'A'
AND
PFUNC.CODSECAO =@CODIGOSECAO
AND
PFUNC.CODFUNCAO IN ( SELECT CODFUNCAO

FROM PFUNC
(NOLOCK)

WHERE PFUNC.CHAPA
=@CODIGOCHAPA

Analista: Felipe David Evangelista Página 18 de 34


this.rmsConsSQLActivity1.Fields["POTENCIAL"].AsInteger < 1 &&
SE/SENAO CONDIÇÃO DECLARATIVA (this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added ||
this.Tables[0].Rows[0].RowState == System.Data.DataRowState.Modified)
SELECT PPESSOA.NOME,PPESSOA.EMAIL
FROM PFUNC (NOLOCK) Activity=RMSWorkflow,
CONSULTA SQL INNER JOIN PPESSOA
(NOLOCK) ON PFUNC.CODPESSOA = PPESSOA.CODIGO Path=Tables["VREQTRANSFERENCIA"].Item["CHAPA"].AsString
WHERE PFUNC.CHAPA =:CHAPA
DECLARE @CODIGOSECAO VARCHAR(50)
SET @CODIGOSECAO =:CODSECAO

IF
@CODIGOSECAO LIKE '____.300' /* SECAO DE
LOJAS - SUPERVISORES */

(SELECT TOP 1
PPESSOA.EMAIL,PFUNC.CHAPA
FROM PFUNC (NOLOCK)

INNER JOIN PPESSOA (NOLOCK) ON PFUNC.CODPESSOA = PPESSOA.CODIGO

INNER JOIN PSUBSTSUP (NOLOCK) ON PSUBSTSUP.CODCOLIGADA =


Activity=RMSWorkflow,
CONSULTA SQL
PFUNC.CODCOLIGADA AND PSUBSTSUP.CHAPASUBST = PFUNC.CHAPA
WHERE PSUBSTSUP.CODSECAO =
@CODIGOSECAO)
Path=Tables["VREQTRANSFERENCIA"].Item["CODSECAO"].AsString
ELSE

(SELECT TOP 1
PPESSOA.EMAIL,PFUNC.CHAPA
FROM PFUNC (NOLOCK)

INNER JOIN PPESSOA (NOLOCK) ON PFUNC.CODPESSOA = PPESSOA.CODIGO

INNER JOIN PSUBSTCHEFE (NOLOCK) ON PSUBSTCHEFE.CODCOLSUBST =


PFUNC.CODCOLIGADA AND PSUBSTCHEFE.CHAPASUBST = PFUNC.CHAPA
WHERE PSUBSTCHEFE.CODSECAO =
@CODIGOSECAO)
'Prezado responsável,'+
NewLine+
NewLine+
'Foi realizada uma tentativa de transferência do colaborador '+
rmsConsSQLActivity2.NOME + ' para a sua área, porém devido a falta de vaga essa requisição não foi concluída.'+

EXPRESSÕES
NewLine+
'Pedimos a gentileza de incluir uma requisição de Aumento de Quadro para que seja possível realizar tal demanda.' +
NewLine+
NewLine+

EXPRESSÃO 'E-mail automático do sistema TOTVS Gestão de Pessoas.'+


NewLine+
'Favor não responder este e-mail.'+
NewLine

VALOR CALCULADO Activity=rmsSendEmailActivity1, Path=Body

GERAR
MENSAGEM DE ERRO IMPRIME MENSAGEM DA ATIVIDADE EXPRESSÃO
EXCEÇÃO
ASSUNTO Indicar o assunto do email que é enviado em condições normais.
ENVIO DE DESTINATÁRIO Indicar o email dos usuários que devem receber o email da rotina.
EMAIL REMETENTE Company
TEXTO DO EMAIL Texto do email que sempre é enviado pelo sistema
Dentro da Condição Declarativa, ou da Consulta SQL pode-se incluir demais validações que se fizerem
OBSERVAÇÃO 1
necessárias.
24.
FÓRMULA
VISUAL VALIDAR INCLUSÃO E EXCLUSÃO DE RESPONSÁVEL FINANCEIRO NO EDUCACIONAL
Workflow que tem por objetivo Validar a inclusão/alteração do Responsável Financeiro do cadastro de Contrato
do Aluno ( Menu Tesouraria | Contratos | Pasta Responsável Financeiro ).
DESCRIÇÃO
O sistema irá exibir mensagem no caso de serem localizados lançamentos financeiros que possuam Data de
Vencimento menor que a Data Atual do sistema, e o Status seja igual a "Em aberto".
GATILHO Cadastros >> Antes de Salvar o Registro >> EduContratoData
ATIVIDADES PARA
CADA LISTA DE Activity=RMSWorkflow, Path=Tables["SResponsavelContrato"].Rows
ITERAÇÃO ITENS
DECLARE @PERFIL VARCHAR(40)

Atividade: Atividade: SET


@PERFIL =
'MATINADIMPLENTE' /* INFORME AQUI O PERFIL QUE TEM
PERMISSÃO PARA INCLUIR RESPONSÁVEL FINANCEIRO

SEQUÊNCIA CONSULTA Activity=rmsForEachActivity1, Path=Fields["CODCFO"].AsString


INADIMPLENTE NO CONTRATO */

IF
(

SQL
SELECT
COUNT(*)
FROM
GUSRPERFIL (NOLOCK)
WHERE

Activity=RMSWorkflow, Path=Context.CodColigada
GUSRPERFIL.CODUSUARIO
=:USUARIO AND

Analista: Felipe David Evangelista Página 19 de 34


Activity=rmsForEachActivity1, Path=Fields["CODCOLIGADA"].AsString

Activity=RMSWorkflow, Path=Context.CodUsuario
GUSRPERFIL.CODCOLIGADA
=:CODCOL AND

GUSRPERFIL.CODSISTEMA =
'S' AND

GUSRPERFIL.CODPERFIL =
@PERFIL
) > 0
BEGIN SELECT 0 AS CONTADOR
END
ELSE

SELECT
Activity=rmsForEachActivity1, Path=Fields["CODCFO"].AsString
Atividade: CODCFO,NOMEFANTASIA
FROM FCFO (NOLOCK)
CONSULTA WHERE
=:CODCFO AND
CODCFO

SQL Activity=rmsForEachActivity1, Path=Fields["CODCOLIGADA"].AsString


CODCOLIGADA
=:CODCOLIGADA

(this.rmsForEachActivity1.Fields.IsDeleted ||
CONDIÇÃO this.rmsForEachActivity1.Fields["CODCFO"].IsModified) &&
DECLARATIVA this.rmsConsSQLActivity1.Fields["CONTADOR"].AsInteger != 0
NewLine +
'Responsável Financeiro com Pendência Financeira.' +
NewLine +

EXPRESSÕES
'Exclusão/Inclusão de Responsável Financeiro não permitida. Favor acionar o Setor Financeiro, para que a Pendência Financeira seja analisada, e o registro atual possa
ser gravado.' +
NewLine +

Atividade:
NewLine +
'Atenção ao Responsável Financeiro com restrição: ' + rmsConsSQLActivity2.CODCFO + ' - ' + rmsConsSQLActivity2.NOMEFANTASIA +
NewLine +
NewLine

EXPRESSÃO VALOR
Atividade: Activity=rmsThrowActivity1, Path=Message
CALCULADO
SE/SENAO

Atividade:
MENSAGEM 'teste' + Activity=rmsForEachActivity1,
GERAR Path=Fields["CODCFO"].AsString
DE ERRO
EXCEÇÃO

Deve-se cadastrar um PERFIL sob código ‘MATINADIMPLENTE’, e associar ao cadastro do usuário que tenha
OBSERVAÇÃO 1
permissão para associar Responsável Financeiro inadimplente ao Contrato.

Analista: Felipe David Evangelista Página 20 de 34


FÓRMULA
VISUAL 25. PREENCHIMENTO DE CAMPO COMPLEMENTAR AUTOMATICAMENTE
Workflow que tem por objetivo ( Menu Cadastros | Clientes/Fornecedores | Pasta Campos Complementares ).
DESCRIÇÃO O sistema irá localizar o CNPJ informado na tabela FCFO, e caso exista irá preencher o campo NOME
automaticamente, com o valor do campo NOME FANTASIA do registro localizado.
GATILHO Cadastros >> Antes da Atualização do Registro (Início)>> FinCFODataBR

Atividade:
DECLARE @CNPJ VARCHAR(20)
SET @CNPJ = REPLACE(
REPLACE( REPLACE(:CODCNPJ, '.', ''), '/', ''), '-', '' )

Activity=RMSWorkflow,
CONSULTA SELECT TOP 1 REPLACE( REPLACE( REPLACE(CGCCFO,
'.', ''), '/', ''), '-', '' ) AS CODCNPJ,
NOMEFANTASIA Path=Tables["FCFOCOMPL"].Item["CODCNPJ"].AsString
SQL
FROM FCFO (NOLOCK)
WHERE REPLACE( REPLACE( REPLACE(CGCCFO, '.',
''), '/', ''), '-', '' ) = @CNPJ

CONDIÇÃO this.rmsConsSQLActivity1.Fields["NOMEFANTASIA"].IsNull &&


DECLARATIVA this.Tables["FCFOCOMPL"]["CODCNPJ"].AsString != ""

Iteração 1
EXPRESSÕES '*** EMPRESA NÃO LOCALIZADA ***'
Atividade:
Activity=RMSWorkflow,
EXPRESSÃO VALOR
Path=Tables["FCFOCOMPL"].Item["NOMECFO"]
CALCULADO .AsString

ATIVIDADES CONDIÇÃO !this.rmsConsSQLActivity1.Fields["NOMEFANTASIA"].IsNull && !


DECLARATIVA this.Tables["FCFOCOMPL"]["CODCNPJ"].IsNull

Iteração 2
EXPRESSÕES rmsConsSQLActivity1.NOMEFANTASIA
Atividade: Atividade: Activity=RMSWorkflow,
SE/SENÃO EXPRESSÃO VALOR Path=Tables["FCFOCOMPL"].Item["NOMECFO"]
CALCULADO .AsString

CONDIÇÃO Nenhum
DECLARATIVA

Iteração 3 EXPRESSÕES ''

Atividade:
EXPRESSÃO
Activity=RMSWorkflow,
VALOR
Path=Tables["FCFOCOMPL"].Item["NOMECFO"]
CALCULADO .AsString

OBSERVAÇÃO 1 É necessário que seja criados os campos complementares (Cliente/Fornecedor): CODCNPJ e NOMECFO

Analista: Felipe David Evangelista Página 21 de 34


FÓRMULA
VISUAL 26. VALIDAR DUPLICIDADE EM INCLUSÃO DE OCORRÊNCIAS PARA ALUNO

DESCRIÇÃO Workflow que tem por objetivo validar ocorrências semelhantes em um período menor que 90 dias.

GATILHO Cadastros >> Antes da Atualização do Registro (Fim) >> EduOcorrenciaAlunoData


DECLARE @DATAOCORRENCIA DATETIME;
SET @DATAOCORRENCIA =:DTOCORRENCIA;
Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsShort
SELECT COUNT(*) AS TOTAL

Atividade: FROM
WHERE
SOCORRENCIAALUNO (NOLOCK)
SOCORRENCIAALUNO.RA Activity=RMSWorkflow,
Path=Fields["CODOCORRENCIAGRUPO"].AsShort
=:RA

CONSULTA
AND SOCORRENCIAALUNO.CODCOLIGADA
=:CODCOLIGADA
AND SOCORRENCIAALUNO.CODOCORRENCIAGRUPO =:CODOCORRENCIAGRUPO
AND SOCORRENCIAALUNO.CODOCORRENCIATIPO =:CODOCORRENCIATIPO Activity=RMSWorkflow, Path=Fields["CODOCORRENCIATIPO"].AsInteger
SQL 102 ))
AND CONVERT( DATETIME, CONVERT ( VARCHAR(10), SOCORRENCIAALUNO.DATAOCORRENCIA,

BETWEEN CONVERT( DATETIME, CONVERT


( VARCHAR(10), @DATAOCORRENCIA-90, 102 ))
Activity=RMSWorkflow, Path=Fields["RA"].AsString
ATIVIDADES
AND
CONVERT( DATETIME, CONVERT ( VARCHAR(10), @DATAOCORRENCIA+90, 102 ))

CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.Fields["TOTAL"].AsInteger > 0


Atividade: Atividade:
SE/SENÃO GERAR Mensagem de Erro
Não é permitida a inclusão de ocorrência duplicada de Cobrança de Documentação em
período inferior a 3 meses.
EXCEÇÃO

27.
FÓRMULA
VISUAL MOSTRAR CAMPO COMPLEMENTAR NA VISÃO DE ALUNOS
Workflow que tem por objetivo disponibilizar na visão do cadastro de Alunos uma Coluna com Campo
DESCRIÇÃO
Complementar criado pelo usuário.
GATILHO Cadastros >> Após Leitura da Visão >> EduAlunoData

SELECT SALUNOCOMPL.PIS
FROM SALUNO (NOLOCK),
SALUNOCOMPL
Atividade: (NOLOCK)
WHERE SALUNO.CODCOLIGADA = Activity=rmsForEachActivity1,
CONSULTA SALUNOCOMPL.CODCOLIGADA AND
Path=Fields["RA"].AsString
SQL SALUNO.RA = SALUNOCOMPL.RA
Atividade: Atividade: =:RACADEMICO
AND SALUNO.RA

PARA SEQUENCIA AND


ATIVIDADES SALUNO.CODCOLIGADA =1
CADA
ITERAÇÃO
Expressões rmsConsSQLActivity1.PIS
Atividade:
EXPRESSÃO Activity=rmsForEachActivity1,
Valor Calculado
Path=Fields["PIS"].AsString
Lista de Itens Activity=RMSWorkflow, Path=Tables[0].Rows

Analista: Felipe David Evangelista Página 22 de 34


28.
FÓRMULA
VISUAL ENVIAR EMAIL PARA ALUNO COM 3 OCORRÊNCIAS
Workflow que tem por objetivo enviar email para aluno que possuir ocorrências semelhantes em um período
DESCRIÇÃO
menor que 90 dias.
GATILHO Cadastros >> Após Salvar o Registro >> EduOcorrenciaAlunoData
DECLARE @DATAREFERENCIA DATETIME;
SET @DATAREFERENCIA = GETDATE();
Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsShort
SELECT COUNT(*) AS TOTAL

Atividade: FROM
WHERE
SOCORRENCIAALUNO (NOLOCK)
SOCORRENCIAALUNO.RA
Activity=RMSWorkflow,
=:RA
CONSULTA =:CODCOLIGADA
AND SOCORRENCIAALUNO.CODCOLIGADA
Path=Fields["CODOCORRENCIAGRUPO"].AsShort
SQL =:CODOCORRENCIAGRUPO
AND SOCORRENCIAALUNO.CODOCORRENCIAGRUPO

AND CONVERT( DATETIME, CONVERT ( VARCHAR(10),


SOCORRENCIAALUNO.DATAOCORRENCIA, 102 )) > Activity=RMSWorkflow, Path=Fields["RA"].AsString
CONVERT( DATETIME, CONVERT ( VARCHAR(10),
@DATAREFERENCIA-90, 102 ))

this.rmsConsSQLActivity1.Fields["TOTAL"].AsInteger > 1 &&


CONDIÇÃO DECLARATIVA this.DataSet.Tables[0].Rows[0].RowState ==
System.Data.DataRowState.Added

Atividade: SELECT

PPESSOA.EMAIL,PPESSOA.NOME

CONSULTA
FROM SALUNO (NOLOCK),

PPESSOA (NOLOCK)
Activity=RMSWorkflow, Path=Fields["RA"].AsString
WHERE

SQL SALUNO.CODPESSOA = PPESSOA.CODIGO

ATIVIDADES
AND SALUNO.RA
=:REGISTROACADEMICO

Atividade: Assunto [Informe Acadêmico] Ocorrências por Aluno


ENVIO DE
Atividade: EMAIL Destinatários Activity=rmsConsSQLActivity2, Path=Fields["EMAIL"].AsStringArray
SE/SENÃO 'Prezado Aluno "' + rmsConsSQLActivity2.NOME + '",' +
NewLine+
NewLine+

'Foi registrada uma nova ocorrência em seu Registro Acadêmico, totalizando 3 (três) ocorrências em um período de 3 (três) meses.'+
NewLine+
NewLine+

Atividade: Expressões 'Solicitamos que entre em contato com a Secretaria para maiores esclarecimentos.'+
NewLine+

EXPRESSÃO NewLine+
NewLine+
'Setor de Registro Acadêmico do Colégio TOTVS'+
'Favor não responder este email.'
NewLine+
NewLine

Valor Activity=rmsSendEmailActivity1, Path=Body


Calculado
OBSERVAÇÃO 1

Analista: Felipe David Evangelista Página 23 de 34


FÓRMULA
VISUAL 29. GRAVAR INFORMAÇÃO DO PRODUTO NO HISTÓRICO DO ITEM DE MOVIMENTO
Workflow que tem por objetivo gravar informações do Anexo "Cliente/Fornecedor" do cadastro do Produto no
DESCRIÇÃO
campo Histórico do Item de Movimento, ao salvar o movimento.
GATILHO Cadastros >> Antes da Atualização do Registro (Início) >> MovMovimentoAction

LISTA DE ITENS Activity=RMSWorkflow, Path=Tables["TITMMOV"].Rows

SELECT TPRDCFO.CODNOFORN,
TPRDCFO.CODCFO,
TPRD.CODIGOPRD, Activity=RMSWorkflow, Path=Tables["TMOV"].Item["CODCFO"].AsString
TPRDCFO.CAMPOLIVRE
FROM TPRDCFO (NOLOCK)

CONSULTA INNER JOIN TPRD (NOLOCK)


ON TPRDCFO.CODCOLIGADA = TPRD.CODCOLIGADA
Activity=rmsForEachActivity1, Path=Fields["CODCOLIGADA"].AsShort
AND TPRDCFO.IDPRD =
SQL TPRD.IDPRD
PARA WHERE TPRDCFO.IDPRD =:ID_ITEM
AND TPRD.CODCOLIGADA
ATIVIDADES CADA =:COLIGADA
AND TPRDCFO.CODCFO Activity=rmsForEachActivity1, Path=Fields["IDPRD"].AsInteger
ITERAÇÃO =:CLIFOR

'Histórico Anterior: ' +


rmsForEachActivity1.HISTORICOCURTO +
NewLine +
NewLine +
'CODNOFORN: ' +
EXPRESSÕES rmsConsSQLActivity1.CODNOFORN +
EXPRESSÃO NewLine +
'CAMPO LIVRE: ' +
rmsConsSQLActivity1.CAMPOLIVRE

Activity=rmsForEachActivity1,
VALOR CALCULADO Path=Fields["HISTORICOCURTO"].AsString

IMAGEM

OBSERVAÇÃO 1 O campo “Histórico Curto” deve estar habilitado/parametrizado no item de movimento.

Analista: Felipe David Evangelista Página 24 de 34


FÓRMULA
VISUAL 30. VALIDAR PREENCHIMENTO DE NOME DE FUNCIONÁRIO COM ACENTO
Fórmula Visual que tem por objetivo impedir que sejam cadastrados funcionários com nomes acentuados, ou
DESCRIÇÃO
com “ç”.
GATILHO Cadastros >> Antes de Salvar o Registro >> FopFuncAction

new System.Text.RegularExpressions.Regex("[Á-úÂ-ûÃ-õÇ-
CONDIÇÃO DECLARATIVA ç]").IsMatch(this.Tables["PFUNC"]["NOME"].AsString)
Atividade:
ATIVIDADES
SE/SENÃO GERAR Mensagem de
Não é permitido utilizar acento no campo NOME do Funcionário.
EXCEÇÃO Erro
OBSERVAÇÃO 1

FÓRMULA
VISUAL 31. VALIDAR INFORMAÇÃO ORIGINAL DO CAMPO DESCRIÇÃO DA SEÇÃO

DESCRIÇÃO Fórmula Visual que tem por objetivo validar a informação original do campo Descrição do cadastro de Seção.

GATILHO Cadastros >> Antes de Salvar o Registro >> FopSecaoAction

this.Tables[“PSECAO”][“DESCRICAO”].
CONDIÇÃO DECLARATIVA OriginalValue.ToString().ToLower().Contains("rm sistemas")
Atividade:
ATIVIDADES
SE/SENÃO GERAR Mensagem de Cadastro INATIVO. Não é permitido alterações em Seções RM SISTEMAS.
EXCEÇÃO Erro
OBSERVAÇÃO 1

FÓRMULA
VISUAL 32. VALIDAR INFORMAÇÃO DO CAMPO DESCRIÇÃO DA SEÇÃO

DESCRIÇÃO Fórmula Visual que tem por objetivo validar a informação do campo Descrição do cadastro de Seção.

GATILHO Cadastros >> Antes de Salvar o Registro >> FopSecaoAction

this.Tables["PSECAO"]["DESCRICAO"].AsString.ToLower().Contains("rm
CONDIÇÃO DECLARATIVA sistemas")
Atividade:
ATIVIDADES
SE/SENÃO GERAR Mensagem de
Não é permitido utilizar Seções RM SISTEMAS.
EXCEÇÃO Erro
OBSERVAÇÃO 1

Analista: Felipe David Evangelista Página 25 de 34


FÓRMULA
VISUAL 33. ENVIAR EMAIL PELO VIA PROCESSO DO CADASTRO DE FUNCIONÁRIO

DESCRIÇÃO Enviar Email via Processo do Cadastro de Funcionários.

GATILHO Processos de Fórmula Visual >> FopFuncAction >> Tipo de Ligação: Visão com registros selecionados

LISTA DE ITENS Activity=RMSWorkflow, Path=Tables[0].Rows

EXPRESSÕES rmsForEachActivity1.CHAPA
PARA EXPRESSÃO
VALOR
Activity=rmsSendEmailActivity1, Path=Body
ATIVIDADES CADA CALCULADO
ITERAÇÃO SEQUÊNCIA ASSUNTO [TOTVS] Teste envio de email

DESTINATÁRIOS david@totvs.com.br
ENVIO DE EMAIL
REMETENTE GlobalCompany

TEXTO DO EMAIL Será preenchido pela atividade Expressão

IMAGEM

OBSERVAÇÃO 1

Analista: Felipe David Evangelista Página 26 de 34


FÓRMULA
VISUAL 34. VALIDAR PREENCHIMENTO DE CENTRO DE CUSTO (CAMPO COMPLEMENTAR) POR INSUMO
Fórmula Visual que tem por objetivo impedir que seja informado um Centro de Custo inválido na Pasta Campos
DESCRIÇÃO
Complementares do Cadastro de Insumos.
GATILHO Cadastros >> Antes de Salvar Registro >> PrjIsmData
/*
Cliente:
Utilização: Integração com Fórmula Visual para validação de inclusão de Rateio de Centro de Custo por Atividade e Inclusão de Insumos
Módulo: TOTVS Obras e Projetos
Autor: Felipe David Evangelista
Data Criação: 06/06/2013
Data Alteração: 07/06/2013
*/
DECLARE @FILIALRM VARCHAR(10), @CENTROCUSTORM VARCHAR(50)
SET @FILIALRM = ( SELECT IDINTEGRACAO
FROM MPRJ (NOLOCK)
INNER JOIN GFILIAL (NOLOCK) ON MPRJ.CODCOLIGADA = GFILIAL.CODCOLIGADA AND MPRJ.CODFILIAL = GFILIAL.CODFILIAL
WHERE MPRJ.IDPRJ =:ID_PROJETO
AND MPRJ.CODCOLIGADA =:COLIGADA
)
SET @CENTROCUSTORM = ( SELECT CODREDUZIDO
FROM GCCUSTO (NOLOCK)
WHERE GCCUSTO.CODCCUSTO =:CODCUSTO
)
SELECT COUNT(*) CONTADOR
FROM VW_CTT020 (NOLOCK)
WHERE VW_CTT020.CTT_FILIAL = @FILIALRM
AND VW_CTT020.CTT_CUSTO = @CENTROCUSTORM
AND VW_CTT020.CTT_BLOQ = 2
  
/*
Legenda

CONSULTA
CTT_BLOQ = 1 (bloqueado)
CTT_BLOQ = 2 (desbloqueado)
 
Ponto de Atencao

SQL
Eh necessario a criacao da VIEW 'VW_CTT020' no banco de dados CorporeRM,
visto o não funcionamento de consultas com relacionamento entre tabelas
utilizando o recurso 'Banco de dados externo', e Linked Server.
*/

Activity=RMSWorkflow, Path=Tables["MISMCOMPL"].Item["CC"].AsString

Activity=RMSWorkflow, Path=Tables["MIsm"].Item["CODCOLIGADA"].AsShort

Activity=RMSWorkflow, Path=Tables["MIsm"].Item["IDPRJ"].AsInteger

/*
Cliente:
Utilização: Integração com Fórmula Visual para validação de Inclusão de Insumos
Módulo: TOTVS Obras e Projetos
Autor: Felipe David Evangelista

ATIVIDADES Data Criação: 07/06/2013


Data Alteração: 07/06/2013

CONSULTA */

SQL SELECT MASCARACC FROM GCCUPAR (NOLOCK)


WHERE CODCOLIGADA =:COLIGADA

Activity=RMSWorkflow, Path=Tables["MIsm"].Item["CODCOLIGADA"].AsShort

(this.DataSet.Tables[0].Rows[0].RowState == System.Data.DataRowState.Added ||
this.DataSet.Tables[0].Rows[0].RowState == System.Data.DataRowState.Modified) &&
CONDIÇÃO DECLARATIVA this.rmsConsSQLActivity1.Fields["CONTADOR"].AsInteger < 1 && !this.Tables["MISMCOMPL"]["CC"].IsNull

'Centro de Custo informado nos Campos Complementares inválido.' +


NewLine +
NewLine +
' Possíveis causas: ' +
NewLine +
Expressão ' - Código informado fora da máscara (' + rmsConsSQLActivity2.MASCARACC + ');' +
Atividade: NewLine +

SE/SENÃO EXPRESSÃO ' - Centro de Custo não localizado na Base de Dados do Protheus, ou bloqueado;' +
NewLine +
NewLine

Activity=rmsThrowActivity1, Path=Message
Valor Calculado

GERAR Mensagem de
teste
EXCEÇÃO Erro

OBSERVAÇÃO 1 Deve existir o campo complementar MISMCOMPL.CC cadastrado na base de dados.

Analista: Felipe David Evangelista Página 27 de 34


FÓRMULA
VISUAL 35. VALIDAR TAMANHO DO CAMPO CODIGO DE PROJETO
Fórmula Visual que tem por objetivo validar o tamanho do campo Código do Projeto no TOTVS Obras e Projetos
DESCRIÇÃO
(RM Solum).
GATILHO Cadastros >> Antes de Salvar Registro >> PrjPrjData

CONDIÇÃO DECLARATIVA this.Tables["MPRJ"]["CODPRJ"].AsString.Length > 10


Atividade:
ATIVIDADES
SE/SENÃO GERAR Mensagem de
Tamanho do campo Código do Projeto deve ser no máximo 10 dígitos.
EXCEÇÃO Erro

OBSERVAÇÃO 1

Analista: Felipe David Evangelista Página 28 de 34


FÓRMULA
VISUAL 36. CANCELAR ATENDIMENTO RELACIONADO

Esta Fórmula Visual tem o objetivo de CANCELAR o atendimento PAI relacionado a um atendimento FILHO que tenha sido
DESCRIÇÃO
CANCELADO.

GATILHO Processos >> Após a Execução >> Avançar Etapa


SELECT HATENDIMENTOSRELACIONADOS.CODCOLIGADA,
HATENDIMENTOSRELACIONADOS.CODLOCAL,
HATENDIMENTOSRELACIONADOS.CODATENDIMENTO,
H2.CODSTATUS,
HATENDIMENTOSRELACIONADOS.CODCOLIGADAFILHO,
HATENDIMENTOSRELACIONADOS.CODLOCALFILHO,
HATENDIMENTOSRELACIONADOS.CODATENDIMENTOFILHO,
HATENDIMENTOBASE.CODSTATUS CODSTATUSFILHO

FROM HATENDIMENTOBASE

CONSULTA SQL INNER JOIN HATENDIMENTOSRELACIONADOS


ON HATENDIMENTOSRELACIONADOS.CODCOLIGADAFILHO
AND HATENDIMENTOSRELACIONADOS.CODLOCALFILHO
= HATENDIMENTOBASE.CODCOLIGADA
= HATENDIMENTOBASE.CODLOCAL
AND HATENDIMENTOSRELACIONADOS.CODATENDIMENTOFILHO = HATENDIMENTOBASE.CODATENDIMENTO

INNER JOIN HATENDIMENTOBASE H2


ON HATENDIMENTOSRELACIONADOS.CODCOLIGADA = H2.CODCOLIGADA
AND HATENDIMENTOSRELACIONADOS.CODLOCAL = H2.CODLOCAL
AND HATENDIMENTOSRELACIONADOS.CODATENDIMENTO = H2.CODATENDIMENTO

WHERE HATENDIMENTOBASE.CODSTATUS = 'C'


AND HATENDIMENTOBASE.CODTIPOATENDIMENTO = '8'
AND H2.CODSTATUS <> 'C'

LISTA DE
ATIVIDADES Activity=rmsConsSQLActivity1, Path=Tables["Resultado"].Rows
ITENS
Activity=rmsForEachActivity1,
Código do Atendimento Path=Fields["CODATENDIMENTO"].AsInteger
Activity=rmsForEachActivity1,
Coligada do Atendimento Path=Fields["CODCOLIGADA"].AsInteger
PARA CADA Localidade do Activity=rmsForEachActivity1,
ITERAÇÃO Atendimento Path=Fields["CODLOCAL"].AsInteger
SEQUENCIA AVANCAR ETAPA Activity=rmsForEachActivity1,
Código da Coligada Path=Fields["CODCOLIGADA"].AsInteger
Usuário mestre

Motivo de Repasse 5

Próxima Etapa 47

IMAGEM

Analista: Felipe David Evangelista Página 29 de 34


FÓRMULA
VISUAL 37. HABILITAR CAMPO IMPRODUTIVO PARA RECURSOS DA COMPOSIÇÃO
Workflow que tem por objetivo habilitar o campo improdutivo para os Recursos das Composições selecionadas
DESCRIÇÃO
na visão de Composições.
GATILHO Processos de Fórmula Visual >> PrjCmpAction >> Visão com registros selecionados

LISTA DE
Activity=RMSWorkflow, Path=Tables["MCmp"].Rows
ITENS
SELECT

Activity=rmsForEachActivity1,
Path=Fields["CODCOLIGADA"].AsShort
MRECCMP.CODCOLIGADA,

MRECCMP.IDPRJ,

Activity=rmsForEachActivity1,
MRECCMP.IDREC, Path=Fields["IDCMP"].AsInteger

Atividade:
MRECCMP.IDPRJREC,

CONSULTA MRECCMP.IDISM,

SQL MRECCMP.IDCMP

Activity=rmsForEachActivity1,
FROM MRECCMP (NOLOCK),
MISM
(NOLOCK),
MCMP

Path=Fields["IDPRJ"].AsInteger
(NOLOCK)
WHERE MRECCMP.CODCOLIGADA =
MISM.CODCOLIGADA
AND
MRECCMP.IDPRJ = MISM.IDPRJ
AND
MRECCMP.IDISM = MISM.IDISM
AND

Atividade:
MRECCMP.CODCOLIGADA = MCMP.CODCOLIGADA
AND
MRECCMP.IDPRJ = MCMP.IDPRJ
AND
MRECCMP.IDCMP = MCMP.IDCMP

PARA
AND
MRECCMP.CODCOLIGADA =:COLIGADA
AND

ATIVIDADES
MRECCMP.IDPRJ =:ID_PROJETO
AND
MRECCMP.IDCMP =:ID_COMPOSICAO

CADA
AND

Atividade:
SUBSTRING (MISM.CODISM,1,2) IN ('IP','IH','DE')
AND
SUBSTRING (MCMP.CODCMP,1,2) IN ('IE')

!
ITERAÇÃO SEQUENCIA CONDIÇÃO this.rmsForEachActivity2.Fields
DECLARATIVA ["IDISM"].IsNull
Activity=rmsForEachActivity2,
Path=Fields["CODCOLIGADA"].AsShort
Activity=rmsForEachActivity2,
Path=Fields["IDCMP"].AsInteger
Atividade: Activity=rmsForEachActivity2,
Path=Fields["IDREC"].AsInteger
Atividade: LER REGISTRO Activity=rmsForEachActivity2,
Path=Fields["IDPRJREC"].AsInteger
PARA Atividade: Atividade: Activity=rmsForEachActivity2,
Path=Fields["IDISM"].AsInteger
CADA SEQUENCIA SE/SENÃO 1

ITERAÇÃO Expressão 1
Atividade:
Valor Activity=rmsReadRecordActivity

EXPRESSAO 1,
Path=Fields["IMPRODUTIVO"].A
Calculado sInteger

Atividade:
SALVAR rmsReadRecordActivity1
REGISTRO
IMAGEM

Analista: Felipe David Evangelista Página 30 de 34


OBSERVAÇÃO 1 Quais insumos serão alterados está definido na Consulta SQL.

Analista: Felipe David Evangelista Página 31 de 34


FÓRMULA
VISUAL 38. ALTERAR STATUS DO LANÇAMENTO PARA CANCELAMENTO DE LANÇAMENTO NO SGI

Esta Fórmula Visual tem o objetivo de ALTERAR o Status do Lançamento Financeiro do TOTVS Gestão Financeira ao Cancelar
DESCRIÇÃO
lançamento do TOTVS Gestão Imobiliária relacionado ao lançamento financeiro.

GATILHO Processos >> FinLanAction

EXECUTE UPDATE_STATUSFLAN :CODCOLIGADA, :IDLAN


SELECT GCOLIGADA.CODCOLIGADA
FROM GCOLIGADA(NOLOCK)
WHERE GCOLIGADA.CODCOLIGADA =:CODCOLIGADA

Atividade:
ATIVIDADES CONSULTA CODCOLIGADA Activity=RMSWorkflow, Path=Fields.Item["CODCOLIGADA"].AsInteger

SQL

IDLAN Activity=RMSWorkflow, Path=Fields["IDLAN"].AsInteger

USE [CORPORERM_TESTE]
GO
/****** Object: StoredProcedure [dbo].[UPDATE_STATUSFLAN] Script Date: 02/24/2014 14:48:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[UPDATE_STATUSFLAN]


@CODCOLIGADA VARCHAR(2),
@IDLAN VARCHAR(10)
AS
BEGIN

Procedure TRANSACTION

UPDATE FLAN
SET FLAN.STATUSLAN = 2
FROM FLAN(NOLOCK)
WHERE FLAN.CODCOLIGADA = @CODCOLIGADA AND
FLAN.IDLAN = @IDLAN AND
FLAN.STATUSLAN <> 1 AND
FLAN.CODAPLICACAO = 'X'

IF @@ERROR <> 0
ROLLBACK

ELSE
COMMIT

Analista: Felipe David Evangelista Página 32 de 34


FÓRMULA
VISUAL 39. SALTAR ATENDENTE QUE JÁ APROVOU ATENDIMENTO

Esta Fórmula Visual tem o objetivo de SALTAR o atendente de destino de um atendimento, caso o atendimento já tenha
DESCRIÇÃO
passado pelo mesmo, durante o processo de aprovação.

GATILHO Processos >> Após a Execução >> Avançar Etapa


DECLARE
@CODATENDIMENTO VARCHAR (20),
@COLIGADAATEND VARCHAR (10),
@CODLOCALATEND VARCHAR (10),
@RESULTADO VARCHAR (10),
@ETAPAATUAL VARCHAR (10),
@TIPOATENDIMENTO VARCHAR (10)

SET @CODATENDIMENTO =:FRM_ATEND001


SET @COLIGADAATEND =:FRM_ATEND002
SET @CODLOCALATEND =:FRM_ATEND003
SET @ETAPAATUAL = ( SELECT
CODTAREFA
FROM HATENDIMENTOEXT (NOLOCK)
WHERE CODATENDIMENTO = @CODATENDIMENTO
AND CODCOLIGADA = @COLIGADAATEND
AND CODLOCAL = @CODLOCALATEND
)
SET @TIPOATENDIMENTO = ( SELECT
CODTIPOATENDIMENTO
FROM HATENDIMENTOEXT (NOLOCK)
WHERE CODATENDIMENTO = @CODATENDIMENTO
AND CODCOLIGADA = @COLIGADAATEND
AND CODLOCAL = @CODLOCALATEND
)

IF (
Atividade: SELECT
COUNT(*)
CONSULTA FROM HHISTORICOEXT (NOLOCK)
RIGHT JOIN HATENDIMENTOEXT (NOLOCK) ON HATENDIMENTOEXT.CODCOLIGADA =
SQL HHISTORICOEXT.CODCOLIGADA

AND HATENDIMENTOEXT.CODLOCAL = HHISTORICOEXT.CODLOCAL

AND HATENDIMENTOEXT.CODATENDIMENTO = HHISTORICOEXT.CODATENDIMENTO


ATIVIDADES WHERE HHISTORICOEXT.CODATENDIMENTO = @CODATENDIMENTO
AND HHISTORICOEXT.CODCOLIGADA = @COLIGADAATEND
AND HHISTORICOEXT.CODLOCAL = @CODLOCALATEND
AND CODATENDPARA = HATENDIMENTOEXT.CODATENDENTERESP
) > 1
BEGIN SET @RESULTADO = 1 /* ATENDIMENTO ENVIADO MAIS DE UMA VEZ PARA ATENDENTE ATUAL */
END
ELSE
BEGIN SET @RESULTADO = 0
END

SELECT @RESULTADO AS RESULTADO, @ETAPAATUAL AS ETAPAATUAL, @TIPOATENDIMENTO AS TIPOATENDIMENTO

FRM_ATEND001 Activity=RMSWorkflow, Path=Fields["CODATENDIMENTO"].AsInteger

FRM_ATEND002 Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsInteger

FRM_ATEND003 Activity=RMSWorkflow, Path=Fields["CODLOCAL"].AsInteger

Condição this.rmsConsSQLActivity1.Fields["TIPOATENDIMENTO"].AsString == "12" &&


this.rmsConsSQLActivity1.Fields["RESULTADO"].AsString == "1" && (this.rmsConsSQLActivity1.Fields["ETAPAATUAL"].AsString ==
Declarativa "53" || this.rmsConsSQLActivity1.Fields["ETAPAATUAL"].AsString == "55")

Código do Atendimento Activity=RMSWorkflow, Path=Fields["CODATENDIMENTO"].AsInteger

Atividade: Coligada do Atendimento Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsInteger

SE/SENÃO Atividade:
Localidade do Atendimento Activity=RMSWorkflow, Path=Fields["CODLOCAL"].AsInteger
Código da Coligada Activity=RMSWorkflow, Path=Fields["CODCOLIGADA"].AsInteger
AVANÇAR ETAPA Usuário totvs.felipe
Motivo do Repasse 1
Próxima Etapa 56

Analista: Felipe David Evangelista Página 33 de 34


40. CONFIGURAÇÃO PARA A FÓRMULA VISUAL FUNCIONAR

i. Parar o serviço ‘RM.Host.Service’;


ii. Localizar o arquivo ‘RM.Host.Service.exe.config’ (geralmente localizado em ‘C:\totvs\CorporeRM\RM.Net’);
1. Caso não exista a linha ‘<add key="WorkflowEnabled" value="true" />’ dentro do arquivo, insira a linha seguindo o
exemplo abaixo:

<appSettings>
...
<add key="WorkflowEnabled" value="true" />
...
</appSettings>

Observação:
- Caso a linha já exista no arquivo, deve-se verificar se o valor ‘true’ está informado logo após a palavra ‘value’.
- Este procedimento deverá ser realizado em todas as estações onde a validação através da Fórmula Visual será
realizada (estações dos usuários).
- Este procedimento não será necessário em versões superiores à 11.82.

Analista: Felipe David Evangelista Página 34 de 34