• Resolved impressao3d

    (@impressao3d)


    Bom dia equipa Moloni, precisamos de uma ajuda a tentar descobrir o que se está a passar,

    Nós temos o plugin Moloni a gerar automaticamente os documentos quando o estado de uma encomenda é passado para “complete”.
    Utilizamos também o hook moloni_after_insert_document para automatizar alguns processos, nomeadamente guardar o código AT na encomenda Woocommerce também quando o seu estado é alterado para “Complete”.
    Conseguimos utilizar esta hook com sucesso sempre que o estado da encomenda se passa para “Completed” manualmente, mas caso este estado seja actualizado por REST API do woocommerce, parece dar a entender que a hook moloni_after_insert_document n?o corre.

    A quest?o é, caso o estado de uma encomenda seja atualizado por REST API a hook moloni_after_insert_document corre?
    Caso n?o corra, é possível fazer com que aconte?a para que seja possível automatizarmos os nossos processos?

    Obrigado


Viewing 7 replies - 1 through 7 (of 7 total)
  • Plugin Author Moloni

    (@molonidevteam)

    Boa tarde,

    Teoricamente o hook corre sempre que um documento é inserido, com exce??o se ocorrer algum erro durante a cria??o do documento. Para conseguirmos identificar o problema pode-nos indicar onde registam a vossa fun??o ao nosso hook? Foi criado algum log no plugin?

    @impressao3d podem partilhar o código que est?o a usar para obter o Código AT?

    Thread Starter impressao3d

    (@impressao3d)

    Olá Marco, e malta da Moloni, obrigado pela ajuda.
    Entretanto já conseguimos resolver o problema:

    Eu inicialmente no código estava a usar o $order_id como se fosse o $order_id standard que é obtido pelo woocommerce, o que funcionava sempre ao fechar encomendas directamente no woocommerce.
    // Get the order ID
    $order = wc_get_order( $order_id );
    // Get document ID from the order
    $documentid = get_post_meta($order->id, '_moloni_sent', true);
    (etc)

    Mas ao fechar encomendas pelo API este $order_id standard do woocommerce já n?o estava disponível e o $order_id disponível pelo Moloni disponibilizava a info de forma diferente sendo a order_id como
    “your_reference”
    $your_reference = $order_id->your_reference ?? '';

    pe?o desculpa se n?o descrevo o código da forma mais tecnicamente correcta, espero que tenha sido claro, deixo aqui o código e espero que possa ser útil para mais alguém:
    https://github.com/jcmatoskx/MyRandomSnippets/blob/main/Moloni-Save-Codigo-AT-Number

    • This reply was modified 1 year, 2 months ago by impressao3d.
    • This reply was modified 1 year, 2 months ago by impressao3d.

    Obrigado @impressao3d ??

    O que action moloni_after_insert_document passa para a nossa fun??o é a instancia da class \Moloni\Controllers\Documents e n?o o $order_id.

    Nessa instancia é suposto termos a propriedade document com a resposta já dada pelo Moloni depois de criado o documento (porque eles já fazem uma chamada à documents/getOne), e que deverá ter a entrada transport_code, pelo que algo assim deveria ser suficiente: https://gist.github.com/webdados/5f8af0804228d48513b2be150d979b1a

    Agora a dúvida é se já vem preenchido ou n?o. @moloni, podem esclarecer?

    Ou seja, n?o vejo necessidade de voltar a fazer uma chamada à API para obter dados.

    Estou a aguardar ter a conta de testes activa e com séries registadas na AT para fazer testes.

    Plugin Author Moloni

    (@molonidevteam)

    Bom dia,

    A cria??o de documentos é feita a dois passos. Primeiro geramos o documento em rascunho e logo a seguir chamamos o endpoint documents/getOne, seguido da action moloni_after_insert_document. Este passo serve para fazermos verifica??es de valores antes de fecharmos efetivamente o documento.

    Portanto, esta action vai buscar a informa??o do documento ainda numa altura em que ele está em rascunho.

    Para o que pretende, deverá usar a action moloni_after_close_document que corre já depois do documento ser fechado e de ter o código de transporte à AT.

    Neste ponto, deverá fazer uma nova chamada ao endpoint documents/getOne para obter a informa??o do documento, agora, já fechado e com o código de transporte no parametro transport_code.

    OK, ent?o fazer a chamada no nosso código é sempre obrigatória porque vocês antes da action moloni_after_close_document n?o fazem nenhum documents/getOne.

    é garantido, pelo menos na maioria das vezes, que quando fecham o documento temos logo o Código AT disponível?

    Plugin Author Moloni

    (@molonidevteam)

    Na maioria das vezes, sim, exceto algumas falhas que podem existir normalmente causadas pelos próprios servi?os da AT que podem falhar ao fornecer o código de transporte.

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘A hook moloni_after_insert_document corre após trigger por REST API?’ is closed to new replies.