Changes

Jump to navigation Jump to search
Ajout ODT conditions et lines substitution
Line 92: Line 92:  
Voici un exemple de ce que vous pourriez avoir dans votre traitement de texte:
 
Voici un exemple de ce que vous pourriez avoir dans votre traitement de texte:
 
[[File:Line for document generation.png|500px]]
 
[[File:Line for document generation.png|500px]]
 +
 +
=== Substitution conditionnelle ===
 +
 +
A partir de Dolibarr v3.3, vous pouvez utiliser des '''remplacements conditionnels''', ce qui en termes simples signifie que vous pouvez décider d'imprimer quelque chose si une variable est vraie, ou imprimer autre chose si elle est fausse (ou rien du tout) - et cela marche non seulement avec du texte, mais aussi toute structure plus complexe comme les tableaux et les images.
 +
 +
Exemple:
 +
<pre>
 +
[!-- IF {my_var} --]
 +
Print this text if {my_var} is true (can be any value but null/0/empty string)
 +
[!-- ELSE {my_var} --]
 +
Or print this if it's false (null/0/empty string)
 +
[!-- ENDIF {my_var} --]
 +
</pre>
 +
 +
Note: le tag ELSE est biensûr optionnel, vous pouvez sans problème juste utiliser un IF/ENDIF si vous préférez.
    
=== Autres tags personnalisés ===
 
=== Autres tags personnalisés ===
Line 126: Line 141:  
</source>
 
</source>
 
et que le module a été activé.
 
et que le module a été activé.
 +
 +
=== Autres tags personnalisées pour les lignes ===
 +
 +
Cette fonctionnalité est disponible depuis Dolibarr v3.3 (version de développement futur).
 +
 +
De manière similaire au chapitre précédent, vous devez définir une fonction de la même façon mais avec quelques différences:
 +
 +
* Créez ou modifiez le même fichier que précédemment (voir le chapitre précédent).
 +
* Voici les différences: dans le fichier, écrire une autre fonction avec presque le même nom mais avec '_lines' en suffixe, et également ajouter une nouvelle variable $lines:
 +
 +
<source lang="php">
 +
/** Function called to complete substitution array for lines (before generating on ODT, or a personalized email)
 +
* functions xxx_completesubstitutionarray_lines are called by make_substitutions() if file
 +
* is inside directory htdocs/core/substitutions
 +
*
 +
* @param array $substitutionarray Array with substitution key=>val
 +
* @param Translate $langs Output langs
 +
* @param Object $object Object to use to get values
 +
*              @param  Object          $line                  Current line being processed, use this object to get values
 +
* @return void The entry parameter $substitutionarray is modified
 +
*/
 +
function mymodule_completesubstitutionarray_lines(&$substitutionarray,$langs,$object,$line) {
 +
{
 +
  global $conf,$db;
 +
 +
  $myvalue='Put here calculated value to insert';
 +
  $substitutionarray['myowntag']=$myvalue;
 +
}
 +
</source>
 +
 +
Contrairement à la fonction précédente qui n'est jamais appelée qu'une seule fois, cette fonction sera appelée à chaque fois qu'une ligne de produit sera traitée, en vous donnant chaque fois un objet $line différent que vous pouvez traiter. Cela vous permet de faire des substitutions de tags différentes pour chaque produit.
    
== Enregistrer votre document ==
 
== Enregistrer votre document ==
 
Pour voir apparaitre votre modèle de document dans la liste des modèles disponibles, placer le dans le sous-répertoire adéquat qui se trouve dans le répertoire '''documents/doctemplates'''
 
Pour voir apparaitre votre modèle de document dans la liste des modèles disponibles, placer le dans le sous-répertoire adéquat qui se trouve dans le répertoire '''documents/doctemplates'''
439

edits

Navigation menu