Jump to content

Patch import CSV


Lionel Guichard

Recommended Posts

Bonsoir à tous,

Après plusieurs heures de péripéties à essayer de faire fonctionner cet import CSV... Voici une solution pour ceux qui cherchent encore. Il y effectivement un bug majeur avec la langue par défaut du back office.

En effet par défault pour remplir les champs link_rewrite des tables le code utiliser l'id_lang à 1. Donc si votre langue courante du back office n'a pas un ID de 1 ça ne fonctionne pas...

Exemple ligne 618 du fichier AdminImport.php

Remplacer

if ((isset($product->link_rewrite) AND empty($product->link_rewrite)) OR !$valid_link)
               $product->link_rewrite = Tools::link_rewrite($product->name[1]);



par

if ((isset($product->link_rewrite) AND empty($product->link_rewrite)) OR !$valid_link)
               $product->link_rewrite = Tools::link_rewrite($product->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);



Il y a de nombreux endroits à modifier, je vous fournit le patch dès que possible.

Link to comment
Share on other sites

Je continue le débug de cet import CSV qui apporte pas mal de misères aux utilisateurs :)

Lorsque vous avez un CSV avec des lignes videos pour les caractéristiques d'un produit, vous avez un joli message d'erreur "Tentative de piratage", rassurez vous, vous n'êtes pas un hackeur ;)

Le problème vient de ce bout de code dans la fonction productImport() qui ne vérifie pas si le caractéristique est vide :

                foreach ($features AS $feature => $value)
               {
                   if (!strncmp($feature, '#F_', 3))
                   {
                       $feature_name = str_replace('#F_', '', $feature);
                       $id_feature = Feature::addFeatureImport(Tools::strtolower($feature_name));
                       $id_feature_value = FeatureValue::addFeatureValueImport($id_feature, $product->{$feature});
                       Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
                   }
               }



Remplacer par :

                foreach ($features AS $feature => $value)
               {
                   if (!strncmp($feature, '#F_', 3) AND !empty($value))
                   {
                       $feature_name = str_replace('#F_', '', $feature);
                       $id_feature = Feature::addFeatureImport(Tools::strtolower($feature_name));
                       $id_feature_value = FeatureValue::addFeatureValueImport($id_feature, $product->{$feature});
                       Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
                   }
               }

Link to comment
Share on other sites

Merci de ton aide !!!
Je galère depuis des semaines sur cette histoire de caractéristiques.

Cela fonctionne presque.... si tu as une caractéristique avec un accent ça plante.

Dans les imports de catagories il y a aussi un truc bizarre dans la gestion des "acces groupe". Les boites à cochées ne sont pas sur défaut et dont on ne peut pas accéder aux catégories...

Merci encore !

Link to comment
Share on other sites

Salut
Regarde tout de même dans le svn il y a déjà des modifications de faite.notamment pour les images.

Penses-tu dans tes modifications apporter un changement au sujet de la colonne "nom" , que lors d'un import si le nom existe déjà l'article soit modifié et non ajouté ?

Merci

Link to comment
Share on other sites

Il y a aussi le fait de ne pas pouvoir importer d'autres langues.
Si on avait un menu déroulant dans l'import pour choisir la langue en fonction des pref de la boutique...
Le catalogue c'est quand même le plus lourd pour une boutique.
J'ai 200 produits en Fr, UK, Ital et Jap... avec des 7 champs caractéristiques... c'est pas jouable à la main !.

Link to comment
Share on other sites

  • 1 month later...
Bonsoir à tous,

Après plusieurs heures de péripéties à essayer de faire fonctionner cet import CSV... Voici une solution pour ceux qui cherchent encore. Il y effectivement un bug majeur avec la langue par défaut du back office.

En effet par défault pour remplir les champs link_rewrite des tables le code utiliser l'id_lang à 1. Donc si votre langue courante du back office n'a pas un ID de 1 ça ne fonctionne pas...

Exemple ligne 618 du fichier AdminImport.php

Remplacer
if ((isset($product->link_rewrite) AND empty($product->link_rewrite)) OR !$valid_link)
               $product->link_rewrite = Tools::link_rewrite($product->name[1]);



par

if ((isset($product->link_rewrite) AND empty($product->link_rewrite)) OR !$valid_link)
               $product->link_rewrite = Tools::link_rewrite($product->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);



Il y a de nombreux endroits à modifier, je vous fournit le patch dès que possible.




