Abgebrochene Projekte verschwinden aus der Liste

Rueckmeldung: 'wenn ich abbreche dan sollen die auch da weg'.

Ein abgebrochenes Projekt in der laufenden Liste stehen zu lassen ist
doppelt schaedlich: Es verstellt den Blick auf das, was wirklich laeuft,
und beim schnellen Durchsehen haelt man es fuer eine offene Baustelle.

Beim Abbrechen wandert das Projekt jetzt automatisch ins Archiv. Kein
neues Konzept: Den Archiv-Umschalter in der Projektliste gibt es
laengst, und die Suche sowie das Cockpit klammern Archiviertes ohnehin
aus. Es verschwindet damit auch aus dem PORTAL des Kunden -- und das ist
richtig so, ein abgebrochener Auftrag hat dort nichts mehr zu suchen.

Archivieren statt loeschen: Zahlungen, Erstattungsbetrag und Verlauf
haengen daran, und bei einem Streit braucht man genau das. Der Test
prueft beides -- weg aus der Liste UND noch vorhanden.

Geprueft: 55 gegen eine echte Datenbank.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-24 12:28:05 +02:00
co-authored by Claude Opus 5
parent 8726110035
commit e43375728c
2 changed files with 22 additions and 0 deletions
@@ -575,6 +575,22 @@ export async function projektAbbrechen(req, res) {
`UPDATE wd_projekte
SET status = 'abgebrochen', abbruch_am = ?, abbruch_grund = ?, abbruch_wer = ?,
abbruch_erstattung_cent = ?, abbruch_fortschritt = ?,
/* Ab ins Archiv.
Wunsch vom 24.08.2026: "wenn ich abbreche dan sollen die
auch da weg". Ein abgebrochenes Projekt in der laufenden
Liste stehen zu lassen, waere doppelt schaedlich: Es
verstellt den Blick auf das, was wirklich laeuft, und man
haelt es beim schnellen Durchsehen fuer eine offene
Baustelle.
Archivieren statt loeschen: Zahlungen, Erstattung und
Verlauf haengen daran, und bei einem Streit braucht man
genau das. Ueber den Archiv-Umschalter in der Projektliste
bleibt es jederzeit auffindbar -- und die Suche findet es
bewusst NICHT mehr, sonst staende ein toter Vorgang
gleichrangig neben den lebenden. */
archiviert = 1,
/* Die Uhr steht ab jetzt. uhr_start_am bleibt stehen, damit
man später sieht, wie lange gelaufen wurde. */
wartet_auf = 'niemand',
+6
View File
@@ -180,6 +180,12 @@ pruefe("der eingegebene Betrag gilt, nicht der vorgeschlagene",
pa.abbruch_erstattung_cent === 10000, pa.abbruch_erstattung_cent);
pruefe("der Fortschritt beim Abbruch ist festgehalten",
pa.abbruch_fortschritt === r.prozent, pa.abbruch_fortschritt);
/* Wunsch: "wenn ich abbreche dan sollen die auch da weg" -- die
Projektliste zeigt nur nicht-archivierte. */
pruefe("das Projekt ist aus der laufenden Liste verschwunden",
pa.archiviert === 1, pa.archiviert);
pruefe("aber nicht geloescht -- es ist noch da",
!!db.prepare(`SELECT id FROM wd_projekte WHERE id = ?`).get(an.projektId));
pruefe("offene Rechnungen wurden storniert",
db.prepare(`SELECT status FROM wd_zahlungen WHERE id = 'z2'`).get().status === "storniert",
db.prepare(`SELECT status FROM wd_zahlungen WHERE id = 'z2'`).get().status);