Changes

Jump to navigation Jump to search
m
Line 13: Line 13:  
Créer un modèle PDF requiert des connaissances en programmation PHP mais pas la création de modèles ODT.  
 
Créer un modèle PDF requiert des connaissances en programmation PHP mais pas la création de modèles ODT.  
   −
== Prérequis ==
+
==Prérequis==
* Dolibarr: 3.1+
+
 
* OpenOffice: 3.2+, LibreOffice, ...
+
*Dolibarr: 3.1+
 +
*OpenOffice: 3.2+, LibreOffice, ...
 +
 
 +
==Créer votre document==
 +
 
 +
*Créer un document OpenOffice ou LibreOffice en partant de rien ou en prenant un example fournis. Si vous partez d'un exemple, vous les trouverez installés dans les sous-répertoires du répertoire '''documents/doctemplates'''
 +
*Éditer le document en utilisant toutes les fonctions de votre suite bureautique.
   −
== Créer votre document ==
  −
* Créer un document OpenOffice ou LibreOffice en partant de rien ou en prenant un example fournis. Si vous partez d'un exemple, vous les trouverez installés dans les sous-répertoires du répertoire '''documents/doctemplates'''
  −
* Éditer le document en utilisant toutes les fonctions de votre suite bureautique.
   
Inclure dans votre documents les tags des informations que vous voulez voir. Les tags seront remplacés automatiquement au moment de la génération du document par Dolibarr. La liste des tags disponibles est décrite dans le chapitre suivant.
 
Inclure dans votre documents les tags des informations que vous voulez voir. Les tags seront remplacés automatiquement au moment de la génération du document par Dolibarr. La liste des tags disponibles est décrite dans le chapitre suivant.
    
[[File:warning.png]] Attention, les tags sont entourés de {} ou [] pour les tableaux ou conditions (voir plus loin) et doivent être tapés d'une traite sous la suite Office (sans retour arrière ou effacement, ni par copié-collé). Dans le cas contraire, la suite Office ajoutera des informations invisibles qui empêche le remplacement. Il est également possible d'utiliser les copier-coller en faisant un collage spécial sans formatage (CTRL+MAJ+V).
 
[[File:warning.png]] Attention, les tags sont entourés de {} ou [] pour les tableaux ou conditions (voir plus loin) et doivent être tapés d'une traite sous la suite Office (sans retour arrière ou effacement, ni par copié-collé). Dans le cas contraire, la suite Office ajoutera des informations invisibles qui empêche le remplacement. Il est également possible d'utiliser les copier-coller en faisant un collage spécial sans formatage (CTRL+MAJ+V).
   −
== Tags ==
+
==Tags==
 
Voici la liste des tags qui seront remplacés par les informations appropriées:
 
Voici la liste des tags qui seront remplacés par les informations appropriées:
   Line 38: Line 41:  
{{TagsOdtContact}}
 
{{TagsOdtContact}}
   −
=== Information utilisateur ===
+
===Information utilisateur===
 
{{TagsOdtUser}}
 
{{TagsOdtUser}}
   −
=== Autres informations ===
+
===Autres informations===
 
{{TagsOdtOther}}
 
{{TagsOdtOther}}
   Line 61: Line 64:  
[[File:Line for document generation.png|500px]]
 
[[File:Line for document generation.png|500px]]
   −
=== Substitution conditionnelle ===
+
===Substitution conditionnelle===
    
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 vrai, 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.
 
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 vrai, 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.
Line 77: Line 80:     
ATTENTION: le format de cette balise spéciale est très précis et pointilleux, faire attention à '''mettre un seul espace''' entre:
 
ATTENTION: le format de cette balise spéciale est très précis et pointilleux, faire attention à '''mettre un seul espace''' entre:
* [!--
  −
* IF/ELSE/ENDIF
  −
* {my var}
  −
* --]
     −
=== Autres tags personnalisés ===
+
*[!--
 +
*IF/ELSE/ENDIF
 +
*{my var}
 +
*--]
 +
 
 +
Exemple d'utilisation :
 +
 
 +
[!-- IF {line_product_label} --] {line_product_label} [!-- ELSE {line_product_label} --] {line_fulldesc} [!-- ENDIF {line_product_label} --]
 +
 
 +
===Autres tags personnalisés===
 
Si vous voulez ajouter un champ de substitution non prédéfini, il y a une solution:
 
Si vous voulez ajouter un champ de substitution non prédéfini, il y a une solution:
* Ajouter un fichier nommé '''htdocs/monmodule/core/substitutions/functions_mymodule.lib.php'''
+
 
* Dans ce fichier , écrivez juste une fonction du genre:
+
*Ajouter un fichier nommé '''htdocs/monmodule/core/substitutions/functions_mymodule.lib.php'''
 +
*Dans ce fichier , écrivez juste une fonction du genre:
 +
 
 
<source lang="php">
 
<source lang="php">
 
/** Function called to complete substitution array (before generating on ODT, or a personalized email)
 
/** Function called to complete substitution array (before generating on ODT, or a personalized email)
Line 111: Line 121:     
Pour que vote votre fonction de substitution soit bien appelée, il vous faut:
 
Pour que vote votre fonction de substitution soit bien appelée, il vous faut:
* Vérifier que votre fichier de substitution est bien stocké dans le répertoire '''htdocs/monmodule/core/substitutions'''
+
 
* Créer un module (Voir la page [[Développement module]]) avec son fichier descripteur de module.
+
*Vérifier que votre fichier de substitution est bien stocké dans le répertoire '''htdocs/monmodule/core/substitutions'''
* Vérifier que le fichier descripteur de module contient une entrée pour déclarer qu'il y a un fichier de substitution à appeler. Cette doit être  
+
*Créer un module (Voir la page [[Développement module]]) avec son fichier descripteur de module.
 +
*Vérifier que le fichier descripteur de module contient une entrée pour déclarer qu'il y a un fichier de substitution à appeler. Cette doit être
 +
 
 
<source lang="php">
 
<source lang="php">
 
$this->module_parts = array('substitutions' => 1)
 
$this->module_parts = array('substitutions' => 1)
 
</source>
 
</source>
* Activer le module (un module doit être activé et désactivé pour prendre en compte les changement dans son fichier descripteur)
     −
=== Autres tags personnalisées pour les lignes ===
+
*Activer le module (un module doit être activé et désactivé pour prendre en compte les changement dans son fichier descripteur)
 +
 
 +
===Autres tags personnalisées pour les lignes===
    
Cette fonctionnalité est disponible depuis Dolibarr v3.3 (version de développement futur).
 
Cette fonctionnalité est disponible depuis Dolibarr v3.3 (version de développement futur).
Line 125: Line 138:  
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:
 
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).
+
*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:
+
*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">
 
<source lang="php">
Line 150: Line 163:  
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.
 
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'''
1

edit

Navigation menu