Skip to content

fix: use webhook variation data as fallback for importation queue#174

Open
luizabrancaglion wants to merge 1 commit into
ecomplus:masterfrom
luizabrancaglion:fix/tiny-variation-queue-fallback
Open

fix: use webhook variation data as fallback for importation queue#174
luizabrancaglion wants to merge 1 commit into
ecomplus:masterfrom
luizabrancaglion:fix/tiny-variation-queue-fallback

Conversation

@luizabrancaglion

Copy link
Copy Markdown

Problema

Após 413b1aa, o guard de variação e o POST estão corretos — mas variações novas adicionadas no Tiny nunca chegavam a ser vinculadas ao produto pai no E-Com Plus.

Causa raiz: O bloco de enfileiramento (linha 268) verificava produto.variacoes, que vem do /produto.obter.php. Esse endpoint nunca retorna o array variacoes para produtos pai — a condição era sempre false, nada era enfileirado, o scheduledSync não processava e a variação nunca era vinculada.

O payload do webhook já carrega a lista completa de variações em tinyProduct.variacoes (via spread de dados), no formato não-encapsulado [{codigo, grade, ...}].

Correção

Resolve _variacoesQueue preferindo o resultado do /produto.obter.php (encapsulado, quando presente) e usando tinyProduct.variacoes normalizado como fallback. O forEach e toda a lógica downstream permanecem iguais.

Fluxo completo após este PR

  1. Webhook Tiny dispara com produto pai + variações novas
  2. PATCH do produto pai (nome/SKU intactos) ✓
  3. SKUs das variações são enfileirados em __importation.skus com ;:parentId ← este fix
  4. scheduledSync processa cada SKU → guard de 413b1aa detecta product.sku !== produto.codigo → POST /products/:id/variations.json → variação vinculada ✓

Como testar

  1. No Tiny, abrir um produto pai existente no E-Com Plus e adicionar uma variação nova
  2. Salvar — webhook dispara
  3. Aguardar até 4 min (próximo ciclo do scheduledSync)
  4. Conferir no E-Com Plus que a variação aparece vinculada ao produto pai
  5. Nos logs: #<storeId> POST /products/.../variations.json <sku-variacao>

Nota: Variações adicionadas antes deste deploy não são recuperadas automaticamente. Para reimportar, basta reabrir e salvar o produto pai no Tiny.

🤖 Generated with Claude Code

/produto.obter.php never returns variacoes for parent products, so the
queuing condition was always false and new variations added in Tiny were
never enqueued for scheduledSync to process.

tinyProduct.variacoes (from the webhook dados spread) already carries
the full variation list in unwrapped format. Use it as fallback,
normalizing to the wrapped format the forEach expects.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant