Créer un modèle de document ODT ou ODS: Difference between revisions

Jump to navigation Jump to search
m
no edit summary
mNo edit summary
Tag: 2017 source edit
mNo edit summary
Line 15: Line 15:
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.  


* ODT est le format de documents générés par LibreOffice Writer par exemple.
*ODT est le format de documents générés par LibreOffice Writer par exemple.
* ODS est le format de documents générés par LibreOffice Calc par exemple.
*ODS est le format de documents générés par LibreOffice Calc par exemple.
Vous pouvez utilisé l'un ou l'autre comme modèle de document dans Dolibarr...
 
Vous pouvez utiliser l'un ou l'autre comme modèle de document dans Dolibarr...


==Prérequis==
==Prérequis==
Line 44: Line 45:
===Contacts===
===Contacts===
Ce sont les balises pour :
Ce sont les balises pour :
* contact de facture pour les factures (type BILLING)
 
* contact d'appel d'offres (type CUSTOMER)
*contact de facture pour les factures (type BILLING)
* contact de commande pour les commandes de vente (type CUSTOMER)
*contact d'appel d'offres (type CUSTOMER)
*contact de commande pour les commandes de vente (type CUSTOMER)
 
Il n'y a pas de tags pour le contact de livraison et les autres objets ne peuvent utiliser ces tags non plus.
Il n'y a pas de tags pour le contact de livraison et les autres objets ne peuvent utiliser ces tags non plus.
{{TagsOdtContact}}
{{TagsOdtContact}}
Line 62: Line 65:


Pour la balise {object_total..._x}, s'il n'y a pas de montant pour le taux de tva x, la clé n'est pas remplacée. Vous pouvez donc utiliser la syntaxe de condition pour afficher 0 au lieu de la clé lorsque la valeur n'est pas définie :
Pour la balise {object_total..._x}, s'il n'y a pas de montant pour le taux de tva x, la clé n'est pas remplacée. Vous pouvez donc utiliser la syntaxe de condition pour afficher 0 au lieu de la clé lorsque la valeur n'est pas définie :
<syntaxHighlight lang="bash">
<syntaxhighlight lang="bash">
[!-- IF {object_total..._locale_x} --]
[!-- IF {object_total..._locale_x} --]
0
0
Line 68: Line 71:
{object_total_vat_locale_x}
{object_total_vat_locale_x}
[!-- ENDIF {object_total..._locale_x} --]
[!-- ENDIF {object_total..._locale_x} --]
</syntaxHighlight>
</syntaxhighlight>
[[File:Warning.png]] Pour être sûr que cette partie du code ne contient pas de texte caché (ajouté silencieusement par LibreOffice à des fins de gestion de version/suivi des changements), vous devez sélectionner toute la section de code, faire un clic droit et sélectionner la fonctionnalité "Supprimer le formatage direct" (ne pas faire cela peut rendre la section de code non opérationnelle).
[[File:Warning.png]] Pour être sûr que cette partie du code ne contient pas de texte caché (ajouté silencieusement par LibreOffice à des fins de gestion de version/suivi des changements), vous devez sélectionner toute la section de code, faire un clic droit et sélectionner la fonctionnalité "Supprimer le formatage direct" (ne pas faire cela peut rendre la section de code non opérationnelle).


Line 117: Line 120:
*Dans ce fichier , écrivez juste une fonction du genre:
*Dans ce fichier , écrivez juste une fonction du genre:


<syntaxHighlight lang="php">
<syntaxhighlight 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)
  * functions xxx_completesubstitutionarray are called by make_substitutions() if file
  * functions xxx_completesubstitutionarray are called by make_substitutions() if file
Line 134: Line 137:
   $substitutionarray['myowntag']=$myvalue;
   $substitutionarray['myowntag']=$myvalue;
}
}
</syntaxHighlight>
</syntaxhighlight>


La fonction sera appelée avant la génération du document afin de compléter le tableau des substitutions afin que le tag '''myowntag''' soit remplacé par la valeur définie dans '''$myvalue'''.
La fonction sera appelée avant la génération du document afin de compléter le tableau des substitutions afin que le tag '''myowntag''' soit remplacé par la valeur définie dans '''$myvalue'''.
Line 147: Line 150:
*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
*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


<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
$this->module_parts = array('substitutions' => 1)
$this->module_parts = array('substitutions' => 1)
</syntaxHighlight>
</syntaxhighlight>


*Activer le module (un module doit être activé et désactivé pour prendre en compte les changement dans son fichier descripteur)
*Activer le module (un module doit être activé et désactivé pour prendre en compte les changement dans son fichier descripteur)
Line 162: Line 165:
*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:


<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
/** Function called to complete substitution array for lines (before generating on ODT, or a personalized email)
/** 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
  * functions xxx_completesubstitutionarray_lines are called by make_substitutions() if file
Line 180: Line 183:
   $substitutionarray['myowntag']=$myvalue;
   $substitutionarray['myowntag']=$myvalue;
}
}
</syntaxHighlight>
</syntaxhighlight>


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.

Navigation menu