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);