module importation CSV

je met a disposition un module qui est tout beta et peuvent peut etre aider certain.

Il permet d’importer :
- fournisseur
- clients
- categorie et sous categorie, et liaison avec les different tiers
- articles ( avec les photos ) + liaison avec categorie / sous categorie et fournisseur

pour les photos j’ai un ptit problème, quand je veux utiliser la class Product->add_photo(), il ne veut pas copier car dans fonction.lib.php la fonction utiliser est une fonction dedié a des photos poster.

A t-il une solution equivalante a add_photo mais qui utilise la fonction copy plutot ?

module_importcsv.zip (54.5 KB)

« pour les photos j’ai un ptit problème, quand je veux utiliser la class Product->add_photo(), il ne veut pas copier car dans fonction.lib.php la fonction utiliser est une fonction dedié a des photos poster. »
C’est Mystérieux!
Un peut plus de précision ou un exemple de code serait le bien venu.

oui, ca sera mieux :happy:

1) j’utilise la méthode add_photo(); du fichier /htdocs/product.class.php

extrait du code la méthode :


add_photo($sdir, $file, $maxWidth = 160, $maxHeight = 120)
	{

.........
			$originImage = $dir . $file['name'];

			// Cree fichier en taille origine
			$result=dol_move_uploaded_file($file['tmp_name'], $originImage, 1);
.................
	}		

Cette méthode utilise la fonction dol_move_uploaded_filefunction pour le déplacement de la photo

2) Cette fonction se trouve dans le fichier : /htdocs/lib/function.lib.php
code de la fonction dol_move_uploaded_file


function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
{
......

	// Move file
	//$return=move_uploaded_file($src_file, $file_name);
	$return=copy($src_file, $file_name);
.....
}

3) Cette fonction utilise la fonction move_uploaded_file que j’ai changer par copy et c’est la mon problème, c’est que cette fonction ne déplace uniquement que les fichiers venant de HTTP ou POST.

Explication de php.net

Hors pour l’import, moi les photos sont censé deja etre sur le serveur dans un repertoire.
Donc sa fonctionne avec la bidouille copy, mais c’est du code qui appartient a dolibarr.

Peut être une solution si tu ne veut pas modifié le code dolibarr,

1)Tu te créé une fonctoin add_photo($product,$sdir, $file, $maxWidth = 160, $maxHeight = 120) à la qu’elle tu ajoute un argument $product de type Product puis tu met le même code que la fonction add_photo() en remplacant les $this par $product

2)Tu te créé une fonction dol_move_uploaded_filefunction[b]2/b dans laquel tu met ton code modifié(ne pas oublié de la modifié le nom de la fonction dol_move_uploaded_filefunction()dans la nouvelle fonction add_photo())

3)Mettre les bons include()

1 « J'aime »

Oui très bonne idée, je pense qu’il y’a pas d’autre solutions.
Merci beaucoup :slight_smile: