Gestion bancaire - Purebasic -


Gestionnaire d'opérations bancaires


 

Un autre exemple de programmation avec Purebasic.

 

Un petit logiciel de gestion de comptes bancaires personnel, extrêmement simplifié, il est multi-comptes et ne gère que les mouvements.

 

Une seule fenêtre apparaît, organisée en deux espaces :

- L’affichage des mouvements bancaires

- La zone de saisie composée de 3 onglets

 - onglet 1 : la saise des opérations bancaires

 - onglet 2 : saisie des paramètres comptes, catégories, tiers.

 - onglet 3 : quelques lignes d’aide.

 

L’énoncé du programme est composé d’un peu plus de 500 lignes et une fois compilé d’un seul exécutable de moins de 90 Ko.

 

L’installation réside à créer un répertoire et à y placer l’exécutable.

 

 

 

 

 

 

 

 

Le code source :

 

; ****************
; Gestion bancaire
; ****************

Enumeration
#Window_0
#Button_cpt1
#Button_cpt2
#Button_cpt4
#Button_cpt5
#Button_cat1
#Button_cat2
#Button_cat4
#Button_cat5
#Button_tiers1
#Button_tiers2
#Button_tiers4
#Button_tiers5
#Button_nouveau
#Button_enregistre
#Button_sauve
#Button_suppr
#Button_format1
#Button_format2
#Button_quit
#ListIcon_1
#Etiq_1
#Etiq_2
#Etiq_3
#Etiq_4
#Etiq_5
#Etiq_titre
#Etiq_cont1
#Etiq_cont2
#Etiq_cont3
#Etiq_cont4
#Etiq_cont21
#Etiq_cont22
#Etiq_cont31
#Etiq_cont32
#Etiq_date
#Etiq_Credit
#Etiq_debit
#Etiq_paiement
#Etiq_libelle
#Etiq_tiers
#Etiq_categorie
#Etiq_Valide
#Etiq_aide1
#Etiq_aide2
#Etiq_aide3
#Etiq_aide4
#Etiq_aide5
#Etiq_aide6
#Saisie_nom
#Saisie_banque
#Saisie_num
#Saisie_cat
#Saisie_tiers
#saisie_date
#saisie_credit
#saisie_debit
#saisie_paiement
#saisie_libelle
#saisie_tiers_mouv
#saisie_cat_mouv
#saisie_valide
#saisie_compte
#Panel_1
#container_1
#container_2
#container_3

EndEnumeration

Structure cpte
banque.s
nom.s
num.s
EndStructure

Structure mouvt
compte.s
date.s
credit.s
debit.s
paiement.s
libelle.s
tiers.s
categorie.s
validation.s
calc_cr_de.s
EndStructure


Define.l Event, EventWindow, EventGadget

Global NewList comptes.cpte(), NewList tiers.s(), NewList categories.s(), NewList mouvements.mouvt(), NewList temp.mouvt()

; ************
; Initialisation
; ************

AddElement(comptes())
AddElement(tiers())
AddElement(categories())
AddElement(mouvements())