i dont know frech at all but i wanna say is thank you so very very much.... you light up my day...
btw may i kiss you..... *smooooooch*
:lol: :kiss: :red:
Link to comment
Share on other sites

  • 3 months later...

Bonjour
As-tu terminé ton patch ?

J'ai un gros problème si j'ai un champs rempli sur la boutique et que j'importe un fichier pour ce champs je met "ne pas importer cette colonne" apres l'import le champs est vide :-S
Merci pour ton aide

Link to comment
Share on other sites

L'import ne fonctionne toujours pas sur la dernière version soi-disant stable

Depuis le passage à la 1.2,
pb d'installation et l'import des catégories OK mais impossible d'importer des produits

22 erreurs

ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut
ne peux être enregistré
Product->link_rewrite est vide pour la langue par défaut


Je ne sais plus quoi tenter !

Merci de votre aide

Link to comment
Share on other sites

Salut
Pour les produits ca fonctionne presque pour moi , sauf quelques détails le premier j'ai mis dans le rapport de bug je trouvais personne pour traduire :-S
Rapport de bug et ici avant

Pas de problème pour l'import d'image par csv si l'mage à comme format aaaaaa.jpg par contre si j'ai un espace genre
aa aaa.jpg ne s'importe pas voir ce poste

Link to comment
Share on other sites

Franchement, je trouve la plateforme Prestashop super et pourtant j'en ai essayé un paquet !

Malheureusement, je trouve qu'il existe encore beaucoup de bug...

je parlerai plutôt d'immaturité de la plateforme.

La mise à jour à carrément été impossible pour moi lors du passage à la 1.2.
trop de pb sur la BDD lors de la MAJ.

Et maintenant, impossible d'importer des produits avec un CSV basique.
à cause de " Product->link_rewrite"

Et rien sur le Forum !

Personne n'a jamais eu ce pb ?

Je doute quand même d'être le seul dans cette situation.

Merci de votre aide !

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...
Bonsoir à tous,

Après plusieurs heures de péripéties à essayer de faire fonctionner cet import CSV... Voici une solution pour ceux qui cherchent encore. Il y effectivement un bug majeur avec la langue par défaut du back office.

En effet par défault pour remplir les champs link_rewrite des tables le code utiliser l'id_lang à 1. Donc si votre langue courante du back office n'a pas un ID de 1 ça ne fonctionne pas...

Exemple ligne 618 du fichier AdminImport.php

Remplacer
if ((isset($product->link_rewrite) AND empty($product->link_rewrite)) OR !$valid_link)
               $product->link_rewrite = Tools::link_rewrite($product->name[1]);



par

if ((isset($product->link_rewrite) AND empty($product->link_rewrite)) OR !$valid_link)
               $product->link_rewrite = Tools::link_rewrite($product->name[intval(Configuration::get('PS_LANG_DEFAULT'))]);



Il y a de nombreux endroits à modifier, je vous fournit le patch dès que possible.




Sauf erreur de ma part, il me semble que les lignes en questions n'existent plus ou ont été fortement modifiées sous 1.2.5

L'erreur est toujours présente chez moi en tout cas :

2 erreurs

1. (ID ) ne peux être enregistré
2. Product->link_rewrite est vide pour la langue par défaut


Désactiver la réécriture d'URL n'y change rien (même en supprimant le .htacces), de même que passer l'anglais en tant que langue par défaut.
Au bout de plusieurs heures de divers tests, je ne vois pas vraiment vers quelle solution me tourner.

Il y a des gens pour qui l'importation fonctionne sans soucis sous 1.2.5 ?

Ou peut-être qu'il existe des solutions alternatives (genre un module d'importation) ?


Thanks.
Link to comment
Share on other sites

Re.

Après de bonnes tentatives plus tard, il semblerait que le souci vienne de moi en fin de compte.
Mon csv contenait un retour à la ligne au niveau d'une URL d'une image, ce qui a engendré toutes ces erreurs (yavait une ligne avec juste une url, pas de ";" ni le même nombre de champs qu'ailleurs.

Cependant, mailgré l'absence de messages d'erreur, rien n'a été importé... je poursuis les investigations ;-)


EDIT: En fait ça s'upload bien, mais pas dans la bonne catégorie. Ça ajoute la catégorie désirée comme ayant "accueil" comme parent. Donc après faut redéfinir le bon parent. C'est galère... mais c'est déjà ça!

Bien domage qu'il soit si compliqué d'importer. Je trouve Prestashop vraiment magnifique (je soutient totalement la philosophie open source); mais la gestion de plusieurs milliers d'article, ou de taches répétitives est bien lourde...
Avec le temps on arrivera à un truc quasi parfait! :-)

