Revbank
Project: revbank | |
---|---|
Status | lopend |
Betrokkenen | , |
Projectcode | frack |
Afgeleid van: | Frack Kassa |
Projectoverzicht – Project toevoegen |
het kassasysteem van revspace. In gebruik bij Frack sinds 14 mei 2019
Revbank is een kassasysteem met name ontwikkeld door juerd @ revspace. Sinds 14 mei 2019 is deze nu ook in gebruik bij Frack en vervangt het de oudere Frack Kassa.
Migratie
Tblorb begon 9 april 2019 met de migratie van het oude Frack kassasysteem naar revbank, een systeem gemaakt door revspace dat onderhouden wordt. Deze migratie was 14 mei 2019 voltooid.
Met de migratie van software kwam ook een migratie van hardware. De nieuwe Frack-PC hardware:
- 7.5 GB ram
- 300 GB HDD
- CPU: Intel Core 2 Duo Processor E8400
De nieuwe kassa-PC was gedoneerd door Ghost van Hacklab.
Om de migratie uit te voeren is het onderstaande migrate.sh script gebouwd dat grotendeels het werk doet om de frack kassa database om te zetten naar de revbank database.
Configuratie frack kassa PC
OS: Xubuntu 18.04
Gebruiker: frack
Wachtwoord: frack
Startup script voor revbank: xfce4-terminal --fullscreen --execute ./startrevbank.sh
Live-versie revbank: ~/revbank
Broncode revbank: ~/Projects/revbank (Frack branch op GitHub)
Bestanden van migratie: ~/frackmigratie.project
migrate.sh
Lelijk script dat frackbar.sqlite opent in de huidige directory, data hieruit laadt en exporteert naar revbank files (.revbank.log voor oude transacties, en revbank.products en revbank.accounts).
Deze is gebruikt tijdens de migratie van de frack kassa naar revbank.
#!/bin/bash LC_ALL=en_US.UTF-8 # required so printf isn't being stupid about , vs . # sales -> .revbank.log # part 1: datetime sqlite3 frackbar.sqlite 'select datetime from sales' | sed 's/$/ CHECKOUT 0 frackbar-migratie LOSE EUR /' > /tmp/migrate1 # part 2: price printf '%.2f\n' $(sqlite3 frackbar.sqlite 'select case when member=1 then memberprice else visitorprice end from sales JOIN product on sales.product=product.id;') > /tmp/migrate2 # part 3: product name sqlite3 frackbar.sqlite 'select name,case when member=0 then " (visitor)" else "" end from sales JOIN product on sales.product=product.id;' | sed 's/\([^|]*\)|\([^|]*\)/# Frackbar sale: \1\2/' > /tmp/migrate3 # paste it together paste -d' ' /tmp/migrate{1,2,3} > .revbank.log rm /tmp/migrate{1,2,3} # products -> revbank.products sqlite3 frackbar.sqlite 'select barcode,visitorprice,name from product;' | tr '|' '\t' > revbank.products # fix formatting of prices paste <(cut -d$'\t' -f1 revbank.products) <(printf '%.2f\n' $(cut -d$'\t' -f2 revbank.products )) <(cut -d$'\t' -f3- revbank.products) | sponge revbank.products # make backup of original product list before removing duplicates cp revbank.products revbank.products.prefiltered # for each duplicate entry, take the last price in the database cut -d$'\t' -f1 revbank.products | sort -u > /tmp/keys for d in $(cat /tmp/keys); do grep ^"$d"$'\t' revbank.products | tail -1 >> /tmp/newproducts; done mv /tmp/newproducts revbank.products # fix ugly formatting when name is too short column -ts$'\t' revbank.products.prefiltered | sponge revbank.products.prefiltered column -ts$'\t' revbank.products | sponge revbank.products rm /tmp/keys # creditcards -> revbank.accounts sqlite3 frackbar.sqlite 'select barcode, credit, datetime from creditcard;' | tr '|' '\t' > revbank.accounts # fix formatting of credit amounts paste <(cut -d$'\t' -f1 revbank.accounts) <(printf '%+.2f\n' $(cut -d$'\t' -f2 revbank.accounts )) <(cut -d$'\t' -f3- revbank.accounts) | sponge revbank.accounts column -ts$'\t' revbank.accounts | sponge revbank.accounts
Dit bestand filtert de producten zodat altijd de laatste prijzen worden gebruikt, de "prefiltered" versie wordt ook ge-output naar revbank.products.prefiltered. Om te zien hoe ze zijn aangepast (als meld geinstalleerd is):
meld <(sort revbank.products.prefiltered) <(sort revbank.products)
Hotfixes na migratie
Er waren na migratie wel een aantal problemen gevonden. De meeste hiervan lijken functionaliteit niet aan te tasten, maar ze zorgen wel voor een aantal artefacten in de UI:
- migrate.sh exporteert datum-tijden met een spatie tussen datum en tijd, ipv met een _ zoals het bij revbank hoort
- migrate.sh gebruikt een andere hoeveelheid indents dan revbank in revbank.accounts, waardoor het aantal indents in sommige lijsten zoals shame niet matchen
- migrate.sh exporteert accounts waarbij de naam alleen verschilt in case (zoals FCC-thomas en FCC-THOMAS), maar revbank is case-insensitive in namen. Dit kan ervoor zorgen dat namen meerdere keren voorkomen in revbank.accounts, waarbij het lijkt dat de laatste altijd wordt gebruikt
- revbank lijkt soms de casing te wijzigen in accountnamen wanneer ze worden opgeslagen. Het is nog niet helemaal duidelijk hoe dit werkt, maar er zijn lowercase FCCs aangetroffen in revbank.accounts nadat revbank is live gezet. Dit heeft geen functionele gevolgen behalve dat case van accounts er anders uit ziet in lijsten zoals shame. fixed?
De volgende hotfixes zijn sindsdien aangebracht om hier wat van te fixen:
- .revbank.log is aangepast zodat alle datum-tijden gemaakt door migrate.sh nu een _ hebben ipv spatie
- de FCCs die lower case gemaakt waren zijn handmatig upper case gemaakt in revbank.accounts