Kassensoftware für eine Kleine Bar V0.4.9 - Beta
Verfasst: 06.05.2007 10:00
Hallo
Dies ist ein Kleines Projekt welches ich für eine Kollegin schreiben musste sie wolte einfach nur ne art kasse mit der Sie alles eintippen kann damit sie +/- am abend weiss was sie eingenommen hat...
Vieleicht kans ja mal jemand brauchen bzw. erweitern...
Ich werde selbst noch weiter drann schreiben so das ein Ständiges Protokoll gedruckt wird sobald ich ein solchen Protokolldrucker in die Finger Krieg ^^
Gruss G0
Dankeschöns und Changelog im Source.
Dies ist ein Kleines Projekt welches ich für eine Kollegin schreiben musste sie wolte einfach nur ne art kasse mit der Sie alles eintippen kann damit sie +/- am abend weiss was sie eingenommen hat...
Code: Alles auswählen
;Kleine Kassensoftware, um Einnahmen zu überprüfen.
; Funktioniert mit dem FSC 10er Block. Spezielle Funktionen wird die Maus gebraucht.
;(c)2007 by René Linder
;Mit unterstützung aus dem Pure-Board.
;Changelog:
;****************************
;V0.1
;=======
; - Erste Version
;
;V0.2
;=======
; - Der del Button ist jetzt endlich zu was zu gebrauchen, eintrag Links Markieren und da drauf drücken ;)
; - Textfonts abgeändert.
; - Speichern des Logs geschieht jetzt Mit Datum-Zeit Kenzeichen.
;
;V0.3
;=======
; - Bugfix mit nicht gezeichneten Buttons. (Danke an D@nte)
; - Bugfix mit zu kurzem Stringgadget für die Textgrösse. (Danke an D@nte & edel)
; - Code Optimierung und Flackern behoben (Danke an D@nte & edel)
;
;V0.4
;======
; - Letzer eintrag markieren und löschen geht nicht löscht immer den ersten. Variabelschreibfehler...
;
;V0.4.5 - beta
;======
; - Testversion Vollbild ohne Fontanpassung
;
;V0.4.9 - beta
;======
; - Infobox welches die Fontgrösse zurückgibt entfernt
; - Herunterfahrenmöglichkeit mit Maus geschaffen. (Momentan Windows Only)
Declare ZeichenHinzu(Zeichen$)
Declare Shutdown(flags.l)
Macro MSGLF
Chr(13)+Chr(10)
EndMacro
Macro Tastenabfragen
Select Gadget
Case #Button_Num0
ZeichenHinzu("0")
Case #Button_Num1
ZeichenHinzu("1")
Case #Button_Num2
ZeichenHinzu("2")
Case #Button_Num3
ZeichenHinzu("3")
Case #Button_Num4
ZeichenHinzu("4")
Case #Button_Num5
ZeichenHinzu("5")
Case #Button_Num6
ZeichenHinzu("6")
Case #Button_Num7
ZeichenHinzu("7")
Case #Button_Num8
ZeichenHinzu("8")
Case #Button_Num9
ZeichenHinzu("9")
Case #Button_Num00
ZeichenHinzu("00")
Case #Button_M
Artikel$="Mineral"
Case #Button_W
Artikel$="Wein / Spirituosen"
Case #Button_B
Artikel$="Bier"
Case #Button_X
Artikel$=""
Preis$=""
Case #Button_Ok
If Artikel$<>"" And Preis$<>""
Laenge = Len(Preis$)
Preis$ = Left(Preis$,Laenge - 2)+"."+Right(Preis$,2)
AddGadgetItem(#Listview_0,-1,Artikel$+Chr(10)+Preis$)
Artikel$=""
Preis$=""
EndIf
Case #Button_Z
Ergebnis = CountGadgetItems(#Listview_0)
Abschluss$= "Wollen sie Wircklich abschliessen bei "+Str(Ergebnis)+" einträgen?"
Result = MessageRequester("Tagesabschluss...",Abschluss$,#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
Preisende.f=0
Preisbier.f=0
PreisWein.f=0
PreisMineral.f=0
CreateFile(#File_Log,FormatDate("%dd-%mm-%yyyy--%hh-%ii-%ss", Date())+".txt")
For Zaehlen = 0 To Ergebnis-1
Artikelb$ = GetGadgetItemText(#Listview_0,Zaehlen,0)
Preisb$ = GetGadgetItemText(#Listview_0,Zaehlen,1)
WriteStringN(#File_Log,"Artikel:" + Artikelb$ +" Preis:"+Preisb$)
Preisende = Preisende + ValF(Preisb$)
Select Artikelb$
Case "Mineral"
PreisMineral = PreisMineral + ValF(Preisb$)
Case "Wein / Spirituosen"
PreisWein = PreisWein + ValF(Preisb$)
Case "Bier"
Preisbier = Preisbier + ValF(Preisb$)
EndSelect
Next
WriteStringN(#File_Log,"Endabrechnung:"+StrF(Preisende,2))
WriteStringN(#File_Log,"Endabrechnung Bier:"+StrF(Preisbier,2))
WriteStringN(#File_Log,"Endabrechnung Wein / Spirituosen:"+StrF(PreisWein,2))
WriteStringN(#File_Log,"Endabrechnung Mineral:"+StrF(PreisMineral,2))
CloseFile(#File_Log)
MessageRequester("Info","Abschluss bei:"+StrF(Preisende,2)+MSGLF+"Total Bier:"+StrF(Preisbier,2)+MSGLF+"Total Mineral:"+StrF(PreisMineral,2)+MSGLF+"Total Wein / Spirituosen:"+StrF(PreisWein,2))
ClearGadgetItemList(#Listview_0)
EndIf
Case #Button_Del
Markiert=GetGadgetState(#Listview_0)
ArtikelM$ = GetGadgetItemText(#Listview_0,Markiert,0)
PreisM$ = GetGadgetItemText(#Listview_0,Markiert,1)
Result = MessageRequester("Info","Eintrag Wircklich löschen?"+MSGLF+"Artikel:"+ArtikelM$+" Preis:"+PreisM$,#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
RemoveGadgetItem(#Listview_0,Markiert)
EndIf
Case #Button_Stdn
Result = MessageRequester("Abfrage","Herunterfahren?",#PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Shutdown(1 )
CompilerEndIf
EndIf
EndSelect
EndMacro
Global Artikel$, Preis$, Status$
Enumeration
#Window_0
EndEnumeration
ExamineDesktops()
DeskX = DesktopWidth(0)
DeskY = DesktopHeight(0)
OpenWindow(#Window_0, 0, 0, DesktopWidth(0), DesktopHeight(0),"Kasse V0.4 , (c)2007 by René Linder",#PB_Window_BorderLess)
Enumeration
#File_Log
EndEnumeration
Enumeration
#Button_0
#Button_M
#Button_W
#Listview_0
#String_0
#Button_B
#Button_Num7
#Button_Num8
#Button_Num9
#Button_Num4
#Button_Num5
#Button_Num6
#Button_Num1
#Button_Num2
#Button_Num3
#Button_Z
#Button_X
#Button_Num0
#Button_Num00
#Button_Ok
#Button_Del
#Button_Stdn
EndEnumeration
If CreateGadgetList(WindowID(#Window_0))
ButtonX=(DeskX-280)/4-10
ButtonY=(DeskY-10)/6-10
ButtonXP=ButtonX+10
ButtonYP=ButtonY+10
;***********************
;* Default Fontgrösse Setzen
FontsX=DeskX/31-1
;MessageRequester("Info","Info:"+Str(FontsX))
If LoadFont(1,"Courier",FontsX)
SetGadgetFont(#PB_Default, FontID(1))
EndIf
ButtonGadget(#Button_Del, 280 , 10 , ButtonX, ButtonY, "Del")
ButtonGadget(#Button_M, 280+ButtonXP , 10 , ButtonX, ButtonY, "Mineral")
ButtonGadget(#Button_W, 280+(2*ButtonXP), 10 , ButtonX, ButtonY, "Wein Sprit.", #PB_Button_MultiLine | #PB_ListIcon_AlwaysShowSelection)
ButtonGadget(#Button_B, 280+(3*ButtonXP), 10 , ButtonX, ButtonY, "Bier")
ButtonGadget(#Button_Num7, 280 , 10+ButtonYP , ButtonX, ButtonY, "7")
ButtonGadget(#Button_Num8, 280+ButtonXP , 10+ButtonYP , ButtonX, ButtonY, "8")
ButtonGadget(#Button_Num9, 280+(2*ButtonXP), 10+ButtonYP , ButtonX, ButtonY, "9")
ButtonGadget(#Button_Num4, 280 , 10+(2*ButtonYP), ButtonX, ButtonY, "4")
ButtonGadget(#Button_Num5, 280+ButtonXP , 10+(2*ButtonYP), ButtonX, ButtonY, "5")
ButtonGadget(#Button_Num6, 280+(2*ButtonXP), 10+(2*ButtonYP), ButtonX, ButtonY, "6")
ButtonGadget(#Button_Num1, 280 , 10+(3*ButtonYP), ButtonX, ButtonY, "1")
ButtonGadget(#Button_Num2, 280+ButtonXP , 10+(3*ButtonYP), ButtonX, ButtonY, "2")
ButtonGadget(#Button_Num3, 280+(2*ButtonXP), 10+(3*ButtonYP), ButtonX, ButtonY, "3")
ButtonGadget(#Button_Z, 280+(3*ButtonXP), 10+ButtonYP , ButtonX, 2*ButtonY+10, "Z")
ButtonGadget(#Button_X, 280+(3*ButtonXP), 10+(3*ButtonYP), ButtonX, ButtonY, "X")
ButtonGadget(#Button_Num0, 280 , 10+(4*ButtonYP), 10+(2*ButtonX), ButtonY, "0")
ButtonGadget(#Button_Num00,280+(2*ButtonXP), 10+(4*ButtonYP), ButtonX, ButtonY, "00")
ButtonGadget(#Button_Ok, 280+(3*ButtonXP), 10+(4*ButtonYP), ButtonX, ButtonY, "Ok")
ButtonGadget(#Button_Stdn, 280+(3*ButtonXP), 10+(5*ButtonYP), ButtonX, ButtonY, "Ende")
ListIconGadget(#Listview_0, 10, 10, 260, 5*ButtonYP-10,"Artikel",180,#PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect )
StringGadget(#String_0, 10, 10+5*ButtonYP, 280+(3*ButtonXP)-20, ButtonY, "")
EndIf
AddGadgetColumn(#Listview_0, 1, "Preis", 55)
SetGadgetText(#String_0,Artikel$ + ", Preis:" + Preis$)
;************************
;* Gadget Formatierungen
If LoadFont(0,"Courier",10)
SetGadgetFont(#Listview_0, FontID(0))
EndIf
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad0, #Button_Num0)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad1, #Button_Num1)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad2, #Button_Num2)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad3, #Button_Num3)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad4, #Button_Num4)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad5, #Button_Num5)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad6, #Button_Num6)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad7, #Button_Num7)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad8, #Button_Num8)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Pad9, #Button_Num9)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Divide, #Button_M)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Multiply, #Button_W)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Subtract, #Button_B)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Add, #Button_Z)
AddKeyboardShortcut(#Window_0, 110, #Button_Num00)
AddKeyboardShortcut(#Window_0, 255, #Button_X)
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, #Button_Ok)
Repeat
EventID = WaitWindowEvent()
PreisA$=Preis$
ArtikelA$=Artikel$
If EventID = #PB_Event_Gadget
Gadget = EventGadget()
Tastenabfragen
EndIf
If EventID = #PB_Event_Menu
Gadget = EventMenu()
Tastenabfragen
EndIf
If EventID = #PB_Event_CloseWindow
Quit=1
EndIf
Delay(0)
If Artikel$<>ArtikelA$ Or Preis$<>PreisA$
SetGadgetText(#String_0,Artikel$ + ", Preis:" + Preis$)
EndIf
Until Quit=1
Procedure Shutdown( flags.l )
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Privileges.TOKEN_PRIVILEGES
OpenProcessToken_(GetCurrentProcess_(), 40, @hToken)
Privileges\PrivilegeCount = 1
Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid)
AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0)
CloseHandle_(hToken)
ExitWindowsEx_(flags, 0)
CompilerEndIf
EndProcedure
Procedure ZeichenHinzu(Zeichen$)
If Artikel$ = ""
EndIf
If Artikel$ <> ""
If Len(Preis$)<5
If Preis$ = "" And Zeichen$="0"
Else
Preis$ = Preis$ + Zeichen$
EndIf
EndIf
EndIf
EndProcedure
Ich werde selbst noch weiter drann schreiben so das ein Ständiges Protokoll gedruckt wird sobald ich ein solchen Protokolldrucker in die Finger Krieg ^^
Gruss G0
Dankeschöns und Changelog im Source.