Link to comment
Share on other sites

Bonjour

Gloire à toi Lionel quand tu auras corriger cet import.

Tu seras le chouchou des utilisateurs de prestashop.
Aller je te fais un cadeau au choix : Une bouteille de champagne ou un clavier microsoft noir avec souris optique à queue :)
ou un disque dur 320 Go

Je vais attendre la fin avant de trifouiller dans les fichiers.

Link to comment
Share on other sites

  • 4 months later...

Bonjour,
Alors il m'est impossible d'uploader un fichier.csv j'obtiens le message "une erreur est survenue pendant le chargement et la copie du fichier": image1.
Voici une copie du fichier uploadé : image 2

J'ai donc mis le fichier.csv via FTP sous /maboutique/import (ouvert les droits au cas où...).

Ensuite
Je ne laisse que les champs suivants, les autres sont ignorés: image 3

Et voici le résultat: image 4

J'ai tout essayé, mais là je butte:
* j'ai réinstallé à plusieurs reprises la base,
* J'ai modifié le fichier toolbar.php car certains liens de l'admin appelaient une erreur en ouvrant "index.php" [résolu grâce au forum]

Questions:
Dois-je créér au préalable les catégories afin d'éviter ces erreurs ?
Y a t'il un moeyn plus simple d'uploader tout un catalogue de manière régulière pour la mise à jour des produits ?

Encore merci de votre aide précieuse;

Serveur OVH dédié
Version PHP Version 5.0.4
Version Apache/2.0.54 (Fedora)

Link to comment
Share on other sites

Bonjour

Est-ce que ce fichier csv est-il bien en utf8 ? avec point-virgule comme séparateur de colonne.
Il est créer avec quel logiciel?

Test : en effaçant la ligne incriminé ça donnent quoi ?
J'ai déjà eu la cas, j'ai effacer la ligne indiquer et le csv est passé !
Et au pire des cas il y a bientôt un million de post traitant du csv ;)

Link to comment
Share on other sites

Oui le .csv est bien en UTF8 généré avec OpenOffice et le ; pour la séparation des colonnes: image

Je ne comprends vraiment pas...

Merci beaucoup !

Bonjour

Est-ce que ce fichier csv est-il bien en utf8 ? avec point-virgule comme séparateur de colonne.
Il est créer avec quel logiciel?

Test : en effaçant la ligne incriminé ça donnent quoi ?
J'ai déjà eu la cas, j'ai effacer la ligne indiquer et le csv est passé !
Et au pire des cas il y a bientôt un million de post traitant du csv ;)
Link to comment
Share on other sites

Re

Montrer des images open-office où on ne vois pas la source c'est à dire les ; qui sépare les colonnes n'apportent aucune information, par contre des images le csv ouvert avec le bloc note c'est plus voyant.

Mais bon pas la peine d'en refaire.

Test : en effaçant la ligne incriminé ça donnent quoi ?
J’ai déjà eu la cas, j’ai effacer la ligne indiquer et le csv est passé !


Et ?
Link to comment
Share on other sites

Désolée, voici l'aperçu: image

Etpour le 'Et' toutes les lignes sont incriminées...je vous envoye les accès en MP.

MERCI !

Re

Montrer des images open-office où on ne vois pas la source c'est à dire les ; qui sépare les colonnes n'apportent aucune information, par contre des images le csv ouvert avec le bloc note c'est plus voyant.

Mais bon pas la peine d'en refaire.

Test : en effaçant la ligne incriminé ça donnent quoi ?
J’ai déjà eu la cas, j’ai effacer la ligne indiquer et le csv est passé !


Et ?
Link to comment
Share on other sites

Bon en gros sous bloc-note ça à l'air normal.

Si toute les lignes sont incriminées c'est le fichier qui doit pas être valide.

Merci de me le joindre en csv avec la ligne de dénomination des colonnes, que je le test en local en 1er lieux.

Link to comment
Share on other sites

Voici celui qui m'a été précédemment fourni sur le forum, j'ai suivi les recos du post de Patoch

Merci!

Bon en gros sous bloc-note ça à l'air normal.

Si toute les lignes sont incriminées c'est le fichier qui doit pas être valide.

Merci de me le joindre en csv avec la ligne de dénomination des colonnes, que je le test en local en 1er lieux.

fichier import du 31 03 2010 Version Nommam - Valide - 2eme.csv

