Jump to content

Caractéristiques importées qui disparaissent...


Recommended Posts

Bonjour,

 

Lorsque j'importe des produits par csv avec des caractéristiques personnalisées communes, et qu'ensuite je modifie l'un de ces produits importés les caractéristique communes disparaissent sur tous les autres produits importées.

 

Par exemple j'importe 7 produits par csv. Les produit 1, 2 et 3 ont tous des caractéristiques personnalisées différentes, les produite 4, 5, 6 et 7 ont les mêmes caractéristiques personnalisées.

Après l'import tous est OK, chaque produit à bien ces caractéristiques d'importées ! Mais si j'édite par exemple le produit 7 et que j'enregistre, les produit 1, 2, 3, 4, 5 et 6 vont perdent les caractéristiques personnalisées communes avec le produit 7. Par contre si les caractéristiques communes ne sont pas personnalisées elles ne seront pas perdues.

 

J'ai un peu regardé le code et j'ai l'impression que lors de l'import les caractéristiques personnalisées communes sont entrées qu'une seule fois dans bdd et que l'id est attribué à chaque produit. En suite quand on modifie un produit toutes les caractéristiques de ce produit sont effacées de la bdd pour être récrites avec de nouveaux id. Mais durant la procédure d'effacement la fonction ne vérifie pas si l'id est utilisé par un autre produit. Et donc on perd tous. Mais peut être que je me trompe…

 

J'ai ouvert un ticket sur la forge le 20/02/2013 et aujourd'hui mon ticket n'est tjs pas assigné :( .(PSCFV-7907)

J'ai contacté par e-mail Damien METZGER qui m'a dit qu'une personne devait s'occuper des problèmes d'import csv au début du mois d'avril.

 

Aujourd'hui je suis complètement bloqué car mon site est en production avec 1200 produits (importé avec une version 1.4.8.2) mais j'en ai plus de 5000 à importer et avec ce bug je mets un temps fou.

 

J'ai déjà rencontré ce bug avec une vieille version (1.4.2.5 si je ne dis pas de bêtise) puis par la suite ça a été corrigé mais je ne me souviens plus avec quelle version. Et j'ai retrouvé ce bug sur les versions 1.5.3.1 et 1.5.4.0.

 

J'ai testé sur plusieurs sites (mise à jour et nouveau site) et plusieurs serveurs différents et je retrouve tjs ce problème.

 

J'espère que quelqu'un va m'aider car là je suis vraiment bloqué et je ne sais pas comment faire :( .

 

Merci.

 

@+

Edited by Mukatai (see edit history)
Link to comment
Share on other sites

Hello,

 

Désolé pour ce contre temps, pour l'instant ce ticket n'a pas pu être encore traité. Par contre un reporter a répondu "Hi, if custom value on ps_feature_value (custom) is set to 0, the problem is solved..." il veut dire je crois qu'il faut modifier des valeurs en base de données afin que ces valeurs de caractéristiques ne soient plus considérées comme "personnalisées". Tu connais les ids de tes caractéristiques ?

Link to comment
Share on other sites

Bonjour,

 

Tout d'abord merci pour votre aide.

 

Alors je viens de comprendre la solution du reporter mais ce n'est pas top car j'ai 6810 entrées dans la table ps_feature_value et je me vois mal toutes les passées de 1 à 0 pour la colonne custom. A moins que l'on puisse faire cela d'un seul coup.

 

Sinon j'ai continué à chercher et à comprendre le fonctionnement de l'import des caractéristiques et le problème est bien celui que je décrite plus haut. Donc lors de l'effacement d'une caractéristique (dans la fonction deleteFeatures() du fichier classes/Product.php) il faudrait une fonction qui vérifie si la caractéristique qui va être effacée n'est pas attribuée à une autre produit, et si c'est le cas ne pas l’effacer. Mais je ne sais pas faire une telle fonction.

 

Après j'ai trouvé une autre solution. C'est de ne pas entrer qu'une seule fois les caractéristiques communes à plusieurs produits dans la bdd. Et donc chaque caractéristiques communes à un id différent et ne sera donc pas effacées. Mais ça ne règle pas complétement le problème (contrairement à l'autre solution) car les caractéristiques communes importées précédemment seront effacé si on met à jour un des produits ayant des caractéristiques communes. De plus la base de données se remplira plus vite. Pour cette solution il suffit d'aller dans le fichier classes/FeatureValue.php et de supprimer ou mettre en commentaire les lignes 143, 144 et 157. Mais je ne conseil pas cette solution sauf si c'est une nouvelle installation.

 

Finalement le problème est assez simple mais je ne maitrise pas les fonctions getInstance()->executeS (je suis débutant en php) et donc je ne peux pas faire la fonction en question.

 

J'espère que quelqu'un va bientôt se pencher sur ce problème.

 

Merci.

 

@+

Link to comment
Share on other sites

 

 

Alors je viens de comprendre la solution du reporter mais ce n'est pas top car j'ai 6810 entrées dans la table ps_feature_value et je me vois mal toutes les passées de 1 à 0 pour la colonne custom. A moins que l'on puisse faire cela d'un seul coup.

 

 

 

En connaissant les id des caractéristiques, je pense qu'on peut faire une requête sql qui n'affecte que celles ci

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

Merci pour les infos. De mon coté j'ai résolu mon problème en suivant vos conseils. J'ai mis à O la colonne custom correspondant à l'id de la caractéristique (et j'en avais 1800). Voici la requête sql à exécuter:

 

UPDATE ps_feature_value SET custom='0' WHERE id_feature IN (6,7,9,10);

 

Où 6,7,9,10 sont les id de mes caractèristiques.

 

J'espère Mukatai que ça te sera utile.

 

Bon week-end.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...