[RESOLVIDO] Enganar a mensagem 13.869

Discussão em 'EMS , HCM e Totvs 11' iniciado por bootstrapmaster, Julho 10, 2015.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Dai meus colegas,

    Criei uma rotina que recebe um titulo do contas a pagar, procura titulos tipo ANTECIPAÇÃO e faz a liquidação dele.

    Estou usando essa rotina em 2 lugares, em um especifico, onde o usuario seleciona os titulos que quer baixar contra antecipação, essa tá funcionando lindamente.

    o outro lugar é que complica, eu criei uma UPC no re1005rp (atualização de notas do recebimento), acontece que as apis do datasul tem um teste dentro delas, elas verificam se a api está sendo chamada de dentro de um bloco de transação, se sim, ela não executa, dá a mensagem 13.869, e é claro que a upc do re1105rp está dentro da transação que atualiza o documento.

    Bem, o que acontece, dá essa mensagem de erro, dá outra mensagem relacionada ao recebimento, já que aconteceu um UNDO inesperado e não atualiza a nota.

    Bem, não existe ponto upc fora da transação no re1005rp, inclusive nem tem como ser diferente, já que a UPC te passa o rowid da nota que vc está tentando atualizar, se vc manda atualizar varias notas ao mesmo tempo, não tem como tratar isso.

    Alguém já precisou burlar essa mensagem ?
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Se você colocar

    Código:
      MESSAGE TRANS VIEW-AS ALERT-BOX.
    
    Verá que aparece TRUE.

    Não dá pra vc colocar a chamada da procedure do botão botão dentro de uma transação e a chamada da API fora? tipo:

    Código:
       DO TRANS:
             RUN btnAtualizar.
        END.
        MESSAGE TRANS VIEW-AS ALERT-BOX.
        [CHAMADA_DA_API]
    
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu pensei o seguinte, vou criar um re1005rp.p que vai ficar no propath, antes do original, recebo os tt-param e tt-digita da vida, e depois faço run no re1005rp.p original, repassando os dados é claro, quando voltar do run, estará fora da transação, então, eu vejo se ou na tt-param ou na tt-digita se só tem 1 nota pra atualizar, que seria o caso quando aperta o botão atualizar no re1001, e dai rodar a rotina de baixar antecipações.

    Pensei também em fazer uma UPC e capturar o botão, como vc diz, mas não dá pra forçar a transação como vc está dizendo, pois o problema é exatamente esse, a API não executa se estiver dentro de uma transação.
    Amanhã será o dia pra decidir isso.
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Mas quando inicia o evento do botão já inicia na transação?

    Porque no exemplo que passei, a [CHAMADA_DA_API] está fora do DO TRANS.
  5. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    mas a transação não inicia no botão, ela inicia no re1005rp, o botão só executa o programa, e a principio, a minha rotina do contas a pagar está em um ponto de upc da re1005rp, por isso que deu problema com o bloco de transação.
    então eu não vou precisar forçar um bloco de transação como vc está sugerindo, basta eu executar a função original do botão e depois a minha rotina, eu só estava imaginando em fazer o outro jeito, do re1005rp fake porque iria garantir que outros tipos de atualização de notas iriam processar a minha rotina também.
  6. odair.batista

    odair.batista Sem Pontuação

    Grande Richard, belezera brother! Seguinte, eu também tive alguns problemas com re1005rp.p, inclusive um relacionado a atualização do APB, quando a UPC está ativa ocorre erro na atualização do APB, muito provavelmente por conta da transação também. O resto do documento atualiza normal, somente o APB, e lógico as funcionalidades da UPC ficam de fora. Penso em fazer a mesma coisa que você está pensando, acho que é possível funcionar, porque realmente estará fora da transação principal de atualização do re1005rp.p. Grande abraço!
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página