Link to comment
Share on other sites

Re

Test des fichiers csv , tout fonctionne, toutes les données sont passés.
test en local sous wampserver, prestashop 1.3.0.2

Et en ne mettant pas les ID est-ce que ça fonctionnerait pas mieux et ce que je vois dans la version nomann c'est des chiffres pour les catégories ? ceci est valide si les catégories existe déjà et que les chiffres correspondant aux catégories.

Il n'est pas nécessaire de créer les catégories en avance, suffit au 1er csv dans cette catégorie de mettre le libellé de la catégorie. Et après relever leur ID

Link to comment
Share on other sites

Je viens de refaire: toujours 700 erreurs!
Meme en enlevant les chiffres des catégories...
Je vous envoie un MP avec les acces vous y verrez peut etre plus clair ?

Merci infiniement de votre aide,

Re

Test des fichiers csv , tout fonctionne, toutes les données sont passés.
test en local sous wampserver, prestashop 1.3.0.2

Et en ne mettant pas les ID est-ce que ça fonctionnerait pas mieux et ce que je vois dans la version nomann c'est des chiffres pour les catégories ? ceci est valide si les catégories existe déjà et que les chiffres correspondant aux catégories.

Il n'est pas nécessaire de créer les catégories en avance, suffit au 1er csv dans cette catégorie de mettre le libellé de la catégorie. Et après relever leur ID
Link to comment
Share on other sites

Bonjour, en effet le test en local avec wampserver est sous Windows prestashop 1.2.5.0

Je change de serveur OVH...et reviens vers vous pour vous dire.

Encore merci,


Re

Test des fichiers csv , tout fonctionne, toutes les données sont passés.
test en local sous wampserver, prestashop 1.3.0.2

Et en ne mettant pas les ID est-ce que ça fonctionnerait pas mieux et ce que je vois dans la version nomann c'est des chiffres pour les catégories ? ceci est valide si les catégories existe déjà et que les chiffres correspondant aux catégories.

Il n'est pas nécessaire de créer les catégories en avance, suffit au 1er csv dans cette catégorie de mettre le libellé de la catégorie. Et après relever leur ID
Link to comment
Share on other sites

  • 4 weeks later...

CHez 1&1;avec la version 1.2.5 et 84 erreurs. Pourtant le texte est en UTF8, et catégories même déjà créées ben ça ne marche pas. L'idée est vraiment très bien, mais si ça pouvait marcher se serait carrément mieux.

84x

#  (ID ) ne peux être enregistré
# Product->link_rewrite est vide pour la langue par défaut

Link to comment
Share on other sites

Bonjour

Dans les messages d'erreur c'est la 2eme ligne qui indique le probleme
Parcourir toute la ligne lettre par lettre, regarder s'il y a pas une balise ou un ; qui gênerai et corriger, les seules colonnes dans lequel on peut utiliser les balises html c'est description courte et description longue.

Pour les images si elles sont appeler dans le csv, vérifiez le lien tout seul dans le navigateur si l'image apparait c'est bon, l'erreur est ailleur, si l'image est introuvable revérifiez le lien et nom de l'image, attention le nom de l'image doit êrtre en 1 seule partie, pas d'espace dans les noms de l'image, pour distinguer, mettre un - ou _ entre les noms de l'image.

Link to comment
Share on other sites

  • 8 months later...

Merci Lionel pour le tuyau (je suis sur version 1.1.0.5)

> Modif ligne 618
> J'ai aussi modifié la ligne 257

       $separator = is_null(Tools::getValue('field_separator')) ? ',' : Tools::getValue('field_separator'); 



par

        $separator = ((is_null(Tools::getValue('multiple_value_separator')) OR trim(Tools::getValue('multiple_value_separator')) == '' ) ? ',' : Tools::getValue('multiple_value_separator'));

Link to comment
Share on other sites

  • 9 months later...

Salut à tous.

Perso j'ai tjs des soucis d'import sous Prestashop 1.3.7.

J'ai le message "

  1. 2001 : lodyssée de lespace ne peux être enregistré
  2. Product->name = 2001 : lodyssée de lespace pour la langue 1".

J'ai tout essayé mais je m'en sors pas.

Si je comprends bien c'est une histoire d'accents sur le nom de produit.

J'ai essayé avec des "é" ou des "é", en encondant en utf-8 avec Notepad++, mais j'ai tjs le meme prbl...

si vous avez des idées ou si y a un patch qui existe...

MErci !

 

Pat.

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...