Personal tools

Frack Kassa

From Frack - Hackerspace Friesland

Jump to: navigation, search
Project: FrackBar
Frackbar gui edition.png
Status onderbroken
Betrokkenen
Kennisgebied(en) Python
ProjectoverzichtProject toevoegen

Een kassa applicatie voor het bijhouden van de verkopen van de bar in Frack

Frack-ws01 in gebruik als kassa.
Dit project is ontstaan uit de Python workshops die geeft. In Week 5 hebben we SQLite database behandeld, daardoor kwam er bij de Code-Jam die volgde het idee naar boven om een Kassa systeem te ontwerpen voor de space. Hieruit voortvloeiend ben ik verder gaan werken aan deze applicatie en is er een testversie tot stand gekomen (Uiteraard met de nodige hulp van Elmer. Aangezien we een losse barcode scanner hebben liggen en Frack-ws01 nog geen nuttig doel had, zijn deze hiervoor in gebruik genomen.

Versies

About dialoog

GUI editie: v0.1

  • Basis versie zonder de admin functies.
  • Werkt nog altijd samen met de barcode scanner.
  • Barcode scanner en muis zijn nodig als input.

v1.0

  • Admin functies
  • CreditCard topup functie
  • Kleine redesign voor de database (niet langer insert/select only)
  • Alle functies werken nu duidelijk, commentaar aangaande user-interface is verwerkt:
    • "I'm a Member" is nu een checkbox ipv een toggle button
    • De Cancel button in de creditcard dialoog is nu "No Card" geworden (om een gescande kaart ongedaan te kunnen maken)
  • Aantal kleine bugfixes en wat input sanitizing.
  • License toegevoegd: WTF-PL.

v1.2

  • Versimpelt design, interface aangepast naar aanleiding van suggesties.
  • Admin functies die volledig werken met de volgende functies:
    • Tonen van verkopen
    • Tonen van de creditcards
    • Toevoegen producten
    • Toevoegen creditcards
  • Bij sales met creditcards word niet meer geregistreerd *welke* creditcard de sale heeft gedaan (privacy redenen),
  • Creditcard top-up dialoog is ingevoerd en werkt!
  • HANDLEIDING: File:Frackbar manual.odt


Command-line editie: v0.1

  • Proof-of-concept versie.

v0.2

  • Eerste versie die in gebruik genomen is.
  • Input verbeterd door achter elke raw_input() .decode('utf-8') te plaatsen.

v0.3

  • User interface verduidelijkt middels BOLD texten
  • Volgorde van invoer aangepast, applicatie vraagt nu als eerste naar betaalmethode.
  • Mogelijkheid tot het scannen van meerdere producten per transactie.
  • Invoer afhandeling is aangepast: Hij accepteerd nu alleen geldige codes.
  • Basis ADMIN gedeelte toegevoegd met de volgende functies:
    • Overzicht van verkopen. (Periodes: Alle, huidige maand, vorige maand, huidige jaar, vorige jaar)
    • Overzicht van CreditCards. (Aangemaakt: Alle, huidige jaar, vorige jaar)
    • Basis CSV export, alleen 'dom' tabellen dumpen: Alle, alleen sales, alleen product of alleen creditcard

Beknopte gebruikshandleiding GUI editie

De nieuwe GTK versie van de FrackBar app! Creditcard input dialoog Dialoog venster voor het toevoegen van credit Sales overview (Admin functie)


Handleiding: File:Frackbar manual.odt

Beknopte gebruikshandleiding Commandline editie

Beginscherm van de kassa.
Complete (afgebroken) transactie.

Gebruikers interface


Voor het besturen van de applicatie zijn enkel de barcode scanner en de bijbehorende barcode-sheets nodig, deze sheets liggen naast de scanner op de bar.

  • De applicatie vraagt als eerste om te scannen of je met geld (CASH scannen) wil betalen of met een prepaid creditcard (je kaart scannen) wil betalen.
    • Indien je kiest voor betalen met geld zal je gevraagd worden of je deelnemer (MEMBER) bent of niet (VISITOR), bij creditcard betalingen word deze stap overgeslagen omdat deze informatie bij de kaart geregistreerd is.
  • Na het kiezen van je betaalwijze kom je uit bij de product selectie, nu kan je de producten die je wilt afnemen scannen.
  • Zodra je alles gescant hebt moet er afgesloten worden door "DONE" te scannen. De applicatie geeft dan aan wat je allemaal geselecteerd hebt en wat het je zou gaan kosten in totaal.
  • De aankoop kan je vervolgens bevestigen door ACCEPT te scannen of annuleren door CANCEL te scannen. Hierna zal de applicatie 5s het overzicht blijven tonen voordat deze terug springt naar het startscherm.


Admin interface


De admin interface kan bereikt worden door ADMIN te scannen in plaats van de betaalwijze. Deze mode kan alleen gestart worden vanuit de betaalmethode selectie! Deze interface geeft een lijst met opties, voor deze opties zit de bijbehorende barcode op het ADMIN blad bijgevoegd. Aangezien er voor deze overzichten geen stappen doorlopen hoeven te worden is er weinig verdere uitleg nodig dan "Lees het scherm" ;) Enige voetnoot voor CSV exports is dat deze opgeslagen worden in de map waarin het kassaprogramma draait (op de BarPC is dat /home/frack/)

Database

De database is opgebouwt uit 3 tabellen en is identiek voor beide versies:

  • 'product':
    • `ID` (Unique key, autoincrement)
    • `barcode`
    • `name`
    • `memberprice`
    • `visitorprice`
  • 'creditcard':
    • `ID` (Unique key, autoincrement)
    • `datetime`
    • `barcode`
    • `member`
    • `credit`
  • 'sales':
    • `ID` (Unique key, autoincrement)
    • `datetime`
    • `product` (Dit is gekoppeld aan 'product'.`ID`)
    • `card` (Dit veld is leeg of gekoppeld aan 'creditcard'.`ID`)
    • `member`

Dit design is relatief simpel en zorgt ervoor dat de database in principe een INSERT INTO / SELECT database is (De enige uitzondering hierop is de creditcard database). Om bijvoorbeeld prijswijzigingen door te kunnen voeren zonder dat je verkoop overzicht compleet verandert, kan simpelweg hetzelfde product met dezelfde barcode en de nieuwe prijzen toegevoegd worden met een hoger `ID` dan het oude. Dit zou automatisch goed moeten gaan door de auto-increment op het veld `ID`. De applicatie zelf haalt namelijk het 'nieuwste' resultaat op in plaats van alle resultaten voor een barcode.

Todo list

  • Full touch screen versie maken die zonder barcode scanner gebruikt kan worden.

Suggesties

Indien je suggesties hebt voor de applicatie, plak ze rustig hieronder! Met een beetje geluk eindigen ze op de Todo list ;)