O que vês e em que momento
Ao guardar a ficha de uma instância da Shopify, o Odoo pode interromper a gravação com este texto: O stock tem uma só origem: envie-o do Odoo para a Shopify ou obtenha-o da Shopify para o Odoo, não as duas coisas. (Stock has one master: push it from Odoo to Shopify or pull it from Shopify into Odoo, not both.). A ficha não é guardada, pelo que o que acabaste de alterar nela não fica gravado.
No Odoo 20.0, a ficha abre-se a partir do menu Vendas (Sales), depois Shopify, Control Center e Instances, por esta ordem. As duas caixas envolvidas estão no separador Operations, dentro do grupo Configurações de sincronização (Sync Settings): Sync Stock Enabled e Obter o stock da Shopify (Pull stock from Shopify). Segundo o código, ambas vêm desmarcadas por defeito.


Um caso para o ver
Exemplo Caso ilustrativo: a empresa e os seus dados são inventados para explicar o fluxo.
Imagina uma loja fictícia, Cerâmicas do Norte, que vende na Shopify e gere o inventário no Odoo. Quem administra a ligação tem marcada Sync Stock Enabled: o Odoo é a origem do stock e envia para a Shopify a sua quantidade em mão. Um dia pensa que, já agora, também quer que a Shopify lhe conte o que se passa na loja. Marca Obter o stock da Shopify e carrega em guardar. Aparece a mensagem e a ficha fica como estava.
A ligação continua intacta: o módulo impediu uma configuração com duas origens. O comentário do próprio código explica-o assim: com as duas ativas, o envio do Odoo para a Shopify e a leitura da Shopify para o Odoo escreveriam o mesmo número um por cima do outro.
O que deve aprender quem administra é que primeiro se decide quem manda no stock e depois se marca uma só caixa. Na loja do exemplo, se o Odoo continuar a ser a origem, desmarca-se a que traz o stock e guarda-se sem mais.
O que verifica exatamente o módulo
É uma verificação feita ao guardar, que se dispara quando muda qualquer uma das duas caixas. O módulo olha para as instâncias que estão a ser guardadas: se alguma tiver ao mesmo tempo ativadas Sync Stock Enabled e Obter o stock da Shopify, interrompe a ação com a mensagem. Nesse código não há mais nenhuma condição: nem o estado da ligação, nem a loja, nem o armazém.
A ajuda de cada caixa dá o significado de cada sentido:
Sync Stock Enabled: o Odoo é a origem do stock e a sua quantidade em mão é enviada para a Shopify. A ajuda acrescenta que não pode estar ativada ao mesmo tempo queObter o stock da Shopify.Obter o stock da Shopify: a Shopify é a origem do stock. Cada leitura fixa o stock em mão da localização principal da Shopify na localização do Odoo associada, com um ajuste de inventário, subtraindo o que o Odoo entregou e a Shopify ainda não cumpriu.
A ajuda da segunda caixa avisa ainda de que o stock em mão da Shopify inclui o que tem como danificado, em controlo de qualidade ou como stock de segurança, e que no Odoo é stock como o resto. Diz também que não pode estar ativada com outra loja que traga stock para a mesma localização do Odoo.
Como resolver
- Abre a instância a partir do menu de instâncias da Shopify (o caminho está mais acima).
- Vai ao separador
Operationse procura o grupoConfigurações de sincronização. - Decide quem é a origem do stock dessa loja. É uma decisão de negócio, não do módulo.
- Se a origem for o Odoo, deixa marcada
Sync Stock Enablede desmarcaObter o stock da Shopify. - Se a origem for a Shopify, deixa marcada
Obter o stock da Shopifye desmarcaSync Stock Enabled. - Guarda a ficha. Se só restar uma caixa marcada, esta verificação deixa de interromper a gravação.
Se escolheres que manda a Shopify, a ajuda da caixa diz que ativá-la não executa a leitura: é preciso ativar também a ação agendada de obtenção de stock que essa ajuda nomeia. Sobre a leitura de stock tens outro artigo: o botão Pull Stock, passo a passo.
O que verificar depois
- Que a ficha é guardada sem mensagem e que, no grupo
Configurações de sincronização, fica marcada apenas uma das duas caixas. - Se escolheste a Shopify como origem, que a ação agendada que a ajuda menciona está ativada.
- Se outra loja traz stock para a mesma localização do Odoo, que não coincidem duas lojas nessa localização: a ajuda assinala-o como outra restrição da caixa
Obter o stock da Shopify.
Com o Odoo em castelhano, o texto do erro é o de cima. Este esquema, feito com código a partir das traduções publicadas, mostra como se lê noutros idiomas:

Versões e custo
A mensagem está no código publicado dos quatro ramos (17.0, 18.0, 19.0 e 20.0). A condição, os campos e o menu descritos correspondem ao código do Odoo 20.0. O módulo está publicado no Odoo Apps para Odoo 17, 18, 19 e 20 por 9 € por versão do Odoo, pagamento único, sem IVA, e requer a subscrição do FlexigoTech Cloud: o plano Conector custa 49 €/mês ou 490 €/ano, sem IVA.
Como ajuda a FlexigoTech
Se estás a implementar o Odoo e ainda não tens claro quem deve ser a origem do stock entre a tua loja e o teu inventário, a FlexigoTech implementa o Odoo 17, 18, 19 e 20 e desenvolve conectores e integrações à medida. Convém tomar essa decisão antes de marcar qualquer caixa.
Uma caixa marcada, a outra não
A mensagem responde a uma regra do módulo que se verifica ao guardar. Deixa marcada apenas a caixa do sentido que escolheres e a ficha é guardada.
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_connector 20.0 (c7078cd8): models/shopify_instance.py
- Código do módulo: flexigobe_shopify_connector 20.0 (c7078cd8): models/fgt_cloud.py
- apps.odoo.com/apps/modules/20.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/17.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/18.0/flexigobe_shopify_connector
- apps.odoo.com/apps/modules/19.0/flexigobe_shopify_connector
- flexigotech.com/precios.html
- flexigotech.com/en/services.html
