Openbravo POS Scripting Tutorial/fr
Languages: |
English | Français | Translate this article... |
Contents |
Introduction
Ce guide se réfère à la version Openbravo POS 2.10 et ultérieures. Dans cette version Openbravo POS a étendu les capacités de scripts disponibles dans les versions précédentes pour donner aux développeurs plus de pouvoir pour créer des règles et adapter Openbravo POS à leur règle de négoce et les règlementations des pays.
Les capacités de script de cette version offre les bénéfices suivants:
- Langage de script simple très similaire à Java et facile à apprendre.
- Pas besoin de compiler Openbravo POS. Vous avez seulement besoin du paquet binaire.
- Modèle objet puissant. Lorsque vous écrivez un script pour Openbravo POS vous avez accès à toutes les méthodes et propriétés des objets Openbravo POS, ainsi qu'à l'API de Java.
- Déploiement automatique vers tous les terminaux POS. Vous créez les fonctionnalités de script dans un terminal et tous les terminaux connectés à la même base de données vont automatiquement utiliser les fonctionnalités de script crées.
- Sécurité. L'exécution des scripts est basée sur les rôles. Vous pouvez autoriser ou bloquer l'exécution des scripts sur la base des rôles utilisateurs.
Exécution des scripts
Il y a deux moments distincts où le script est exécuté: Les boutons du panneau de ventes et les évènements du panneau de ventes. Tous les timings d'exécution sont définis dans la ressource Ticket.Buttons.
Boutons
Les boutons de scripts apparaissent en haut et alignés à droite du panneau de ventes et peuvent exécuter un modèle ou un script quand un utilisateur clique sur le bouton.
Un bouton est définie comme un nouveau noeud de type button crée dans la ressource Ticket.Buttons. Voici un exemple de deux boutons:
<button key="button.print" name="button.print" template="Printer.TicketPreview"/> <button key="button.discount" name="button.discount" code="Script.Discount"/>
Les attributs d'un bouton sont:
- key. Est une chaîne de caractères qui identifie exclusivement ce bouton. Cette clé doit être ajoutée à la liste de permissions dans la définition des rôles (dans le panneau Rôles) pour permettre aux utilisateurs d'exécuter ce bouton.
- name. Est la clé de l'étiquette affichée. Consultez le document localisation de Openbravo POS.
- image. Est le nom de l'image affichée sur le bouton. Par défaut c'est un point vert.
- template. Cet attribut définie le modèle de ressources à exécuter quand l'utilisateur clique sur le bouton. Cet attribut est utilisé pour imprimer les tickets clients ou afficher des messages sur l'afficheur client. Une utilisation typique est l'aperçu avant impression du ticket en cours ou l'ouverture du tiroir-caisse.
- code. Cet attribut définie le script de ressources à exécuter quand l'utilisateur clique sur le bouton. Ce code est utilisé pour créer des remises, modifier des taxes attribuées au ticket, éditer les lignes du ticket, imprimer les modèles... Vous ne pouvez avoir qu'un des deux attributs dans un bouton, template ou code.
Évènements
Les évènements sont des scripts exécutés quand une action est exécutée dans le panneau de ventes.
Un évènement est définie comme un nouveau nœud de type button crée dans la ressource Ticket.Buttons. Voici l'exemple d'un évènement exécuté quand une nouvelle ligne est ajoutée au ticket:
<event key="ticket.addline" code="event.addline"/>
Les attributs d'un évènement sont:
- key. Est la clé d'un évènement et définie le moment où Openbravo POS l'exécute. Il peut être : ticket.change, ticket.addline, ticket.removeline ou ticket.setline.
- code. Cet attribut définie le script de ressource à exécuter quand l'évènement est lancé.
- ticket.change. Cet évènement est lancé après modification des lignes d'un ticket dans le panneau de ventes.
- ticket.addline. Cet évènement est lancé avant qu'une nouvelle ligne soit ajoutée au ticket. Le code de script reçoit un objet supplémentaire line avec les détails de la ligne à insérer. Le code de script peut annuler l'ajout de la ligne en retournant une valeur distincte de null.
- ticket.setline. Cet évènement est lancé avant qu'une ligne soit modifiée dans le ticket. Le code de script reçoit deux objets supplémentaires line avec les détails de la ligne à modifier et index avec l'index de la ligne qui sera modifiée. Le code de script peut annuler la modification de la ligne en retournant une valeur distincte de null.
- ticket.removeline. Cet évènement est lancé avant la suppression d'une nouvelle ligne dans le ticket. Le code de script reçoit un objet supplémentaire index avec l'index de la ligne qui sera supprimée. Le code de script peut annuler la suppression de la ligne en retournant une valeur distincte de null.
Le modèle objet
Il y a cinq objets qui peuvent être passés à un script: ticket qui contient les données du ticket en cours, taxes qui contient la liste des taxes disponibles, place en mode restaurant il contient les objets tables, et null dans les autres modes, user qui contient l'objet utilisateur et sales qui contient les méthodes du panneau de ventes.
- ticket. Contient toutes les informations relatives au ticket. C'est un objet de type TicketInfo
- taxes. Contient une liste de toutes les taxes. C'est un objet de type TaxInfo.
- place. Contient les tables en mode restaurant. C'est un objet de type String.
- user. Contient l'utilisateur actuellement connecté à l'application. C'est un objet de type AppUser.
- sales. Contient les méthodes du panneau de ventes. C'est un objet de la classe ScriptObject.
Les attributs
Les lignes de ticket et produits ont une liste de propriétés appelées attributes. Ces attributs peuvent être utilisé pour les besoins du développeur. Lors de l'ajout d'une nouvelle ligne, Openbravo POS copie les attributs du produit dans la ligne; Openbravo POS ne gère pas le contenu et les valeurs de ces attributs, c'est le développeur des scripts de boutons et évènements qui est responsable de la gestion de ces valeurs.
Ces attributs sont stockés dans la base de donnée et peuvent être édités dans le panneau des produits comme fichier XML. Voici un exemple:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>Attributs salade asiatique</comment> <entry key="notes">Disponible uniquement au printemps.</entry> <entry key="ingrédients">Laitues, et autres légumes</entry> </properties>
Exemples
Voici une liste de fonctionnalités qui peuvent être implémentées avec des scripts:
Ajouter des notes à des lignes
Avec cette fonctionnalité vous créez un bouton et lorsque une ligne est sélectionnée dans le ticket cela vous permet d'éditer les notes associées à cette ligne. Le script du bouton est:
index = sales.getSelectedIndex(); if (index >= 0) { line = ticket.getLine(index); value = javax.swing.JOptionPane.showInputDialog("Line notes", line.getProperty("notes")); if (value != null) { // the user pressed OK line.setProperty("notes", value); } }
Supprimer les taxes d'un ticket
Avec cette fonctionnalité vous créez un bouton et lorsqu'il est cliqué une taxe de 0% est appliquée à toutes les lignes du ticket.
// Tax Exempt // The ID "3a727b12-0064-4290-a227-e25d5e524b7e" refers to the tax record of rate 0% taxexempt = taxes.get("3a727b12-0064-4290-a227-e25d5e524b7e"); for (i = 0; i < ticket.getLinesCount(); i++) { ticket.getLine(i) .setTaxInfo(taxexempt); }
Ajouter une remise à la ligne sélectionnée
Le code suivant associé à un bouton vous permettra d'ajouter une remise (en pourcentage) à la ligne sélectionnée.
// % remise ligne import com.openbravo.format.Formats; import com.openbravo.pos.ticket.TicketLineInfo; import com.openbravo.pos.ticket.TicketProductInfo; discountrate = sales.getInputValue() / 100.0; index = sales.getSelectedIndex(); if (index >= 0) { line = ticket.getLine(index); if (line.getPrice() > 0.0 && discountrate > 0.0) { sdiscount = Formats.PERCENT.formatValue(discountrate); ticket.insertLine(index + 1, new TicketLineInfo( "Remise " + line.getProductName() + " " + sdiscount, line.getProductTaxCategoryID(), line.getMultiply(), -line.getPrice () * discountrate, line.getTaxInfo())); sales.setSelectedIndex(index + 1); } else { java.awt.Toolkit.getDefaultToolkit().beep(); } } else { java.awt.Toolkit.getDefaultToolkit().beep(); }
Ajouter une remise au total d'un ticket
Le code suivant associé à un bouton applique une remise (en pourcentage) sur le total du ticket. Si le ticket contient des produits avec des taxes distinctes une ligne de remise sera crée pour chaque groupe de taxes.
// % Remise globale sur ticket import com.openbravo.format.Formats; import com.openbravo.pos.ticket.TicketLineInfo; import com.openbravo.pos.ticket.TicketProductInfo; import java.util.Properties; discountrate = sales.getInputValue() / 100.0; total = ticket.getTotal(); if (total > 0.0 && discountrate > 0.0) { sdiscount = Formats.PERCENT.formatValue(discountrate); taxes = ticket.getTaxLines(); for (int i = 0; i < taxes.length; i++) { taxline = taxes[i]; ticket.insertLine(ticket.getLinesCount(), new TicketLineInfo( "Remise totale " + sdiscount, taxline.getTaxInfo().getTaxCategoryID(), 1.0, -taxline.getSubTotal() * discountrate, taxline.getTaxInfo())); } sales.setSelectedIndex(ticket.getLinesCount() - 1); } else { java.awt.Toolkit.getDefaultToolkit().beep(); }