From 8fe43d68020138630b007beceef6cc43eb004545 Mon Sep 17 00:00:00 2001 From: Moirtz Wagner Date: Thu, 17 Sep 2026 11:27:27 +0200 Subject: [PATCH] Rechnungen: Anrede beim Bearbeiten, lokale Testumgebung, BOMs Beim Test der Oberflaeche im Browser gefunden: - addrechnung.tpl fragte die gespeicherte Anrede als $rechnung.anr1 ab (die Daten heissen anrede1) und gab sie ohne Klammern aus. Beim Bearbeiten von Angeboten/Briefen erschien deshalb immer die Standard-Anrede, eine geaenderte ging beim erneuten Speichern verloren. - |escape innerhalb von {if}-Bedingungen wieder entfernt (dort ohne Wirkung, gehoert nicht dorthin). - UTF-8-BOM aus sechs Dateien entfernt; makepdf.php gab es auf jeder Rechnungsseite vor dem HTML aus. - makeImageFromPDF() loeschte bei der Aufraeumrunde auch .gitkeep; Pfade fuer convert per escapeshellarg(). - constants.php: Instanzname auch unter Windows (getcwd() mit Backslashes) korrekt; KV_CONFIG_PATH als Config-Pfad fuer lokale Tests. Im Browser getestet (lokaler PHP-Webserver, migrierte Testdatenbank): Login mit Sonderzeichen-Passwort, Entwurf automatisch speichern und laden, Rechnung mit Umlauten/Anfuehrungszeichen/HTML im Artikelnamen und Komma-Betraegen speichern, Anzeige als PDF (Original und Kopie), Kundensuche nach Dokumenten mit Umlaut, Artikelnamen escaped, Storno, Kopie auf andere Adresse, Umschlag, Angebot mit eigener Anrede anlegen und wieder bearbeiten. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 2 ++ ajax/searchterm.php | 2 +- incs/constants.php | 12 ++++++++---- incs/makepdf.php | 8 ++++---- incs/users.php | 2 +- sites/stexp.php | 2 +- templates/addrechnung.tpl | 38 +++++++++++++++++++------------------- templates/mailrechnung.tpl | 12 ++++++------ templates/termlist.tpl | 2 +- 9 files changed, 43 insertions(+), 37 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 969f70a..888c69e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,6 +16,8 @@ for f in $(git ls-files "*.php" | grep -vE "^(incs/(tcpdf|pChart|PHPMailer|WebAu Zum Ausführen braucht es einen Webserver mit PHP, eine MariaDB/MySQL-Instanz und die externe Konfigurationsdatei (siehe unten). Ohne die Konfiguration springt `index.php` in den Setup-Modus (`update/firststart.php`). **Nur** dann: Das Setup läuft ohne Login, schreibt die Config und kann die Datenbank leeren. Deshalb wird `action=setup` bei gültiger Config verworfen, und `firststart.php` und `rebuild-settings.php` brechen selbst ab. Werte, die in die Config geschrieben werden, immer über `var_export()` maskieren – die Config ist ausführbarer PHP-Code. +**Lokal testen** (auch unter Windows): Die Umgebungsvariable `KV_CONFIG_PATH` ersetzt `CONFIG_PATH`. Die Config-Datei heißt nach dem Verzeichnisnamen des Checkouts, also z.B. `Kundenverwaltung_settings.conf`; `$lokale_netze` muss `127.0.0.1`/`::1` enthalten, sonst gibt es kein Passwortfeld. Start im Repo-Verzeichnis mit `php -S 127.0.0.1:8765`. Die PDF-Vorschau als Bild (`makeImageFromPDF()`) braucht ImageMagick unter `/opt/bin/convert` und funktioniert lokal nicht. + ## Die zwei zentralen Mechanismen ### 1. Das Verzeichnis bestimmt die Instanz diff --git a/ajax/searchterm.php b/ajax/searchterm.php index 0169b09..5f3ebe2 100644 --- a/ajax/searchterm.php +++ b/ajax/searchterm.php @@ -1,4 +1,4 @@ -assign("heading","Steuerexport"); $smarty->display("heading.tpl"); diff --git a/templates/addrechnung.tpl b/templates/addrechnung.tpl index 11a24b0..8e01b84 100644 --- a/templates/addrechnung.tpl +++ b/templates/addrechnung.tpl @@ -1,4 +1,4 @@ -
+
{if $rechnung.typ_id && !$newtype} {$type = $rechnung.typ_id} @@ -114,11 +114,11 @@


- {if $anrs.{$adresse.anrede_id|escape} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} + {if $anrs.{$adresse.anrede_id} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} {strip}
{/strip} - {elseif $anrs.{$adresse.anrede2_id|escape} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} + {elseif $anrs.{$adresse.anrede2_id} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} {strip}
{/strip} - {elseif $anrs.{$adresse.anrede_id|escape} == "Frau"} + {elseif $anrs.{$adresse.anrede_id} == "Frau"} {strip}
{/strip} - {elseif $anrs.{$adresse.anrede2_id|escape} == "Frau"} + {elseif $anrs.{$adresse.anrede2_id} == "Frau"} {strip} 1} @@ -204,11 +204,11 @@ {/if} ' id='anr2' maxlength='150' name='anr2' />
{/strip} - {elseif $anrs.{$adresse.anrede2_id|escape} == "Frau"} + {elseif $anrs.{$adresse.anrede2_id} == "Frau"} {strip}
-{if $anrs.{$adresse.anrede_id|escape} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} +{if $anrs.{$adresse.anrede_id} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} {strip}
{/strip} -{elseif $anrs.{$adresse.anrede2_id|escape} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} +{elseif $anrs.{$adresse.anrede2_id} == "Herrn" || $anrs.{$adresse.anrede_id|escape} == "Herr"} {strip}
{/strip} -{elseif $anrs.{$adresse.anrede_id|escape} == "Frau"} +{elseif $anrs.{$adresse.anrede_id} == "Frau"} {strip}
{/strip} -{elseif $anrs.{$adresse.anrede2_id|escape} == "Frau"} +{elseif $anrs.{$adresse.anrede2_id} == "Frau"} {strip}
{/strip} -{elseif $anrs.{$adresse.anrede2_id|escape} == "Frau"} +{elseif $anrs.{$adresse.anrede2_id} == "Frau"} {strip}
+

{* ANZEIGE PANE *}