--- phase: 86-apaczka-cod-bank-account plan: 01 type: execute wave: 1 depends_on: [] files_modified: - src/Modules/Shipments/ApaczkaShipmentService.php autonomous: true delegation: off --- ## Goal Naprawic blad API Apaczka "Wprowadzono niepoprawny numer konta bankowego w usludze pobranie" przy tworzeniu przesylki COD — dodac `bank_account_number` do payloadu COD. ## Purpose Uzytkownik nie moze tworzyc przesylek z pobraniem (COD) przez Apaczke. Blokuje to codzienna obsluge zamowien. ## Output Poprawiony `ApaczkaShipmentService.php` — payload COD zawiera numer konta bankowego z ustawien firmy. ## Project Context @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.md ## Source Files @src/Modules/Shipments/ApaczkaShipmentService.php (linie 114-119 — budowanie payloadu COD) @src/Modules/Settings/CompanySettingsRepository.php (linia 45 — pole `bank_account`) ## AC-1: Payload COD zawiera numer konta bankowego ```gherkin Given zamowienie z kwota pobrania (cod_amount > 0) And ustawienia firmy zawieraja niepusty bank_account When ApaczkaShipmentService buduje payload COD Then obiekt cod zawiera pole bank_account_number z numerem konta z ustawien firmy ``` ## AC-2: Brak konta bankowego — czytelny blad ```gherkin Given zamowienie z kwota pobrania (cod_amount > 0) And ustawienia firmy nie zawieraja bank_account (pusty string) When ApaczkaShipmentService buduje payload COD Then rzucony zostaje ShipmentException z komunikatem o braku numeru konta bankowego w ustawieniach firmy ``` Task 1: Dodac bank_account_number do payloadu COD w ApaczkaShipmentService src/Modules/Shipments/ApaczkaShipmentService.php W metodzie `createShipment()`, w bloku `if ($codAmount > 0)` (linie 114-119): 1. Pobrac ustawienia firmy: `$settings = $this->companySettings->getSettings();` 2. Wyciagnac numer konta: `$bankAccount = $settings['bank_account'] ?? '';` 3. Jezeli `$bankAccount === ''` — rzucic `ShipmentException` z komunikatem: "Przesylka COD wymaga numeru konta bankowego. Uzupelnij go w Ustawienia > Firma." 4. Dodac do tablicy `$apiPayload['cod']` pole `'bank_account_number' => $bankAccount` 5. Numer konta powinien byc przekazany jako czysty ciag cyfr (bez spacji/myslnikow) — uzyc `preg_replace('/\s+/', '', $bankAccount)` Uwaga: NIE zmieniaj nic poza blokiem COD. Nie dodawaj nowych use statements (ShipmentException juz jest zaimportowany). Statyczna analiza: php -l src/Modules/Shipments/ApaczkaShipmentService.php Manualna weryfikacja: utworzyc przesylke COD w zamowieniu #191 — API Apaczka nie powinno zwracac bledu o niepoprawnym koncie bankowym. AC-1 i AC-2 spelnione: payload COD zawiera bank_account_number, brak konta = czytelny blad ## DO NOT CHANGE - src/Modules/Settings/CompanySettingsRepository.php (ustawienia firmy dzialaja poprawnie) - resources/views/shipments/prepare.php (formularz przygotowania przesylki) - src/Modules/Settings/ApaczkaApiClient.php (klient API) ## SCOPE LIMITS - Nie dodawac pola bank_account do formularza przesylki — numer konta jest globalny (ustawienia firmy) - Nie zmieniac logiki innych providerow (InPost, Allegro) Before declaring plan complete: - [ ] `php -l src/Modules/Shipments/ApaczkaShipmentService.php` — brak bledow skladni - [ ] Payload COD zawiera `bank_account_number` z ustawien firmy - [ ] Pusty bank_account rzuca ShipmentException z czytelnym komunikatem - [ ] Zadne inne pliki nie zostaly zmienione - Przesylka COD przez Apaczke tworzy sie bez bledu "niepoprawny numer konta bankowego" - Brak numeru konta w ustawieniach = czytelny komunikat zamiast bledu API After completion, create `.paul/phases/86-apaczka-cod-bank-account/86-01-SUMMARY.md`