# 2026-05-12 ## Co zrobiono - [Phase 121, Plan 01] Wdrożono dwukierunkową komunikację SMSPLANET: sender mode, webhook inbound, zakładkę SMS w zamówieniu oraz centrum powiadomień. - [Phase 121, Plan 01] Poprawiono migrację po realnym błędzie FK: `orders.id` na bazie ma typ `BIGINT UNSIGNED`, więc referencje SMS/notifications używają tego samego typu. - [Phase 121, Plan 01] Zamknięto UNIFY; manualne smoke testy SMSPLANET/browser notifications i SonarQube pozostają zależne od środowiska. ## Zmienione pliki - `database/migrations/20260512_000110_smsplanet_conversation_notifications.sql` - `src/Modules/Sms/SmsMessageRepository.php` - `src/Modules/Sms/SmsConversationService.php` - `src/Modules/Sms/SmsplanetWebhookController.php` - `src/Modules/Notifications/NotificationRepository.php` - `src/Modules/Notifications/NotificationController.php` - `src/Modules/Notifications/NotificationApiController.php` - `src/Modules/Settings/SmsplanetIntegrationRepository.php` - `src/Modules/Settings/SmsplanetIntegrationController.php` - `src/Modules/Orders/OrdersController.php` - `routes/web.php` - `resources/views/settings/smsplanet.php` - `resources/views/orders/show.php` - `resources/views/notifications/index.php` - `resources/views/layouts/app.php` - `resources/lang/pl.php` - `resources/scss/app.scss` - `public/assets/css/app.css` - `public/assets/js/modules/notifications.js` - `DOCS/DB_SCHEMA.md` - `DOCS/ARCHITECTURE.md` - `DOCS/TECH_CHANGELOG.md` - [Phase 122, Plan 01] Dodano konfigurowalny domyślny stopkę SMS w SMSPLANET — kolumna `default_footer` w `smsplanet_integration_settings`, doklejanie do test SMS i wiadomości z zamówienia, walidacja 918 znaków, UI textarea i podgląd w zamówieniu. - [Phase 122, Plan 01] Zamknięto UNIFY; manualne smoke testy (test SMS i SMS z zamówienia z/bez stopki, over-limit) oraz SonarQube zależne od środowiska. ## Zmienione pliki (Phase 122) - `database/migrations/20260512_000111_smsplanet_default_footer.sql` - `src/Modules/Settings/SmsplanetIntegrationRepository.php` - `src/Modules/Settings/SmsplanetIntegrationController.php` - `src/Modules/Sms/SmsConversationService.php` - `src/Modules/Orders/OrdersController.php` - `resources/views/settings/smsplanet.php` - `resources/views/orders/show.php` - `resources/lang/pl.php` - `resources/scss/app.scss` - `public/assets/css/app.css` - `DOCS/DB_SCHEMA.md` - `DOCS/ARCHITECTURE.md` - `DOCS/TECH_CHANGELOG.md` ## Phase 123 — Receipts Export VAT Breakdown - [Phase 123, Plan 01] Eksport XLSX paragonów (`/accounting`): nowe nagłówki `Numer | Data wystawienia | Kwota brutto | Kwota netto | Stawka VAT | Kwota VAT` (usunięto Data sprzedaży/Konfiguracja/Nr zamówienia/Nr referencyjny). - [Phase 123, Plan 01] Multi-rate breakdown: paragon z kilkoma stawkami VAT generuje osobny wiersz na każdą stawkę (ten sam Numer/Data/Brutto). - [Phase 123, Plan 01] `ReceiptService::buildItemsSnapshot()` zapisuje `vat` per pozycja w `items_json` (z `order_items.tax_rate`, fallback 23.0; "Koszt wysylki" = 23.0). - [Phase 123, Plan 01] Auto-fix po smoke teście: legacy fallback liczy `net = brutto/1.23` zamiast brać z `total_net` (RECEIPT-NET-FIX odłożone do `.paul/codebase/todo.md`). ### Zmienione pliki (Phase 123) - `src/Modules/Accounting/ReceiptService.php` - `src/Modules/Accounting/AccountingController.php` - `.paul/codebase/architecture.md` - `.paul/codebase/tech_changelog.md` - `.paul/codebase/todo.md`