Newsroom
Prestashop a une curieuse façon de gérer les transporteurs, ce qui fait que très vite les tables sont remplies pour rien. La suppression ne supprime pas vraiment, le champ deleted est à 1 bref.
Pour nettoyer tout ça, voici la procédure à suivre:
DELETE from `ldt_carrier` WHERE deleted=1
DELETE from `ldt_carrier_group` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_carrier_lang` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_carrier_shop` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_carrier_tax_rules_group_shop` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_carrier_zone` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_range_price` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_range_weight` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
DELETE from `ldt_delivery` WHERE id_carrier NOT IN (SELECT id_carrier FROM ldt_carrier);
Lorsqu'on a renseigné toutes nos tranches de poids pour un tarnsporteur, on a pas particulièrement envie de refaire le travail pour le 2ème voici donc comment copier les tranches d'un transporteur à l'autre:
INSERT INTO ldt_range_weight(
SELECT NULL , id_carrier_destination, delimiter1, delimiter2
FROM ldt_range_weight
WHERE id_carrier =id_carrier_source) ;
Commentaires 2
Merci pour ton article ! Même s'il date de début 2014, ça m'a permis d'identifier rapidement les tables gérant les prix de livraison affectées aux zones. Je complète donc avec quelques infos : pour Prestashop 1.6, si l'on souhaite exécuter des requêtes SQL afin de remplir en masse les frais de livraison des transporteurs en fonction des zones, les 2 tables principales sont ps_range_weight et ps_delivery. Il peut y en avoir d'autres pour des cas plus complexes. Merci et à bientôt !
Merci Alex,
J'ai pu solutionner un PB de tranches "qui se chevauchent" grâce à vous.