Jump to content
Lucas Manoel

Fórmula visual - validar cancelamento de movimento

Recommended Posts

Olá pessoal.

Estou tentando desenvolver uma fórmula visual que valide o cancelamento de um movimento do RM Nucleos. A ideia é que o usuário consiga cancelar somente os movimentos que ele próprio criou.

Consegui desenvolver a FV e ela está funcionando. Porém, só funciona corretamente quando seleciono um único movimento para cancelar.

Se eu selecionar dois movimentos, sendo que no primeiro sou o usuário criador, e no segundo, não sou o usuário criador, o sistema não aplica a validação corretamente, e acaba cancelando ambos movimentos. É como se no processo de cancelamento o sistema estivesse ignorando o meu ForEach da FV. 

Já viram algo parecido?

Segue em anexo a FV que desenvolvi.

Nos meus testes, vinculei a FV no evento "Antes da Execução" do MovCancelMovProc.

Obrigado!

ValidaCancelamento.TotvsWF

Share this post


Link to post
Share on other sites

@Lucas Manoel, bom dia!

Por favor, efetue o teste com as seguintes alterações.

image.thumb.png.641be75512df53eb112df93af77af2d1.png

 

Eu não efetuei o teste, mas acredito que o erro esteja o local que está fazendo o loop, por que o JOB de cancelamento não é um dataset... 

 

<MovimentosACancelar>
    <MovimentosCancelar z:Id="i3">
      <ApagarMovRelac>false</ApagarMovRelac>
      <CancelarMovimentosGeradosSimultFaturamento>false</CancelarMovimentosGeradosSimultFaturamento>
      <CancelarMovimentosGeradosSimultReabriCotacao>false</CancelarMovimentosGeradosSimultReabriCotacao>
      <CodColigada>1</CodColigada>
      <CodSistemaLogado>T</CodSistemaLogado>
      <CodUsuarioLogado>x.x</CodUsuarioLogado>
      <DataCancelamento>2021-04-12T00:00:00-03:00</DataCancelamento>
      <ExcluirItensDaCotacao>false</ExcluirItensDaCotacao>
      <IdExercicioFiscal>1</IdExercicioFiscal>
      <IdMov>6568669</IdMov>
      <MotivoCancelamento>CC INCORRETO</MotivoCancelamento>
      <NumeroMov>112842</NumeroMov>
    </MovimentosCancelar>
    <MovimentosCancelar z:Id="i4">
      <ApagarMovRelac>false</ApagarMovRelac>
      <CancelarMovimentosGeradosSimultFaturamento>false</CancelarMovimentosGeradosSimultFaturamento>
      <CancelarMovimentosGeradosSimultReabriCotacao>false</CancelarMovimentosGeradosSimultReabriCotacao>
      <CodColigada>1</CodColigada>
      <CodSistemaLogado>T</CodSistemaLogado>
      <CodUsuarioLogado>x.x</CodUsuarioLogado>
      <DataCancelamento>2021-04-12T00:00:00-03:00</DataCancelamento>
      <ExcluirItensDaCotacao>false</ExcluirItensDaCotacao>
      <IdExercicioFiscal>1</IdExercicioFiscal>
      <IdMov>6580204</IdMov>
      <MotivoCancelamento>CC INCORRETO</MotivoCancelamento>
      <NumeroMov>113044</NumeroMov>
    </MovimentosCancelar>
  </MovimentosACancelar>

 

Terias que descobrir como efetuar um loop nessa estrutura...

Porém, eu, Luis, iria efetuar outro teste, caso essa chamada efetua em tela e não via WS... iria criar uma FV na TMOV fazendo o loop no dataset e verificando o status do registro e posteriormente efetuando essa validação (antes de salvar o registro).

 

Espero que consigas efetuar essa consistencia.

Abraços.

 

  • Like 1

Share this post


Link to post
Share on other sites

Bom dia @luisgustavogomes!

Obrigado pelo comentário e orientações.

Tentei deixar o fluxo da forma conforme seu print, porém não sei se estou usando corretamente o rmsExpressionActivity. Fiz um teste parametrizando ele dessa forma (imagem).

Está correto?

Se sim, infelizmente não resolveu. O comportamento continua o mesmo, funcionando na validação de somente um movimento, e falhando quando uso multiseleção.

Vou tentar montar a FV da outra forma que você sugeriu, validando antes de salvar o registro na TMOV. 

Abraço!

rmsActivity.PNG

Share this post


Link to post
Share on other sites

Sim, a expressão está correta e aconteceu juntamente o erro do FOREACH, assim sendo, abri um chamado com a TOTVS e o pessoal do framework ajudou.... 

Logo, em anexo, o seu exemplo com loop na tabela dos parâmetros da execução do JOB... p/s nesse exemplo, efetuei o teste  efetuando o envio do IDMOV via e-Mail.

Agora é só alterar para a sua regra de negócio e testar, eu testei via formulário - ok , vou testar via WS e depois lhe informo

abraços

Resposta da TOTVS

?name=inline292648977.png

?name=inline-1411580918.png

FV.CMP.08.TotvsWF

  • Thanks 1

Share this post


Link to post
Share on other sites

@luisgustavogomes, muito obrigado!

Realmente o ponto chave pra resolução foi a forma de parametrizar o ForEach.

Ajustei de acordo com minha regra de negócio e funcionou perfeitamente!! Muito obrigado.

