Gestion des rapports - Jasper
Jasper report - Généralités
Pour imprimer des documents dans Open-Prod, il faut tout d'abord paramétrer le masque de ces documents. Les masques se créent automatiquement en installant le module Données des rapports de base. Pour les rapports comptables, il faut installer le module Données des rapports de comptabilité en complément. Finaliser ensuite la configuration du serveur Jasper.
Formulaire des rapports Jasper
En-tête
L'en-tête contient les informations de base : le nom du rapport dans Open-Prod, le format du fichier qui sera généré (pdf, fichier Excel, Open Office, ...), et la séquence qui définira l'ordre de priorité si deux rapports sont lancés en même temps.
Onglet "Généralités"
Cadre Configuration
Cet onglet rassemble l'ensemble des éléments de base de configuration du rapport :
-
L'objet (table) auquel est relié le rapport
-
Report Unit : il doit contenir la même valeur que le fichier Jasper pour que la liaison fonctionne
-
Le nom du fichier Jasper présent sur le serveur Jasper
-
Le mode de traitement du fichier Jasper parmi les 3 possibilités : SQL, XML ou Rapport multiple
-
Contexte : option destinée aux développeurs
-
Lancer une fois pour tous les IDS : si l'option est cochée, le rapport n'est lancé qu'une seule fois, peu importe le nombre d'enregistrements saisis. Dans le cas contraire, le rapport est lancé une fois pour chaque enregistrement sélectionné.
Exemple : si l'option est décochée sur le rapport des factures de vente, en sélectionnant plusieurs factures de ventes à imprimer, on obtiendra un fichier PDF unique contenant toutes les factures. Si l'option est cochée, on n'obtiendra qu'une seule facture, celle du premier enregistrement de la sélection.
-
Le nom du serveur Jasper. Ce paramètre est essentiel car la connexion avec le serveur d'impression en dépend ;
-
Lien rapport : nom du fichier xml correspondant au rapport dans le système ;
-
Le paramétrage de la langue du rapport, lorsque celui-ci doit s'adapter aux différents éléments. La syntaxe est : o.lang ou o."champ objet".lang ;
-
Le nombre d'exemplaires à éditer. Par défaut, il est fixé à 1.
Dans le cas du rapport des factures, un champ spécifique Exemplaire de facture permet de définir le nombre d'exemplaires directement dans l'onglet Règlement (hérité de la fiche partenaire). Pour les autres rapports, c'est bien ici que l'on définit le nombre d'exemplaires imprimés.
Cadre Pièce jointe
Certains champs concernent la pièce jointe et l'aspect graphique du rapport :
-
Sauvegarder comme préfixe de pièce jointe : détermine le format du nom de la pièce jointe. Quelques exemples :
une syntaxe « object.name + [test] + object.partner_id.name » à l'impression de la vente SO013 à LDLC donnera un fichier nommé « SO013 test LDLC.pdf » -
L’image de fond apparaîtra en filigrane dans le rapport ;
-
L’option enregistrer PJ auto ajoute automatiquement le rapport en pièce jointe de l'objet lorsqu'elle est activée ;
-
L’option recharger depuis la pièce jointe permet de stocker le rapport lors de la première impression. Pour toute impression ultérieure, le rapport sera réimprimé à partir de l'original.
Cadre Divers
D'autres paramètres sont disponibles dans le cadre Divers :
-
L’option Ne pas afficher masque le rapport dans les actions d'impression ;
-
L’option Ne pas imprimer le rapport si le pdf est vide empêche l'impression d'un rapport vide si ce dernier ne contient aucun élément ;
-
L’option Rotation 180° applique une rotation d'un demi-tour au fichier dans le PDF, et correspond à un passage du mode portrait au mode paysage ou inversement ;
-
Le type d'imprimante permet de sélectionner celui souhaité pour l'impression parmi ceux existant dans le système.
Enfin, il est possible d'ajouter un domaine sur le rapport et une contrainte. Le domaine est une fonction qui ajoute des domaines au fichier pour permettre de les filtrer. Ainsi seuls les enregistrements dans ce domaine seront imprimés. Ce domaine peut être exprimé sous forme de SQL ou via le formalisme habituel des domaines. Si l'option Ajouter une contrainte est cochée, un champ permettra de renseigner cette dernière sous forme de requête SQL, et d'indiquer un message d'erreur dans le cas où elle n'est pas vérifiée.
Jasper report - Groupe et blocage
L'onglet Groupes permet d'ajouter l'ensemble des groupes d'utilisateurs autorisés à imprimer le rapport.
L'onglet Blocage permet quant à lui de définir les conditions d'impression du rapport. Celles-ci se gèrent à partir de trois champs :
-
Type de vérification : on distingue deux types :
-
Aucune : l'impression peut toujours être effectuée ;
-
Simplifié : active les deux champs suivants pour définir la vérification, qui renvoie un booléen
-
Le message de retour est le message d'erreur qui s'affichera si la condition n'est pas remplie (retour False) ;
-
Le champ Vérification simplifiée contient la requête en Python qui doit renvoyer True pour autoriser l'impression.
o.state in ('draft', 'open') : l'impression sera possible uniquement aux états Brouillon et Ouverte
Jasper report - Fusion des PDF
La fusion des PDF sert à rattacher un premier PDF à un second lors de l'impression de ce dernier.
La fusion est gérée depuis l'onglet « Fusion de PDF » des Jasperreports. La fusion peut s'effectuer avec autant de documents qu'on le souhaite
1ère possibilité : Fichier(s) à fusionner toujours identique(s)
Il suffit d'ajouter l'ensemble des documents dans la vue liste du cadre Éditions :
-
La séquence détermine l'ordre dans lequel les documents seront rajoutés au rapport
-
Le type définit la manière dont les documents seront rajoutés. Il est possible de les placer à la fin, au début, ou de les intercaler. Lorsque le type Intercaler est sélectionné, les pages du rapport et du PDF seront alternées une à une.
-
Le champ PDF reprend le nom du PDF à rajouter dans le rapport. Il s'agit soit d'un PDF remonté des pièces jointes utilisées dans Open-Prod, soit d'un document récupéré sur votre ordinateur.
-
La langue est un champ descriptif qui permet de venir définir la langue du PDF. En fonction de la langue du rapport, le PDF rajouté sera différent. On peut par exemple ajouter les conditions générales de vente dans plusieurs langues.
Cette fonction permettra par exemple d'attacher des conditions générales de vente à l'édition de la commande de vente.
2e possibilité : Fichier(s) à fusionner qui dépendent d'un paramètre
Le cadre Documents par référence va permettre d'aller récupérer des documents propres à l'enregistrement en question. Le fonctionnement est expliqué dans les modèles de mail où l'on retrouve ce même principe.
Cette fonction, en type champ, permettra par exemple de fusionner dans le rapport Ordre de fabrication à la fois le rapport Jasper OF ainsi que tous les autres documents rattachés à l'OF.
Cette fonction, en type SQL, permettra par exemple de fusionner dans le rapport Ordre de fabrication à la fois le rapport Jasper OF ainsi que tous les autres documents rattachés au produit de l'OF.
Jasper report - Textes additionnels
Il est également possible de rajouter des lignes de texte à faire apparaître sur tous les exemplaires d'un même rapport, depuis l'onglet Textes additionnels.
En ajoutant un élément à la liste, une fenêtre s'ouvre. Deux champs sont affichés :
-
La séquence permet de déterminer l'ordre des messages entre eux ;
-
La condition d'application est une requête en Python qui détermine lorsque le message doit s'afficher ou non, le cas échéant.
Le cadre Texte permet d'écrire le message à afficher. Le texte s'affichera en bas de page. Voir images ci-dessous.
Jasper report - paramètres et libellés
Les deux derniers onglets des Jasper Reports concernent les éléments que l'on souhaite afficher sur le rapport.
L'onglet Paramètres va permettre de chercher des informations qui ne sont pas accessibles via des requêtes. Pour information, un rapport est construit à partir de requêtes SQL qui viennent chercher les données dans la base de données. Cependant certaines informations ne sont pas présentes dans la base de données ou du moins pas accessibles à partir d'une requête SQL. Par exemple, il est impossible de connaître l'utilisateur qui imprimera le rapport. On va donc utiliser un paramètre pour obtenir cet information. Les principaux paramètres sont souvent liés à l'utilisateur courant, à la société courante, à des informations dynamiques en quelque sorte...
L'onglet Libellés permet de remplacer les noms des champs placés sur le rapport par des noms, dans la langue du rapport, plus compréhensibles (voir ci-contre image du bas). Un champ est l'intitulé auquel l'on vient ajouter la valeur de la donnée. Par exemple, PRODUCT_NAME est le champ que l'on vient traduire dans le rapport par « Produit » et la valeur de la donnée sera « Résistance 1K ». Le champ (en capitales) sera aussi présent tel quel sur le serveur Jasper. Il faut donc que les champs soient identiques dans Open-Prod et dans le serveur Jasper. Par convention, ces champs sont écrits en capitales d'imprimerie.
Configuration serveur Jasper
Pour imprimer des documents depuis Open-Prod, il est nécessaire d'utiliser un serveur Jasper. Ce serveur devra être renseigné dans la configuration des documents pour permettre l'impression.
Il faut donc configurer le lien entre l'ERP et le serveur Jasper, qui sont tous deux des machines virtuelles créées sur un même serveur physique (voir schéma ci-contre). Pour cela il faut installer le module Interfaçage JasperReport Server. La configuration s'effectue ensuite depuis le sous-menu Configuration > Jasper Report > Configuration JasperServer.
Cadre Connexion jasper
Le cadre Connexion Jasper regroupe les paramétrages de base :
-
La case Activé doit rester cochée pour que la liaison fonctionne ;
-
La séquence permet de définir l'ordre des connexions dans la liste, s'
-
L’hôte, c'est-à-dire l'adresse IP du serveur ;
-
Le port de connexion au serveur. Par défaut, et dans la grande majorité des cas, le port utilisé est le 8080. En cas de doute, confirmer auprès de l'administrateur système (ou de l’intégrateur) ;
-
L’identifiant et le mot de passe, qui sont configurés par défaut. Il est recommandé de ne pas les modifier ;
-
La version de serveur Jasper utilisée : les versions 5 et 7 sont prises en charge. En cas de doute sur la version utilisée, contacter l'intégrateur.
Selon la version sélectionnée, des paramétrages complémentaires s'afficheront : se reporter un paragraphe correspondant ci-dessous.
Serveur Jasper v5
Pour un serveur Jasper v5, il faut en plus configurer le dépôt, qui correspond au chemin de stockage. Ce champ est pré-paramétré, et il est recommandé de ne pas le modifier.
Une fois les informations paramétrées, cliquer sur Vérifier l'authentification en haut à gauche. L'État de vérification et d'identification s'affichera en bas.
Pour imprimer des rapports avec un serveur Jasper v5, la base Open-Prod doit se nommer « opendprodX », le « X » étant compris entre 1 et 9. En raison d'une limitation technique sous cette version, tout autre nom de base provoquera des erreurs à l'impression.
Serveur Jasper V7
Pour les serveurs en version V7.x.x, certaines requêtes nécessitent de passer un utilisateur et son mot de passe en paramètres. Cet utilisateur doit disposer des droits utilisateurs sur les différents modules.
Pour des questions de sécurité, il est recommandé de créer un utilisateur « jasper » avec un mot de passe spécifique à cette fonction.
Les champs spécifiques aux serveurs v7 s'affichent dans un cadre Connexion Open-Prod :
-
L’utilisateur jasper dans Open-Prod, et le mot de passe jasper dans Open-Prod qui seront passés en paramètres dans les requêtes si nécessaire ;
-
La base source Jasper. Par défaut, la valeur est « OpenProd » : elle ne doit pas être modifiée ;
-
Le port OPENPROD, dans lequel il faut indiquer le port de connexion utilisé sur la base Open-Prod.
Le cadre Configuration de l'import permet de définir les paramètres et libellés qui pourront être passés dans la requête au serveur Jasper :
-
Les paramètres et libellés dont le nom correspond aux Filtres seront personnalisables ;
-
Les paramètres et libellés dont le nom correspond aux exclusions ne seront pas acceptés : leur valeur sera récupérée directement dans la base.
L'illustration ci-contre montre le paramétrage défini par défaut :
-
Le serveur Jasper acceptera tous les paramètres commençant « OERP_ » compris dans la requête, à l'exception de ceux définis comme exclus.
Exemple : le paramètre OERP_company_name, qui correspond au nom de la société, fait partie des exclusions. Si une requête passe ce paramètre, le serveur l'exclura d'office et récupérera la valeur directement dans le champ correspondant ;
-
Le serveur Jasper acceptera tous les paramètres de libellés commençant par « I18N_ » car il n'y a pas d'exclusions.