## WARNUNG: UGLY SOFTWARE. Das ist ein "works for me" Projekt
## Konzept
- ein eigenständiger Scan-Service läuft permanent und speichert alle gescannten Barcodes, die von einem Eyoyo Barcode Scanner per USB-Anschluss kommen, in eine SQLite DB ab.
- der Scan-Service (usb-scanner.py) basiert auf https://github.com/vpatron/barcode_scanner_python/tree/master
- läuft nur, wenn der Scanner angeschlossen und aktiv ist. Anderfalls gibt es Fehlermeldungen
- wird als systemd Service installiert
- ein separat gestartetes Frontend (GUI) greift auf diese Datenbank zu und prüft die Eingaben bzw. reichert sie an
- Frontend (sqlite.py) basiert auf https://github.com/tonypdavis/Raspberry-Pi-Barcode-Scanner-/blob/master/ipad_bs_v1.2.py
- ruft die gleiche Datenbank auf und liest/schreibt Änderungen
**Achtung: Frontend und Scan-Service müssen auf die gleiche Datenbankdatei konfiguriert werden!**
## Installation
Siehe auch https://pypi.org/project/cysystemd/
Fedora:
```
dnf install -y systemd-devel python3-venv
sudo usermod -G dialout -a $USER #den aktuellen User zu dialout hinzufügen
Die Reihenfolge der Spalten in der Tabelle ist entscheidend, da diese statisch im Quellcode referenziert wird. Anpassungen (Löschen) zum Beispiel wie folgt:
```
ALTER TABLE tickets DROP COLUMN 'BarcodeFile';
ALTER TABLE tickets DROP COLUMN 'Ticketbeschriftung';
```
**Test-Scan mit Pseudo-Barcode und Zeitstempel erzeugen:**
```
INSERT
INTO scans(unixtimestamp_created,barcode,validated,hint,unixtimestamp_checked,skipped)
VALUES(CAST(unixepoch('now') AS FLOAT)*1e9,'12345',0,'None',CAST(unixepoch('now') AS FLOAT)*1e9,0)
**Der Barcode auf dem Ticket ist schwer oder nicht scanbar. Was nun?**
In diesem Fall kann die Klarnummer des Tickets verwendet werden und manuell in der Liste ausgewählt werden. Dort wird auch der Barcode angezeigt. Dieser müsste sich mit dem gedruckten Ticket oder Online-PDF decken.