Arquivar encomendas antigas no PrestaShop: um back office rápido sem perder faturas
Com os anos, as tabelas de encomendas crescem e o back office arrasta-se. Apagar não é opção, mas arquivar é. Explicamos o que se move, o que é preciso conservar e que precauções evitam estragar a numeração.
Abre «Encomendas» no back office e demora. Filtra por cliente e demora ainda mais. A loja vende há anos, e cada encomenda deixou linhas em cerca de vinte tabelas: linhas da encomenda, histórico de estados, pagamentos, faturas, transportes, mensagens, o carrinho de onde saiu. Nenhuma dessas linhas desaparece sozinha.
A tentação é apagar encomendas antigas. Não o faça: tem obrigações de conservação, e uma encomenda apagada à mão no PrestaShop deixa órfãos noutras tabelas. O que pode fazer é arquivar.
Porque fica lento
A listagem de encomendas do PrestaShop não consulta uma única tabela. Para desenhar cada linha junta a encomenda com o cliente, a morada, o país, o estado atual e a moeda, e para filtrar e ordenar tem de percorrer muitas linhas. Com dezenas ou centenas de milhares de encomendas, cada pesquisa trabalha sobre todo o histórico, mesmo que só queira ver as desta semana.
Afeta também outros ecrãs: a ficha do cliente, as estatísticas, alguns módulos que calculam dados sobre o histórico de encomendas e as exportações.
Arquivar não é apagar
Arquivar significa tirar as encomendas antigas das tabelas ativas e guardá-las completas noutras tabelas, de onde podem ser consultadas e, se for preciso, devolvidas. A diferença em relação a apagar é total:
- A encomenda continua a existir com todos os seus dados: linhas, montantes, impostos, faturas, notas de crédito, pagamentos e mensagens.
- Pode pesquisá-la e vê-la quando um cliente ou o seu contabilista a pedirem.
- Pode restaurá-la com o mesmo número se voltar a ser necessária no dia a dia.
A legislação comercial e fiscal obriga-o a conservar faturas e documentação durante anos. Arquivar é compatível com isso; apagar, não.
O que tem de viajar com cada encomenda
Uma encomenda no PrestaShop não é uma linha. Se mover apenas a tabela de encomendas, o resto fica pendurado. No mínimo têm de ir juntos:
- A encomenda e as suas linhas.
- O histórico de estados.
- Faturas, guias de remessa, pagamentos e notas de crédito.
- Devoluções e as suas linhas.
- Transportadora e seguimento.
- O carrinho de onde saiu e os seus produtos.
- As mensagens da encomenda.
E tem de ser feito como uma transação: ou se move a encomenda inteira, ou não se move nada. Um arquivamento que falha a meio e deixa meia encomenda de cada lado é pior do que não arquivar.
As armadilhas da numeração
Aqui está o pormenor que mais problemas dá. O PrestaShop calcula o número seguinte de encomenda, de fatura e de guia de remessa a partir dos que existem nas tabelas. Se arquivar precisamente a encomenda que tem o último número de fatura, o PrestaShop pode «não a ver» e repetir o número na fatura seguinte. Uma fatura duplicada é um problema fiscal sério.
Regras prudentes:
- Nunca arquivar a encomenda que tem o último número de encomenda, de fatura ou de guia de remessa.
- Impedir que uma encomenda nova receba o número de uma arquivada.
- Se usar séries ou numerações próprias com outro módulo, verifique numa cópia como calcula o número seguinte antes de arquivar.
Que encomendas arquivar
O critério habitual é a antiguidade, mas convém afiná-lo:
- Antiguidade mínima. Meio ano ou um ano é um ponto de partida razoável; depende do seu prazo de devoluções e de garantia.
- Estados. Só encomendas fechadas: entregues, canceladas, reembolsadas. Uma encomenda pendente de pagamento ou em devolução não se arquiva.
- Movimento recente. Se uma encomenda antiga teve uma mudança de estado há pouco tempo (uma nota de crédito tardia, uma garantia), é melhor esperar.
- Encomendas divididas. Se um carrinho gerou várias encomendas, arquivam-se todas juntas ou nenhuma.
O que muda para si e para o cliente
Uma encomenda arquivada sai das tabelas do núcleo, portanto:
- Deixa de contar nas estatísticas do núcleo do PrestaShop.
- Não aparece no histórico de «A minha conta» do cliente até a restaurar; convém avisá-lo com um texto de que as suas encomendas antigas estão arquivadas e que as pode pedir.
- Os módulos que calculam dados sobre o histórico (fidelização, segmentos, recomendações) deixam de a ver. Reveja quais usa.
Como fazê-lo com cabeça
- Cópia de segurança completa da base de dados antes do primeiro arquivamento.
- Simulação: conte os candidatos e as linhas que seriam movidas, sem mover nada.
- Lotes pequenos no início, e verifique a listagem do arquivo e um restauro.
- Automatize com uma tarefa agendada e um relatório por email de cada execução.
- Deixe a eliminação definitiva bloqueada. Se algum dia se apagar algo do arquivo, que exija desbloqueá-la de propósito e uma permissão específica.
Uma nota sobre versões: se a sua loja ainda está numa 1.7 inicial ou numa 1.6, o arquivamento alivia o back office, mas não substitui a atualização. O PrestaShop 8 e 9 com um PHP atual também rendem mais nas mesmas consultas. Se vai migrar, arquivar antes reduz o volume de dados que é preciso passar e testar.
Perguntas frequentes
Posso continuar a emitir uma nota de crédito de uma encomenda arquivada? Não diretamente: primeiro restaura-a, emite a nota de crédito normalmente e, se quiser, volta ao arquivo na passagem seguinte. Por isso convém que a antiguidade mínima ultrapasse o seu prazo de devoluções e de garantia.
Arquivar liberta espaço em disco? Move linhas de umas tabelas para outras, por isso o tamanho total da base de dados não baixa. O que melhora é a velocidade das consultas sobre as tabelas ativas. Otimizar as tabelas após cada execução ajuda a recuperar parte do espaço deixado pelos vazios.
E o meu contabilista, pode continuar a pedir faturas antigas? Sim. As faturas continuam guardadas com a encomenda arquivada e podem ser consultadas ou restauradas quando forem precisas.
Como resolvê-lo no PrestaShop
O RKR Order Archive tira as encomendas antigas das tabelas ativas e guarda-as completas, com as suas 20 tabelas (linhas, histórico, faturas, pagamentos, devoluções, notas de crédito, carrinho e mensagens), num arquivo com listagem, pesquisa e filtros. Escolhe a antiguidade, os estados, a loja, o montante mínimo e o tamanho de cada passagem, e pode excluir encomendas com movimento recente. Inclui modo de simulação, cron com token próprio, relatório por email e restauro exato com o mesmo número. Cada operação é uma transação, não arquiva a encomenda com o último número de fatura, guia de remessa ou encomenda, espera que as encomendas divididas possam ser arquivadas juntas e mantém a eliminação definitiva bloqueada por predefinição.