Abraço

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By caiiomonteiro
      Boa tarde a todos
      Estamos desenvolvendo uma fórmula visual para inclusão de movimentos.
      Na parte de vencimentos gostaria de informar algumas datas e valores em específico que vão ser calculados via SQL.
      Porém na atividade Inclusão Movimento da fórmula visual só conseguimos informar o código da condição de pagamento, as datas que devem ser preenchidas não coincidem com nenhuma condição de pagamento existente e por isso não ficaria viável utilizar este campo.
      Alguém passou por isso e fez alguma saída de contorno ?
       

       

    • By Andrei Wellington
      Criei uma formula visual com atividade executar código fonte, mas não estou conseguindo usar um parâmetro dentro do código c#.
      A fórmula até pede o parâmetro, mas não estou conseguindo usar dentro do código fonte.
      Alguém tem uma ideia de como passar este parâmetro
    • By Andrei Wellington
      Estou precisando criar uma formula visual que utiliza a atividade Requisição SOAP com a finalidade de criar uma integração com outro sistema, desta forma preciso fazer duas requisições SOAP. Criei a formula e configurei a primeira atividade Requisição SOAP para fazer a autenticação, e aparentemente ela comunica com o web service adequadamente, mas como consigo pegar o retorno desta autenticação para utilizar na outra Requisição Soap que vai fazer a pesquisa em sí?
      Na resposta da autenticação tem uma propriedade AutenticarUsuarioResult que eu preciso conseguir pegar para usar na outra requisição. Alguém que já passou por isso ou tenha alguma ideia do que posso tentar?
    • By Fábio Maia
      Se você nunca fez uma fórmula visual (FV) mas tem vontade de aprender, não perde esse video por nada.
      #totvsrm #formulavisual #chamaosbruxo
       
       
    • By ChromusMaster
      Tenho a seguinte demanda: Atualmente o sistema não impede de ser feita uma requisição de material com a quantidade de itens no pedido superior ao existente no saldo físico do sistema. Preciso bloquear e alertar o usuário sobre essa questão.
      Alguém teria uma ideia sobre como construir uma fórmula visual ou fórmula RM para conseguir validar isso?
    • By ChromusMaster
      Prezados, esta fórmula visual precisa ser alterada colocando na consulta os CODTMV fixos dos movimentos de notas ficais. Para quem for utilizar na saída pode precisar alterar a lógica da fórmula. Testado nas situações (movimento sem cotação / movimento com cotação ) mas sempre será preciso ter um pedido de compras.
    • By ChromusMaster
      Pessoal bom dia!
      Estamos usando a versão 12.1.22.201 e ao criar uma fórmula visual que na visão inicial de cadastro de aluno buscasse o nome do curso, está trazendo o curso apenas do primeiro aluno e não está trazendo o correto para cada aluno. Já verifiquei o ForEach e o retorno da consulta. Aparentemente está tudo correto. Alguém pode auxiliar? O suporte da TOTVS está me direcionando para consultoria e financeiramente é inviável para nós.
      ExibeNomeCurso.TotvsWF
    • By rteles
      Bom Dia Pessoal!
      Alguém consegue me ajudar no fluxo da fórmula visual para que na atividade "Enviar Email" seja agrupado os dados conforme o destinatário do e-mail.
      Explicando:
      Estou desenvolvendo uma fórmula com os dados construídos a partir de um select. Porém no resultado do meu select tenho uma coluna "Email do Gestor" essa coluna é variável e gostaria que fosse enviado 1 único e-mail para o destinatário da coluna "Email do Gestor" com todos os registros dos funcionários.
      No exemplo anexo consigo agrupar os dados da maneira que eu queiro mas no caso do meu select deixei com 2 emails para gestores diferentes mas estou recebendo somente 1 e-mail com todos os registros retornados da consulta.
      Não sei se a solução será incluir a atividade Enviar e-mail no loop, mas não estou conseguindo resolver.
       
      Alguém têm alguma dica?
      Obrigado.
      19022018-ExemploFV.zip
    • By gpereira
      Pessoal, bom dia!
      Estou trabalhando em um processo que consiste em enviar informações financeiras para um WebService externo.
      Via Visual Studio, em um projeto do tipo Aplicativo de Console, o projeto é compilado e as informações são enviadas para esse WebService com sucesso.
      Quando crio o projeto do tipo Biblioteca de Classes e sigo o processo para criar uma atividade extra para formula visual conforme TDN http://tdn.totvs.com/display/public/rm/Criando+uma+nova+atividade;jsessionid=9A074DD08FA7C5325237988A3C513333, a Fórmula Visual é executada com sucesso  mas as informações, que estão fixas no fonte, não são envidas para o WebService. 
      No meu projeto utilizei algumas referências que creio eu, podem estar impactando na correta execução da FV, como o System.Net.Http e System.Net.Http.Headers por exemplo. Teria que copiar essa DLL para a pasta RM.NET?


    • By Cleber Brito
      Olá a todos,
      Gostaria do apoio de vocês para resolver um problema. Estou criando uma fórmula visual onde um campo em um determinado movimento deverá ser preenchido toda vez que for salvo.
      Abaixo segue o SQL com o update
      UPDATE TITMMOV
      SET  IDCLASSIFENERGIACOMUNIC = '101'
      ,RECMODIFIEDON = GETDATE()
      FROM TITMMOV
      WHERE IDMOV = :IDMOV  
      Quando tento salvar o movimento ele me envia uma mensagem dizendo que:
      Erro na execução da Atividade: 'SQL_UPDATE'
      Erro: O comando não inclui a coluna de controle RECMODIFIEDBY. Essa coluna é obrigatória e deve ser preenchida.
      Eu já achei o campo, mas não sei como colocar o usuário corrente através do set.
      Quem puder me ajudar, ficarei agradecido.
  • Recent

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.