Onde está o botão e quando é preciso carregar nele
Onde está o botão Enviar stock (Push Stock) e quando aparece?
Está na ficha da loja, no ecrã Instâncias Shopify (Shopify Instances). Chega-se lá pelo menu Shopify › Configuração › Lojas (Shopify › Configuration › Stores); para o ver são precisas as permissões que cada nível pede: Visualizador (Viewer) para Shopify e Operador (Operator) para Configuração. O botão não tem condição de visibilidade: vê-se na ficha nas versões 17, 18, 19 e 20 do Odoo. O funcionamento descrito a seguir é o do código do módulo no Odoo 20.0. Com o Odoo em castelhano o botão chama-se Enviar stock; em alemão, Bestand übertragen; em francês, Envoyer le stock; em italiano, Invia stock; em português, Enviar stock.


Tenho de carregar nele ou o Odoo envia o stock sozinho?
O caminho normal é automático: a tarefa agendada Enviar stock para o Shopify (Shopify Push Stock) chega a este mesmo envio a cada 20 minutos e está ativa desde a instalação. O botão é a exceção: serve para lançar o envio no momento, sem esperar pela tarefa. Quando termina, o campo Último envio de stock (Last Stock Push) fica com a data; vê-se na ficha e na lista de lojas, é só de leitura e é o código que o escreve, não tu. O botão Repor sincronização (Reset Sync) esvazia-o.
E o stock em sentido contrário, do Shopify para o Odoo?
É outra tarefa: Importar stock do Shopify (Shopify → Odoo) (Shopify Pull Stock (Shopify → Odoo)), a cada 6 horas e ativa ao instalar. O seu método só atua se estiver marcada a caixa Sincronização de stock ativada (Sync Stock Enabled), que está na ficha de Instâncias Shopify, separador Operações (Operations), grupo Configurações de sincronização (Sync Settings), e por defeito está desmarcada. O método do botão Enviar stock, tal como está escrito, não olha para essa caixa.

O que verifica e o que envia
Que artigos envia?
Para cada loja, o módulo procura os artigos ligados a ela que estão ativos e têm um artigo de inventário do Shopify atribuído. Depois descarta os de uma empresa diferente da da loja (Empresa, Company), mesmo que a ligação viesse de antes. Se não sobrar nenhum, não envia nada ao Shopify: apenas escreve a data em Último envio de stock e passa à loja seguinte.
Que quantidade envia: a que existe ou a disponível?
A livre: as existências menos o que já está reservado, calculada com a empresa da loja, arredondada para número inteiro e a zero se não houver valor. O motivo, segundo o próprio código: uma encomenda do Shopify confirmada no Odoo reserva a unidade, mas as existências só baixam quando a entrega é validada. Se se enviassem as existências, entre a venda online e a expedição o Shopify voltaria a ver essa unidade como disponível, e com a última unidade um segundo cliente poderia comprá-la. Mais sobre encomendas e guias de remessa em o que o módulo acrescenta às vendas e em o que acrescenta às guias de remessa.
Se enviar outra vez as mesmas quantidades, o Shopify ignora-as como duplicado?
Não. Cada execução do envio gera uma chave própria e varia-a em cada bloco, precisamente para que quantidades idênticas enviadas mais tarde não sejam tomadas por duplicado. O envio é feito em blocos de cem artigos no máximo. Em cada bloco fixa-se a quantidade disponível no Shopify tal como o Odoo a calcula, com o motivo de correção e sem a comparar com o que o Shopify tenha nesse momento.
O que muda e que erros pode dar
Que localização do Shopify usa e o que muda no Odoo?
Primeiro procura a localização: usa a que a loja já tem guardada e, se não houver nenhuma, pergunta ao Shopify, toma a primeira que devolve e guarda o seu identificador e o seu nome. No Odoo o que muda são datas: depois de enviar cada bloco, anota a data de sincronização de stock em cada artigo desse bloco e, no fim, escreve Último envio de stock na loja. Se um erro interromper a ação, a mensagem aparece e essa última data não é guardada.
Que mensagens de localização ou de ligação podem aparecer ao carregar no botão?
Estas. Nenhuma localização Shopify encontrada para … (No Shopify locations were found for …): a loja não tinha localização guardada e o Shopify não devolveu nenhuma; no lugar dos pontos vai o domínio da loja. O Shopify não devolveu um ID de localização válido. (Shopify did not return a valid location id.): o Shopify devolveu uma localização sem identificador. Estas duas de localização só podem ocorrer quando falta a localização guardada. Existe ainda Não há ligação Shopify para …. Abra o separador Connection e siga os passos de configuração. (Shopify is not connected for …. Open the Connection tab and follow the setup steps.): a loja continua sem token de acesso; no lugar dos pontos vai o nome da loja. Abre a sua ficha, separador Connection, e segue os passos de configuração.
E as mensagens da chamada ao Shopify?
Também aparecem ao carregar no botão. Chamada GraphQL Shopify falhou (…): … (Shopify GraphQL call failed (…): …) aparece quando o Shopify responde com um código de erro igual ou superior a 400; a mensagem traz esse código e o início da resposta. Antes de desistir, o módulo trata o 401 e o 429: perante um 401 tenta renovar o acesso e repete, se houver token de renovação ou credenciais de cliente; perante um 429 espera e repete, com até três tentativas numa chamada normal. Também podem aparecer GraphQL Shopify devolveu erros: … (Shopify GraphQL returned errors: …) e A chamada GraphQL Shopify esgotou as tentativas. (Shopify GraphQL call exhausted retries.). Em todas conserva o texto completo da mensagem: é o que precisa quem revê a ligação.
Se o montares com ajuda
A FlexigoTech implementa Odoo 17, 18, 19 e 20 e desenvolve conectores e integrações à medida. O módulo é de pagamento único por versão do Odoo (preço na sua ficha do Odoo Apps e na página do módulo) e precisa da subscrição FlexigoTech Cloud: plano Conector, 49 €/mês ou 490 €/ano sem IVA, até 3 contas da plataforma. Com essa ligação guardam-se cifradas as credenciais, vigia-se a sincronização e avisa-se por e-mail se falhar.
Se alguma destas mensagens não se resolver, escreve-nos com o texto completo e a versão do Odoo que usas.
Continue a ler
Verificado no código do conector (versão 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (2950bdc0): views/shopify_instance_views.xml
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/shopify_instance.py
- Código do módulo: flexigobe_shopify_seller_connector 20.0 (2950bdc0): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_seller_connector
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
