109 lines
3.9 KiB
Markdown
109 lines
3.9 KiB
Markdown
---
|
|
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
|
|
---
|
|
|
|
<objective>
|
|
## 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.
|
|
</objective>
|
|
|
|
<context>
|
|
## 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`)
|
|
</context>
|
|
|
|
<acceptance_criteria>
|
|
|
|
## 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
|
|
```
|
|
|
|
</acceptance_criteria>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Task 1: Dodac bank_account_number do payloadu COD w ApaczkaShipmentService</name>
|
|
<files>src/Modules/Shipments/ApaczkaShipmentService.php</files>
|
|
<action>
|
|
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).
|
|
</action>
|
|
<verify>
|
|
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.
|
|
</verify>
|
|
<done>AC-1 i AC-2 spelnione: payload COD zawiera bank_account_number, brak konta = czytelny blad</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<boundaries>
|
|
|
|
## 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)
|
|
|
|
</boundaries>
|
|
|
|
<verification>
|
|
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
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
- Przesylka COD przez Apaczke tworzy sie bez bledu "niepoprawny numer konta bankowego"
|
|
- Brak numeru konta w ustawieniach = czytelny komunikat zamiast bledu API
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.paul/phases/86-apaczka-cod-bank-account/86-01-SUMMARY.md`
|
|
</output>
|