Add receipt show/print/pdf endpoints with dompdf integration. Active preview and PDF links in order Documents tab. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
142 lines
4.9 KiB
Markdown
142 lines
4.9 KiB
Markdown
---
|
|
phase: 11-receipt-print
|
|
plan: 01
|
|
subsystem: accounting
|
|
tags: [dompdf, pdf, receipt, print, view]
|
|
|
|
requires:
|
|
- phase: 10-receipt-issue
|
|
provides: ReceiptRepository, receipts table, snapshots JSON
|
|
provides:
|
|
- Receipt preview (HTML in app layout)
|
|
- Receipt print view (standalone HTML + auto window.print())
|
|
- Receipt PDF generation via dompdf
|
|
- Active preview/PDF links in Documents tab
|
|
affects: [12-receipt-corrections]
|
|
|
|
tech-stack:
|
|
added: [dompdf/dompdf ^3.1]
|
|
patterns: [buildReceiptViewData shared helper, standalone print view pattern]
|
|
|
|
key-files:
|
|
created:
|
|
- resources/views/receipts/show.php
|
|
- resources/views/receipts/print.php
|
|
modified:
|
|
- src/Modules/Accounting/ReceiptController.php
|
|
- routes/web.php
|
|
- resources/views/orders/show.php
|
|
- resources/lang/pl.php
|
|
- resources/scss/shared/_ui-components.scss
|
|
- public/assets/css/app.css
|
|
- composer.json
|
|
- .vscode/ftp-kr.json
|
|
|
|
key-decisions:
|
|
- "dompdf v3.1 server-side PDF generation (not client-side)"
|
|
- "DejaVu Sans font for PDF Polish character support"
|
|
- "ftp-kr vendor/ no longer fully ignored — changed to /vendor/bin only"
|
|
|
|
patterns-established:
|
|
- "buildReceiptViewData() shared helper for show/print/pdf reuse"
|
|
- "Standalone print view pattern: full HTML without layout + window.print()"
|
|
|
|
duration: ~30min
|
|
completed: 2026-03-15
|
|
---
|
|
|
|
# Phase 11 Plan 01: Receipt Preview & Print Summary
|
|
|
|
**Podglad paragonu HTML, widok druku standalone i generowanie PDF przez dompdf — zamyka cykl wystawienie-podglad-wydruk.**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~30min |
|
|
| Completed | 2026-03-15 |
|
|
| Tasks | 4 completed (3 auto + 1 checkpoint) |
|
|
| Files modified | 10 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: Podglad paragonu w layoucie aplikacji | Pass | /orders/{id}/receipt/{receiptId} — dane sprzedawcy, nabywcy, pozycje, suma, daty |
|
|
| AC-2: Widok druku (standalone HTML) | Pass | /print endpoint, window.print() auto-trigger |
|
|
| AC-3: Generowanie PDF | Pass | /pdf endpoint, dompdf v3.1, Content-Disposition attachment |
|
|
| AC-4: Aktywny link Podglad w Dokumentach | Pass | span.btn--disabled zamieniony na a.btn + dodany link PDF |
|
|
| AC-5: Obsluga bledu — nieistniejacy paragon | Pass | 404 gdy paragon nie istnieje lub order_id mismatch |
|
|
|
|
## Accomplishments
|
|
|
|
- 3 nowe metody kontrolera: show(), printView(), pdf() + helper buildReceiptViewData()
|
|
- 2 nowe widoki: receipts/show.php (w layoucie) i receipts/print.php (standalone)
|
|
- dompdf zainstalowany i dzialajacy na serwerze
|
|
- Aktywne linki Podglad + PDF w zakladce Dokumenty zamowienia
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `src/Modules/Accounting/ReceiptController.php` | Modified | +show(), +printView(), +pdf(), +buildReceiptViewData() |
|
|
| `routes/web.php` | Modified | +3 trasy GET: show, print, pdf |
|
|
| `resources/views/receipts/show.php` | Created | Podglad paragonu w layoucie aplikacji |
|
|
| `resources/views/receipts/print.php` | Created | Standalone widok druku + auto window.print() |
|
|
| `resources/views/orders/show.php` | Modified | Aktywne linki Podglad + PDF w Dokumentach |
|
|
| `resources/lang/pl.php` | Modified | +receipts.show.* (13 kluczy) |
|
|
| `resources/scss/shared/_ui-components.scss` | Modified | +.receipt-header, +.receipt-print |
|
|
| `public/assets/css/app.css` | Modified | Przebudowany z nowym SCSS |
|
|
| `composer.json` | Modified | +dompdf/dompdf ^3.1 |
|
|
| `.vscode/ftp-kr.json` | Modified | /vendor → /vendor/bin w ignore |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| dompdf server-side | Plan wymaga server-side PDF, dompdf standard PHP | Wymaga vendor/ na serwerze |
|
|
| ftp-kr vendor/ nie ignorowany | dompdf musi byc na serwerze, reczny deploy uciazliwy | Automatyczny upload vendor/ przy zmianach |
|
|
| DejaVu Sans w print CSS | Obsluga polskich znakow w PDF | Poprawne znaki w generowanym PDF |
|
|
|
|
## Deviations from Plan
|
|
|
|
### Summary
|
|
|
|
| Type | Count | Impact |
|
|
|------|-------|--------|
|
|
| Auto-fixed | 1 | ftp-kr config change for vendor deploy |
|
|
| Deferred | 0 | — |
|
|
|
|
**Total impact:** Minimalne — jedyna zmiana to konfiguracja deploy.
|
|
|
|
### Auto-fixed Issues
|
|
|
|
**1. [Deploy] vendor/ nie uploadowany na serwer**
|
|
- **Found during:** Task 1 (instalacja dompdf)
|
|
- **Issue:** ftp-kr ignorowal caly /vendor, dompdf nie trafialo na serwer
|
|
- **Fix:** Zmiana /vendor na /vendor/bin w ftp-kr.json ignore
|
|
- **Files:** .vscode/ftp-kr.json
|
|
- **Verification:** Upload vendor/ → dompdf dziala na serwerze
|
|
|
|
### Skill Audit
|
|
|
|
| Expected | Invoked | Notes |
|
|
|----------|---------|-------|
|
|
| sonar-scanner | ○ | Required — do uruchomienia przed kolejnym UNIFY |
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- Pelny cykl paragonow: konfiguracja → wystawienie → podglad → druk → PDF
|
|
- Faza 11 zamknieta, gotowe do fazy 12
|
|
|
|
**Concerns:**
|
|
- sonar-scanner nie uruchomiony (gap z wielu faz)
|
|
|
|
**Blockers:**
|
|
- Brak
|
|
|
|
---
|
|
*Phase: 11-receipt-print, Plan: 01*
|
|
*Completed: 2026-03-15*
|