-- ===================================================================== -- Die Uhr läuft erst, wenn die Anzahlung da ist -- -- WARUM DAS EIN EIGENER ZUSTAND IST -- -- Bisher begann der Liefertermin mit der Annahme. Das ist unfair in -- beide Richtungen: Wer zehn Tage bis zur Zahlung braucht, verbraucht -- zehn Tage der zugesagten Zeit, ohne dass ein Handschlag Arbeit -- passiert wäre — und ich stehe am Ende als der da, der seinen Termin -- reisst. -- -- Deshalb hat ein Projekt jetzt drei Abschnitte statt zwei: -- 1. angenommen, wartet auf Anzahlung → Uhr steht -- 2. Anzahlung da → Uhr läuft, Termin ab HEUTE -- 3. übergeben oder abgebrochen → Uhr steht wieder -- -- `termin_am` wird beim Zahlungseingang NEU berechnet. Es wäre bequemer, -- den bei der Annahme errechneten Termin stehenzulassen — aber dann wäre -- die Zusage falsch, sobald jemand eine Woche mit der Zahlung wartet. -- Der bei der Annahme genannte Termin bleibt als `termin_geplant_am` -- erhalten, damit man sieht, was ursprünglich in Aussicht stand. -- ===================================================================== ALTER TABLE wd_projekte ADD COLUMN uhr_start_am TEXT; ALTER TABLE wd_projekte ADD COLUMN termin_geplant_am TEXT; -- --------------------------------------------------------------------- -- Abbruch -- -- Ein angenommener Auftrag muss abbrechbar bleiben: Der Kunde zahlt -- nicht, meldet sich nicht mehr, oder springt selbst ab. Ohne diesen -- Weg bliebe das Projekt für immer offen in der Liste stehen und -- verfälschte jede Zahl im Cockpit. -- -- Der Erstattungsbetrag wird festgehalten, nicht nur die Entscheidung: -- Bei einem Streit zählt, WAS erstattet wurde und WARUM — und der -- Fortschritt zum Zeitpunkt des Abbruchs ist die Begründung dafür. -- --------------------------------------------------------------------- ALTER TABLE wd_projekte ADD COLUMN abbruch_am TEXT; ALTER TABLE wd_projekte ADD COLUMN abbruch_grund TEXT; ALTER TABLE wd_projekte ADD COLUMN abbruch_wer TEXT; -- kunde | dogfather ALTER TABLE wd_projekte ADD COLUMN abbruch_erstattung_cent INTEGER; ALTER TABLE wd_projekte ADD COLUMN abbruch_fortschritt INTEGER; -- Prozent bei Abbruch -- ===================================================================== -- Benachrichtigungen für die Verwaltung -- -- WARUM EINE EIGENE TABELLE UND NICHT DER VERLAUF -- -- `wd_verlauf` gibt es schon, aber er hat einen anderen Zweck: Er hält -- fest, WAS geschehen ist — vollständig, für später, zum Nachschlagen. -- Eine Benachrichtigung ist etwas anderes: Sie ist ein Anstupsen, das -- gelesen und dann weggelegt wird. -- -- Beides in eine Tabelle zu werfen hiesse: Entweder man markiert jeden -- Verlaufseintrag als gelesen (dann ist der Verlauf voller Rauschen), -- oder man kann Benachrichtigungen nicht wegklicken (dann sammeln sie -- sich, bis niemand mehr hinsieht). Getrennt kann jedes für sich das -- Richtige tun. -- ===================================================================== CREATE TABLE IF NOT EXISTS wd_meldungen ( id TEXT PRIMARY KEY, art TEXT NOT NULL, -- anzahlung_da | restzahlung_da | zusage | widerruf | zahlung_faellig titel TEXT NOT NULL, text TEXT, -- Wohin man springt, wenn man draufdrückt. Eine Benachrichtigung, die -- nur meldet und nicht hinführt, erzeugt Arbeit statt sie abzunehmen. ziel TEXT, -- projekte | zahlungen | anfragen | postfach ziel_id TEXT, dringend INTEGER NOT NULL DEFAULT 0, gelesen INTEGER NOT NULL DEFAULT 0, gelesen_am TEXT, erstellt_am TEXT NOT NULL ); -- Ungelesene zuerst, neueste oben: genau die Reihenfolge, in der sie -- gelesen werden. Ohne Index wird das bei jedem Laden der Übersicht neu -- sortiert. CREATE INDEX IF NOT EXISTS idx_wd_meldungen_offen ON wd_meldungen (gelesen, erstellt_am DESC);