All checks were successful
Deploy bericht / deploy (push) Successful in 18s
- modBericht.class.php: version 1.1.0 -> 1.3.1 (war seit 1.1.0 nie nachgezogen) - ChangeLog 1.3.1: Zahlart/Zahlungsbedingung-Uebersetzung + PWA-Formular-Layout-Fix
8.1 KiB
8.1 KiB
Changelog
1.3.1 — 2026-07-18
Fixes rund um die PWA-Auftragsanlage
api/customers.php: Zahlart und Zahlungsbedingung im Kunden-Detail werden jetzt übersetzt — über die Dolibarr-SprachkeysPaymentTypeShort<code>/PaymentConditionShort<code>(Sprachdateibills) statt der rohen englischenlibelle-Werte ausc_paiement/c_payment_term. Behebt die Anzeige „💳 Payment Condition · 🏦 Credit transfer" in der „Übernommen"-Zeile. Fallback auflibelle, wenn kein Sprachkey existiert (z. B. Custom-Einträge ohnecode).- Baustelle-PWA (Repo
baustelle-pwa): „Neuer Auftrag"-Formular saß vertikal zu weit unten (der gemeinsame.fs-bodyerbtejustify-content:center, was beiflex-direction:columnvertikal zentriert) und wurde von der Bildschirmtastatur verdeckt →justify-content:flex-startim Modal +scrollIntoView({block:'center'})beim Feld-Fokus.
1.3.0 — 2026-07-18
PWA Auftrag-Anlegen überarbeitet (Formular + Freigabe)
Formular (Baustelle-PWA, openNewOrderModal)
- Feld-Reihenfolge/Beschriftung angepasst: „Ihr Zeichen" (=
ref_client) steht jetzt an erster Stelle und ist Pflicht; „Auftragsbeschreibung" (= Extrafieldoptions_auftragsbeschreibung) an zweiter Stelle und optional. (Vorher genau umgekehrt: Titel Pflicht, Kunden-Referenz optional.) - Neues Feld „Geplanter Liefertermin" (
datetime-local, Datum + Uhrzeit in einem Feld) → Auftrag-Spaltedate_livraison. - Neue Checkbox „Auftrag direkt freigeben".
Backend (api/orders.php?action=create)
ref_clientist jetzt serverseitig Pflicht (Geschäftsregel — Dolibarr-Core verlangt nur den Kunden).- Neuer Parameter
date_livraison(Unix-TS) →Commande->delivery_date. - Neuer Parameter
validate: legt vor der Freigabe automatisch eine Std-Lohn-Zeile an und ruft dannCommande::valid().- Produkt: Kundenkarten-Default
options_stundenzettel_default_service, sonst Fallback-Produkt über RefBERICHT_ORDER_DEFAULT_SERVICE_REF(DefaultELEK-STD-M, „Stundenlohn Meister" 45 €). - Preis: kundenspezifischer Preis (
PRODUIT_CUSTOMER_PRICES) hat Vorrang, sonst Produkt-Standardpreis. Menge 1.
- Produkt: Kundenkarten-Default
- Response erweitert um
ref_client,date_livraison,validated,added_line,validate_warning.
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'mitfk_element = llx_expedition.rowid - Tab "Bericht" erscheint auf der Lieferung-Card (Konstante
BERICHT_TAB_ON_SHIPMENT) bericht_fetch_parent()undbericht_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_DEFAULTals 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) inllx_bericht_signature_box(UPSERT auftemplate_name) - Reset-Button setzt zurück auf Default-Konstante
Neue PWA-Route (Baustelle-App)
- Order-Detail bekommt Button "🚚 Lieferungen"
#/orders/:id/shipmentszeigt Liste aller verknüpften Expeditionen mit Status- und Signed-Badge#/shipments/:idzeigt 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 indocuments/expedition/<ref>/<ref>-signed.pdf
Auto-Workflow auf der Expedition
signed_status=1(viaCommonSignedObject::setSignedStatus)- Wenn Expedition noch Draft (Status 0): erst
valid(), dannsetClosed() - Bericht-Record (
element_type='shipment') wird angelegt/aktualisiert mitfinal_pdf_pathzum signierten PDF <sig>.meta.jsonneben der PNG mit voller Audit-Spur (signer, user, GPS, IP, Box, Template, signed_at)
Neue API-Endpoints
GET /api/shipments.php?order_id=<id>— Liste der Lieferungen zu einem AuftragGET /api/shipments.php?id=<id>— Detail einer Lieferung + Bericht-ID falls vorhandenGET /api/shipments.php?id=<id>&action=pdf— PDF-Stream (Original oder gestempelt)POST /api/shipments.php?id=<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_imagefür Multi-Image-Seiten - Spalten
layout,image_scale,image_aligninllx_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_THIRDPARTYzum Aktivieren
Sonstiges
- DB-Migrationen im
init()für bestehende Installationen (ALTER TABLE mit Error-Suppress) bericht_burn_annotationsundbericht_render_cover_internalinlib/bericht.lib.phpzentralisiert (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
BerichtundBerichtPage(Tabellenllx_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_auftragsnummergeholt - Beim Aktivieren werden fehlende Extrafields auf
llx_facture_extrafieldsangelegt, vorhandene NICHT überschrieben - Mehrere Berichte pro Dokument möglich
- Forgejo-Workflow für Deploy nach Dolibarr (Tag
[deploy])