Files
orderPRO/.paul/phases/77-cod-amount-fix/77-01-SUMMARY.md
2026-04-07 20:32:43 +02:00

4.8 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration started completed
77-cod-amount-fix 01 shipments
cod
payment
stringhelper
shoppro
phase provides
none n/a
StringHelper::isCodPayment() — centralna detekcja platnosci COD
Normalizacja COD w ShopproOrderMapper przy imporcie
added patterns
keyword-based COD detection via StringHelper
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
Keyword matching zamiast exact match — shopPRO wysyla pelne polskie nazwy metod platnosci
Dwupoziomowa detekcja: exact match (COD_PAYMENT_TYPES) + keyword search (COD_PAYMENT_KEYWORDS)
StringHelper::isCodPayment() jako jedyne miejsce detekcji COD w codebase
15min 2026-04-07T00:00:00Z 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