Procedure F_tiers()
If OpenFile(0,"./tiers")
If Eof(0) = 0
ClearList(tiers())
EndIf
While Eof(0) = 0
AddElement(tiers())
tiers()=ReadString(0)
Wend
CloseFile(0)
FirstElement(tiers())
SetGadgetText(#Saisie_tiers,tiers())
EndIf
EndProcedure

Procedure F_categories()
If OpenFile(0,"./categories")
If Eof(0) = 0
ClearList(categories())
EndIf
While Eof(0) =0
AddElement(categories())
categories()=ReadString(0)
Wend
CloseFile(0)
FirstElement(categories())
SetGadgetText(#Saisie_cat,categories())
EndIf
EndProcedure

Procedure F_comptes()
If OpenFile(0,"./comptes")
If Eof(0) = 0
ClearList(comptes())
EndIf
While Eof(o) =0
AddElement(comptes())
comptes()anque = ReadString(0)
comptes() om = ReadString(0)
comptes() um = ReadString(0)
Wend
CloseFile(0)
FirstElement(comptes())
SetGadgetText(#Saisie_nom,comptes() om)
SetGadgetText(#Saisie_banque,comptes()anque)
SetGadgetText(#Saisie_num,comptes() um)
EndIf
EndProcedure

Procedure F_mouvements()
If OpenFile(0,"./mouvements")
If Eof(0) = 0
ClearList(mouvements())
EndIf
While Eof(0) = 0
AddElement(mouvements())
mouvements()compte = ReadString(0)
mouvements()date = ReadString(0)
mouvements()credit = ReadString(0)
mouvements()debit = ReadString(0)
mouvements()paiement = ReadString(0)
mouvements()libelle = ReadString(0)
mouvements() iers = ReadString(0)
mouvements()categorie = ReadString(0)
mouvements()validation = ReadString(0)
mouvements()calc_cr_de = ReadString(0)
Wend
CloseFile(0)
EndIf
EndProcedure

Procedure E_mouvements()
If OpenFile(0,"./mouvements")
TruncateFile(0)
For i=0 To 9 : WriteStringN(0," ") : Next
ForEach mouvements()
WriteStringN(0,mouvements()compte)
WriteStringN(0,mouvements()date)
WriteStringN(0,mouvements()credit)
WriteStringN(0,mouvements()debit)
WriteStringN(0,mouvements()paiement)
WriteStringN(0,mouvements()libelle)
WriteStringN(0,mouvements() iers)
WriteStringN(0,mouvements()categorie)
WriteStringN(0,mouvements()validation)
WriteStringN(0,mouvements()calc_cr_de)
Next
CloseFile(0)
EndIf

EndProcedure

Procedure R_combo()
F_comptes()
F_categories()
F_tiers()
ClearGadgetItems(#saisie_paiement)
ClearGadgetItems(#saisie_tiers_mouv)
ClearGadgetItems(#saisie_cat_mouv)
ClearGadgetItems(#saisie_compte)
AddGadgetItem(#saisie_paiement,-1,"CB")
AddGadgetItem(#saisie_paiement,-1,"Chèque")
AddGadgetItem(#saisie_paiement,-1,"Virement")
AddGadgetItem(#saisie_paiement,-1,"Prélèvement")
AddGadgetItem(#saisie_paiement,-1,"Paiement électronique")
AddGadgetItem(#saisie_paiement,-1,"Espèces")
AddGadgetItem(#saisie_paiement,-1,"")
ForEach tiers()
AddGadgetItem(#saisie_tiers_mouv,-1,tiers())
Next
ForEach categories()
AddGadgetItem(#saisie_cat_mouv,-1,categories())
Next
ForEach comptes()
AddGadgetItem(#saisie_compte,-1,comptes() om)
Next
EndProcedure

Procedure rech_mouv()
ClearGadgetItems(#ListIcon_1)
crit$ = GetGadgetText(#saisie_compte)
tot.d=0
totp.d = 0
ForEach mouvements()
If mouvements()compte = crit$
AddGadgetItem(#ListIcon_1,-1,Str(ListIndex(mouvements()))+Chr(10)+mouvements()date+Chr(10)+mouvements()credit+Chr(10)+mouvements()debit+Chr(10)+mouvements()paiement+Chr(10)+mouvements()libelle+Chr(10)+mouvements() iers+Chr(10)+mouvements()categorie+Chr(10)+mouvements()validation)
tot = tot + ValD(mouvements()calc_cr_de)
If mouvements()validation = "X"
totp = totp + ValD(mouvements()calc_cr_de)
EndIf
EndIf
Next
SetGadgetText(#Etiq_2,StrD(totp,2))
SetGadgetText(#Etiq_4,StrD(tot,2))

SetGadgetText(#saisie_credit,"")
SetGadgetText(#saisie_debit,"")
SetGadgetText(#saisie_paiement,"")
SetGadgetText(#saisie_libelle,"")
SetGadgetText(#saisie_tiers_mouv,"")
SetGadgetText(#saisie_cat_mouv,"")
SetGadgetState(#saisie_valide,#PB_Checkbox_Unchecked)

EndProcedure



Procedure O_Window_0()
If OpenWindow(#Window_0,20,50,1000,650,"Gestion bancaire")
ListIconGadget(#ListIcon_1,10,70,980,380,"Index",3)
AddGadgetColumn(#ListIcon_1,1,"Date",120)
AddGadgetColumn(#ListIcon_1,2,"Crédit",100)
AddGadgetColumn(#ListIcon_1,3,"Débit",100)
AddGadgetColumn(#ListIcon_1,4,"Paiement",100)
AddGadgetColumn(#ListIcon_1,5,"Libellé",220)
AddGadgetColumn(#ListIcon_1,6,"Tiers",150)
AddGadgetColumn(#ListIcon_1,7,"Catégorie",140)
AddGadgetColumn(#ListIcon_1,8,"Validation",40)
TextGadget(#Etiq_titre,1,1,998,20,"G E S T I O N B A N C A I R E",#PB_Text_Center)
SetGadgetColor(#Etiq_titre,#PB_Gadget_BackColor,$FF0000)
SetGadgetColor(#Etiq_titre,#PB_Gadget_FrontColor,$00FFFF)

TextGadget(#Etiq_1,410,40,100,20,"Solde pointé : ")
TextGadget(#Etiq_2,510,40,100,20,"",#PB_Text_Center | #PB_Text_Border)
TextGadget(#Etiq_3,750,40,100,20,"Solde final : ")
TextGadget(#Etiq_4,850,40,100,20,"",#PB_Text_Center | #PB_Text_Border)
TextGadget(#Etiq_5,10,40,120,20,"Compte : ")
ComboBoxGadget(#saisie_compte,140,40,120,25)
PanelGadget(#Panel_1,10,460,980,180)
AddGadgetItem (#Panel_1, 0, "Saisie, modification, validation d'un mouvement")
TextGadget(#Etiq_date,210,15,120,20,"Date :")
DateGadget(#saisie_date, 330, 15, 120,20,"%dd/%mm/%yyyy")
TextGadget(#Etiq_Credit,210,40,120,20,"Crédit :")
StringGadget(#saisie_credit,330,40,100,20,"")
ButtonGadget(#Button_format1,429,40,20,20,"")
TextGadget(#Etiq_debit,210,65,120,20,"Débit")
StringGadget(#saisie_debit,330,65,100,20,"")
ButtonGadget(#Button_format2,429,65,20,20,"")
TextGadget(#Etiq_paiement,210,90,120,20,"type de paiement :")
ComboBoxGadget(#saisie_paiement,330,90,120,25)
TextGadget(#Etiq_libelle,500,15,120,20,"Libellé :")
StringGadget(#saisie_libelle,620,15,220,20,"")
TextGadget(#Etiq_tiers,500,40,120,20,"Tiers :")
ComboBoxGadget(#saisie_tiers_mouv,620,40,120,25)
TextGadget(#Etiq_categorie,500,65,120,20,"Catégorie :")
ComboBoxGadget(#saisie_cat_mouv,620,65,120,25)
TextGadget(#Etiq_Valide,500,90,120,20,"Validation :")
CheckBoxGadget(#saisie_valide,620,90,20,20,"")
ButtonGadget(#Button_nouveau,10,120,200,25,"Nouveau mouvement bancaire")
ButtonGadget(#Button_enregistre,220,120,200,25,"Enregistrer les modifications")
ButtonGadget(#Button_suppr,430,120,200,25,"Supprimer le mouvement")
ButtonGadget(#Button_sauve,640,120,200,25,"Sauvegarder sur disque")
ButtonGadget(#Button_quit,850,120,115,25,"Quitter")
AddGadgetItem(#Panel_1,1,"Comptes - Catégories - Tiers")
ContainerGadget(#container_1, 5, 5, 340, 133, #PB_Container_Raised)
TextGadget(#Etiq_cont1,1,1,335,20,"Saisie, ajout, modifications des comptes bancaires",#PB_Text_Center | #PB_Text_Border)
SetGadgetColor(#Etiq_cont1,#PB_Gadget_BackColor,$FF0000)
SetGadgetColor(#Etiq_cont1,#PB_Gadget_FrontColor,$00FFFF)
TextGadget(#Etiq_cont2,1,25,100,20,"Nom :")
TextGadget(#Etiq_cont3,1,50,100,20,"Banque :")
TextGadget(#Etiq_cont4,1,75,100,20,"Numéro :")
StringGadget(#Saisie_nom,130,25,130,20,"",#PB_String_BorderLess)
StringGadget(#Saisie_banque,130,50,130,20,"",#PB_String_BorderLess)
StringGadget(#Saisie_num,130,75,130,20,"",#PB_String_BorderLess)
ButtonGadget(#Button_cpt1,1,100,20,25,"<")
ButtonGadget(#Button_cpt2,25,100,20,25,">")
ButtonGadget(#Button_cpt4,50,100,220,25,"Sauvegarder les modifications")
ButtonGadget(#Button_cpt5,290,100,20,25,"-")
CloseGadgetList()
ContainerGadget(#container_2, 350, 5, 320, 133, #PB_Container_Raised)
TextGadget(#Etiq_cont21,1,1,312,20,"Saisie, ajout, modifications des catégories",#PB_Text_Center | #PB_Text_Border)
SetGadgetColor(#Etiq_cont21,#PB_Gadget_BackColor,$FF0000)
SetGadgetColor(#Etiq_cont21,#PB_Gadget_FrontColor,$00FFFF)
TextGadget(#Etiq_cont22,1,50,100,20,"Catégorie :")
StringGadget(#Saisie_cat,120,50,150,20,"",#PB_String_BorderLess)
ButtonGadget(#Button_cat1,1,100,20,25,"<")
ButtonGadget(#Button_cat2,25,100,20,25,">")
ButtonGadget(#Button_cat4,50,100,220,25,"Sauvegarder les modifications")
ButtonGadget(#Button_cat5,290,100,20,25,"-")
CloseGadgetList()
ContainerGadget(#container_3, 674, 5, 295, 133, #PB_Container_Raised)
TextGadget(#Etiq_cont31,1,1, 292,20,"Saisie, ajout, modifications des tiers",#PB_Text_Center | #PB_Text_Border)
SetGadgetColor(#Etiq_cont31,#PB_Gadget_BackColor,$FF0000)
SetGadgetColor(#Etiq_cont31,#PB_Gadget_FrontColor,$00FFFF)
TextGadget(#Etiq_cont32,1,50,100,20,"Tiers :")
StringGadget(#Saisie_tiers,120,50,120,20,"",#PB_String_BorderLess)
ButtonGadget(#Button_tiers1,1,100,20,25,"<")
ButtonGadget(#Button_tiers2,25,100,20,25,">")
ButtonGadget(#Button_tiers4,50,100,215,25,"Sauvegarder les modifications")
ButtonGadget(#Button_tiers5,270,100,20,25,"-")
CloseGadgetList()
AddGadgetItem(#Panel_1,2,"Aide")
t1$ = "Logiciel de gestion bancaire personnel très simplifié"
t2$ = "Première utilisation : saisir au moins un compte."
t3$ = "On peut ajouter ou insérer des catégories, des tiers ou des comptes dans les zones vides en début ou fin de liste en se déplaçant avec < et >."
t4$ = "Le bouton <Enregistrer les modifications> affiche les données dans la feuille des mouvements."
t5$ = "Le bouton <Sauvegarder sur disque>les enregistre réellement."
t6$ = "Avant de quitter, il ne faut pas omettre de sauvegarder afin de conserver les mouvements."
TextGadget(#Etiq_aide1,1,1,978,20,t1$)
TextGadget(#Etiq_aide2,1,30,978,20,t2$)
TextGadget(#Etiq_aide3,1,50,978,20,t3$)
TextGadget(#Etiq_aide4,1,70,978,20,t4$)
TextGadget(#Etiq_aide5,1,90,978,20,t5$)
TextGadget(#Etiq_aide6,1,110,978,20,t6$)
EndIf
EndProcedure

O_Window_0()
F_tiers()
F_categories()
F_comptes()
F_mouvements()
R_combo()


; ***********************
; Gestion des événements
; ***********************

Repeat
Event = WaitWindowEvent()
Select Event

Case #PB_Event_Gadget

If EventGadget() = #Button_cpt1
Resultat = PreviousElement(comptes())
If Resultat = 0 : FirstElement(comptes()) : EndIf
SetGadgetText(#Saisie_nom,comptes() om)
SetGadgetText(#Saisie_banque,comptes()anque)
SetGadgetText(#Saisie_num,comptes() um)
EndIf

If EventGadget() = #Button_cpt2
Resultat = NextElement(comptes())
If Resultat = 0 : LastElement(comptes()) : EndIf
SetGadgetText(#Saisie_nom,comptes() om)
SetGadgetText(#Saisie_banque,comptes()anque)
SetGadgetText(#Saisie_num,comptes() um)
EndIf

If EventGadget() = #Saisie_banque Or #Saisie_nom Or #Saisie_num
comptes() om = GetGadgetText(#Saisie_nom)
comptes()anque = GetGadgetText(#Saisie_banque)
comptes() um= GetGadgetText(#Saisie_num)
EndIf

If EventGadget() = #Button_cpt4
If OpenFile(0,"comptes")
TruncateFile(0)
For i=0 To 2 : WriteStringN(0,"") : Next
ForEach comptes()
If comptes() om <> ""
WriteStringN(0,comptes()anque)
WriteStringN(0,comptes() om)
WriteStringN(0,comptes() um)
EndIf
Next
For i=0 To 2 : WriteStringN(0,"") : Next
CloseFile(0)
EndIf
R_combo()
EndIf

If EventGadget() = #Button_cpt5
DeleteElement(comptes())
SetGadgetText(#Saisie_nom,"")
SetGadgetText(#Saisie_banque,"")
SetGadgetText(#Saisie_num,"" )
EndIf

If EventGadget() = #Button_cat1
Resultat = PreviousElement(categories())
If Resultat = 0 : FirstElement(categories()) : EndIf
SetGadgetText(#Saisie_cat,categories())
EndIf

If EventGadget() = #Button_cat2
Resultat = NextElement(categories())
If Resultat = 0 : LastElement(categories()) : EndIf
SetGadgetText(#Saisie_cat,categories())
EndIf

If EventGadget() = #Saisie_cat
categories() = GetGadgetText(#Saisie_cat)
EndIf

If EventGadget() = #Button_cat4
If OpenFile(0,"categories")
TruncateFile(0)
WriteStringN(0,"")
ForEach categories()
If categories() <> ""
WriteStringN(0,categories())
EndIf
Next
WriteStringN(0,"")
CloseFile(0)
EndIf
R_combo()
EndIf

If EventGadget() = #Button_cat5
DeleteElement(categories())
SetGadgetText(#Saisie_cat,"")
EndIf

If EventGadget() = #Button_tiers1
Resultat = PreviousElement(tiers())
If Resultat = 0 : FirstElement(tiers()) : EndIf
SetGadgetText(#Saisie_tiers,tiers())
EndIf

If EventGadget() = #Button_tiers2
Resultat = NextElement(tiers())
If Resultat = 0 : LastElement(tiers()) : EndIf
SetGadgetText(#Saisie_tiers,tiers())
EndIf

If EventGadget() = #Saisie_tiers
tiers() = GetGadgetText(#Saisie_tiers)
EndIf

If EventGadget() = #Button_tiers4
If OpenFile(0,"tiers")
TruncateFile(0)
WriteStringN(0,"")
ForEach tiers()
If tiers() <> ""
WriteStringN(0,tiers())
EndIf
Next
WriteStringN(0,"")
CloseFile(0)
EndIf
R_combo()
EndIf

If EventGadget() = #Button_tiers5
DeleteElement(tiers())
SetGadgetText(#Saisie_tiers,"")
EndIf

If EventGadget() =#Button_sauve
E_mouvements()
EndIf

If EventGadget() = #Button_nouveau
LastElement(mouvements())
Resultat = AddElement(mouvements())
SetGadgetText(#saisie_credit,"")
SetGadgetText(#saisie_debit,"")
SetGadgetText(#saisie_paiement,"")
SetGadgetText(#saisie_libelle,"")
SetGadgetText(#saisie_tiers_mouv,"")
SetGadgetText(#saisie_cat_mouv,"")
SetGadgetState(#saisie_valide,#PB_Checkbox_Unchecked)
EndIf

If EventGadget() = #Button_enregistre
mouvements()compte = GetGadgetText(#saisie_compte)
mouvements()date = GetGadgetText(#saisie_date)
mouvements()credit = GetGadgetText(#saisie_credit)
mouvements()debit = GetGadgetText(#saisie_debit)
mouvements()paiement = GetGadgetText(#saisie_paiement)
mouvements()libelle = GetGadgetText(#saisie_libelle)
mouvements() iers = GetGadgetText(#saisie_tiers_mouv)
mouvements()categorie = GetGadgetText(#saisie_cat_mouv)
If GetGadgetState(#saisie_valide) = 1
mouvements()validation = "X"
Else
mouvements()validation = ""
EndIf
mouvements()calc_cr_de = StrD(ValD(GetGadgetText(#saisie_credit))-ValD(GetGadgetText(#saisie_debit)),2)
rech_mouv()
EndIf

If EventGadget() = #Button_suppr
DeleteElement(mouvements())
ClearList(temp())
ForEach mouvements()
AddElement(temp())
temp()compte = mouvements()compte
temp()date = mouvements()date
temp()credit = mouvements()credit
temp()debit = mouvements()debit
temp()paiement = mouvements()paiement
temp()libelle = mouvements()libelle
temp() iers = mouvements() iers
temp()categorie = mouvements()categorie
temp()validation = mouvements()validation
temp()calc_cr_de = mouvements()calc_cr_de
Next
CopyList(temp(),mouvements())
rech_mouv()
EndIf

If EventGadget() = #Button_sauve
E_mouvements()
EndIf

If EventGadget() = #Button_format2
ch$=RSet(StrD(ValD(GetGadgetText(#saisie_debit)),2),16)
SetGadgetText(#saisie_debit,ch$)
SetGadgetText(#saisie_credit,"")
EndIf

If EventGadget() = #Button_format1
ch$ = RSet(StrD(ValD(GetGadgetText(#saisie_credit)),2),16)
SetGadgetText(#saisie_credit,ch$)
SetGadgetText(#saisie_debit,"")
EndIf

If EventGadget() = #saisie_compte
rech_mouv()
EndIf

If EventGadget() = #ListIcon_1
SelectElement(mouvements(),Val(GetGadgetItemText(#ListIcon_1,GetGadgetState(#ListIcon_1))))
SetGadgetText(#saisie_credit,mouvements()credit)
SetGadgetText(#saisie_debit,mouvements()debit)
SetGadgetText(#saisie_paiement,mouvements()paiement)
SetGadgetText(#saisie_libelle,mouvements()libelle)
SetGadgetText(#saisie_tiers_mouv,mouvements() iers)
SetGadgetText(#saisie_cat_mouv,mouvements()categorie)
If mouvements()validation = "X"
SetGadgetState(#saisie_valide,#PB_Checkbox_Checked)
Else : SetGadgetState(#saisie_valide,#PB_Checkbox_Unchecked)
EndIf
EndIf


If EventGadget() = #Button_quit
End
EndIf


Case #PB_Event_CloseWindow
End

EndSelect
ForEver

 

 


22/03/2012
0 Poster un commentaire

Ces blogs de Informatique & Internet pourraient vous intéresser