Guthaben: "von wie vielen" anzeigen und Zugaben zuruecknehmen

In den Kaesten steht jetzt neben dem offenen Stand, wie viel jemals in den
Topf kam: "0 von 3" liest sich anders als "0 von 0" - das eine heisst
aufgebraucht, das andere nie etwas gehabt. Gezaehlt werden dabei nur echte
Zugaenge: Die Ruecknahme eines Verbrauchs zaehlt dorthin, wo die stornierte
Zeile zaehlte, sonst saehe ein zurueckgenommenes Redesign wie ein
zusaetzliches Paket aus.

Neben jedem Plus steht ein Minus, das die zuletzt von Hand eingetragene
Zugabe dieser Art zurueckholt - fuer den vertippten oder doppelten Klick,
ohne in der Historie nach der richtigen Zeile zu suchen. Zurueckgenommen wird
ueber eine Gegenbuchung; bei einem CC-Paket gehen beide Zeilen mit. Aus einem
Import gebuchte Pakete bleiben aussen vor: die gehoeren zu einer Bestellung
und werden dort storniert, wo der Zusammenhang sichtbar ist. Die Rechte
folgen dem Eintragen - Kulanz bleibt bei den Admins.

Nebenbei zwei wacklige Tests festgezurrt: Die Testdatenbanken weichen auf den
naechsten Port aus, wenn einer aus einem frueheren Lauf noch haengt, und der
Sperr-Test des Abgleichs klopft nicht mehr bei GExtension an, sondern laeuft
gegen eine tote Adresse.
This commit is contained in:
2026-09-21 18:50:27 +02:00
parent 2d1c008c0a
commit f7b48a9891
11 changed files with 397 additions and 38 deletions
+4
View File
@@ -21,6 +21,10 @@ before(async () => {
process.env.DATABASE_URL = database.url;
process.env.SESSION_SECRET = 'test-secret-that-is-long-enough-000000';
process.env.NODE_ENV = 'test';
// Der Sperr-Test stösst einen echten Abruf an. Er soll sofort scheitern
// statt in ein Zeitlimit zu laufen - und vor allem nicht wirklich bei
// GExtension anklopfen, nur weil hier Tests laufen.
process.env.GEXTENSION_BASE_URL = 'http://127.0.0.1:1';
db = await import('../src/db.js');
schedule = await import('../src/services/schedule.js');