---
phase: 86-apaczka-cod-bank-account
plan: 01
subsystem: shipments
tags: [apaczka, cod, api]

requires:
  - phase: none
    provides: n/a
provides:
  - Apaczka COD shipments include bank account number from company settings
affects: []

tech-stack:
  added: []
  patterns: []

key-files:
  created: []
  modified:
    - src/Modules/Shipments/ApaczkaShipmentService.php

key-decisions:
  - "Field name `bankaccount` per Apaczka API v2 docs (not `bank_account_number`)"
  - "Strip all non-digit chars from bank account (handles PL prefix and spaces)"

patterns-established: []

duration: ~15min
started: 2026-04-08T00:00:00Z
completed: 2026-04-08T00:00:00Z
---

# Phase 86 Plan 01: Apaczka COD Bank Account Summary

**Naprawiono blad API Apaczka przy tworzeniu przesylki COD — dodano pole `bankaccount` z numerem konta z ustawien firmy do payloadu COD.**

## Performance

| Metric | Value |
|--------|-------|
| Duration | ~15min |
| Tasks | 1 completed |
| Files modified | 1 |

## Acceptance Criteria Results

| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Payload COD zawiera numer konta bankowego | Pass | Pole `bankaccount` z 26 cyframi z company_settings |
| AC-2: Brak konta = czytelny blad | Pass | ShipmentException z komunikatem o uzupelnieniu konta |

## Accomplishments

- Naprawiono blad API Apaczka "Wprowadzono niepoprawny numer konta bankowego w usludze pobranie"
- Payload COD zawiera pole `bankaccount` z numerem konta oczyszczonym do samych cyfr
- Brak numeru konta w ustawieniach firmy rzuca czytelny ShipmentException

## Files Created/Modified

| File | Change | Purpose |
|------|--------|---------|
| `src/Modules/Shipments/ApaczkaShipmentService.php` | Modified | Dodano `bankaccount` do payloadu COD + walidacje braku konta |

## Decisions Made

| Decision | Rationale | Impact |
|----------|-----------|--------|
| Pole `bankaccount` zamiast `bank_account_number` | Oficjalna dokumentacja Apaczka API v2 definiuje pole jako `bankaccount` (bez underscore) | Poprawne dzialanie COD |
| `preg_replace('/[^0-9]/', '')` do czyszczenia numeru konta | Numer w bazie zawiera prefix PL i spacje (`PL22 2530...`), API wymaga 26 cyfr | Uniwersalne czyszczenie dowolnego formatu IBAN |

## Deviations from Plan

### Summary

| Type | Count | Impact |
|------|-------|--------|
| Auto-fixed | 1 | Krytyczne — bledna nazwa pola API |

### Auto-fixed Issues

**1. Bledna nazwa pola API `bank_account_number` -> `bankaccount`**
- **Found during:** Testowanie na serwerze produkcyjnym
- **Issue:** Pole `bank_account_number` nie jest rozpoznawane przez Apaczka API v2
- **Fix:** Zmieniono na `bankaccount` zgodnie z oficjalna dokumentacja API
- **Verification:** Uzytkownik potwierdzil poprawne tworzenie przesylki COD

## Issues Encountered

| Issue | Resolution |
|-------|------------|
| `uploadOnSave: false` — plik nie synchronizowal sie automatycznie z serwerem | Reczny upload przez FTP curl |
| Numer konta w bazie z prefixem PL i spacjami | Regex `[^0-9]` usuwa wszystko poza cyframi |
| Nazwa pola API `bank_account_number` niepoprawna | Sprawdzono oficjalna dokumentacje — prawidlowe pole to `bankaccount` |

## Next Phase Readiness

**Ready:**
- Przesylki COD przez Apaczke dzialaja poprawnie

**Concerns:**
- Brak

**Blockers:**
- None

---
*Phase: 86-apaczka-cod-bank-account, Plan: 01*
*Completed: 2026-04-08*
