[RESOLU]Ou renseigner l'emplacement d'un article ?

Bonjour à tous,

Après un petit moment d’ascence, je reprends mes tests sur l’affichage de l’emplacement de chaque produit sur le bon d’expédition ou sur n’importe quel document me permettant de préparer la commande.

J’ai bien créé un extrafield pour les produits dans lequel je peux renseigner l’emplacement, mais je n’arrive pas à l’afficher sur un expédition ou ailleurs.

J’ai lu quelque-part que le fait de créer le même extrafield sur un autre type de document (expédition dans mes essais) permettait de « lier » ces extrafileds et ainsi reporter leur valeur. Ca ne fonctionne pas… au lieux d’avoir un extrafiled par produit, dans le document d’expédition, j’ai juste un extrafiled pour le bon de livraison…

Avez-vous réussi à faire afficher l’emplacement d’un produit quelque part ? C’est quand même fou que cette fonction ne soit pas native. :unhappy:

— EDIT ----

J’ai tenté de suivre le wiki sur les extrafield mais aussi le tuto de Patas mais j’ai une erreur HTTP 500 lors de la génération du PDF. erreur qui disparaît si je supprime cette ligne :
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);

Wiki : https://wiki.dolibarr.org/index.php/Extrafields
Tuto: https://www.dolibarr.fr/media/kunena/attachments/12401/TutoAjoutextrafieldssurunelignedepdf_2016-04-13_2017-10-02-2.pdf

Bonjour :happy:
Il faut que sur l’expédition par exemple tu crée le meme attribut suplémentaire afin qu’il soit dupliqué correctement.

Bonjour,

C’est bien ce que j’ai fait, j’ai ensuite tenté de modifier le template PDF comme expliqué dans les deux liens de mon dernier post, mais la génération ne fonctionne plus avec ces modifs…

Copie colle ici un bout de code que l’on tente de te guider :wink:

En pj j’ai mis le fichier .php que je tente de modifier, ainsi qu’une capture de mes extrafields :wink:

Je suis en Dolibarr 6.0.5

Merci pour votre aide.

EDIT : J’ai mis le fichier en .txt car en .php il ne passe pas. Les images ne veulent pas suivre…

Pièces jointes :

Capture :

CaptureDoliCopier.png

CaptureDoli2Copier.png

(Depuis la capture j’ai bien mis la taille de la chaine à 10 sur le module produit)

Remplace:

array_options['emplacement'];

par :

array_options['options_emplacement'];

Je viens de faire la modif, mais j’ai toujours un HTTP 500 quand je clic sur « générer » le PDF.
L’erreur n’apparait pas si je commente la ligne :

remplace

$extrafields = new ExtraFields($db);

par

$extrafields = new ExtraFields($this->db);

Bon, déja il n’y a plus de message d’erreur maintenant ! Par contre le pdf est comme à la base, pas de mention de mon champ emplacement :confused:
Est-ce ma ligne qui affiche dans le pdf qui n’est pas çà la bonne place ? (il est à la ligne 453 actuellement)

EDIT ----

Je pense que j’ai aussi un soucis avec mes extrafields, lorsque je créé une commande, l’extrafield n’est pas récupéré (celui qui est renseigné au niveau du produit) et si je le rentre à la main, une fois validé, le champ est vide…

createExpeCopier.png

Je viens de trouver pourquoi lorsque j’entrais les emplacements à la main ca ne fonctionnait pas : il ne faut pas ajouter ces attributs en « unique » dans la config des extrafields.
Je peux donc maintenant les remplir à la main, ils sont bien conservés. Par contre ils devraient se remplir tout seul depuis mon produit et aussi s’afficher dans le PDF, mais là ca coince :huh:

EDIT ----

Je suis repartis d’un fichier d’origine, j’ai suivi le tuto de patas et en mixant avec les conseils de dolibarr95, les champs s’affichent, il faut juste que je trouve comment les placer correctement. (De base avec le tuto de patas, si on ne change pas les positions, les champs doivent être hors du pdf, car non visible.)

