Modifier/ajouter des variables de substitution

Bonjour,

En voulant créer mes modèles de courrier je me suis rendu compte que pas mal de variables de substitution qui me paraissent utiles n’existent pas/plus. J’ai trouvé quelques anciens posts à ce sujet (https://www.dolibarr.fr/forum/t/variables-email-facture-ne-fonctionnent-plus-en-6/26208) mais je ne sais pas comment rajouter d’autres variables.
Les variables que je cherche à ajouter sont:

  • Référence de commande associée à une expédition (donc depuis la page expédition)
  • Date de création de la commande
  • Date de livraison prévue

Est-ce possible ? Et si oui, comment ?

Merci d’avance pour votre aide :slight_smile:

Vous pouvez voir ce sujet, ça devrais vous aider un peu

Bonjour,

Tout est expliqué ici : https://wiki.dolibarr.org/index.php/Personnaliser_le_message_d'envoi_de_mail

Bonjour,
@ksar : Je penses que @sforion cherche à ajouter des variables qui n’existent pas. Le système a été uniformisé et partagé par tous les modules depuis mon intervention en v7 ou v8. Mais il est encore possible de le faire en modifiant le code Dolibarr. Je ne ne souviens plus où c’est dans le code. Je vais certainement y regarder prochainement lors de mon passage en v11.
@+

Merci pour vos réponses. Oui, c’est ajouter des variables qui ne sont pas configurées que je cherche à faire, tout comme sur le poste que j’ai mentionné plus haut. Ce n’est donc plus possible de créer ces variables comme expliqué ici https://wiki.dolibarr.org/index.php/Personnaliser_le_message_d%27envoi_de_mail pour les versions 7 et antérieures ?

Bonjour,

en version 7 ou inférieur il fallait modifier le code.
C’est toujours possible de modifier le code en V12.
Tout ce mécanisme est fait dans la function

getCommonSubstitutionArray

du fichier

\htdocs\core\lib\functions.lib.php

Après il y a peut être d’autres moyens de faire, via les champs complémentaires calculés (extrafields)
Ou crée un module qui rajoute des substitutions : Créer un modèle de document ODT - Dolibarr ERP CRM Wiki

Merci pour votre réponse! Je me suis lancé sur cette piste et j’ai essayé de faire quelque chose et, malgré mes très maigres compétences en la matière, j’ai réussi à avoir la date de livraison prévue. Voici le code que j’ai ajouté à la fonction getCommonSubstitutionArray:

if (is_object($object) && $object->element == 'shipping')
	{
	$substitutionarray['__LIVRAISONDATE__'] = (is_object($object) ? date('d/m/Y', $object->date_delivery) : '');;
	}

Maintenant je n’ai aucune idée de comment récupéré le numéro de commande associé à une expédition… Avez-vous une piste ?

1 « J'aime »

Quelque aurait une idée de comment aller chercher les données d’un objet lié ? Par exemple, le numéro de commande associé à une livraison depuis la page de livraison ?

Bonjour,

Faites un var_dump de votre objet pour voir ce qu’il a dans le ventre.
recherchez un clé qui commence par fk_xxxxxx (fk_order peut-etre ?)
Une fois que vous aurez ça, vous pourrez recreer l’objet parent et appler la propriété qui vous intersse.

Par exemple, pour un produit vous pouvez faire comme ça :

					if ($object->lines[$i]->fk_product)
					{
						require_once (DOL_DOCUMENT_ROOT."/product/class/product.class.php");
						$product = new Product($this->db);
						$product->fetch($object->lines[$i]->fk_product);
                    }