Creation Module substitutions

Bonjour à tous,

je viens de migrer de la V9 a la V17, certains fonctions n’apparaissant pas dans ma migration, j’ai décidé de repartir avec une installation propre de la V17, en y intégrant mes sauvegardes SQL et Documents.

Sur la V9, j’avais modifier le fichier « /core/lib/functions.lib.php » et cela fonctionnait très bien, pour ne plus être embêter avec les mises à jour je souhaite créer un module pour intégrer mes variables dedans, mais je bloque.

je me suis servi du wiki : Développement module - Dolibarr ERP CRM Wiki
et de ce sujet : Ajouter variables de substitution dans email de facture réglée - #4 par Novasanco

Mon module est bien présent, je peux l’activer mais la variable n’est pas remplacer par sa valeur dans le mail.

Quelqu’un aurait une idée.

Merci

Bonjour

Il faudrait votre code pour les substitutions

Les substitutions apparassent dans les substitutions disponible?

Dans votre description de module cette variable est bien a 1 ‹ substitutions › => 1,

Et les substitutions sont bien dans core/substitutions/functions_monmodule.lib.php

Bonjour,

Il faudrait votre code pour les substitutions

fichier functions_myvariable.lib.php

<?php

function myvariable(&$substitutionarray,$langs,$object) {
        global $conf,$db;

        if(!is_null($object)) {
                include_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';

                $tmp=dol_getdate(dol_now(), true);
                $tmp2=dol_get_prev_day($tmp['mday'], $tmp['mon'], $tmp['year']);
                $tmp3=dol_get_prev_month($tmp['mon'], $tmp['year']);
                $tmp4=dol_get_next_day($tmp['mday'], $tmp['mon'], $tmp['year']);
                $tmp5=dol_get_next_month($tmp['mon'], $tmp['year']);
                $nextmon=$tmp4['month']+1;
                setlocale (LC_TIME, "fr_FR.utf8");


                $substitutionarray['__NEXT_MONTH_TEXT__'] = strftime('%B',strtotime($nextmon."/".$tmp['mday']."/".$tmp['year']));
        }
}

Les substitutions apparaissent dans les substitutions disponible?

non

Dans votre description de module cette variable est bien a 1 ‹ substitutions › => 1,

oui
fichier core/modules/modMyvariable.class.php

 $this->module_parts = array(
                        // Set this to 1 if module has its own trigger directory (core/triggers)
                        'triggers' => 0,
                        // Set this to 1 if module has its own login method file (core/login)
                        'login' => 0,
                        // Set this to 1 if module has its own substitution function file (core/substitutions)
                        'substitutions' => 1,

Et les substitutions sont bien dans core/substitutions/functions_monmodule.lib.php

oui

Bonjour,

A priori le nom de votre fonction n’est pas bon, ça devrait être :

myvariable_completesubstitutionarray

Ensuite faite attention aux majuscules dans les noms de modules…

Bonjour,

merci a tous, j’ai renommé ma fonction et enlever la majuscule sur le nom du fichier module. Ma variable est bien remplacé. Pour info je ne la vois pas dans la liste des variables possible, mais ce n’est pas ma priorité.

Encore merci à vous,

Xavier

Bonjour,

Sinon, il y a le module pages substitutions chez OpenDsi qui sert à ça…

Un simple email à info AT open-dsi DOT fr et on reviens vers vous.

Bon week end