BankPerfect est désormais modulaire : il vous permet de créer vos propres fonctions qui seront
appelées de façon transparente telles des fonctionnalités intégrées au logiciel.
Pour ce faire, il vous suffit de :
Créer une dll depuis n'importe quel langage exportant la fonction Execute(BP : IDispatch)
D'accompagner cette dll d'un fichier plugin.ini qui sera situé dans le même dossier que la dll et qui va servir à
décrire comment BankPerfect doit intégrer cette dll.
2. Pratique
2.1 Fichiers nécessaires
Pour créer un plugin, il faut tout d'abord télécharger le plugin le plus basique Simple qui contient un modèle type de plugin déjà développé avec ses sources sous Delphi.
Vous pouvez également télécharger le plugin plus complet Test qui donne une idée plus précises des différentes fonctions disponibles dans l'interface.
Téléchargez et installez le kit de déploiement afin de pouvoir créer, à partir des fichiers qui composent le plugin, un seul fichier setup.exe qui s'installera automatiquement dans BankPerfect (Cf. section déploiement)
Il faut aussi que BankPerfect (version 4.5 ou supérieures) soit installé sur votre poste afin que vous puissiez tester votre plugin.
2.2. Le fichier plugin.ini
Le fichier plugin.ini doit contenir les clés suivantes :
nom=<NOM_DU_PLUGIN> (ligne obligatoire) : cette clé permet de donner un nom au plugin
path=Item1>Item2 (ligne optionnelle) : cette clé permet de placer le plugin dans les menus de BankPerfect. Si cette clé est omise, le plugin apparaîtra directement dans le menu Plugins de BankPerfect.
Sinon, il apparaître dans l'arborescence indiquée (dans cet exemple, le plugin sera situé dans le sous-menu Item2 du sous-menu Item1 du menu Plugins de BankPerfect)
ReadOnly=1 (ligne optionnelle) : Cette ligne permet d'indiquer à bankPerfect si ce plugin va modifier les données du fichier ouvert (ReadOnly=0) ou non (ReadOnly=1)
2.3. L'interface avec BankPerfect
Pour développer votre DLL, vous avez accès à toutes les fonctions décrites dans la section 3 grâce au paramètre BP (de type IDispatch) de la fonction exportée Execute.
L'interface IDispatch est en fait une interface vers un objet IBankPerfectPlugin qui
intègre toutes les fonctions vous permettant d'accéder aux données des fichiers BankPerfect et de piloter l'application tel
que vous le souhaitez.
Si vous développez votre plugin sous Delphi, l'interface est disponible en ouvrant directement depuis Delphi le fichier bankPerfect.exe.
2.4. Déploiement du plugin
Pour faire fonctionner votre plugin, il doit être placé avec son fichier plugin.ini de la façon suivante :
S'il n'existe pas déjà, créez un dossier Plugins dans le dossier où se trouve l'applicatif bankperfect.exe
Créez dans ce dossier Plugins un dossier au nom de votre plugin
Placez dans ce dernier dossier votre dll, le fichier plugin.ini et tous les autres fichiers nécessaires au bon fonctionnement de votre dll
Cette procédure manuelle peut être automatisée : le kit de déploiement vous permet de créer en 2 clics de souris un fichier auto-extractible compressé qui installera votre plugin dans BankPerfect.
Groupez dans un dossier du nom de votre plugin tous les fichiers nécessaires au fonctionnement du plugin
Lancez le kit de déploiement et sélectionnez le dossier où se trouvent vos fichiers groupés
Cliquez sur le bouton Créer le setup
Choisissez le dossier ou votre setup.exe sera stocké
Cette propriété permet de lire ou modifier le symbole et le taux de change de l'unité monétaire principale du compte dont l'index est spécifié par AccountIndex
Paramètre
Type
Description
AccountIndex
Integer
Index du compte
Cette propriété renvoie (ou on peut lui affecter) une valeur de type WideString représentant le symbole et le taux séparés par le caractère pipe ("|")
Cette propriété en lecture seule renvoie le chemin du fichier image de type BMP affectée du logo bancaire affecté à ce compte. Si aucun logo n'est affectée à ce compte, une chaîne est renvoyée.
Paramètre
Type
Description
AccountIndex
Integer
Index du compte
Cette propriété renvoie une valeur de type WideString et est en lecture seule
Cette propriété permet de lire
ou modifier le nom du
compte dont l'index est spécifié par AccountIndex Remarque importante : la liste renvoyée est triée dans l'ordre des ID. Pour obtenir une liste classée selon les réglages de l'utilisateur, il faut utiliser la fonction GetURL("get_accounts")
Paramètre
Type
Description
AccountIndex
Integer
Index du compte
Cette propriété renvoie (ou on peut lui affecter) une valeur de type WideString
Cette propriété permet de lire ou modifier le statut 'fictif' du compte dont l'index est spécifié par AccountIndex.
Ce statut est activé par l'utilisateur pour des comptes qui ne doivent pas être inclus dans les calculs de totaux ou statistiques.
Paramètre
Type
Description
AccountIndex
Integer
Index du compte
Cette propriété renvoie (ou on peut lui affecter) une valeur de type Integer (0 : si le compte est normal ou 1 si le compte est fictif).
Cette propriété permet de lire ou modifier le code IBAN (International Bank Account Number) du compte dont l'index est spécifié par AccountIndex.
Le code IBAN est un numéro de compte bancaire normalisé au niveau mondial destiné à faciliter le traitement des opérations transfrontières.
Paramètre
Type
Description
AccountIndex
Integer
Index du compte
Cette propriété renvoie (ou on peut lui affecter) une valeur de type WideString
Cette propriété permet de lire ou modifier le code BIC (Bank Identification Code) du compte dont l'index est spécifié par AccountIndex.
Le code BIC est un identifiant unique international propre à chaque établissement financier.
Paramètre
Type
Description
AccountIndex
Integer
Index du compte
Cette propriété renvoie (ou on peut lui affecter) une valeur de type WideString
3.2. Fonctions liées au fichier BankPerfect
functionBankPerfectExePath : WideString
Cette fonction retourne le chemin complet de l'exécutable de BankPerfect
(par défaut : c:\Program Files\BankPerfect\bankperfect.exe)
Cette fonction renvoie une valeur de type WideString
functionBankPerfectFileName : WideString
Cette fonction renvoie le chemin du fichier chargé à l'écran.
Si aucun fichier n'est ouvert, une chaîne vide est
renvoyée (elle permet donc de savoir si un fichier est
actuellement ouvert dans BankPerfect en testant si le résultat
retourné est vide ou non).
Cette fonction renvoie une valeur de type WideString
functionBankPerfectPluginPath : WideString
Cette fonction retourne le chemin complet du plugin qui l'appelle
Cette fonction renvoie une valeur de type WideString
Cette fonction charge un fichier BankPerfect à l'écran.
Si un fichier est déjà ouvert, il est automatiquement
sauvegardé et fermé avant l'ouverture du nouveau fichier.
Paramètre
Type
Description
const Path
WideString
Chemin du fichier à charger
const Password
WideString
Mot
de passe nécessaire à l'ouverture du fichier (si le
fichier n'est pas protégé par un mot de passe,
spécifier une chaîne vide)
Cette fonction renvoie une valeur de type Integer
:
0 si le fichier n'a pa pu être ouvert correctement (si Path
ne désigne pas le chemin d'un fichier BankPerfect valide par
exemple)
1 si le fichier a été chargé sans erreurs
2 si le fichier nécessite un mot de passe et que la valeur passée comme password est incorrecte
Cette procédure sauvegarde le fichier chargé à l'écran
Paramètre
Type
Description
const Path
WideString
Si
Path est spécifié, il s'agit d'un 'Enregistrer sous...'
et le fichier est sauvegardé sous le nom et dans le dossier
spécifiés par Path.
Si Path est une chaîne vide, il s'agit d'un 'Enregistrer' simple.
Le fichier est sauvegardé sous son chemin d'origine.
Cette propriété en lecture seule renvoie la catégorie parent d'une sous-catégorie.
Si cette catégorie n'est pas une sous catégorie, l'index envoyé en paramètre est renvoyé.
Paramètre
Type
Description
CategIndex
Integer
Index de la sous-catégorie
Cette propriété renvoie une valeur de type Integer et est en lecture seule
Cette procédure supprime une ligne d'opération (dont l'index est LineIndex) du compte AccountIndex
Paramètre
Type
Description
AccountIndex
Integer
Index du compte dont on veut supprimer une ligne
LineIndex
Integer
Index de la ligne à supprimer
Cette procédure ne renvoie pas de valeur
procedureLineSelect (LineIndex : Integer)
Cette procédure sélectionne la ligne d'opération (dont l'index est LineIndex) du compte courant.
Paramètre
Type
Description
LineIndex
Integer
Index de la ligne à sélectionner
Cette procédure ne renvoie pas de valeur
3.5. Fonctions génériques et boîtes de dialogue
Ces fonctions peuvent être facilement créées depuis
tout langage, mais, fournies par BankPerfect, elles permettent pour des
plugins simples de ne pas avoir à inclure d'unités de
dialogues ou de form et donc de réduire la taille de la dll.
Cette fonction affiche une boîte de message modale
Paramètre
Type
Description
const Msg
WideString
Message à afficher
uType
LongWord
Combinaison de
valeurs permettant de contrôler la
boîte de message.
MB_ABORTRETRYIGNORE : avec cette valeur, la boîte va contenir 3 boutons, Réessayer, Ignorer et Annuler MB_OK : avec cette valeur, la boîte ne va contenir q'un seul bouton, OK MB_OKCANCEL : avec cette valeur, la boîte va contenir 2 boutons, OK et Annuler MB_RETRYCANCEL : avec cette valeur, la boîte va contenir 2 boutons, Réessayer et Annuler MB_YESNO : avec cette valeur, la boîte va contenir 2 boutons, Oui et Non MB_YESNOCANCEL : avec cette valeur, la boîte va contenir 3 boutons, Oui, Non et Annuler
MB_ICONWARNING : Affiche une icône représentant un point d'exclamation MB_ICONINFORMATION : Affiche une icône représentant un i MB_ICONQUESTION : Affiche une icône représentant un point d'interrogation MB_ICONSTOP : Affiche une icône représentant une erreur
Cette fonction renvoie une valeur de type Integer
:
Si l'utilisateur clique sur Oui, Non ou Annuler, une valeur de type
ID_YES, ID_NO, ID_CANCEL est retournée
Exemples : MsgBox('Ceci est un test',
MB_OK); ifMsgBox('Souhaitez-vous continuer ?',
MB_ICONQUESTION+MB_YESNO) = ID_YES then
...
Cette fonction affiche une boîte d'ouverture de fichier et renvoie le nom du fichier sélectionné (ou une chaîne vide si aucun fichier n'a été sélectionné).
Paramètre
Type
Description
const Title
WideString
Titre de la fenêtre
const FileName
WideString
Fichier par défaut
const DefaultExt
WideString
Extension par défaut à ajouter au fichier (Ex : '.exe')
const Filters
WideString
Chaîne représentant les types de fichiers acceptés sous la forme type1|extension1|type2|extension2 etc.
Exemple : Exécutables (*.exe)|*.exe|Fichiers de commande (*.com)|*.com|Fichiers binaires (*.bin)|*.bin
Cette fonction renvoie une valeur de type WideString
functionInputText (const ACaption : WideString; const APrompt : WideString; var Value : WideString) : Integer
Cette fonction affiche une boîte de saisie de texte.
Paramètre
Type
Description
const ACaption
WideString
Titre de la fenêtre
const APrompt
WideString
Texte de description affiché au dessus du champ de saisie
var Value
WideString
Texte retourné par l'utilisateur. Si Value contient du texte à l'appel de cette fonction, ce texte est affiché comme valeur par défaut dans le champ de saisie.
Cette fonction renvoie une valeur de type Integer : 1 si l'utilisateur à validé sa saisie et 0 si il l'a annulée.
Cette fonction affiche une fenêtre de saisie Windows entièrement personnalisable et renvoie les valeurs qui y ont été saisies.
Cette fonction est utile pour créer des plugins compacts sans avoir à y inclure les "forms", pour peu que l'interface utilisateur soit simple.
Paramètre
Type
Description
Caption
WideString
Titre de la fenêtre
Code
WideString
Texte qui décrit la liste des contrôles à créer dans la fenêtre (Cf. Pour créer le "Code")
Width
Integer
Largeur de la fenêtre à créer
Height
Integer
Hauteur de la fenêtre à créer
Cette fonction renvoie une valeur de type WideString : la liste des contrôles et leur valeur à la fermeture de la fenêtre.
Pour créer le "Code" :
La variable Code est une chaîne composée de plusieurs lignes séparées par des retours-chariot. Chaque ligne correspond à la description d'un composant à créer dans la fenêtre.
Cette ligne est composée de la liste des propriétés du composant (séparées par des points-virgules) sous la forme "propriété=valeur". La première propriété de la ligne doit toujours être de la forme "type=nom" (Ex: button=MonBouton1)
Contrôles
Propriétés
Type
Tous contrôles
Left, Top, Width, Height
Integer
label
Caption Bold
string Integer (1)
edit
Text Enabled, Readonly
string Integer (0 ou 1)
maskedit
Text, Mask Enabled, ReadOnly
string Integer (0 ou 1)
combo, listbox
Text Enabled ItemIndex
string Integer (0 ou 1) Integer
checkbox, radio
Caption Checked, Enabled
string Integer (0 ou 1)
date
Date Enabled
string Integer (0 ou 1)
button
Caption Enabled
string Integer (0 ou 1)
picture
Path
string
memo
Text Wrap, Enabled, Readonly Font
string Integer (0 ou 1) string (nom de la police)
Remarque : Si un champ contient un point-virgule, il devra être saisi sous la forme \s et les retours-chariot (pour le texte du memo par exemple) sous la forme \r\n.
La variable Code peut contenir par exemple la chaîne suivante :
label=label1;left=10;top=10;caption=Text de mon label
edit=edit1;left=150;top=10;width=200;text=texte contenant un point-virgule : \s
combo=cb1;left=150;top=40;width=200;text=option1\r\noption2;itemindex=0
listbox=lb1;left=400;top=10;width=120;height=90;text=option1\r\noption2;itemindex=0
date=dt1;left=150;top=70;width=200;date=13-10-2004
memo=memo1;left=10;top=110;width=550;height=100;text=Voici,\r\nun exemple de texte;wrap=0
button=ButtonOK;left=10;top=230;width=100;height=30;caption=OK
button=ButtonCancel;left=120;top=230;width=100;height=30;caption=Annuler
En fonction de ce qui aura été saisi par l'utilisateur, une chaîne de la forme suivante sera renvoyée :
edit1=texte contenant un point-virgule : ;
cb1=0
lb1=0
dt1=13-10-2004
memo1=Voici,\r\nun exemple de texte
SelectedButton=ButtonOK
Cette fonction permet de faire exécuter des commandes diverses par BankPerfect.
Requête
Commande à saisir
Pour télécharger une page web
GetURL("adresse_de_la_page") La fonction reverra le code source de la page (ou une chaîne vide si la page ne peut pas être téléchargée.)
Pour télécharger un fichier
GetURL(file:chemin_local_complet_du_fichier@url_du_fichier") Le fichier sera alors téléchargé et la fonction renverra une chaîne vide si tout s'est bien passé ou le message d'erreur généré si une exception s'est produite
Pour se connecter automatiquement au serveur FTP spécifié comme sauvegarde dans BankPerfect, il suffit de fournir comme valeur pour l'URL, le login, le mot de passe et le dossier :
default_bp_url, default_bp_login, default_bp_password et default_bp_folder
Pour récupérer la liste de fichiers situés dans un dossier distant via FTP
GetURL("ftp_lst:chemin_du_dossier_distant_et_masque|login|password@adresse_serveur_ftp") Ici, chemin_du_dossier_distant_et_masque sera par exemple : www/backup/*.*
Pour récupérer le dossier de stockage des fichiers .bp de BankPerfect
GetURL("bp_save_folder")
Pour récupérer le dossier de sauvegarde de BankPerfect (pour les fichiers de backup .bp0)
GetURL("bp_backup_folder")
Pour récupérer le dossier d'export de BankPerfect (destiné aux exports : rapports PDF, HTML, XLS etc.)
GetURL("bp_export_folder")
Pour récupérer la valeur d'une clé du fichier INI de BankPerfect
GetURL("ini_read:section;clé") : renvoie la valeur de la clé
Pour écrire dans le fichier INI de BankPerfect
GetURL("ini_write:section;clé;valeur")
Pour générer un fichier PDF
GetURL("pdf:code de génération du PDF (non documenté ici)")
Remplir les champs de filtrage et filtrer le tableau des comptes
Simuler un filtrage (ne remplit pas réellement les champs de filtrage)
GetURL("simulate_set_filter:date_debut;date_fin;mode;tiers;catégorie;montant;pointage") : renvoie une chaîne contenant la liste des ID des lignes visibles séparées par des points-virgules
Pour récupérer la liste des comptes dans leur ordre d'affichage à l'écran (et non dans leur ordre de création)
GetURL("get_accounts") La fonction renverra une chaîne contenant la liste des comptes séparés par des points-virgules sous la forme suivante: id1=nom1;id2=nom2;id3=nom3... Les comptes étant triés en fonction des réglages de l'utilisateur, la position du compte dans la liste ne donne pas le numéro réel du compte : l'index réel du compte correspond à l'id situé juste avant la virgule.
Pour copier un fichier
GetURL("copy_file:fichier_origine;fichier_destination") : renvoie la chaîne "ok" ou "ko"
Pour récupérer une des valeurs supplémentaires (OperationExtra) d'une opération
GetURL("extra_get:index_du_compte;index_de_la_ligne;clé") : renvoie la valeur extra de l'opération dont le nom est "clé"
Pour modifier ou insérer une valeur supplémentaire (OperationExtra) à une opération
Pour récupérer l'identifiant unique du fichier BankPerfect ouvert
GetURL("bp_file_guid")
Pour récupérer le nombre de modes de paiement disponibles (y compris les modes personnalisés)
GetURL("mode_count")
Pour stocker des informations dans le fichier BP courant
GetURL("save_script_data:clé_unique:valeur") Attention à utiliser une clé réellement unique pour qu'un autre script ne vienne pas écraser vos données par erreur pour avoir utilisé la même clé. La clé ne doit contenir que les caractères a-z et des chiffres. Cette fonction est très utile pour permettre aux scripts de stocker des données propre à chaque fichier BP.
Pour récupérer des informations préalablement stockées dans le fichier BP courant
GetURL("load_script_data:clé_unique") La fonction renverra la valeur préalablement stockée via la méthode save_script_data (Cf. point précédent)
Pour récupérer le chemin du répertoire temporaire de Windows
GetURL("temp_dir") La fonction renverra le chemin du répertoire temp de l'utilisateur courant
Pour récupérer le chemin du répertoire contenant les données de configuration de l'application BankPerfect (fichiers .ini, etc.)
GetURL("appdata_dir") La fonction renverra le chemin du répertoire contenant les fichiers de configuration de BankPerfect. Si BankPerfect fonctionne en mode portable, il s'agit du répertoire où se trouve le fichier bankperfect.exe (généralement c:\Program Files\BankPerfect\). Sinon, il s'agit du répertoire Application Data\BankPerfect\ de l'utilisateur courant
Pour convertir un fichier PNG ou JPG en BMP
GetURL("convert_to_bitmap:chemin_origine|chemin_destination") La fonction va convertir le fichier chemin_origine ()qui doit désigner le chemin d'une image JPG ou PNG existante) en chemin_destination (qui doit désigner le chemin de l'image BMP à créer)
Renvoie la liste des lignes qui viennent d'être insérées ou modifiées
GetURL(get_lines_changed) La fonction renvoie une chaine contenant la liste des index des lignes accompagnées de l'index du compte sous la forme: sous la forme “compte-ligne;compte-ligne...”
Pour envoyer un e-mail (en passant par les serveurs BankPerfect pour éviter tout problème de configuration SMTP).
GetURL("send_mail:adresse_emetteur|adresse_destinataire|sujet_du_mail|contenu_du_mail|fichier_a_joindre|nom_du_fichier_qui_apparaitra_dans_le_mail") La fonction va envoyer le mail et renverra une chaine vide (si le mail a été correctement envoyé) ou un message d'erreur. Remarque importante: Cette fonction est limitée aux utilisateurs possèdant une licence BankPerfect. Sans cette restriction, BankPerfect pourrait être utilisé comme système d'envoi de SPAM.
3.6. Fonctions propres aux opérations (lignes des comptes)
Cette propriété permet de lire ou de modifier le mode de paiement d'une opération.
Pour le modifier, le mode a affecter à l'opération doit
être valide (faire partie de la liste des modes de paiement du
compte)
Paramètre
Type
Description
AccountIndex
Integer
Index du compte dont on veut lire ou modifier une ligne
LineIndex
Integer
Index de la ligne dont on veut lire ou modifier le mode de paiement
Cette propriété renvoie (ou on peut lui affecter) une valeur de type WideString
Cette propriété permet de lire ou de modifier le montant d'une opération.
Le montant est toujours spécifié sans le signe : c'est le
mode de paiement qui indique si une opération est
débitrice ou créditrice)
Paramètre
Type
Description
AccountIndex
Integer
Index du compte dont on veut lire ou modifier une ligne
LineIndex
Integer
Index de la ligne dont on veut lire ou modifier le montant
Cette propriété renvoie (ou on peut lui affecter) une valeur de type Double
Cette propriété permet de lire ou de modifier la date de valeur d'une opération.
La date à envoyer ou à lire est une chaîne de caractères au format DD-MM-YYYY
Paramètre
Type
Description
AccountIndex
Integer
Index du compte dont on veut lire ou modifier une ligne
LineIndex
Integer
Index de la ligne dont on veut lire ou modifier la date de valeur
Cette propriété renvoie (ou on peut lui affecter) une valeur de type WideString au format 'DD-MM-YYYY'
4. Fonctions disponibles uniquement en Python
functionSingleLine() : Integer
Cette fonction renvoie le numéro de la dernière ligne insérée.
Cette fonction renvoie une valeur de type Integer
propertyBPEval [Data : WideString] : WideString
Cette fonction est un raccourci de la méthode BP.GetURL().
Paramètre
Type
Description
Data
WideString
Requête à évaluer
Cette fonction renvoie une valeur de type WideString
propertyCreateChart [PanelName : WideString]
Cette fonction permet de créer un graphique dans un panel.
Cette fonction permet de dessiner un graphique (créé préalablement avec la fonction CreateChart).
Paramètre
Type
Description
PanelName
WideString
Nom du Panel dans lequel le graphique a été préalablement créé
Names
List of string
Liste des titres du graphique
Values
List of double
Liste des valeurs associées
ShowNullValues
Integer
Indique si le graphique doit inclure les valeurs nulles (1) ou non (0)
3D
Integer
Indique si le graphique doit être dessiné en 2D (0) ou en 3D (1)
GraphType
Integer
Indique le type de graphique (0=histogramme, 1=histogramme+ligne, 2=histogramme empilé, 3=nuage de points, 4=ligne, 5=aire, 6=secteurs)
Cette fonction ne renvoie pas de valeur.
Remarques importantes : La couleur de fond du panel détermine la couleur de fond du graphique. Pour afficher la légende, la propriété ShowHint du panel doit être égale à 1
propertyDestroyChart [PanelName : WideString]
Cette fonction permet de supprimer un graphique (créé préalablement avec la fonction CreateChart).
Paramètre
Type
Description
PanelName
WideString
Nom du Panel qui contient le graphique à supprimer
Cette fonction ne renvoie pas de valeur
propertyExportChart [PanelName : WideString]
Cette fonction permet d'exporter un graphique vers un fichier PDF.