Commit graph

7 commits

Author SHA1 Message Date
3d84f7e0be feat: Phase 2.1 + 2.2 — Mobile-Upload mit QR-Code
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Phase 2.1 Token-System:
- Neue Tabelle llx_bericht_upload_token (token, fk_bericht, expires_at,
  uploads_count, max_uploads)
- BerichtUploadToken-Klasse mit create/fetchValid/incrementCount/cleanupExpired
- Cronjob 'Bericht: Expired Upload-Tokens bereinigen' täglich
- 64-Hex random_bytes-Tokens, 1h Lifetime, 100 Uploads max

Phase 2.2 QR-Upload Lite:
- mobile_upload.php — Mobile-optimierte Page ohne Dolibarr-Login,
  Auth nur über Token in URL/Form
- 📷 Foto aufnehmen (capture=environment) und 📂 Galerie
- Clientseitiges Resize auf max 2000px (Canvas, JPEG q=0.85)
- Upload-Status mit Toast-Notifications
- Liste der hochgeladenen Bilder live in der Page
- ajax/create_upload_token.php — generiert Token für aktiven Bericht
- ajax/list_pages.php — Polling-Endpoint für Editor
- 📱 Mobil hochladen-Button im Editor → QR-Modal mit qrcodejs
- Polling alle 5s nach neuen Pages, auto-reload bei Änderung
- QR-Modal styled für Dark-Theme

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-08 22:38:33 +02:00
0fbfb1bf27 feat: Phase 1.3 + 1.7 + Schema 1.4/1.5 — Format/Orient + Kunden-Tab
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Phase 1.3 Seitenformat A4/A3/A5/Letter + Hoch/Quer:
- Neue Spalten page_format, page_orientation in llx_bericht
- Bericht-Meta zeigt Format + Orientation Selects
- Auto-Save via neuem ajax/save_meta.php
- generate_pdf + preview_pdf nutzen die gewählten Werte
- Bilder werden dynamisch via getPageWidth/getPageHeight skaliert
  (statt hardcoded 210x297 für A4)

Phase 1.4 + 1.5 Schema-Vorbereitung:
- Neue Tabelle llx_bericht_page_image für Multi-Image-Seiten
- Spalten layout, image_scale, image_align in llx_bericht_page
- DB-Migrationen im init() für bestehende Installationen
  (ALTER TABLE mit Error-Suppress)
- Grid-Rendering im Editor/PDF folgt im nächsten Commit
  (siehe CLAUDE.md TODO)

Phase 1.7 Tab "Berichte" auf Kundenkarte:
- Neue Konstante BERICHT_TAB_ON_THIRDPARTY (default 1)
- Tab-Definition in modBericht für 'thirdparty' Element
- Neue Datei bericht_thirdparty.php
- UNION-SQL über bericht JOIN commande/facture/propal mit fk_soc
- Read-only flache Tabelle sortiert nach Datum
- Pro Bericht: Quelle (Symbol + Ref-Link), Status, Öffnen/Zur Quelle

Version-Bump 1.0.0 → 1.1.0, ChangeLog ergänzt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-08 22:20:09 +02:00
07a36f447e fix: Permission-Format korrigiert nach Stundenzettel-Vorbild
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Echter Bug: $this->rights[$r][4] muss der perms-Name sein (z.B. 'read'),
NICHT der Modulname. Mit [4]='bericht'/[5]='read' baute Dolibarr den
Pfad $user->rights->bericht->bericht->read — aber hasRight('bericht','read')
prüft $user->rights->bericht->read → false → Tab versteckt.

Korrektes Format wie Stundenzettel:
  [4] = 'read' / 'write' / 'delete' / 'admin'  (perms)
  [5] = ''                                     (subperms, leer)

Außerdem [3]=1 (bydefault) für die Standard-Rechte, damit sie bei
Aktivierung automatisch allen Usern zugewiesen werden.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-08 15:49:18 +02:00
05d20d2b72 fix: numero auf 500033 (500021 kollidierte mit BankImport rights_def)
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-08 15:38:07 +02:00
fab63f6806 fix: Tabs nach Stundenzettel-Pattern (mit /custom/ Prefix, ohne array-data wrap)
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Tab-URL-Pfad braucht /custom/-Prefix damit Apache ihn richtig auflöst,
und das einfache String-Array-Format (wie Stundenzettel) ist robuster
als die ['data' => ...] Variante. Ungenutzte Hook-Contexts entfernt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-08 15:34:31 +02:00
a46ac84a93 fix: Permissions Array-Format korrigiert (Index 4=object, 5=perm)
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Tab Bericht erschien nicht, weil drei der vier Rechte mit falschem
Array-Index angelegt wurden und damit hasRight('bericht','read') immer
false zurückgab. Nach Fix Modul einmal deaktivieren + reaktivieren,
damit die fehlenden Rechte in llx_rights_def geschrieben werden.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
[deploy]
2026-04-08 15:32:19 +02:00
923b50d65a feat: Initiales Release Bericht-Modul v1.0.0 [deploy]
All checks were successful
Deploy bericht / deploy (push) Successful in 1s
Dolibarr-Modul für Arbeitsberichte aus Rechnungs-Anhängen mit Browser-PDF-Editor.

- Reiter "Bericht" auf Rechnungen, Aufträgen und Angeboten
- Anhänge-Browser inkl. verknüpfter Objekte (Auftrag → Rechnung)
- PDF.js + Fabric.js Browser-Editor: Pfeile, Kreise, Rechtecke, Freihand, Text
- SortableJS Seiten-Verwaltung mit Drag&Drop
- ODT-Deckblatt mit Platzhaltern, Templates im Admin verwaltbar
- TCPDF + FPDI Finalisierung mit eingebrannten Annotationen
- ECM-Verknüpfung: PDF erscheint unter Verknüpfte Dokumente
- Auftragsnummer aus existierendem Extrafield options_auftragsnummer
- Mehrere Berichte pro Dokument
- Beim Aktivieren werden vorhandene Extrafields nicht überschrieben

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 15:18:59 +02:00