Senden einer Rechnung (Dialog und Entwurf in der Tabelle) fragt vorher: "Rechnung fuer
<Kunde> ueber <Betrag> jetzt festschreiben und an <E-Mail> senden? Danach laesst sie sich
nur noch stornieren."
Fehlt dem Kunden Strasse, PLZ oder Ort, zeigen Rechnungsdialog und Kundenansicht die
Warnung "Adresse des Kunden unvollstaendig ..." mit Weg zur Uebersicht, und Senden ist
ueber 250 € gesperrt (§ 14 Abs. 4 Nr. 1 UStG, Kleinbetragsrechnung); Entwuerfe bleiben
moeglich. Reine Helfer addressComplete und invoiceSendGate samt Tests.
Fehlermeldungen in Rechnungs- und Zuordnen-Dialog werden per scrollIntoView
({ block: 'nearest' }) in den sichtbaren Bereich geholt.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
TaxCard zeigt am Ende immer "Orientierungswert, ersetzt keine Steuerberatung."; der
Anteil heisst "<x> % der Grenze von 25.000 €" statt "<x> % der 25.000-€-Grenze".
AdminRoute zeigt "Wird geladen …" statt "Loading...".
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Seitenmenue startet auf schmalen Bildschirmen (bis 720 px) eingeklappt. Bei 390 px liess
das feste 248-px-Menue nur ~140 px Inhalt, jede Seite (auch /finance) scrollte waagerecht;
das fiel in den Einzeltests ohne App-Rahmen nicht auf.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die Lead-Automatik ist gestoppt und die automatisch angelegten Kunden
sind geloescht; das Leads-Projekt liegt auf Eis.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Implementiert auf TicketProjects.jsx (Paket-E-Inline-Liste) statt des
frueheren Dialogs, gemaess Controller-Ruling R3.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bei zwei gueltigen Versionen mit gleichem Beginn gilt die zuletzt angelegte;
eine am selben Tag abgeloeste Version endet nie vor ihrem Beginn.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Links auf die anderen Tickets des Kunden hatten keine eigene Farbe und
erschienen im dunklen Design in Browser-Blau (#0000ee), kaum lesbar, dazu
unterstrichen. Sie nutzen jetzt die normale Textfarbe ohne Unterstreichung,
wie die übrigen Listenzeilen (.list-row).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Menüpunkt, die Seiten /roadmaps und /roadmaps/:id, der Roadmap-Kasten im Ticket
und die Plan-Automatik (Auto-Ticket, Knoten-Kommentare, automatischer Abschluss)
sind entfernt. Alte Links landen bei den Tickets. Die Projekt-Kontextbox im
Ticket bleibt und zeigt das zugewiesene Projekt samt den anderen Tickets des
Kunden, nur ohne Plan-Link. Die Daten in roadmaps/roadmapNodes bleiben in
Appwrite unangetastet; das Kundenportal liest sie nicht.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Im Details-Reiter steht eine Projektliste mit Zuweisen, Lösen und
"Neues Projekt"; der Knopf "Projekte zuweisen / bearbeiten", der
Dialog und die zweite Projektliste sind weg.
- Zuweisen bietet nur passende Projekte an: gleicher Kunde oder ohne
Kunde, nicht archiviert, keine Vorlage.
- Lösen nimmt ein Projekt nur noch vom Ticket. Bisher wurde dabei auch
die Kundenzuordnung gelöscht und der Kunde sah seine Vorschau im
Portal nicht mehr.
- Projektkarten ohne README-Vorschau (kostete je Karte einen Abruf) und
ohne nie befüllte Felder (Live-Domain, Commit-Box, "Preview: aktiv");
react-markdown entfällt damit (Lockfile mit Node 20 erzeugt).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Acht Einträge ohne Gruppenüberschriften: Tickets, Planboard, Roadmaps,
Projekte, Kunden, Leads, Finanzen und für Admins Admin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Finanzen: Liste, Zahlen, PDF und Link zu InvoiceNinja bleiben. Das
Formular "Rechnung erstellen" (auf der Seite und als "Rechnung aus
Ticket erstellen" im Ticket) ist weg; Rechnungen entstehen direkt in
InvoiceNinja. Das Verknüpfen von Kunden mit InvoiceNinja bleibt.
- Filter "Bezahlt" repariert: InvoiceNinja liefert status_id als Text.
- FinancePage.jsx und InvoicePanel.jsx waren Windows-1252 kodiert und
zeigten live "�"; jetzt UTF-8, dazu Umlaute in den Texten.
- Dashboard entfernt (doppelte Finanzzahlen, "Offen" zählte falsch);
alte Links führen zu den Tickets.
- Admin: Reiter "Konfiguration" (nur noch Prioritäten, die seit Paket B
niemand liest) mit useAdminConfig entfernt; Admin startet bei Kunden.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Paperless enthält 0 Dokumente, der Upload wurde nie benutzt. Weg sind:
die Seite Dokumente (alte Links führen zu den Tickets), der Menüpunkt,
der Reiter Dokumente in Ticketkarte und Kundenseite, der Upload-Dialog
(legte Dateien zusätzlich ungelesen im Appwrite-Bucket ab), das Feld
"Paperless-Korrespondent" und das Abzeichen "Docs", auf dem Dashboard
die Kachel Dokumente und "Dokument hochladen", im API-Client die
Paperless-Aufrufe. Gespeicherte Daten bleiben unverändert; die
Paperless-Routen im Backend ticket-integrations sind nicht angefasst.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Status: 6 statt 10, auf Deutsch (Offen, In Arbeit, Wartet auf Kunde,
Prüfung, Erledigt, Storniert). Gespeichert werden die Werte, die das
Kundenportal für die Fortschrittsleiste kennt; alte Werte wie Assigned
werden weiter angezeigt ("Eingeplant"), sind aber nicht mehr wählbar.
- Zuweisen ändert den Status nicht mehr; neue Tickets starten "Offen".
- Priorität: Schalter "Dringend" statt fünf Stufen (dringend = 4, normal
= 2; alte Stufen Hoch/Kritisch gelten als dringend), rotes Abzeichen.
- Ticketliste: Standardansicht "Aufträge" ohne Akquise-Tickets; Filter
Typ (Aufträge/Webpage/Migration/Projekt/Akquise/Alle), 6 Status-Gruppen,
"Nur dringende". Die toten Felder Kunde, Benutzer/Thema und Datum sind
durch eine echte Suche ersetzt (Kunde, Betreff, Angefragt von, WOID).
Deep-Link ?woid= zeigt das Ticket weiter unabhängig von Art und Status.
- Formulare "Neues Ticket" und "Arbeitsblatt" auf Deutsch; raus sind
Workload Estimate, Requested for und die Service-Art am Ticket
(gespeichert wird weiter Fernwartung).
- Ticketkarte: Projekt/Preview im Details-Reiter (4 statt 5 Reiter), eine
Zusammenfassungszeile statt der großen Statistik, doppelter
Projekte-Stift weg, Service-Abzeichen weg.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Der Knopf "+ Abo" / "✓ Abo" (Arbeitszeit vom Stundenguthaben des
Wartungs-Abos abziehen) war seit cf1d653 nur in der toten Ticketzeile
angeschlossen und deshalb nie sichtbar. Jetzt hängt er an der echten
Ticketkarte: bei jedem Arbeitsblatt mit Arbeitszeit, auch bei Git-Pushes
mit nachgetragener Zeit; Kommentare und offene Pushes haben keinen.
Der Hinweis "Abo-Stunden" ist jetzt lesbar (weiße Schrift, Abstand).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
isDemoMode war nie aktiv: appwrite.js hat immer eine Projekt-ID als
Fallback. Weg sind die Demo-Zweige in Anmeldung und Hooks sowie die
Beispieldaten aus der alten IT-Welt (Serverausfall, Drucker, Kunde A–E).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nie importierte Dateien (rund 1.900 Zeilen): die alte Ticketzeile
TicketRow mit ihren Hilfsdialogen EditWorksheetTimeModal und
ResponseDropdown, TicketFilters, WebpageProjectPanel, ModernSidebar
(+ lib/utils), die three.js-Animation PixelBlast und createDummyTicket.
Dazu die Helfer, die nur diese Dateien benutzt haben
(isTemplateProject/getAvailableProjects, WEBPAGE_TICKET_TYPE,
PREVIEW_TEMPLATE_NAME), die nicht existierenden Collections users und
attachments, getWorksheetsByEmployee und der nur von TicketRow benutzte
zweite "Zeit nachtragen"-Weg in der Arbeitsblatt-Liste.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- "Schnelluebersicht" war eine englische Alt-Tabelle ("WOMS Ticket Quick
Overview ... EOL =)"), die nur die Ticketliste wiederholte.
- Der "Verlauf"-Knopf zeigte nur Statuswechsel aus Arbeitsblättern (bisher
zwei); jeder Wechsel steht weiterhin im jeweiligen Arbeitsblatt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die drei Seiten hatten keine Funktion (feste Nullen, ein alert(),
drei Beispielsätze). Alte Links und unbekannte Adressen führen jetzt
zu den Tickets statt auf eine leere Seite; Menügruppen ohne Eintrag
werden nicht mehr angezeigt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Git-Pushes bleiben orange mit "Zeit offen", bis Beginn und Minuten
nachgetragen sind; danach grün mit "Zeit eingetragen".
- Kommentare sind blau statt grün, damit Grün nur noch "erledigt" heißt.
- Hinweise im farbigen Kopf in weißer Schrift (vorher kaum lesbar).
- Pro Ticket werden alle Arbeitsblätter geladen (Appwrite lieferte ohne
limit nur 25), zugeklappte Ticketkarten laden gar keine mehr.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
70 von 78 Arbeitsblättern sind Git-Pushes, die das Kundenportal mit
employeeId "gitea" anlegt; in employeeName steht der Gitea-Name des
Pushers ("knso", "ANDJ", "JUSN" oder der volle Name). Sie gehören dem
Mitarbeiter mit diesem Kürzel oder Namen - der eigene employees-Eintrag
kommt jetzt aus dem AuthContext.
Bei offenen Pushes heißt der Button "Zeit nachtragen": Beginn ist Pflicht,
das Ende ist der Push. Beim Speichern wird isComment false, damit die Zeit
in der Arbeitszeit zählt (wie früher im Modal der alten Ticketzeile).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eigene Arbeitsblätter (employeeId = angemeldeter Benutzer, kein reiner
Kommentar) bekommen im Kopf den Button "Zeiten bearbeiten". Der Dialog
ändert Beginn, Ende und Arbeitszeit; die Minuten rechnen wie beim Anlegen
mit, von Hand eingetragene Minuten bleiben stehen. Gespeichert werden nur
die fünf Zeitfelder, wieder als dd.mm.yyyy / hhmm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>