Merci à tous pour votre aide.
Dès que j’ai réussi à faire ce que je veux, je posterai le fichier pour que ça puisse servir aux autres :happy:

Par contre si quelqu’un sait pourquoi est-ce que ca ne va pas chercher la valeur de mon extrafield de mon produit, je suis preneur, car je ne trouve pas…

Pièces jointes :

Bonsoir
J’ai la même fonctionnalité et j’ai solutionné mes impressions de documents en utilisant des format ODT.
Sinon, je crois que dans la déclaration des extrafields, il faut que tous les paramètres soient identiques, mais là la taille est déclarée à 10 et 255.
A voir

Depuis la capture d’écran j’ai bien modifié pour que les 2 soit identique, mais ça n’a rien fait :unhappy:

Je viens de voir qu’il y a un type d’extrafield « lier à un objet », mais je n’ai pas compris comment cela fonctionnait. Ca ne serait pas ca dont j’aurais besoin pour lier les deux extrafield ?

Bonjour :happy:

en appliquant la logique suivante : l’emplacement est défini une seule fois au niveau de la fiche produit

dans la boucle qui traite toutes les lignes de commandes, il suffit de remplacer le code

					
$object->lines[$i]->fetch_optionals($object->lines[$i]->rowid);
$optionkeyname="emplacement";
$unityvalue = $extrafieldsline->showOutputField($optionkeyname, $object->lines[$i]->array_options['options_'.$optionkeyname]);

par

if ($object->lines[$i]->fk_product_type == 0 && $object->lines[$i]->fk_product)
	{
	$produit = new Product($db);
	$extrafields = new ExtraFields($db);
	$extralabels = $extrafields->fetch_name_optionals_label($produit->table_element);

	$produit->fetch($object->lines[$i]->fk_product);
	$produit->fetch_optionals($object->lines[$i]->fk_product,$extralabels);
	$unityvalue = $produit->array_options ['options_emplacement'];
	}

Bonne continuation

Bonjour,

Je viens d’essayer, mais cela me retourne une erreur HTTP 500 lorsque je génère le pdf, j’ai modifié les 2 $db en $this->db (je ne sais pas s’il fallait faire ça ou pas), je n’ai plus l’erreur, mais la valeur du champ ne s’affiche pas dans le PDF.

Ouuuuppsss ! :pinch:

Le champ s’affiche bien ! Comme j’ai fait des essais, j’avais supprimé le champ sur les produits puis recréé… sans penser à remplir le champ dans les articles ! Je viens donc de renseigner les champs et ca fonctionne bien, je retrouve bien la valeur dans le PDF.

Merci beaucoup :laugh:

:sunglasses:
Marque le sujet comme [Résolu] dans le titre :wink:

Pour ceux qui veulent le fichier final, il est en PJ de ce post.
Je précise que j’ai du utiliser un seul champ au niveau du produit et utiliser le code de « pcbleu », c’est la seule manière qui a fonctionné chez moi.

Une dernière question, car je n’ai pas bien compris comment fonctionnait la mise en page du pdf par php, est’il possible de créer une colonne « emplacement » ? car là mon champ est complètement à gauche, pas sur que ça passe à l’impression. Et cela ferait plus propre d’avoir une colonne dédiée.

Quelqu’un a t’il déja réussi à mettre des extrafield dans les templates ODT ? (ils sont plus simple à modifier qu’un fichier php qui génère un pdf…)

Merci à tous pour votre aide.

Pièces jointes :

Bonjour à tous,

J’ai beau chercher je ne comprend pas à quel endroit sont générer les colonnes. J’aimerai pouvoir rajouter une colonne « Emp. » afin de rajouter l’emplacement dedans.
Avez-vous une idée de comment faire ?

Merci,

Je viens de trouver !
La librairie qui génère les pdf est FPDF, cela permet déja de trouver la doc et un peu mieux comprendre ! http://www.fpdf.org/

En PJ le fichier pdf modifié, ce n’est surement pas très propre au niveau de la gestion des tailles de cellule, mais ca à le mérite de fonctionner dans mon cas ! :happy:

Pièces jointes :

1 « J'aime »