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

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 »

Hello,

Merci à benjamin45 pour ces investigations qui vont faire gagner du temps à tous.
Pour ma part, plutôt que de modifier le template rouget, j’en ai fait une copie que j’ai appelé merlan et que j’ai activé dans la configuration.
Cela nous laissera le choix d’avoir ou pas les emplacements. Et des fois que rouget évolue…

Bonjour,

nous avons nous aussi un besoin de gestion de l’emplacement d’un produit dans le stock.

Nous utilisons plusieurs entrepôts, et la gestion des lots.

Notre version de Dolibarr est 5.0.7.

Au début nous avons ajouté le numéro d’emplacement dans le numéro de lot. Par exemple C2-xxxxxxx, xxxxxx étant le numéro de lot.
Cela permettait l’affichage sur les pages gérant les stocks (réception commande, envoi, modification de stock).

Par contre, il n’est pas possible de modifier le numéro de lot à l’écran, donc pas possible de « déménager » un lot sur un autre emplacement.

Nous avons ensuite créé une variable « location » dans les attributs complémentaires du module lot. Cette variable ne s’affiche ou ne s’édite que depuis la page du lot sous le menu produits, par contre il n’est pas facile d’y accéder directement.

Nous souhaiterions que cette variable « location » ou « emplacement » soit accessible depuis les pages liées à la gestion de stock, comme le sont les variables « lots » ou « date limite » etc.

Question 1 :
Je n’ai pas trouvé de module sous Dolistore traitant ce genre de problème, est-ce qu’il existe une solution simple pour le faire ?

Question 2 :
S’il n’existe pas de solution simple, est-ce qu’une modification relativement simple du code de products.php et dispatch.php permettrait de faire cet affichage ?

En vous remerciant d’avance.

Vincent