# Changelog ## 1.2.0 — 2026-05-27 ### Phase 1.8 Lieferschein-Bestätigung in der PWA **Neuer element_type='shipment'** - Bericht-Modul unterstützt jetzt `element_type='shipment'` mit `fk_element = llx_expedition.rowid` - Tab "Bericht" erscheint auf der Lieferung-Card (Konstante `BERICHT_TAB_ON_SHIPMENT`) - `bericht_fetch_parent()` und `bericht_fetch_shipment_with_order()` laden Expedition + verknüpften Auftrag **Signatur auf Lieferschein-PDF stempeln** - Neue Tabelle `llx_bericht_signature_box`: Pro PDF-Template (merou/rouget/espadon/...) konfigurierbare Box-Geometrie (x/y/w/h in mm, Seite first/last, Label) - Konstante `BERICHT_SIGNATURE_BOX_DEFAULT` als JSON-Default (`{"page":"last","x_mm":120,"y_mm":230,"w_mm":70,"h_mm":35,"label":"Unterschrift Kunde"}`) - `bericht_stamp_signature_on_pdf()`: FPDI importiert Original-Lieferschein, TCPDF stempelt PNG + Name + Datum + GPS in die konfigurierte Box **Visueller Admin-Editor (`admin/signature_box_editor.php`)** - PDF.js rendert ein Beispiel-Lieferschein-PDF - Fabric.js-Rechteck zum Drag&Resize der Signatur-Box auf dem Canvas - Eingabefelder für X/Y/W/H/Label/Seite werden live synchronisiert - "Speichern" persistiert via AJAX (`ajax/save_signature_box.php`) in `llx_bericht_signature_box` (UPSERT auf `template_name`) - Reset-Button setzt zurück auf Default-Konstante **Neue PWA-Route (Baustelle-App)** - Order-Detail bekommt Button "🚚 Lieferungen" - `#/orders/:id/shipments` zeigt Liste aller verknüpften Expeditionen mit Status- und Signed-Badge - `#/shipments/:id` zeigt Lieferschein-PDF inline (PDF.js Canvas) + großen Button "Lieferung unterschreiben lassen" **Vollbild-Querformat-Signatur (`openShipmentSignatureModal`)** - `requestFullscreen()` + `screen.orientation.lock('landscape')` (Best-Effort) - 2-Spalten-Layout: links Lieferschein-Info + Namens-Input + GPS-Toggle, rechts Vollbild-Canvas - HiDPI-aware Canvas (`devicePixelRatio`), Pointer/Touch-Events mit quadratischer Glättung - Beim Bestätigen: PNG → `POST /api/shipments.php?action=confirm` → Backend stempelt in PDF und legt es in `documents/expedition//-signed.pdf` **Auto-Workflow auf der Expedition** - `signed_status=1` (via `CommonSignedObject::setSignedStatus`) - Wenn Expedition noch Draft (Status 0): erst `valid()`, dann `setClosed()` - Bericht-Record (`element_type='shipment'`) wird angelegt/aktualisiert mit `final_pdf_path` zum signierten PDF - `.meta.json` neben der PNG mit voller Audit-Spur (signer, user, GPS, IP, Box, Template, signed_at) **Neue API-Endpoints** - `GET /api/shipments.php?order_id=` — Liste der Lieferungen zu einem Auftrag - `GET /api/shipments.php?id=` — Detail einer Lieferung + Bericht-ID falls vorhanden - `GET /api/shipments.php?id=&action=pdf` — PDF-Stream (Original oder gestempelt) - `POST /api/shipments.php?id=&action=confirm` — Unterschrift einstempeln + Status-Workflow ## 1.1.0 — 2026-04-08 ### Phase 1 Bericht-Modul Erweiterungen **1.6 Verknüpfte Sicht Auftrag↔Rechnung** - Bericht-Übersicht zeigt drei Sektionen: direkt zugeordnet, zusätzlich verknüpft, aus verknüpften Aufträgen - "→ Übernehmen"-Button erstellt llx_element_element-Eintrag (n:m-Verknüpfung) - "Lösen"-Button entfernt Verknüpfung - Beim Finalisieren landet das PDF auch unter den verknüpften Elementen im ECM **1.1 Live-PDF-Vorschau** - 👁️ Vorschau-Button im Editor → Modal mit eingebettetem PDF - Neuer Endpoint `ajax/preview_pdf.php` (kein ECM-Insert, kein Status-Wechsel) - ESC oder Klick auf Backdrop schließt das Modal **1.2 Anhänge löschen** - 🗑️ Icon neben jedem Anhang in der linken Spalte - Confirm-Dialog mit Auftrags-/Rechnungs-Referenz - Path-Whitelist (nur facture/, commande/, propal/), Thumbs + ECM-Eintrag werden mitgelöscht **1.3 Seitengröße A4/A3/A5/Letter + Hoch/Quer** - Format und Orientation in der Bericht-Meta wählbar - Auto-Save bei Änderung - Bilder werden dynamisch auf die Seitengröße skaliert **1.4 + 1.5 Mehrere Bilder pro Seite (DB-Schema)** - Neue Tabelle `llx_bericht_page_image` für Multi-Image-Seiten - Spalten `layout`, `image_scale`, `image_align` in `llx_bericht_page` - Grid-Rendering im Editor + PDF folgt im nächsten Commit **1.7 Tab „Berichte" auf Kundenkarte** - Read-only Übersicht aller Berichte des Kunden - Flache Tabelle sortiert nach Datum - Springt zum Bericht oder zur Quelle (Auftrag/Rechnung/Angebot) - Konstante `BERICHT_TAB_ON_THIRDPARTY` zum Aktivieren ### Sonstiges - DB-Migrationen im `init()` für bestehende Installationen (ALTER TABLE mit Error-Suppress) - `bericht_burn_annotations` und `bericht_render_cover_internal` in `lib/bericht.lib.php` zentralisiert (gemeinsam von generate_pdf + preview_pdf genutzt) - Modal-CSS für Vorschau im Dolibarr Dark-Theme ## 1.0.0 — 2026-04-08 Initiales Release. - Modul-Scaffold mit Reiter „Bericht" auf Rechnungen, Aufträgen und Angeboten - CRUD für `Bericht` und `BerichtPage` (Tabellen `llx_bericht`, `llx_bericht_page`) - Browser-Editor mit PDF.js + Fabric.js: Pfeile, Kreise, Rechtecke, Freihand, Text, Undo/Redo - Anhänge-Browser zeigt eigene Anhänge + Anhänge verknüpfter Objekte - Datei-Upload direkt in den Bericht - Seiten-Verwaltung mit Drag&Drop (SortableJS), Löschen, Drehen - Notizen pro Seite (werden im PDF gedruckt) - Admin-Setup mit ODT-Template-Verwaltung (Upload, Löschen, Standard wählen) - Platzhalter-System für ODT-Templates (`{auftragsnummer}`, `{kunde_name}`, …) - PDF-Finalisierung mit TCPDF + FPDI, ODT→PDF Konvertierung des Deckblatts via LibreOffice - Annotationen werden beim Export ins PDF eingebrannt - Auftragsnummer wird automatisch aus dem vorhandenen Extrafield `options_auftragsnummer` geholt - Beim Aktivieren werden fehlende Extrafields auf `llx_facture_extrafields` angelegt, vorhandene NICHT überschrieben - Mehrere Berichte pro Dokument möglich - Forgejo-Workflow für Deploy nach Dolibarr (Tag `[deploy]`)