Escolar Documentos
Profissional Documentos
Cultura Documentos
br/2011/12/formulas-visuais-workflows/
Home
Empresa
Produtos
Contato
Artigos e Cases
Artigos
Cases
A TOTVS tem constantemente aprimorando seus sistemas e a uma das novidades presentes desde a versão 11.0 são os Workflows ou Fórmulas Visuais.
1. Envio de e-mail ao se cadastrar um novo produto: Em diversas situações as entradas do sistema não são corretas pois os campos cadastrais não
foram preenchidos (campos contábeis / fiscais), então com a execução de uma fórmula visual, podemos alertar, via e-mail que um novo produto /
serviço foi cadastrado.
2. Validação de campo complementar em lançamento: Em algumas situações o cliente possui, no lançamento da NF, um campo complementar que
precisa estar preenchido com um valor válido, nestes casos o sistema não permite transformar um campo complementar em campo obrigatório, logo a
fórmula visual resolve este problema.
3. Informar responsável sobre demanda: Neste caso específico, vou utilizar um exemplo do TOTVS Obras e Projetos (RM Solum), nesta situação, o
usuário ao gerar os pedidos de compras e atingir 80% do total permitido, alertará o responsável de compras que um determinado insumo atingiu seu
limite.
Como fazer?
Os sites da TOTVS estão cheios de referências de como fazer diversos tipos de fórmulas visuais, sendo esse link considerado o mais relevante por nós:
http://totvsconnect.blogspot.com/2011/07/dicas-repositorio-de-formulas-visuais.html
Como o repositório já demonstra a criação de diversas fórmulas, mas nenhuma delas passo-a-passo, estaremos detalhando neste post a criação de uma
fórmula visual de nível médio de dificuldade.
A Fórmula
A finalidade da fórmula que estaremos criando é justamente o 3.o exemplo deste artigo. Vamos detalhar seu funcionamento:
No TOTVS Obras e Projetos (RM Solum), ao gerar os pedidos de compra, o sistema deverá verificar se o total consumido do insumo atingiu 80%
do total planejado, caso tenha atingido, o responsável pelo setor de compras deverá receber um e-mail informando que este insumo atingiu este
nível.
Como a ideia é criar um passo-a-passo não iremos criar uma trava básica desta fórmula que seria o pré-requisito que o responsável receba apenas
1 e-mail daquele insumo, para evitar receber N e-mails enquanto o usuário gera os pedidos de compra.
Vamos começar:
1. Acesse o TOTVS Obras e Projetos – Utilitários – Workflow
2. Clique em Adicionar e preencha os dados solicitados. Caso você não tenha nenhuma Categoria cadastrada, cadastre uma antes ou na própria tela de
edição.
1 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
MISM.IDISM,
MISM.CODISM,
MISM.DESCISM,
MISM.CODUND,
TPRD.IDPRD,
TPRD.DESCRICAO,
CASE WHEN
((SELECT ISNULL(SUM(ISNULL(MI.QTDEPEDIDA, 0)), 0)
FROM MPEDIDOMAT (NOLOCK),
MNECESSIDADEMAT MN(NOLOCK),
MITEMPEDIDOMATERIAL MI(NOLOCK)
WHERE MN.CODCOLIGADA = :CODCOLIGADA_N
AND MN.IDPRJ = :IDPRJ_N
AND MN.IDISM = MNECESSIDADEMAT.IDISM
AND MN.CODCOLIGADA = MPEDIDOMAT.CODCOLIGADA
AND MN.IDPRJ = MPEDIDOMAT.IDPRJ
AND MN.IDPEDIDO = MPEDIDOMAT.IDPEDIDO
AND MPEDIDOMAT.TIPOREQUISICAO = 0
AND MI.CODCOLIGADA = MN.CODCOLIGADA
AND MI.IDPRJ = MN.IDPRJ
AND MI.IDNECESSIDADE = MN.IDNECESSIDADE)
/
(SELECT SUM(MCURVASISM.QUANTPLANEJADO)
FROM MCURVASISM (NOLOCK)
WHERE CODCOLIGADA = :CODCOLIGADA_N
AND IDPRJ = :IDPRJ_N
AND IDISM = MNECESSIDADEMAT.IDISM
AND VALIDO = 1)) >= 0.8 THEN '1' ELSE '0' END AS PERC,
QTD_NECESS = (SELECT SUM(MCURVASISM.QUANTPLANEJADO)
FROM MCURVASISM (NOLOCK)
WHERE CODCOLIGADA = :CODCOLIGADA_N
AND IDPRJ = :IDPRJ_N
AND IDISM = MNECESSIDADEMAT.IDISM
AND VALIDO = 1),
QTD_PEDIDA = (SELECT ISNULL(SUM(ISNULL(MI.QTDEPEDIDA, 0)), 0)
FROM MPEDIDOMAT (NOLOCK),
MNECESSIDADEMAT MN(NOLOCK),
MITEMPEDIDOMATERIAL MI(NOLOCK)
WHERE MN.CODCOLIGADA = :CODCOLIGADA_N
AND MN.IDPRJ = :IDPRJ_N
AND MN.IDISM = MNECESSIDADEMAT.IDISM
AND MN.CODCOLIGADA = MPEDIDOMAT.CODCOLIGADA
AND MN.IDPRJ = MPEDIDOMAT.IDPRJ
AND MN.IDPEDIDO = MPEDIDOMAT.IDPEDIDO
AND MPEDIDOMAT.TIPOREQUISICAO = 0
AND MI.CODCOLIGADA = MN.CODCOLIGADA
AND MI.IDPRJ = MN.IDPRJ
AND MI.IDNECESSIDADE = MN.IDNECESSIDADE),
QTD_EXTRA = (SELECT ISNULL(SUM(ISNULL(MITEMPEDIDOMATEXTRA.QTDEPEDIDO,0)),0)
FROM MITEMPEDIDOMATEXTRA
WHERE MITEMPEDIDOMATEXTRA.CODCOLIGADA = :CODCOLIGADA_N
AND MITEMPEDIDOMATEXTRA.IDPRJ = :IDPRJ_N
AND MITEMPEDIDOMATEXTRA.IDPRD = TPRD.IDPRD),
QTD_PENDENTE = (SELECT ISNULL(SUM(ISNULL(MCURVASISM.QUANTPLANEJADO, 0)), 0)
FROM MCURVASISM (NOLOCK)
WHERE CODCOLIGADA = :CODCOLIGADA_N
AND IDPRJ = :IDPRJ_N
AND IDISM = MNECESSIDADEMAT.IDISM) - (SELECT ISNULL(SUM(ISNULL(MI.QTDEPEDIDA, 0)), 0)
FROM MPEDIDOMAT (NOLOCK),
MNECESSIDADEMAT MN(NOLOCK),
MITEMPEDIDOMATERIAL MI(NOLOCK)
WHERE MN.CODCOLIGADA = :CODCOLIGADA_N
AND MN.IDPRJ = :IDPRJ_N
AND MN.IDISM = MNECESSIDADEMAT.IDISM
AND MN.CODCOLIGADA = MPEDIDOMAT.CODCOLIGADA
AND MN.IDPRJ = MPEDIDOMAT.IDPRJ
AND MN.IDPEDIDO = MPEDIDOMAT.IDPEDIDO
AND MPEDIDOMAT.TIPOREQUISICAO = 0
AND MI.CODCOLIGADA = MN.CODCOLIGADA
2 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
5. Com a SQL cadastrada, vamos voltar a tela da fórmula visual e dar um duplo clique no item cadastrado anteriormente. A tela de edição da fórmula
visual deve ser exibida.
Fórmula Visual
Consulta SQL
8. Clique com o botão direito sobre o item e depois em “Selecionar Consulta SQL” e buque pela sentença cadastrada anteriormente.
9. Nas propriedades o sistema terá carregado os parâmetros para serem preenchidos. Como vamos buscar os dados da requisição que estiver sendo feita
no momento, vamos setar os parâmetros da seguinte maneira:
3 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
Parâmetros da SQL
10. Repita o procedimento para todos os parâmetros, eles devem ficar com o seguinte texto:
Activity=RMSWorkflow, Path=Fields.Item["CODCOLIGADA"].AsInteger
Activity=RMSWorkflow, Path=Fields.Item["IDPEDIDO"].AsInteger
Activity=RMSWorkflow, Path=Fields.Item["IDPRJ"].AsInteger
11. Essa SQL pode gerar mais de uma linha de retorno, pois ela buscará, item a item da requisição, quem ultrapassou ou não 80% do consumo antes de
enviar um e-mail, então temos que inserir um componente que seja responsável por percorrer todas as linhas da SQL.
Para tanto, selecione a aba Atividades e adicione abaixo do componente SQL o componente “Para cada Iteração”.
12. Temos que definir para este componente, quem fornecerá os registros para que ele atue, neste caso será a nossa consulta SQL. Clique no componente
“Para cada Iteração”, vá em Propriedades e clique duas vezes no ícone amarelo da ”Lista de itens”.
Na tela que se abre, busque por rmsConsSQLActivity1, Tables[0] e selecione o componente Rows.
4 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
Feito isto, tudo o que for inserido dentro deste componente agora, será feito tantas vezes quanto forem os resultados da SQL.
13. Agora vamos adicionar as nossas condições ao sistema, ou seja, determinar quando será enviado o e-mail.
Vá na aba Atividades e selecione o componente “Se/Senão” dentro do componente “Para cada Iteração”, sua tela deve estar dessa maneira neste
momento:
5 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
Para tanto, selecione o lado esquerdo do ifElse, clique em “Propriedades”, clique em Condition e depois em “Declarative Rule Condition”.
A propriedade permitirá a você abri-lá, você então poderá ver outra propriedade, chamada de “Condition Expression”, clique no botão logo a frente dela
e depois em “New” e será aberta a seguinte tela:
Condition Rule
A condição é escrita em linguagem similar ao C#, abaixo está o texto que deve ser adicionado a nossa condição:
this.rmsForEachActivity1.Fields["PERC"].AsString == "1"
Se você estudou a SQL viu que nela mesmo nós estamos retornando o valor 1 ou 0, sendo que 1 significa que o item chegou a 80% de consumo e 0 não.
Diversas vezes será mais fácil criar as verificações dentro da própria SQL do que no Condition Rule da fórmula Visual.
14. Agora vamos adicionar um componente de expressão que irá conter o texto do E-Mail. Adicione o componente Expressão dentro do
ifElseBranchActivity1, clique em “Propriedades”, “Expressões” e digite um texto similar ao demonstrado abaixo:
'Prezado,' +NewLine + NewLine +
'O sistema TOTVS Gestão de Obras e Projetos constatou que um
insumo ultrapassou o limite de 80% de consumo: ' +NewLine+
'--- Projeto: '+rmsForEachActivity1.CODPRJ+' - '+rmsForEachActivity1.DESCRICAO+NewLine+NewLine+
rmsForEachActivity1.CODISM+' - '+rmsForEachActivity1.DESCISM +NewLine+
'--- Necessidade: '+rmsForEachActivity1.QTD_NECESS+NewLine+
'--- Pedido: '+rmsForEachActivity1.QTD_PEDIDA+NewLine+
'--- Extra: '+rmsForEachActivity1.QTD_EXTRA+NewLine
Adicione um componente de “Envio de E-Mail” logo abaixo da expressão. Clique no mesmo e em propriedades e configure conforme desejar as
propriedades:
6 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
Texto do E-mail: Clique no botão “…” e selecione rmsForEachActivity1, ifElseActivity1, ifElseBranchActivity1, rmsExpressionActivity1,
Expression e clique em OK.
Componente de E-Mail
Para não termos problemas de formatação no texto de envio, vamos voltar ao componente rmsExpressionActivity1, clicar em “Valor Calculado” e
apontar para o componente de envio de e-mail no campo “Body”.
Valor Calculado
16. Quase prontos! Sua fórmula Visual deve estar parecida com essa:
7 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
17. Falta agora somente adicionar o Gatilho, ou seja, o que faz a nossa fórmula funcionar!
Para tanto, salve a sua fórmula visual, clique sobre ela e depois sobre o ícone “Editar”, acesse a aba “Gatilhos” e clique em novo.
Na tela que se abre, vamos procurar o item “Antes da atualização do registro (Fim)” e a Action “Requisição de Material”.
Gatilho
Conclusão
Pronto! A fórmula visual está pronta, vamos testá-la. Lembre-se de que seu computador deve estar preparado para rodar fórmulas visuais, para
confirmar isso, acesse o site http://totvsconnect.blogspot.com/2011/07/dicas-repositorio-de-formulas-visuais.html e verifique a configuração no final das
8 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
Para testar a mesma, vamos fazer uma requisição de material de um determinado insumo e solicitar todo o seu quantitativo, um e-mail deverá ser
enviado para o destinatário(s) cadastrado(s) na fórmula visual.
A Ethos Consultores conta com know-how para implementar diversas situações com fórmulas visuais, entre em contato conosco sempre que precisar!
Sobre o Autor
Daniel Carvalho é Tecnólogo em Processamento de Dados pela Faculdade Brasileira de Informática (FABRAI), pós-graduado em Administração de
Sistemas de Informação pela Universidade Federal de Lavras (UFLA), MBA em Gestão de Projetos pela Fundação Getúlio Vargas(FGV) e possui
diversos cursos inclusive no exterior.
Arquivado em Artigos · Tags ERP, fórmula visual, RM, Solum, TOTVS, TOTVS Obras e Projetos, workflow
Dê sua opinião
Nome(obrigatório)
Website
Busca Rápida
9 de 10 27/07/2012 14:13
Fórmulas Visuais / Workflows « Artigos « Ethos Consultores http://www.ethosconsultores.com.br/2011/12/formulas-visuais-workflows/
Artigos recentes
Fórmulas Visuais / Workflows
Projetos TOTVS
Sales Supermercados
Segurança da Informação para Pequenas e Médias Empresas
TI Verde
Arquivos
dezembro 2011
novembro 2011
setembro 2009
Login
10 de 10 27/07/2012 14:13