Der Aktivieren-Dialog von Terminplaner, Webshop und Buchungskalender bietet als Weg zusätzlich WhatsApp an (Portal nimmt whatsapp an). Die Website-Analyse bleibt bei Chat oder E-Mail.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Mit break-word weitete ein langer Projektname ohne Umbruchstelle die Seite auf (Handy 390 px);
nur Beträge und Nebenzeilen wechseln zu break-word und nowrap.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
overflow-wrap: anywhere wird break-word (Projektname 'Fachanwaltsseiten' bricht nicht mehr
mitten im Wort); Beträge und Stunden der Projektliste stehen auf white-space: nowrap,
damit das Eurozeichen nicht allein steht.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Der Server (rechnungsbau.js, baueAbRechnung) nimmt Anzahlung und Schlussrechnung ohne
Projekt an. Unter 'Ohne Projekt' lädt der Dialog die ABs des Kunden ohne Projekt und
ihre Rechnungen; frei bleibt die Vorgabe.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Bei stripeOk false steht 'Stripe nicht erreichbar – Beträge unbekannt' statt 'bereits berechnet
0,00 €', und es wird keine Rechnungsart vorgeschlagen.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Nicht sperrender Hinweis (§ 34a UStDV), solange financeSettings.steuernummer leer ist;
die Einstellungen werden einmal geladen, bei einem Ladefehler erscheint kein Hinweis.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Bei Anzahlung, Schlussrechnung und Aufwand wird 'Zahlungsziel in Tagen' mit
auftrag.zahlungszielTage vorbelegt (sonst 14); eine Eingabe des Nutzers bleibt.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Kundenliste mit Reiter "Abgesagt" (vorher nur unter "Alle"), rotes Abzeichen,
Suche auch nach Telefon
- Kundenseite: "Absage eintragen" fuer Leads (Grund freiwillig); Vermerk
"Abgesagt am TT.MM.JJJJ (Name): Grund" oben in die Notizen, offene
Akquise-Tickets auf "Abgesagt"; roter Hinweis "nicht erneut anrufen" und
"Wieder als Lead fuehren"
- Neuer Lead (jetzt mit Telefon) und Neuer Kunde gleichen live mit allen
Kunden ab (auch archivierte/abgesagte): Name ohne Rechtsform, E-Mail,
Firmen-Domain (ohne Freemailer), Telefon; Abgesagte rot und zuerst,
Knopf heisst dann "Trotzdem anlegen"
- Uebersicht wird nach Speichern neu aufgebaut (key), damit kein alter
Notizstand den Vermerk ueberschreibt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die letzte Zelle (Prüfen/Ansehen) wurde bei Handybreite auf etwa 19 px gequetscht, weil
.table.table-wrap td overflow-wrap:anywhere hat. Wie im E-Mail-Speicher bekommt die
Aktionszelle nowrap (Aktion 58 px, Kunde 139/124/120 px bei 390/375/360 px, kein Überlauf).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die Angebotstabelle brach bei 390 px gewoehnliche Woerter mitten im Wort
("Ansprechpartne-r", "Geschaeftsfuehru-ng"): die Spalte "Angebot" hatte keine
Mindestbreite und bekam nur etwa 103 px. Jetzt hat <th>Angebot</th> die Klasse
col-offer (min-width 8rem), col-status faellt bis 600 px auf 6rem, col-name
steigt auf 7,5rem ("Anlagentechnik" brach sonst in der Kundenspalte).
Bis 600 px summieren sich die Mindestbreiten auf 344 px in 358 px.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Die Kopfzelle "Kunde" bekommt in OfferList und CreditList die Klasse col-name
(min-width 7rem, die Regel gab es schon fuer den E-Mail-Speicher). Ohne sie
gab die Tabelle der Kundenspalte am Handy fast nichts ab (td bricht ueberall),
und Namen brachen mitten im Wort ("Fahrschul/e Roth", 79 px bei 390 px).
Kommentar der Regel nennt jetzt alle drei Tabellen.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reiter statt Filterknoepfe, Statusspalte mit Badge, Stripe-Links, Mail-Zeile und Aktionen (E-Mail senden als Textlink, Zurueckziehen als danger), Spalten Angelegt und Gueltig bis nach Breite ausgeblendet. Mindestbreite der Statusspalte, damit Woerter nicht mitten im Wort brechen. Neues Angebot ohne Icon in der Werkzeugleiste, Hinweis als table-foot.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Neuer Zustand busyAction (Speichert … / Sendet …) neben busy; Formularbloecke der Berechnung stehen in .form-stack (16 px) statt auf dem Altabstand .page .field.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Der Abschnitt nutzt Card, Button und Dialog statt Altklassen und Icons. TicketProjects laedt nur noch bei einer anderen Ticket-ID neu (load haengt an ticket.$id, der neueste Ticketstand kommt ueber ein ref), damit "Suche neue Repos ..." bei Status-, Zustaendig- oder Dringend-Aenderung nicht erneut blinkt.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Zeile mit Statusbadge und Textlinks, Zustimmungsablauf im Dialog mit Fuss (Abbrechen, Einschalten), Ausschalten-Rueckfrage bleibt inline. Drei Zeilen CSS fuer die Textvorlage (details) im Dialog.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Markup auf Bausteine (Button, Badge) und die Klassen pv-*, input, select, msg, link umgestellt; keine Inline-Stile, kein btn-sm, kein Farbliteral. Fehlertexte des Runners behalten ihren Zeilenumbruch ueber .pv-block .msg.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>