8. Module ҃ditionӦ
Sommaire
- Module “Édition”
- Introduction
- Les états et lettres types
- Les listings
- Les étiquettes
- Composants
8.1. Introduction¶
Le framework openMairie permet d’effectuer des éditions au format PDF. Ce module est composé de trois éléments fonctionnels :
- les états et lettres types,
- les listings,
- les étiquettes.
8.2. Les états et lettres types¶
C’est la fonctionnalité la plus évoluée du module “Édition”, elle permet à l’utilisateur final de composer directement depuis l’interface du logiciel des éditions complexes au format PDF comme des factures, des courriers, des procès verbaux, … Il est possible d’insérer dans ces éditions : un logo, des sous-états, des champs de fusion.
8.2.1. Paramétrer des états¶
Il est conseillé d’utiliser l’assistant état du générateur.
Les paramètres sont les suivants
orientation portrait ou paysage
format="A4", A3
position et nom du logo
titre de l état
position et caractéristiques du titre
corps de l état
position et caractéristiques du corps
la requête SQL
les sous-états associés et les caractéristiques
Pour le corps et le titre, les zones entre crochets (exemple [nom]) sont les champs de fusion, sélectionnés par la requête SQL.
Ces champs de fusion peuvent être mis en majucule ou en minuscule selon les besoins grâce aux balises <MAJ></MAJ> et <min></min>.
EX. :
Requête SQL = SELECT nom as nom FROM A;
Cette phrase dans un PDF “Lorem [nom] dolor sit amet, <MAJ>[nom]</MAJ> adipiscing elit. Curabitur feugiat.” deviendra “Lorem nom dolor sit amet, NOM adipiscing elit. Curabitur feugiat.”
Les variables commençant par « & » sont celles définies dans dyn/varpdf.inc
(exemple &aujourdhui) et dans la table om_parametre.
obj/om_etat.class.php
core/obj/om_etat.class.php
gen/obj/om_etat.class.php
sql/pgsql/om_etat.form.inc.php
sql/pgsql/om_etat.inc.php
core/sql/pgsql/om_etat.form.inc.php
core/sql/pgsql/om_etat.inc.php
gen/sql/pgsql/om_etat.form.inc.php
gen/sql/pgsql/om_etat.inc.php
8.2.2. Paramétrer des lettres-type¶
Il est conseillé d’utiliser l’assistant lettre-type du générateur.
Les paramètres sont les suivants
orientation portrait ou paysage
format="A4", A3
position et nom du logo
titre de la lettre
position et caractéristiques du titre
corps de la lettre
position et caractéristiques du corps
la requête SQL
Pour le corps et le titre, les zones entre crochets sont les champs de fusion, sélectionnés par la requête.
Les variables commençant par « & » sont celles définies dans
dyn/varlettretypepdf.inc
(exemple &aujourdhui) et dans la table om_parametre.
obj/om_lettretype.class.php
core/obj/om_lettretype.class.php
gen/obj/om_lettretype.class.php
sql/pgsql/om_lettretype.form.inc.php
sql/pgsql/om_lettretype.inc.php
core/sql/pgsql/om_lettretype.form.inc.php
core/sql/pgsql/om_lettretype.inc.php
gen/sql/pgsql/om_lettretype.form.inc.php
gen/sql/pgsql/om_lettretype.inc.php
8.2.3. Actif, non actif¶
Les sous-etats sont liés a un ou plusieurs état.
Les états, sous-états, et lettre type peuvent être « actif » ou « non-actif ».
Par défaut sont pris en compte :
1 - l’édition « actif » de la collectivité
2 - l’édition « actif » de la multicollectivité
3 - l’édition « non-actif » de la multicollectivité
Les éditions d’une collectivité ayant le statut « non-actif » ne sont pas prises en compte.
8.2.4. Les requêtes¶
8.2.4.1. Description¶
Une requête peut être :
- de type SQL
- de type OBJET
8.2.4.1.1. SQL¶
Lorsqu’elle est de type SQL il s’agit d’un ordre SELECT dont les colonnes récupérées seront les champs de fusion. La clause WHERE permet de filtrer sur l’enregistrement adéquat. Prenons par exemple cette requête :
SELECT employe.nom as nom_employe FROM employe WHERE employe.id = &idx
Elle est liée à la lettre-type fiche_employe comportant le champ de fusion [nom_employe]. Pour générer l’édition depuis l’objet métier employe on appelle :
$pdf = $this->compute_pdf_output('lettretype', 'fiche_employe', null, $this->getVal($this->clePrimaire));
Note
Mettre à jour les colonnes de la requête SQL (om_requete.requete) oblige à corriger les champs de fusion (om_requete.merge_fields) afin de proposer une aide à la saisie cohérente lors de la rédaction d’une lettre-type.
8.2.4.1.2. OBJET¶
Dans le cas d’une requête objet les champs om_requete.requete et om_requete.merge_fields ne sont plus utilisés. Ce sont les méthodes de la classe dbForm get_values_merge_fields() et get_labels_merge_fields() qui retournent respectivement les champs de fusion et l’aide à la saisie. Pour reprendre l’exemple de la requête SQL, il faut dans ce cas spécifier la classe employe (om_requete.classe). Nous aurons automatiquement accès à tous ses champs. Les booléens sont transformés en oui/non, les dates sont formatées en jj/mm/aaaa et les libellés des clés étrangères sont récupérés.
Note
Si un employé est rattaché à une entreprise elle-même liée à une ville, alors définir la classe employe;entreprise;ville permettra de récupérer les champs de tous ces objets.
On peut également disposer de notre propre méthode (om_requete.methode) pour construire manuellement les champs de fusion. Celle-ci doit avoir un argument de type string. Il peut prendre la valeur de values ou labels selon où le framework y fait appel. Ainsi pour une requête objet dont on ne veut que le nom de l’employe il faut créer la méthode suivante :
public function get_only_name($type) {
switch ($type) {
case 'values':
//
$values = array();
$values['employe.nom'] = $this->getVal('nom');
return $values;
case 'labels':
//
$labels = array();
$labels['employe']['employe.nom'] = _("nom de l'employé");
return $labels;
}
}
Le tableau des labels a une dimension supplémentaire. Cela permet de catégoriser les champs de fusions proposés dans l’aide à la saisie (un tableau HTML par catégorie).
8.2.4.2. Modèle de données¶
CREATE TABLE om_requete
(
om_requete integer NOT NULL, -- Identifiant unique
code character varying(50) NOT NULL, -- Code de la requête
libelle character varying(100) NOT NULL, -- Libellé de la requête
description character varying(200), -- Description de la requête
requete text, -- Requête SQL
merge_fields text, -- Champs de fusion
type character varying(200) NOT NULL, -- Requête SQL ou objet ?
classe character varying(200), -- Nom de(s) la classe(s) contenant la méthode
methode character varying(200), -- Méthode (de la première classe si plusieurs définies) fournissant les champs de fusion. Si non spécifiée appel à une méthode générique
CONSTRAINT om_requete_pkey PRIMARY KEY (om_requete)
);
obj/om_requete.class.php
sql/pgsql/om_requete.form.inc.php
sql/pgsql/om_requete.inc.php
core/obj/om_requete.class.php
core/sql/pgsql/om_requete.form.inc.php
core/sql/pgsql/om_requete.inc.php
gen/obj/om_requete.class.php
gen/sql/pgsql/om_requete.form.inc.php
gen/sql/pgsql/om_requete.inc.php
8.2.5. Les sous-états¶
Il est conseillé d’utiliser l’assistant sous-etat du générateur.
Les paramètres sont les suivants
texte et caractéristique du Titre
Intervalle avant et après le tableau
Entête de tableau (nom de colonne)
caractéristique du tableau
caractéristique des cellules
total, moyenne, nombre
requête SQL
Pour le titre, les zones entre crochets sont les champs de fusion, sélectionnés par la requête.
Les variables commençant par « & » sont celles définies dans dyn/varpdf.inc
(exemple &aujourdhui) et dans la table om_parametre.
obj/om_sousetat.class.php
core/obj/om_sousetat.class.php
gen/obj/om_sousetat.class.php
sql/pgsql/om_sousetat.form.inc.php
sql/pgsql/om_sousetat.inc.php
core/sql/pgsql/om_sousetat.form.inc.php
core/sql/pgsql/om_sousetat.inc.php
gen/sql/pgsql/om_sousetat.form.inc.php
gen/sql/pgsql/om_sousetat.inc.php
8.2.7. Les variables de remplacement¶
Lorsque dans les zones de remplacement des éditions, une chaîne de caractère commençant par « & » est identifiée elle essaye d’être remplacée. Ces éléments sont nommées variables de remplacement. Elles peuvent provenir de trois sources différentes :
- les fichiers de configuration
../dyn/var*pdf.inc
, - les méthodes globales de la classe du fichier
../obj/om_dbform.class.php
, - la table de paramètres
om_parametre
.
8.2.7.3. La table de paramètres om_parametre
¶
prefixe_edition_substitution_vars
doit être définit.
8.2.8. Les logos¶
obj/om_logo.class.php
core/obj/om_logo.class.php
gen/obj/om_logo.class.php
sql/pgsql/om_logo.form.inc.php
sql/pgsql/om_logo.inc.php
core/sql/pgsql/om_logo.form.inc.php
core/sql/pgsql/om_logo.inc.php
gen/sql/pgsql/om_logo.form.inc.php
gen/sql/pgsql/om_logo.inc.php
8.2.9. L’éditeur WYSIWYG¶
Description de l’intégration de TinyMCE et des différents configurations.
8.2.10. Les anciens fichiers de paramétrage¶
Les fichiers de paramétrage ../sql/pgsql/<OBJ>.etat.inc.php
, ../sql/pgsql/<OBJ>.etat.inc
, ../sql/pgsql/<OBJ>.lettretype.inc.php
ou ../sql/pgsql/<OBJ>.lettretype.inc
sont les anciens fichiers de paramétrage des éditions. Ils ne peuvent plus être utilisé depuis la version 4.0 du framework.
Un système d’import est disponible dans le générateur pour transformer ces anciens fichiers de paramétrage en enregistremment selon le nouveau format de paramétrage.
8.2.11. La prévisualisation¶
Le bouton Prévisualiser permet, pour une lettre type ou un état, d’avoir un apercu du document qui sera généré. Les champs de fusion ne seront pas interprétés.
8.3. Les listings¶
8.3.2. Le fichier de paramétrage ../sql/pgsql/<OBJ>.pdf.inc.php
¶
Un état PDF peut être généré par le générateur (option).
Les paramètres sont les suivants
texte et caractéristique du Titre
Entête de tableau (nom de colonne)
caractéristique du tableau
caractéristique des cellules
total, moyenne, nombre
requête SQL
8.5. Composants¶
Les composants du framework qui s’occupent de la gestion des éditions sont :
OM_ROUTE_MODULE_EDITION
application::view_module_edition()
application::get_inst__om_edition()
core/om_edition.class.php
core/fpdf_etat.php
core/fpdf_etiquette.php
core/db_fpdf.php
Les librairies PHP sont :
php/fpdf/
php/tcpdf/