Sitolog
Inscrit le :
04/12/2011
Messages :
520
|
Publié :
31/03/2017 11:21:59
"Citer"
Bonjour,
Désolé pour cet article un peu technique mais voici un cas que je rencontre assez régulièrement, sur des bases de données mal migrées ou suite à l'utilisation d'un module annexe (Store Commander pour ne pas le citer).
La situation : lorsque l'on modifie dans PrestaPricing la quantité disponible à la vente d'une déclinaison, la nouvelle quantité n'est pas prise en compte, voir repasse à 0.
Explication : voici une capture d'écran de la table stock_available d'un site qui présente ce gros défaut. On voit ici les ligne correspondantes au produit 1307 :
Les flèches montrent que pour chaque déclinaison, on a deux lignes, ce qui est interdit.
Les parties en rouge sont erronées. Il faut une valeur soit dans la colonne id_shop, soit dans dans id_shop_group, mais pas les deux.
C’est ces incohérences qui font que les opérations de changement de quantité ne fonctionnent pas dans PrestaPricing
Note complémentaire, spécifique à ce site : on voit aussi que cette boutique (shop id = 1), fait partie d’un groupe portant le numéro 2. Or lors de l’installation d’un PrestaShop, la boutique par défaut N°1, fait partie du groupe par défaut N°1.
Donc ce groupe N°1 à été supprimé, un second créé, la boutique déplacée dedans…
Hypothèse : il est probable que ce soit lors de ces opérations que ces lignes en double ou fausses ont été crées.
Il faut faire le ménage:
-supprimer toutes les lignes, concernant les déclinaisons et contenant une valeur à la fois dans la colonne id_shop et dans la colonne id_shop_group.
-Pour la ligne concernant le product, mettre 0 dans id_shop_group
Je l’ai fait ici manuellement pour ce produit, pour l'exemple, mais ça doit être faisable globalement avec une requête SQL (faire une bonne sauvegarde avant) . Voici à quoi doivent ressembler ces lignes :
A noter que si la boutique fait partie d'un groupe de boutiques partageant les mêmes quantités, c'est le contraire qu'il faut faire, remplir la colonne id_shop_group avec le numéro du groupe et mettre 0 dans id_shop.
A partir de la, ça fonctionne correctement dans PrestaPricing
Crdlt
Franck
|