View source | Discuss this page | Page history | Printable version   

Openbravo POS Reports and Charts Tutorial/fr

Contents

Introduction

Ce guide se réfère à la version Openbravo POS 2.10 et ultérieures. Il a pour but de montrer aux développeurs de Openbravo POS comment créer et gérer des rapports et comment les ajouter au menu de Openbravo POS.

Dans Openbravo 2.10 une nouvelle structure a été introduite pour les rapports qui facilite la création et la modification des rapports. Avec cette nouvelle structure les développeurs de Openbravo POS auront la possibilité d'ajouter et de modifier facilement de nouveaux rapports et graphiques sans avoir à modifier le code source.

Les rapports sont maintenant définis par des fichiers textes que les développeurs peuvent éditer avec leur éditeur de texte préféré ou par l'intermédiaire d'une interface graphique. Pour installer de nouveaux rapports il suffit de copier les fichiers de définition du rapport dans le dossier reports et créer une option de menu pour le rapport. Tous les rapports et graphiques de Openbravo POS ont été porté vers la nouvelle structure et de nouveaux rapports ont été crée.

L'architecture des rapports dans Openbravo POS

Les fichiers de rapport sont stockés dans le sous-dossier reports du dossier d'installation de Openbravo POS. A l'intérieur de ce dossier, les rapports peuvent être organisé en packages qui n'est rien d'autre qu'une structure arborescente. Par exemple les rapports inclus dans la distribution de base de Openbravo POS sont dans le paquet com.openbravo.reports c'est à dire le sous-dossier com/openbravo/reports/.

La définition d'un rapport dans Openbravo POS se compose de trois fichiers ou plus: le fichier de configuration, le fichier rapport et le fichier de localisation.

Le fichier de définition

Le fichier de définition est un fichier avec l'extension .bs et est décrit par le language de script BeanShell. Ce langage est très similaire à java ou javascript et vous n'aurez pas besoin de compétences spéciales pour définir un nouveau rapport Openbravo POS.

Voici le fichier products.bs qui décrit le Products list report (rapport sur la liste des produits)

bean = new com.openbravo.pos.reports.PanelReportBean();

bean.setTitleKey("Menu.Products");
bean.setReport("/com/openbravo/reports/products");
bean.setResourceBundle("com/openbravo/reports/products_messages");

