THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Import produit csv

(11-10-2015 20:18:44)


Bonjour,

Comment peut on envisager l'import de produits en csv ?

En modifiant les fichiers ProductStockImport.php ou ProductPricesImport.php ?

Ou alors en créant un module d'import ?

Merci

Offline

#2 Re: Import produit csv

(12-10-2015 08:49:00)


Bonjour,

Il n'y a effectivement pas moyen d'importer de produits actuellement. Un exemple de ce à quoi peu ressembler un CSV à importer est disponible dans monThelia/stup/import/products.csv
S'inspirer des fichiers ProductStockImport.php ou ProductPricesImport.php serait un bon départ pour un module d'import (module ou bien directement intégré aux outils d'ailleurs). Si jamais tu es motivé pour le faire, ta contribution sera plus que bienvenue smile

Offline

#3 Re: Import produit csv

(12-10-2015 14:04:35)


Bonjour,

Je vais avoir besoin de cette fonctionnalité très prochainement (fin Octobre maximum). Si celle-ci n'existe pas d'ici là, je la développerais et la mettrais à disposition.

J'en profite donc pour suivre cette discussion smile

Offline

#4 Re: Import produit csv

(12-10-2015 16:00:32)


Il y a malheureusement peu de chances qu'elle existe d'ici-là, on est une petite équipe et on est déjà bien chargés sad

C'est une masse de travail considérable cet import CSV, entre les produits, les déclinaisons, les traductions, les info SEO, les caractéristiques, etc. Si tu te sens quand même de l'attaquer, n'hésite pas à revenir ici en cas de besoin smile

Offline

#5 Re: Import produit csv

(12-10-2015 20:44:24)


Pour ma part, je n'aurais le temps de m'occuper de ça d'ici à fin octobre,
mais je peux commencer à regarder "à temps perdu".

Motivé c'est sur, mais de plus je ne sais même pas si j'ai les compétences pour le faire ...

Offline

#6 Re: Import produit csv

(13-10-2015 14:56:19)


En fait je n'ai pas vraiment le choix... smile Je vous tiendrais informés de l'avancée des travaux.

En revanche, il y a de fortes chances que mon travail ne serve que d'ébauche afin de dégrossir le travail étant donné que ça sera surtout orienté selon mon besoin direct.

Ce qui est prévu, en import :
- Caractéristiques
- Déclinaisons
- Gabarits
- Création automatique de rubriques/sous-rubriques
- Informations générales produits
- Valeurs de caractéristiques
- Valeurs de déclinaisons (stock, PU, PU promo, en promo, nouveauté)

Le tout se basera sur un ou plusieurs XML ou CSV.
Le(s) fichier(s) en entrée ne sont pas encore définis car cela dépend d'un logiciel de gestion de stock utilisé par mon client.

Je suis bien conscient du travail que cela représente, mais dans le cadre professionnel ce n'est qu'un problème de coûts smile

Offline

#7 Re: Import produit csv

(24-10-2015 09:01:57)


Bonjour,

Juste pour donner quelques nouvelles smile L'import avance bien, les fonctionnalités suivantes sont en place :
- Création de la structure du catalogue
- Création des marques
- Création des caractéristiques
- Création des déclinaisons
- Création des valeurs de déclinaisons et caractéristiques

Il reste donc :
- Création des gabarits (à voir en fonction du temps que je mettrais à faire le reste car je n'en ai personnellement pas besoin --> toujours le même gabarit)
- Création des produits
- Création des PSE

Un problème commence a émerger cependant, et si vous avez une solution simple je suis preneur : le temps de traitement... à l'heure actuelle, avec 5000 produits, on arrive au timeout php...
Sachant que ma fonction d'import est appelée de la même manière que la fonction d'import du stock

Je n'ai pas encore pris le temps de réfléchir à cette question donc la résolution de ce problème est peut être très simple smile

Merci !

Offline

#8 Re: Import produit csv

(24-10-2015 09:02:58)


Ah, j'oubliais de préciser, pour le format d'import, je pars sur un unique fichier CSV contenant l'ensemble des informations.

Offline

#9 Re: Import produit csv

(24-10-2015 09:04:58)


Si tu veux importer beaucoup de produits, procède par tranches de petite taille, comme le fait le module ImportT1.


OpenStudio Toulouse

Offline

#10 Re: Import produit csv

(24-10-2015 09:15:20)


Si j'ai bien compris son fonctionnement, le module découpe le nombre total en tranches et se rappel en communiquant l'index de départ ?

Offline

#11 Re: Import produit csv

(24-10-2015 14:58:40)


Voilà. Et il recharge la page à chaque itération pour traiter la tranche suivante


OpenStudio Toulouse

Offline

#12 Re: Import produit csv

(28-10-2015 15:52:54)


Bonjour,

Ma fonction d'import est opérationnelle, tout du moins elle s'exécute comme je le souhaite.

Je n'ai pas vraiment relu et optimisé le code donc il est fort probable que je réinvente la roue avec certaines méthodes mais si ce que j'ai fait peut avancer quelqu'un je peux partager ce travail sans problème.

En revanche, je ne sais pas comment je peux transmettre mon fichier et les modifications SQL effectuées ? Sachant que je n'ai pas développé de module mais je l'ai intégré directement dans mon core.

Pour ce qui est du temps de traitement et timeout, si quelqu'un se sent de m'aider à implanter la solution de Roadster31 ou même mieux, mettre en place un retour avec barre de progression, ça ne serait pas de refus car je vais manquer de temps pour le moment pour me pencher sur la question.

Offline

#13 Re: Import produit csv

(28-10-2015 16:07:24)


Sachant que je n'ai pas développé de module mais je l'ai intégré directement dans mon core.

C'est dommage. Nous ne pourrons pas utiliser ou améliorer ton travail dans ces conditions.

Sous forme de module, tu aurais pu le déposer sur Github, et le partager avec la communauté. En patchant Thelia, ce n'est pas envisageable.

Enfin, tu te coupes des mises à jour futures, à moins de reporter tes modifs à chaque mise à jour.


OpenStudio Toulouse

Offline

#14 Re: Import produit csv

(28-10-2015 16:11:50)


En effet, je pense le transformer en module lorsque j'aurais plus de temps à consacrer à ce projet.

Je le poserais sur Github à ce moment là alors, probablement d'ici 15 jours.

Offline

#15 Re: Import produit csv

(20-11-2015 15:31:07)


Bonjour,

Le système d'import en CSV est maintenant un module. Le traitement se fait par tranches de 50 lignes et je n'ai donc plus de problèmes pour un gros fichier (testé avec 1500 lignes).

Si cela intéresse quelqu'un, je peux le mettre à disposition. En revanche, je ne pourrais pas vraiment assurer son support par manque de temps.

Je n'ai aucune idée de comment je peux le partager donc si on peut éclairer ma lanterne... smile

Merci!

Offline

#16 Re: Import produit csv

(20-11-2015 16:08:44)


Merci !

Tu peux créer un dépôt GitHub, qui permettra à tout le monde d'accéder et de participer au développement du module.


OpenStudio Toulouse

Offline

#17 Re: Import produit csv

(20-11-2015 16:56:10)


Première fois que j'utilise GitHub donc je ne suis pas certain d'avoir procédé comme il faut mais voici le lien vers le dépôt créé :

https://github.com/webAravis/importCSV

Offline

#18 Re: Import produit csv

(20-11-2015 17:24:58)


Ça m'a l'ai très bien.

Un petit peu plus d'infos sur ce que fait le module et comment il fonctionne serait bienvenu.


OpenStudio Toulouse

Offline

#19 Re: Import produit csv

(20-11-2015 17:34:53)


Le readme sera mis à jour demain après-midi.

J'ai vu que tu utilisais les Event pour les créations et mises à jours dans l'importT1 et forcément je ne l'ai vu qu'une fois la plupart de mes fonctions écrites... Quel est l'avantage d'utiliser les Event plutôt que les Objets directement ?

Offline

#20 Re: Import produit csv

(20-11-2015 18:37:57)


Salut webAravis,

Tu peux greffer des actions sur chaque Event via un module.

Par exemple, les modules connectés à l'event "AFTER_CREATEPRODUCT", sont avertis de la création d'un nouveau produit et peuvent agir...

Offline

#21 Re: Import produit csv

(20-11-2015 18:42:38)


Salut Informatiqueprog,

Effectivement c'est intéressant, il faudra donc faire quelques modifications pour travailler avec les Events. D'après ce que j'ai vu, cela ne devrait pas représenter beaucoup de travail au final.

Offline

#22 Re: Import produit csv

(20-11-2015 18:44:32)


Utiliser les Events permet d'utiliser les services de Thelia au lieu de tout recoder. Tu es alors certain que toutes les opérations associées à la création d'un objet (produit, rubrique, etc.) sont effectuées. Ça permet aussi à ton code d'être compatible avec les versions futures.


OpenStudio Toulouse

Offline

#23 Re: Import produit csv

(03-12-2015 21:29:17)


Merci beaucoup Webaravis !!

Voulant tester le module depuis sa sortie je n'ai pu le faire que ce soir.

Juste pour info, il est compatible avec la 2.2.1, mais pas avec 2.1.5.

Sinon, j'ai voulu tester avec une seule ligne pour voir déjà et je me retrouve avec une erreur :

Fatal error: Class 'ImportCSV\Controller\Admin\FormValidationException' not found in ../../local/modules/ImportCSV/Controller/Admin/ImportCSVController.php on line 220

Last edited by vz777 (04-12-2015 14:35:47)

Offline

#24 Re: Import produit csv

(04-12-2015 08:28:08)


@VZ777 : Merci pour ce retour sur la compatibilité.

L'erreur que tu as rencontré est corrigée, tout du moins elle ne plante plus le module. En revanche, la gestion des erreurs se limite pour le moment à les intercepter et... c'est tout.

N'hésitez pas à ouvrir des issues ou même faire des PR ;-)

Offline

#25 Re: Import produit csv

(04-12-2015 14:35:04)


Salut Webaravis,
autre retour
peut être que je ne fait pas le csv comme il faut mais désormais j'obtiens :

Warning: array_combine(): Both parameters should have an equal number of elements in ../../core/lib/Thelia/Core/FileFormat/Formatting/Formatter/CSVFormatter.php on line 166

Catchable fatal error: Argument 1 passed to ImportCSV\Import\ImportCatalogue::checkMandatoryColumns() must be of the type array, boolean given, called in ../../local/modules/ImportCSV/Import/ImportCatalogue.php on line 150 and defined in /homepages/11/d490865426/htdocs/thelia_2.2.1.2/local/modules/ImportCSV/Import/ImportCatalogue.php on line 89

et sinon avec un fichier xml :
j'atteris sur la page d'erreur thelia et :
Le message d'erreur suivant a été trouvé : Index inconnu 0