O que é esta tarefa e quando corre
O Shopify Connector for Odoo inclui uma tarefa agendada chamada Processar webhooks Shopify (Shopify Process Webhooks). Pertence ao modelo das lojas Shopify e executa o método que processa os eventos de webhook recebidos. Corre todos os minutos e vem ativa ao instalar o módulo. Existe em todos os ramos publicados (17.0, 18.0, 19.0 e 20.0); no Odoo 17.0, além disso, está configurada para se repetir sem fim.

Shopify › Configuração › Lojas (Shopify › Configuration › Stores).Com o Odoo em português de Portugal a tarefa chama-se Processar webhooks Shopify; este esquema reúne o seu nome noutros idiomas:

Processar webhooks Shopify.
Cronologia de uma passagem
No Odoo 20.0, uma passagem segue esta ordem:
- Todos os minutos O Odoo lança a tarefa. A primeira coisa que faz é verificar que quem a executa é administrador do sistema; se não for, pode parar com
Only an administrator can run this scheduled action.e não processa nada.
- Ao começar Procura os eventos de webhook que estão pendentes. Ordena-os do mais antigo para o mais recente segundo a data de receção (e, se coincidirem, por ordem de criação) e apanha no máximo 50 em cada passagem.
- Evento sem loja Se um evento não tem loja associada, a tarefa marca-o como falhado, indica-lhe a hora de processamento e uma mensagem de erro, e passa ao seguinte.
- Evento com loja A tarefa pede à loja que processe esse evento segundo o seu tema (mais abaixo, tema a tema). Se tudo correr bem, o evento fica como processado, com a sua hora de processamento, o resultado guardado e sem mensagem de erro. Depois de cada evento, a tarefa guarda as alterações na base de dados.
- Se o processamento falhar O evento fica como falhado, com a hora de processamento, o texto do erro e o resultado parcial (os contadores de encomendas, artigos e stock). A tarefa não pára: segue com o evento seguinte.
- Se falhar outra coisa Se uma exceção escapar ao processamento de um evento, a tarefa regista-a no registo do servidor, desfaz as alterações pendentes dessa volta e continua com os restantes.
- Ao acabar os eventos Procura encomendas Shopify que tenham uma ordem de vendas associada em rascunho ou enviada, cuja loja tenha ativada a confirmação automática de vendas e que não tenham a marca de ordem de vendas manual. Apanha-as das atualizadas mais recentemente para as mais antigas, até 50, e pede a sua confirmação; se esta parte falhar, o erro é registado e a tarefa não pára.
- Ao terminar Se alguma ordem de vendas tiver sido confirmada, o código deixa-o registado no registo do servidor. Se esta última parte falhar, o erro é registado e desfaz-se apenas esse passo: o que já foi guardado dos eventos mantém-se.
O que faz com cada evento segundo o seu tema
O tema do evento lê-se em maiúsculas e decide o que acontece:
APP_UNINSTALLED: a loja é desativada e esvaziam-se o seu token de acesso, o seu token de atualização e a data de validade do token.- Temas que começam por
ORDERS_: se a loja tem ativada a sincronização de encomendas por webhook, a tarefa passa a encomenda do evento ao processo de sincronização de encomendas e guarda no resultado quantas foram tratadas. - Temas que começam por
PRODUCTS_: se a loja tem ativada a sincronização de artigos por webhook, a tarefa passa o artigo do evento ao processo de sincronização de artigos e guarda no resultado quantos foram tratados. - Temas que começam por
INVENTORY_LEVELS: só se a loja tem ativada a sincronização de stock por webhook e, além disso, a sincronização de stock em geral, a tarefa passa a alteração de inventário ao processo que a aplica; se esse processo a confirmar, o resultado regista uma atualização de stock.
Um detalhe que importa: se o tema não for nenhum destes, ou se a definição correspondente da loja estiver desativada, a tarefa não passa nada a sincronizar, mas o evento fica na mesma como processado, com os contadores a zero. Um evento processado não significa, portanto, que se tenha mexido numa encomenda, num artigo ou no stock.
O que verificar se não faz nada
- A tarefa tem de estar ativa. Vem ativa ao instalar e corre todos os minutos.
- Quem a executa. Se for lançada por alguém que não é administrador do sistema, pode parar com
Only an administrator can run this scheduled action. - Só apanha eventos pendentes. Um evento marcado como falhado não volta a entrar nesta tarefa. Se houver muitos pendentes, em cada passagem processam-se os mais antigos, até 50, e os restantes esperam pelas seguintes.
- Resultado com contadores a zero. Acontece quando o tema do evento não é dos que a tarefa trata ou quando a loja não tem ativada a sincronização por webhook desse tipo (para stock, também a sincronização de stock em geral). O evento é marcado como processado sem passar nada a sincronizar.
- Loja desativada. Um evento
APP_UNINSTALLEDdesativa a loja e apaga os seus tokens. - Ordens de vendas que continuam em rascunho. A confirmação automática exige que a loja a tenha ativada, que a ordem de vendas esteja em rascunho ou enviada e que a encomenda Shopify não tenha a marca de ordem de vendas manual. Só verifica até 50 encomendas por passagem.
As lojas abrem-se a partir de Shopify › Configuração › Lojas (Shopify › Configuration › Stores). Para ver esse menu precisas da permissão Operador (Operator) no tramo Configuração (Configuration) e Visualizador (Viewer) no tramo Shopify.
Preço e ajuda
O módulo é de pagamento único por versão e precisa da subscrição do FlexigoTech Cloud, plano Conector: 49 €/mês ou 490 €/ano, sem IVA. Está publicado para Odoo 17, 18, 19 e 20. A ligação passa pelo FlexigoTech Cloud, que guarda cifradas as credenciais, vigia a sincronização e avisa por e-mail se falhar.
Se estás a implementar o Odoo com Shopify ou precisas de uma integração à medida, a FlexigoTech implementa o Odoo 17, 18, 19 e 20 e desenvolve conectores. Tens mais detalhe na página do módulo e na sua ficha do Odoo Apps.
Continue a ler
Verificado no código do conector (versão 17.0 e 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): data/ir_cron_data.xml
- Código do módulo: flexigobe_shopify_seller_connector 17.0 (437257e3): data/ir_cron_data.xml
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/shopify_instance.py
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (d7e627b4): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
