98 lines
4.0 KiB
Markdown
98 lines
4.0 KiB
Markdown
---
|
|
phase: 01-order-source-api
|
|
plan: 01
|
|
subsystem: api
|
|
tags: [prestashop, webservice, order, override]
|
|
|
|
requires: []
|
|
provides:
|
|
- pole order_source w odpowiedzi /api/orders/ webservice PrestaShop
|
|
affects: []
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns: ["PrestaShop ObjectModel $definition → automatyczna ekspozycja w webservice"]
|
|
|
|
key-files:
|
|
modified: [override/classes/order/Order.php]
|
|
|
|
key-decisions:
|
|
- "order_source to prawdziwe pole DB (ENUM), nie alias dla module"
|
|
- "Wystarczy dodać pole do $definition — webservice eksponuje je automatycznie bez webserviceParameters"
|
|
- "Plik override zsynchronizowany z AddOrderExtraFields/_overrides/Order-modrefchange.php"
|
|
|
|
patterns-established:
|
|
- "Customowe pola DB w ps_orders dodawane przez AddOrderExtraFields są eksponowane w API przez $definition w override Order.php"
|
|
|
|
duration: ~15min
|
|
started: 2026-04-27T00:00:00Z
|
|
completed: 2026-04-27T00:00:00Z
|
|
---
|
|
|
|
# Phase 1 Plan 01: order-source-api Summary
|
|
|
|
**Pole `order_source` (ENUM: Allegro / Sklep int. / Telefonicznie) dodane do odpowiedzi webservice API PrestaShop `/api/orders/`.**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~15 min |
|
|
| Tasks | 1 completed |
|
|
| Files modified | 1 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Uwagi |
|
|
|-----------|--------|-------|
|
|
| AC-1: order_source w odpowiedzi API | Pass | Pole pojawia się w JSON /api/orders/{id} |
|
|
| AC-2: Istniejące pola niezmienione | Pass | module, payment, order_rows itp. bez zmian |
|
|
| AC-3: Metody modrefchange niezmienione | Pass | add(), setLastInvoiceNumber(), setDeliveryNumber() zachowane |
|
|
|
|
## Accomplishments
|
|
|
|
- Zsynchronizowano lokalny `override/classes/order/Order.php` z wersją serwerową (`AddOrderExtraFields/_overrides/Order-modrefchange.php`)
|
|
- Dodano `public $order_source` i `'order_source' => TYPE_STRING` do `$definition` — webservice eksponuje pole automatycznie
|
|
- Zewnętrzna aplikacja dostawcy może teraz filtrować zamówienia po `order_source` (Allegro / Sklep int. / Telefonicznie)
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `override/classes/order/Order.php` | Modified | Dodano $order_source i $definition z order_source; zachowano 3 metody modrefchange |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| Użyto $definition zamiast webserviceParameters+getter | PrestaShop WS eksponuje automatycznie wszystkie pola z $definition; prostsze i czystsze | Brak dodatkowego kodu |
|
|
| order_source = wartość z DB, nie alias module | Kolumna istnieje (AddOrderExtraFields), moduł ordersextracolumns ją wypełnia i wyświetla w adminie | Dane są semantyczne (Allegro/Sklep int./Telefonicznie), nie techniczne (x13allegro/ps_cashondelivery) |
|
|
| Zsynchronizowano z Order-modrefchange.php, nie pisano od zera | Gotowa wersja zawiera już obie zmiany (order_source + modrefchange) | Uniknięto ryzyka pominięcia metod modrefchange |
|
|
|
|
## Deviations from Plan
|
|
|
|
Pierwotny plan zakładał `getWsOrderSource()` getter i `webserviceParameters` — po analizie `ordersextracolumns.php` odkryto, że `order_source` to prawdziwe pole DB, a webservice eksponuje `$definition` automatycznie. Plan uproszczono przed APPLY.
|
|
|
|
**Total impact:** Pozytywne odchylenie — rozwiązanie prostsze niż planowane.
|
|
|
|
## Issues Encountered
|
|
|
|
| Issue | Resolution |
|
|
|-------|------------|
|
|
| Lokalny override był niezgodny z serwerowym (stara wersja bez order_source) | Zsynchronizowano z AddOrderExtraFields/_overrides/Order-modrefchange.php |
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- API zwraca `order_source` dla wszystkich zamówień (nowszych niż 2023-04-20)
|
|
- Zamówienia starsze mają `order_source: null` — normalnie, kolumna była pusta przed instalacją AddOrderExtraFields
|
|
|
|
**Concerns:**
|
|
- Zamówienia sprzed 2023-04-20 mają `null` w API — ordersextracolumns obsługuje to w SQL przez IF(), ale API zwróci surowy null. Dostawca powinien to uwzględnić po stronie swojej aplikacji.
|
|
|
|
**Blockers:** Brak
|
|
|
|
---
|
|
*Phase: 01-order-source-api, Plan: 01*
|
|
*Completed: 2026-04-27*
|