# 2026-04-08

## Co zrobiono

- [Phase 86, Plan 01] Naprawa bledu API Apaczka przy tworzeniu przesylki COD
- Dodano pole `bankaccount` (numer konta bankowego) do payloadu COD w ApaczkaShipmentService
- Walidacja: brak numeru konta w ustawieniach firmy rzuca czytelny blad
- Czyszczenie numeru konta z prefixu PL i spacji do 26 cyfr

- [Phase 87, Plan 01] Usuwanie przesylek z zakladki Przesylki w szczegolach zamowienia
- Metoda delete() w ShipmentPackageRepository i ShipmentController
- Endpoint POST /orders/{id}/shipment/{packageId}/delete z CSRF i owner check
- Cleanup pliku etykiety z dysku, activity log shipment_deleted
- Przycisk "Usun" z potwierdzeniem OrderProAlerts.confirm w tabeli przesylek

- [Phase 88, Plan 01] Dodanie naglowka User-Agent do wszystkich requestow Allegro API
- Dodano buildUserAgent() do AllegroApiClient, AllegroOAuthClient, AllegroTrackingService
- Dodano zmienne APP_VERSION i ALLEGRO_USER_AGENT_URL do .env/.env.example
- Format: orderPRO/1.0.0 (+https://orderpro.pl/info)

- [Phase 89, Plan 01] Publiczna strona /info dla Allegro User-Agent URL
- InfoController + widok info/allegro.php + layout public.php
- Route GET /info bez authMiddleware
- Tresc: opis wewnetrznej aplikacji Project PRO, integracja z Allegro API, kontakt

- [Bugfix] Warunek payment_status w automatyzacji nie dzialal z eventem order.imported
- Dodano `new_payment_status` do kontekstu triggera `order.imported` w AllegroOrderImportService i ShopproOrdersSyncService
- Wartosc pochodzi z mapped order (`payment_status`: 0/1/2) — zgodna z istniejacym evaluatePaymentStatusCondition

- [Phase 90, Plan 01] Naprawa zapisu delivery_price przy imporcie zamowien
- Dodano delivery_price do INSERT/UPDATE/orderParams w OrderImportRepository
- AllegroOrderImportService: resolveDeliveryCost (obiekt {amount,currency} lub plain number)
- ShopproOrderMapper: delivery_price = $transportCost
- Migracja backfill: ALTER TABLE + UPDATE z JSON_EXTRACT (preferences_json/payload_json)
- bin/reissue_receipt.php: skrypt CLI do ponownego wystawiania paragonu z remote DB

## Zmienione pliki

- `src/Modules/Info/InfoController.php`
- `resources/views/info/allegro.php`
- `resources/views/layouts/public.php`
- `src/Modules/Settings/AllegroApiClient.php`
- `src/Modules/Settings/AllegroOAuthClient.php`
- `src/Modules/Shipments/AllegroTrackingService.php`
- `.env.example`
- `.env`
- `src/Modules/Shipments/ApaczkaShipmentService.php`
- `src/Modules/Shipments/ShipmentPackageRepository.php`
- `src/Modules/Shipments/ShipmentController.php`
- `routes/web.php`
- `resources/views/orders/show.php`
- `src/Modules/Settings/AllegroOrderImportService.php`
- `src/Modules/Settings/ShopproOrdersSyncService.php`
- `src/Modules/Orders/OrderImportRepository.php`
- `src/Modules/Settings/ShopproOrderMapper.php`
- `database/migrations/20260408_000090_backfill_delivery_price.sql`
- `bin/reissue_receipt.php`

- [Phase 91, Plan 01] Resilient polling w OrderPROPrint — 3 warstwy obrony przed zawieszeniem
- Dodano CancellationTokenSource (45s) per cykl pollingu jako safety net
- Dodano watchdog: force-reset _isProcessing po 60s gdy poll zawisnie
- Propagacja CancellationToken do metod HTTP w PrintApiClient

## Zmienione pliki (Phase 91)

- `clients/windows/OrderPROPrint/Services/PollingService.cs`
- `clients/windows/OrderPROPrint/Services/PrintApiClient.cs`
