Lucas Manoel Posted April 12, 2021 Topic Count: 2 Topics Per Day: 0.00 Content Count: 6 Content Per Day: 0.00 Reputation: 1 Achievement Points: 55 Solved Content: 0 Days Won: 1 Status: Offline Report Posted April 12, 2021 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 Quote
luisgustavogomes Posted April 13, 2021 Topic Count: 5 Topics Per Day: 0.00 Content Count: 501 Content Per Day: 0.20 Reputation: 139 Achievement Points: 3,321 Solved Content: 0 Days Won: 65 Status: Offline Age: 35 Device: Windows Report Posted April 13, 2021 @Lucas Manoel, bom dia! Por favor, efetue o teste com as seguintes alterações. 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. 1 Quote
Lucas Manoel Posted April 13, 2021 Topic Count: 2 Topics Per Day: 0.00 Content Count: 6 Content Per Day: 0.00 Reputation: 1 Achievement Points: 55 Solved Content: 0 Days Won: 1 Status: Offline Author Report Posted April 13, 2021 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! Quote
luisgustavogomes Posted April 14, 2021 Topic Count: 5 Topics Per Day: 0.00 Content Count: 501 Content Per Day: 0.20 Reputation: 139 Achievement Points: 3,321 Solved Content: 0 Days Won: 65 Status: Offline Age: 35 Device: Windows Report Posted April 14, 2021 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 FV.CMP.08.TotvsWF 1 1 Quote
Lucas Manoel Posted April 14, 2021 Topic Count: 2 Topics Per Day: 0.00 Content Count: 6 Content Per Day: 0.00 Reputation: 1 Achievement Points: 55 Solved Content: 0 Days Won: 1 Status: Offline Author Report Posted April 14, 2021 @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 Quote
Bruno Italo Posted October 12, 2023 Topic Count: 0 Topics Per Day: 0 Content Count: 2 Content Per Day: 0.00 Reputation: 0 Achievement Points: 10 Solved Content: 0 Days Won: 0 Status: Offline Report Posted October 12, 2023 Boa noite Lucas, estou com o mesmo problema, exatamente com o mesmo tipo de fórmula, quando seleciono vários registros para cancelamento na visão de dados, somente o primeiro que foi selecionado é validado. Já tentei vincular vários campos no meu ForEach, até o campo que o suporte de framework me passou, mas mesmo assim não funciona... Ficaria grato se você compartilhasse como parametrizou o seu... Segue minha FV. FV CANCELAMENTO MOV.TotvsWF Quote
caiiomonteiro Posted October 13, 2023 Topic Count: 11 Topics Per Day: 0.00 Content Count: 158 Content Per Day: 0.06 Reputation: 54 Achievement Points: 1,024 Solved Content: 0 Days Won: 24 Status: Offline Age: 27 Device: Windows Report Posted October 13, 2023 @Bruno Italo bom dia O problema está na sua ligação dos parâmetros da consulta SQL, no caso o próprio IDMOV que está sendo passado O correto é você pegar ele do ForEach e não da atividade que faz a leitura dos parâmetros, pois dessa forma o ForEach está lendo cada movimento selecionado, porém a consulta SQL só está pegando como parâmetro o 1º IDMOV Já o CODCOLIGADA, como é o mesmo valor para todas as linhas não tem problema você deixar dessa forma, mas também pode pegar ele do ForEach ou até mesmo do contexto O correto seria dessa forma 1 Quote
Bruno Italo Posted October 13, 2023 Topic Count: 0 Topics Per Day: 0 Content Count: 2 Content Per Day: 0.00 Reputation: 0 Achievement Points: 10 Solved Content: 0 Days Won: 0 Status: Offline Report Posted October 13, 2023 @caiiomonteiro Bom dia! Era exatamente isso. Coloquei uma expressão no ForEach pegando o idmov de cada loop, e apontei o parâmetro do SQL para a expressão. Funcionou perfeitamente. Obrigado! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.