PS PrestaShop Intermédio

Sincronização multiloja: guia de instalação e configuração

Instalar, ligar duas lojas PrestaShop e configurar a sincronização do catálogo em modo push ou pull, com cron e gestão de conflitos.

Atualizado Versão do módulo 1.0.0

Este guia cobre a instalação do módulo Sincronização Multiloja, a ligação entre duas instalações PrestaShop e a configuração completa da sincronização do catálogo.

Pré-requisitos

  • Duas instalações PrestaShop 8.0 a 9.x (as bases de dados e os alojamentos podem ser distintos).
  • A extensão PHP cURL ativa na loja que comanda a sincronização.
  • O webservice ativo na loja remota, com uma chave de acesso dedicada.

O módulo instala-se apenas na loja que comanda a sincronização. A loja remota só precisa de ter o webservice ativo, sem qualquer módulo a instalar.

Instalação do módulo

  1. No back-office da loja que comanda, abra Módulos > Gestor de módulos.
  2. Clique em Carregar um módulo e envie o ficheiro dfmultisync.zip.
  3. Depois de instalado, o módulo acrescenta o menu Parâmetros avançados > DF Multi-Store Sync.

Ativar o webservice na loja remota

Na loja que deve ser ligada:

  1. Abra Parâmetros avançados > Webservice.
  2. Coloque Ativar o webservice do PrestaShop em Sim e grave.
  3. Clique em Adicionar uma nova chave de webservice, gere uma chave e conceda depois as permissões GET, POST, PUT e DELETE nos seguintes recursos: categories, products, images, combinations, stock_availables, specific_prices e languages.
  4. Grave e copie a chave gerada.

Sem as permissões DELETE em specific_prices, a sincronização dos preços específicos falha: o módulo substitui o conjunto remoto por eliminação e recriação.

Acrescentar um site remoto

  1. Vá a DF Multi-Store Sync > Sites remotos e depois a Adicionar um site remoto.
  2. Preencha um nome, o URL de raiz da loja remota (por exemplo, https://loja-b.exemplo.com) e a chave de webservice copiada antes.
  3. Grave e clique depois em Testar na lista, para verificar a ligação.

O botão Testar consulta realmente o webservice remoto. Se falhar, verifique o URL (com o protocolo https://), a chave, e se o webservice está mesmo ativo do lado remoto.

Criar um perfil de sincronização

Um perfil descreve o quê sincronizar, em que sentido e como arbitrar os conflitos.

Direção: push ou pull

  • Push: a loja atual é a origem e envia os seus dados para o site remoto.
  • Pull: o site remoto é a origem, e a loja atual recebe os dados dele.

Entidades

Selecione as entidades a sincronizar. São sempre tratadas por esta ordem, para respeitar as dependências: categorias → produtos → stock → preços específicos.

Opções

  • Sincronizar as imagens: em push, as novas imagens locais são enviadas; em pull, as imagens são descarregadas na criação do produto.
  • Sincronizar os preços específicos: disponível apenas em push.
  • Dimensão do lote: número de entidades tratadas por ciclo (1 a 25). Reduza-a se o servidor remoto for lento.

O módulo sincroniza o catálogo, não a configuração fiscal. Se as duas lojas servem países diferentes (por exemplo, Portugal e França), os grupos de impostos, as zonas e as transportadoras têm de ser configurados em cada uma: um produto sincronizado herda o grupo de impostos correspondente do lado de destino, e um preço enviado é sempre o preço sem IVA. Verifique num produto de teste que o preço com IVA apresentado ao cliente é o esperado antes de sincronizar todo o catálogo.

As categorias e os produtos são sincronizados nos idiomas presentes nas duas lojas. Se a loja remota não tiver o português instalado, os campos correspondentes ficam vazios do lado dela: instale e ative primeiro os mesmos idiomas nas duas instalações.

Estratégias de conflito

Surge um conflito quando as duas lojas alteraram a mesma ficha desde a última sincronização. Estão disponíveis quatro estratégias:

  • A origem ganha: a origem sobrepõe-se sistematicamente ao destino.
  • O destino ganha: as entidades em conflito são ignoradas.
  • A mais recente ganha: comparação das datas de alteração.
  • Manual: os conflitos entram numa fila para arbitragem.

A estratégia «a mais recente ganha» compara datas de alteração. Se as duas lojas estiverem em servidores com fusos horários diferentes, confirme que ambas estão em Europe/Lisbon, ou pelo menos que os relógios estão sincronizados: um desvio de uma hora pode fazer ganhar a versão errada.

Lançar uma primeira sincronização

  1. Abra o Painel do módulo.
  2. Na linha do perfil, clique em Executar agora.
  3. A sincronização é feita por lotes: a barra de progresso mostra em direto o número de entidades criadas, atualizadas, ignoradas, em conflito e com erro.

A sincronização trabalha dentro de um orçamento de tempo (25 segundos por predefinição) e retoma automaticamente onde parou. Num catálogo grande, encadeiam-se vários ciclos sem qualquer intervenção.

Automatizar com o cron

  1. Ative a opção Cron nos perfis em causa.
  2. Copie o URL de cron apresentado no painel (protegido por um token).
  3. Acrescente-o ao crontab do seu servidor, por exemplo a cada quinze minutos:
*/15 * * * * wget -q -O /dev/null "https://a-sua-loja.pt/module/dfmultisync/cron?token=O_SEU_TOKEN"

O token do URL de cron é confidencial: autoriza o acionamento das sincronizações. Não o partilhe nem o exponha publicamente.

Resolver os conflitos

Com a estratégia Manual, os conflitos acumulam-se no separador Conflitos. Em cada linha pendente:

  • Manter a local: força o envio (push) da versão local.
  • Manter a remota: força a receção (pull) da versão remota.
  • Ignorar: marca o conflito como tratado, sem transferir nada.

Registos e acompanhamento

O separador Registos conserva o histórico das operações (informação, aviso, erro), filtrável por nível e por data. Os registos são eliminados automaticamente ao fim de 30 dias.

Resolução de problemas

O teste de ligação falha

Confirme que o webservice está ativo do lado remoto, que a chave está correta e que o seu perfil de permissões cobre mesmo os recursos listados atrás. Certifique-se de que o URL inclui https://.

Alguns produtos são ignorados

O módulo emparelha os produtos e as combinações pela referência. Um produto sem referência, ou cuja referência difira entre as duas lojas, não pode ser emparelhado para o stock. Preencha referências coerentes.

Os preços específicos não são sincronizados

A sincronização dos preços específicos é apenas em push e exige a permissão DELETE em specific_prices do lado remoto.

A sincronização parece lenta

Reduza a dimensão do lote do perfil e deixe o cron encadear os ciclos. A primeira passagem é sempre a mais demorada; as seguintes só transferem as entidades efetivamente alteradas.

Esta página foi útil?

Ainda com dúvidas? Contacte o suporte