bean.setSentence(
   "SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, " +
   "PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, " + 
   "(PRODUCTS.PRICESELL * (1 + TAXES.RATE)) AS PRICESELLTAX, " + 
   "TAXES.NAME AS TAXNAME, TAXES.RATE AS TAXRATE, PRODUCTS.CATEGORY, " + 
   "CATEGORIES.NAME AS CATEGORYNAME " +
   "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " + 
   "LEFT OUTER JOIN TAXES ON PRODUCTS.TAX = TAXES.ID " +
   "WHERE ?(QBF_FILTER) " +
   "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
bean.addParameter("PRODUCTS.NAME");
bean.addParameter("PRODUCTS.PRICEBUY");
bean.addParameter("PRODUCTS.PRICESELL");
bean.addParameter("PRODUCTS.CATEGORY");
bean.addParameter("PRODUCTS.CODE");
bean.addQBFFilter(new com.openbravo.pos.ticket.ProductFilter());

bean.addField("ID", com.openbravo.data.loader.Datas.STRING);
bean.addField("REFERENCE", com.openbravo.data.loader.Datas.STRING);
bean.addField("CODE", com.openbravo.data.loader.Datas.STRING);
bean.addField("NAME", com.openbravo.data.loader.Datas.STRING);
bean.addField("PRICEBUY", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("PRICESELL", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("PRICESELLTAX", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("TAXNAME", com.openbravo.data.loader.Datas.STRING);
bean.addField("TAXRATE", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("CATEGORY", com.openbravo.data.loader.Datas.STRING);
bean.addField("CATEGORYNAME", com.openbravo.data.loader.Datas.STRING);

Définition des objets bean du rapport

bean = new com.openbravo.pos.reports.PanelReportBean();

Cette ligne crée l'objet rapport. La variable nom doit être appelée bean parce que c'est ce nom qu'Openbravo POS utilisera comme définition du rapport, et l'objet crée est une instance de la classe com.openbravo.pos.reports.PanelReportBean c'est à dire la classe de base pour tous les rapports Openbravo POS. Vous n'avez pas besoin de modifier cette ligne dans les rapports que vous créez.

Propriétés du rapport

bean.setTitleKey("Menu.Products");
bean.setReport("/com/openbravo/reports/products");
bean.setResourceBundle("com/openbravo/reports/products_messages")

Ces lignes définissent le titre du rapport, le fichier JasperReports .jrxml et les propriétés du fichier de localisation. Pour définir le titre du rapport vous avez deux méthodes .setTitleKey() où le paramètre est une clé localisée dans les fichiers standard de localisation Openbravo POS et .setTitle() où le paramètre est juste le titre du rapport.

Le code

bean.setSentence(
   "SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, " +
   "PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, " + 
   "(PRODUCTS.PRICESELL * (1 + TAXES.RATE)) AS PRICESELLTAX, " + 
   "TAXES.NAME AS TAXNAME, TAXES.RATE AS TAXRATE, PRODUCTS.CATEGORY, " + 
   "CATEGORIES.NAME AS CATEGORYNAME " +
   "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " + 
   "LEFT OUTER JOIN TAXES ON PRODUCTS.TAX = TAXES.ID " +
   "WHERE ?(QBF_FILTER) " +
   "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");

Cette partie définie le code SQL utilisé par le rapport. Notez l'étiquette ?(QBF_FILTER) qui défini l'endroit où Openbravo POS incluras le filtre SQL généré avec les paramètres de déclaration du rapport.

Paramètres du rapport

bean.addParameter("PRODUCTS.NAME");
bean.addParameter("PRODUCTS.PRICEBUY");
bean.addParameter("PRODUCTS.PRICESELL");
bean.addParameter("PRODUCTS.CATEGORY");
bean.addParameter("PRODUCTS.CODE");
bean.addQBFFilter(new com.openbravo.pos.ticket.ProductFilter());

Ces lignes définissent les paramètres du rapport et la relation entre les champs SQL et l'interface présentée à l'utilisateur pour éditer les valeurs des paramètres.

Il y a plusieurs filtres QBF (Query by form) prédéfinis dans Openbravo POS et chaque filtre QBF requière un nombre fixe de paramètres. Vous pouvez combiner plus d'un filtre QBF. Vous devez seulement maintenir le même ordre dans les paramètres et dans les filtres. Voici un exemple de trois filtres QBF avec ses définitions de paramètres dans le bon ordre:

bean.addParameter("STOCKDIARY.DATENEW");
bean.addParameter("STOCKDIARY.DATENEW");
bean.addQBFFilter(new com.openbravo.pos.reports.JParamsDatesInterval());
bean.addParameter("LOCATIONS.ID");
bean.addQBFFilter(new com.openbravo.pos.reports.JParamsLocationWithFirst());
bean.addParameter("STOCKDIARY.REASON");
bean.addQBFFilter(new com.openbravo.pos.reports.JParamsReason());

Ce filtre est utilisé pour filtrer des produits et nécessite cinq paramètres de champs: le nom, le prix d'achat, le prix de vente, le code catégorie et le code barres du produit.

Ce filtre est utilisé pour définir une période de dates, il nécessite deux champs date.

Ces filtres sont utilisés pour sélectionner l'emplacement de l'entrepôt. Le champ emplacement est nécessaire. La différence entre les deux filtres est que avec JParamsLocation il est obligatoire de sélectionner l'emplacement de l'entrepôt et avec JParamsLocationWithFirst ce n'est pas nécessaire.

Ce filtre est utilisé pour sélectionner la raison d'un mouvement d'un entrepôt. Le champ raison est requis.

Ce filtre est utilisé pour sélectionner un client. Les champs code client et nom client sont requis.

C'est un filtre générique pour un champ. Il supporte trois constructeurs: JParamsText(String lable) qui défini l'étiquette du titre et filtre tout champ de caractères. JParamsText(String label, Formats format) qui défini l'étiquette du titre et le format utilisé pour afficher la valeur. JParamsText(String label, Formats format, Datas data) qui défini l'étiquette du titre, le format utilisé pour afficher la valeur et le champ de type données.

Les Formats suivants sont disponibles:

Formats.INT
Formats.DOUBLE
Formats.CURRENCY
Formats.PERCENT
Formats.DATE
Formats.TIME
Formats.TIMESTAMP
Formats.BOOLEAN
Formats.STRING

et les données Datas

Datas.INT
Datas.DOUBLE
Datas.TIMESTAMP
Datas.BOOLEAN
Datas.STRING

Les champs du rapport

bean.addField("ID", com.openbravo.data.loader.Datas.STRING);
bean.addField("REFERENCE", com.openbravo.data.loader.Datas.STRING);
bean.addField("CODE", com.openbravo.data.loader.Datas.STRING);
bean.addField("NAME", com.openbravo.data.loader.Datas.STRING);
bean.addField("PRICEBUY", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("PRICESELL", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("PRICESELLTAX", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("TAXNAME", com.openbravo.data.loader.Datas.STRING);
bean.addField("TAXRATE", com.openbravo.data.loader.Datas.DOUBLE);
bean.addField("CATEGORY", com.openbravo.data.loader.Datas.STRING);
bean.addField("CATEGORYNAME", com.openbravo.data.loader.Datas.STRING);

Ces lignes définissent les noms de champs du rapport, et les types de champs du rapport. Ces champs doivent correspondre aux champs retournés par SQL.

Les données Datas suivantes sont disponibles:

Datas.INT
Datas.DOUBLE
Datas.TIMESTAMP
Datas.BOOLEAN
Datas.STRING
Datas.BYTES
Datas.IMAGE
Datas.OBJECT
Datas.SERIALIZABLE
Datas.NULL

Le fichier rapport

Le fichier de rapport est un fichier avec l'extension .jrxml avec une syntaxe JasperReport. Vous pouvez créer et éditer les fichiers rapports avec votre éditeur de texte préféré mais il est plus facile d'utiliser un éditeur graphique tel que iReport.

Rapport Openbravo POS édité avec iReport

Localisation

Les fichiers de localisation sont passés au moteur du rapport et peuvent être utilisé comme cela:

$R{label.title}

Formatage des valeurs

Vous pouvez formater les valeurs en utilisant la classe Format de Openbravo POS. Par exemple:

com.openbravo.format.Formats.CURRENCY.formatValue($F{PRICESELLTAXDIFF})

Images incluses

Vous pouvez accéder aux images incluses dans Openbravo POS en utilisant la classe ImageUtil. Par exemple:

com.openbravo.data.loader.ImageUtils.readImageFromResource("/com/openbravo/images/poweredby.png")

Accès aux valeurs des paramètres

Toutes les valeurs des paramètres sont passées au rapport dans le paramètre ARGS comme un objet array.

Création de code barres

Vous pouvez créer des images de barre codes en utilisant les méthodes suivantes.

Pour les codes EAN-13 :

com.openbravo.pos.util.BarcodeImage.getBarcodeEAN13($F{CODE})

Pour les Code 128 :

com.openbravo.pos.util.BarcodeImage.getBarcodeCODE128($F{CODE})

Le fichier de localisation

Le fichier de localisation est un fichier de propriétés et utilise la même syntaxe et structure que le reste des fichiers de localisation dans Openbravo POS. Ici vous trouverez un guide sur la Localisation de Openbravo POS

Retrieved from "http://wiki.openbravo.com/wiki/Openbravo_POS_Reports_and_Charts_Tutorial/fr"

This page has been accessed 9,424 times. This page was last modified on 12 March 2009, at 20:27. Content is available under Creative Commons Attribution-ShareAlike 2.5 Spain License.