O detalhe do método que se segue é o do código do Odoo 20. O botão existe nas ramas 17, 18, 19 e 20, com a mesma condição de visibilidade.
Onde está e quando se vê
Onde está o botão Devolver ao stock e quando aparece?
Está na ficha de Reembolsos Shopify (Shopify Refunds), que se abre a partir de Vendas › Shopify › Operations › Reembolsos. A vista mostra-o apenas quando o campo Devolução ao stock (Stock Return) está em pendente, em revisão ou em falhado; com qualquer outro valor oculta-o. Com os valores por defeito não se vê, porque esse campo arranca num valor que não é nenhum desses. No Odoo em português o botão chama-se Devolver ao stock; o segundo esquema recolhe como se rotula noutros idiomas.


Devolver ao stock, em alemão Lager zurückgeben, em francês Retourner au stock, em italiano Restituisci al magazzino e em português Devolver ao stock.O que acontece se a devolução ao stock já estava feita?
O método verifica isso antes de mais nada. Se o campo estava em falhado mas a transferência de devolução já estava feita, deixa-o como feito e apaga o texto do erro. Se já estava feito e existe Transferência de devolução (Return Transfer), abre essa transferência; se não existe nenhuma, não faz mais nada.

O que verifica e o que cria
Como decide que produtos devolve?
Lê as linhas de reposição do reembolso, ou seja, o que o Shopify repôs em stock. Descarta as de quantidade zero ou menor. Para cada uma procura primeiro o produto pelo ID de variante do Shopify e, se não o encontrar, pelo SKU. As linhas que não se resolvem não entram na devolução e deixam um aviso no log. Se não sobrar nenhum produto, o método pára com a mensagem que verás mais abaixo.
O que faz se o reembolso tem um pedido de venda com entregas validadas?
Na ficha, o campo Pedido de venda (Sale Order) está no grupo Amounts. O código procura as entregas de saída desse pedido que já estão feitas. Se houver alguma, calcula o que falta devolver de cada produto: o que o Shopify repôs em todos os reembolsos desse pedido, menos o que já trouxeram de volta as devoluções não canceladas (também as que fez o próprio Odoo), e nunca mais do que foi entregue. A repartição vai da entrega mais antiga à mais recente, sem ultrapassar o que enviou cada uma menos o que já voltou dela.
Cria uma devolução validada por cada entrega afetada, pelo que podem ser várias. Quando a entrega tem o movimento desse produto, a devolução fica ligada a ele como uma devolução do próprio Odoo, de modo que a entrega a conta como devolvida.
Se não falta devolver nada, não cria nenhuma transferência: marca a devolução ao stock como feita, apaga o erro, deixa nas entregas que enviaram esses produtos a nota Reembolso Shopify …: não resta nada para devolver desta entrega, o Odoo já o devolveu. e abre a primeira delas.
E se não há pedido ou nenhuma entrega validada?
Então cria uma transferência de entrada manual, com origem na localização de clientes e destino na localização de stock do armazém. O armazém é o configurado na instância do Shopify ou, se não houver nenhum, o primeiro que encontrar da empresa da instância. Usa um tipo de operação de entrada desse armazém, põe em cada movimento a descrição Devolução: … com o nome do produto, confirma a transferência, reserva-a, dá como feita a quantidade pedida e valida-a.
O que muda quando termina bem?
A devolução ao stock fica como feita, o texto de erro é apagado e o campo Transferência de devolução, no grupo Amounts da ficha, aponta para a primeira transferência criada. Esse campo fica oculto enquanto está vazio e é preenchido pelo botão, não pelo utilizador. Todas as transferências têm como origem Reembolso Shopify … com o nome do reembolso (o campo Name, grupo Shopify).
O botão deixa notas nas transferências: em cada devolução, Stock devolvido do reembolso Shopify …. Transferência: … e, se vem de uma entrega, nessa entrega, Reembolso Shopify …: devolvido em …. No fim abre a primeira transferência de devolução.
Erros e o que fazer
O que faço com Nenhum produto para reabastecimento encontrado neste reembolso. Certifique-se que os produtos estão ligados por SKU ou ID de variante Shopify.?
É a mensagem (No restockable products found for this refund. Make sure products are linked by SKU or Shopify variant ID.) que o botão dá quando, depois de ler as linhas, não sobra nenhum produto: linhas com quantidade zero ou menor, ou produtos que nem o ID de variante nem o SKU localizam. Surge antes de criar o que quer que seja e não altera o campo Devolução ao stock. Verifica que os produtos do reembolso estão ligados no Odoo por SKU ou por ID de variante do Shopify, como pede a mensagem, e volta a carregar.
O que significa Falha ao criar devolução ao stock: …?
É a mensagem (Failed to create stock return: …) que surge quando algo falha enquanto o método procura entregas ou cria e valida as transferências. Depois dos dois pontos vai o texto do erro original, e é esse texto que diz o que corrigir. Antes de o mostrar, o método deixa Devolução ao stock em falhado e guarda o texto do erro. Como a condição da vista inclui o valor falhado, o botão continua visível depois de corrigida a causa.
Quanto custa e o que preciso para o usar?
O Shopify Connector custa 9 € por versão do Odoo, para 17, 18, 19 e 20, em pagamento único sem IVA (consulta a ficha do Odoo Apps). Além disso precisa da subscrição do FlexigoTech Cloud: o plano Conector custa 49 €/mês ou 490 €/ano sem IVA, com até 3 contas da plataforma. Se queres que o fluxo de devoluções se ajuste aos teus armazéns, a FlexigoTech implementa o Odoo e desenvolve conectores e integrações à medida.
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): views/shopify_refund_views.xml
- Código do módulo: flexigobe_shopify_connector 20.0 (c7078cd8): models/shopify_refund.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/en/services.html
- flexigotech.com/precios.html
