From e43375728c9a006cc2184ede0f2d89a2f88ffc44 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Mon, 24 Aug 2026 12:28:05 +0200 Subject: [PATCH] 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 --- server-internal/routes/webdesign-annahme.js | 16 ++++++++++++++++ server-internal/test-automatik.mjs | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/server-internal/routes/webdesign-annahme.js b/server-internal/routes/webdesign-annahme.js index f8797351..c7a23a08 100644 --- a/server-internal/routes/webdesign-annahme.js +++ b/server-internal/routes/webdesign-annahme.js @@ -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', diff --git a/server-internal/test-automatik.mjs b/server-internal/test-automatik.mjs index c77fa971..fb56363c 100644 --- a/server-internal/test-automatik.mjs +++ b/server-internal/test-automatik.mjs @@ -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);