Integração de movimento RM X Fluig

Pessoal, bom dia!
Preciso muito da ajuda dos amigos aqui.

Tenho um processo no Fluig onde o mesmo é iniciado no RM.
O movimento ao ser criado no RM, é gerado um IDFLUIG.
No Fluig, ao pesquisar a solicitação através do IDFLUIG gerado, é possível encontrar a solicitação para realizar as movimentações necessárias, APROVAR ou REPROVAR.

DÚVIDAS:

  • Ao REPROVAR a solicitação, é possível via integração atualizar o status do movimento no RM para CANCELADO?

  • Qual serviço devo utilizar para executar esta tarefa, MOVMOVIMENTOTBCDATA (SaveRecord) ou MovCancelMovProc?

  • Caso seja o MovCancelMovProc, onde encontrar uma documentação para utilizá-lo?

MovCancelMovProc foi dica de um amigo em um grupo de Whatsapp, porém não encontro a documentação na internet.

Olá, para cancelar o movimento você deve usar o MovCancelMovProc.
Você vai usar o webservice wsProcess, método executeWithParams.
Use o xml

<MovCancelMovProcParams>
      <MovimentosACancelar>
          <MovimentosCancelar>
              <ApagarMovRelac>false</ApagarMovRelac>
              <CancelarMovimentosGeradosSimultFaturamento>true</CancelarMovimentosGeradosSimultFaturamento>
              <CodColigada>{CODCOLIGADA}</CodColigada>
              <CodSistemaLogado>T</CodSistemaLogado>
              <CodUsuarioLogado>{CODCOLIGADA}</CodUsuarioLogado>
              <DataCancelamento>{DATACANCELAMENTO}</DataCancelamento>
              <IdExercicioFiscal>{EXERCICIOFISCAL}</IdExercicioFiscal>
              <IdMov>{IDMOV}</IdMov>
              <MotivoCancelamento></MotivoCancelamento>
              <NumeroMov />
          </MovimentosCancelar>
      </MovimentosACancelar>
</MovCancelMovProcParams>

Desse jeito vai cancelar o movimento.

Espero que te atenda

Abs

1 curtida

Eduardo, boa tarde amigo!
Muito obrigado por sua atenção e pela ajuda.
Conseguir configurar no SOAP UI para teste. Vou criar em ambiente de homologação um movimento para teste e depois posto aqui se deu certo ou não.

1 curtida

Eduardo, boa tarde amigo!

Pode me tirar outra dúvida caso você tenha conhecimento?

Eu conseguiria Atualizar/Editar o movimento no RM também via Fluig?

Exemplo: Inserir no campo complementar do movimento no RM um link de redirecionamento para a solicitação no Fluig e o IDFluig.

1 curtida

Olá, tudo bem? Para atualizar você vai usar o webservice wsDataServer, com o método SaveRecord.
Use o dataserver MOVMOVIMENTOTBCDATA (View).

E o XML

<MovMovimento >
    <TMOV>
        <CODCOLIGADA>1</CODCOLIGADA>
        <IDMOV>1</IDMOV>
    </TMOV>
    <TMOVCOMPL>
        <CODCOLIGADA>1</CODCOLIGADA>
        <IDMOV>1</IDMOV>
        <LINKFLUIG>{LINK_FLUIG}</LINKFLUIG>
    </TMOVCOMPL>
</MovMovimento>

Acho que assim é o suficiente. Mais da uma lida na documentação do link aí em cima que está tudo detalhado.

Abs

1 curtida

Blz Eduardo!
O SaveRecord conheço, utilizo em alguns processos aqui.
Até tentei utilizar o recurso diretamente no SOAP UI para atualizar o movimento, mas recebi a seguinte mensagem:

O Movimento não pode ser alterado devido a modificações realizadas por outro processo.

Favor atualizar o registro e tentar novamente.

