Changes

Jump to navigation Jump to search

Créer un modèle de document ODT

2,521 bytes added, 8 years ago
Ajout ODT conditions et lines substitution
Voici un exemple de ce que vous pourriez avoir dans votre traitement de texte:
[[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 ===
</source>
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 ==
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