128 lines
4.8 KiB
Markdown
128 lines
4.8 KiB
Markdown
---
|
|
phase: 77-cod-amount-fix
|
|
plan: 01
|
|
subsystem: shipments
|
|
tags: [cod, payment, stringhelper, shoppro]
|
|
|
|
requires:
|
|
- phase: none
|
|
provides: n/a
|
|
provides:
|
|
- StringHelper::isCodPayment() — centralna detekcja platnosci COD
|
|
- Normalizacja COD w ShopproOrderMapper przy imporcie
|
|
affects: []
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns: [keyword-based COD detection via StringHelper]
|
|
|
|
key-files:
|
|
created: []
|
|
modified:
|
|
- src/Core/Support/StringHelper.php
|
|
- src/Modules/Settings/ShopproOrderMapper.php
|
|
- resources/views/shipments/prepare.php
|
|
- resources/views/orders/show.php
|
|
- src/Modules/Orders/OrdersController.php
|
|
|
|
key-decisions:
|
|
- "Keyword matching zamiast exact match — shopPRO wysyla pelne polskie nazwy metod platnosci"
|
|
- "Dwupoziomowa detekcja: exact match (COD_PAYMENT_TYPES) + keyword search (COD_PAYMENT_KEYWORDS)"
|
|
|
|
patterns-established:
|
|
- "StringHelper::isCodPayment() jako jedyne miejsce detekcji COD w codebase"
|
|
|
|
duration: 15min
|
|
started: 2026-04-07T00:00:00Z
|
|
completed: 2026-04-07T00:15:00Z
|
|
---
|
|
|
|
# Phase 77 Plan 01: COD Amount Fix Summary
|
|
|
|
**Centralna detekcja platnosci COD (StringHelper::isCodPayment) z keyword matching dla shopPRO wartosci typu "Platnosc przy odbiorze"**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~15min |
|
|
| Started | 2026-04-07 |
|
|
| Completed | 2026-04-07 |
|
|
| Tasks | 2 completed |
|
|
| Files modified | 5 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: COD auto-fill dla zamowien shopPRO | Pass | Testowane na zamowieniach 188/207 z wartoscia "Platnosc przy odbiorze" |
|
|
| AC-2: COD auto-fill dla zamowien Allegro (regresja) | Pass | CASH_ON_DELIVERY nadal rozpoznawane przez exact match |
|
|
| AC-3: Detekcja COD w widoku szczegulow zamowienia | Pass | Badge "Za pobraniem" wyswietla sie dla wszystkich wariantow COD |
|
|
|
|
## Accomplishments
|
|
|
|
- Centralna metoda `StringHelper::isCodPayment()` z dwupoziomowa detekcja: exact match na 4 warianty + keyword match na 3 frazy (PRZY ODBIORZE, POBRANIEM, POBRANIE)
|
|
- Normalizacja COD na `CASH_ON_DELIVERY` w `ShopproOrderMapper` przy nowych importach
|
|
- Eliminacja wszystkich hardcoded `=== 'CASH_ON_DELIVERY'` z kodu produkcyjnego (3 pliki)
|
|
- Rozszerzenie map etykiet platnosci w `show.php` o warianty COD
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `src/Core/Support/StringHelper.php` | Modified | Dodano COD_PAYMENT_TYPES, COD_PAYMENT_KEYWORDS, isCodPayment() |
|
|
| `src/Modules/Settings/ShopproOrderMapper.php` | Modified | normalizeCodPaymentType() + uzycie w mapOrderAggregate |
|
|
| `resources/views/shipments/prepare.php` | Modified | Zamiana hardcoded na StringHelper::isCodPayment() |
|
|
| `resources/views/orders/show.php` | Modified | Zamiana 2 sprawdzen + rozszerzenie map etykiet o warianty COD |
|
|
| `src/Modules/Orders/OrdersController.php` | Modified | Zamiana hardcoded na StringHelper::isCodPayment() |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| Keyword matching zamiast samego exact match | shopPRO wysyla pelne polskie nazwy np. "Platnosc przy odbiorze" — nie da sie przewidziec wszystkich wariantow | Odpornosc na nowe warianty nazw COD |
|
|
| Dwupoziomowa detekcja (exact + keyword) | Exact match jest szybszy i pewniejszy dla znanych wartosci, keyword jako fallback | Brak false positives dla ONLINE/TRANSFER, elastycznosc dla COD |
|
|
|
|
## Deviations from Plan
|
|
|
|
### Summary
|
|
|
|
| Type | Count | Impact |
|
|
|------|-------|--------|
|
|
| Auto-fixed | 1 | Kluczowe — bez tego fix nie dzialal |
|
|
| Scope additions | 0 | - |
|
|
| Deferred | 0 | - |
|
|
|
|
**Total impact:** Konieczne rozszerzenie — plan zakladal 4 warianty exact match, rzeczywistosc wymagala keyword matching.
|
|
|
|
### Auto-fixed Issues
|
|
|
|
**1. Wartosc shopPRO to "Platnosc przy odbiorze" — nie ma w liscie exact match**
|
|
- **Found during:** Weryfikacja po APPLY (user report)
|
|
- **Issue:** Plan zakladal warianty "cod", "pobranie", "za pobraniem". Rzeczywista wartosc w DB to "Platnosc przy odbiorze"
|
|
- **Fix:** Dodano COD_PAYMENT_KEYWORDS z keyword matching (str_contains) jako drugi poziom detekcji
|
|
- **Files:** src/Core/Support/StringHelper.php, resources/views/orders/show.php
|
|
- **Verification:** 9/9 unit testow przeszlo, w tym "Platnosc przy odbiorze" => true
|
|
|
|
## Issues Encountered
|
|
|
|
| Issue | Resolution |
|
|
|-------|------------|
|
|
| Poczatkowy fix nie dzialal — shopPRO wysyla "Platnosc przy odbiorze" nie "cod" | Sprawdzenie DB (orders WHERE id IN (188,207)), dodanie keyword matching |
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- StringHelper::isCodPayment() gotowy do uzycia w kolejnych miejscach
|
|
- Nowe importy shopPRO beda mialy znormalizowane CASH_ON_DELIVERY
|
|
|
|
**Concerns:**
|
|
- Istniejace zamowienia w DB zachowuja oryginalna wartosc "Platnosc przy odbiorze" — helper obsluguje je w runtime, ale dane nie sa znormalizowane
|
|
|
|
**Blockers:**
|
|
- None
|
|
|
|
---
|
|
*Phase: 77-cod-amount-fix, Plan: 01*
|
|
*Completed: 2026-04-07*
|