at RM.Mov.Movimento.Alteracao.MovMovAlteracaoScl.DoLoadContextMaster(List1 listParam) at RM.Mov.Movimento.Manutencao.MovMovManutencaoScl1.DoLoadContext(List1 listParam) at RM.Mov.Movimento.Alteracao.MovMovAlteracaoScl.DoLoadContext(List1 listParam)
at RM.Lib.Subscriber.RMSSubscriberController2.GetPackageContext(List1 listParam, Int32 lenPackageCxt, Int32 numPack)
at RM.Lib.Subscriber.RMSSubscriberController2.Prepare(List1 listParam, Int32 lenPackageCxt, Object ownerData)
at RM.Mov.Movimento.MovMovimentoData.PrepareLists(MovValidateOwerData movValidate)
at RM.Lib.Server.RMSDataServer.InternalSaveRecord(RMSContext context, DataSet& dataSet, Object ownerData, Boolean skipSecurity, Boolean skipSecurityCollumns)
at RM.Lib.Server.RMSDataServer.SaveRecord(RMSContext context, DataSet& dataSet, Object ownerData)
at RM.Con.Conector.ConWSDataServer.SaveRecord(String DataServerName, String XML, String UserName, String UserPassword, String contexto, String emailUsuarioContexto)

@roliveira tudo bem? Não consegui reproduzir exatamente esse erro. O movimento é originado no Nucleus? Da uma olhada no campo tmov.integraaplicacao. Se for originado em outro módulo não vai alterar.

At.

1 curtida

Boa tarde Eduardo!
Exatamente, o movimento é originado no Nucleus sim.
Não compreendi quando diz para olhar o campo tmov.integraaplicacao.

Se são originados pelo Nucleus, não precisa olhar o campo. Esse é um campo no banco de dados, na tabela TMOV, ele indica de qual sistema originou o movimento.

Esse erro que você enviou aparece no SOUPUI?
Esse movimento passar por aprovação no Agilis?
O usuário do RM que você está usando no SOUPUI tem acesso ao movimento, ou alterar movimentos aprovados (Caso use o Agilis)?

Se puder, cola o XML completo do SOUAPUI aqui.

Valeu

1 curtida
  1. Esse erro que você enviou aparece no SOUPUI?
    R: Isso, exatamente Eduardo, o erro está sendo retornado no SOAP UI. Estou tentando realizar o update primeiramente no SOAP para ter a certeza que vai funcionar antes de implementar no código do Workflow.

  2. Esse movimento passar por aprovação no Agilis?
    R: Não, o movimento é gerado no RM inicialmente. Após isso, é gerado o IDFLUIG pelo RM e lá no Fluig é possível encontrar essa solicitação gerada e realizar as movimentações necessárias. Isso funciona perfeitamente.

  3. O usuário do RM que você está usando no SOUPUI tem acesso ao movimento, ou alterar movimentos aprovados (Caso use o Agilis)?
    R: Sim, o usuário tem permissão lá no RM para acessar o movimento.

  4. Se puder, cola o XML completo do SOUAPUI aqui.
    R: Estou utilizando desta forma o XML no SaveRecord:

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:tot=“http://www.totvs.com/”>
soapenv:Header/
soapenv:Body
tot:SaveRecord

tot:DataServerNameMOVMOVIMENTOTBCDATA</tot:DataServerName>

tot:XML
<![CDATA[ 1 327036 2 1 327036 IDFLUIG_AQUI LINK_SOLICITACAO_FLUIG_AQUI ]]>
</tot:XML>

tot:ContextoCODCOLIGADA=1;CODSISTEMA=T;CODUSUARIO=adminfluig</tot:Contexto>
</tot:SaveRecord>
</soapenv:Body>
</soapenv:Envelope>

Resgatando esse tópico só pra perguntar onde consigo essas informações de Processos.

No RM sei que tem os DataServer para utilizar no wsDataServer (e que a TOTVS já removeu toda a documentação, mas consegui uma lista de DataServers do RM), mas não encontrei documentação sobre os Processos.

Estamos começando a engatinhar na integração de mandar informações para o RM. Ainda não temos a opção do REST (o ambiente ainda está atrasado nessa questão), por isso ainda busco informações do SOAP.

Edit:

Esse é aquele caso que a gente precisa executar um processo no RM e depois copiar o XML gerado pra saber o que precisamos preencher pra executar no wsProcess?

Fala roliveira tudo joia, estou com uma demanda bem parecida por aqui também, preciso de cancelar um movimento que foi criado no RM através do fluig, por acaso, você conseguiu? se sim, pode compartilhar a solução?