Dans le cadre de mon nouveau travail, je gère plusieurs Prestashop.
Nous avons procédé à une bascule de serveur et j’ai tout une série de problème qui arrivent.

Dans le cas présent un client ne pouvais plus valider son panier il tombait à chaque fois sur la traditionnelle page Oups, la page que vous recherchez n’existe pas.
En passant la boutique en mode debug je me suis rendu vite compte du problème.

object Address->address1 is not valid

En gros il y a une merde dans la base !!
Soit sur la partie adresse, soit sur la partie panier.

Pour avoir un peu plus d’informations, direction la base de données en utilisant cette requête:

SELECT * FROM #_cart AS C
LEFT JOIN #_address AS a ON C.id_address_delivery = A.id_address
WHERE A.id_address IS NULL AND id_customer = #

Le # est a remplacer par vos informations, id_customer est l’identifiant unique du client.

En identifiant les paniers ayant une valeur null pour le champ id_address vous avez quasi résolu le problème.
il vous suffit soit:

  • de supprimer le panier depuis l’administration (pas testé mais ça doit fonctionner),
  • supprimer le panier en SQL,

Et faire un update du panier avec une adresse existante ou nouvelle.

Pour ma part l’adresse contenait des caractères spéciaux, j’ai donc supprimé les adresses en SQL, demandé au client de renseigner à nouveaux ses coordonnées et fait un update massif des champs id_address_delevery et id_address_invoice de la table cart avec les nouveaux id_address.

UPDATE #_cart SET id_address_delevery = #newidAddressDelevery# , id_address_invoice = #newidAddressInvoice# WHERE id_customer = #id_customer#

ATTENTION, si vous ne savez pas ce que vous faite, ne faite pas c’est le genre de requête qui peut faire mal !