Files
interblue.pl/.paul/phases/01-order-source-api/01-01-PLAN.md
2026-04-27 13:21:58 +02:00

5.1 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, delegation
phase plan type wave depends_on files_modified autonomous delegation
01-order-source-api 01 execute 1
override/classes/order/Order.php
true off
## Goal Dodać pole `order_source` do odpowiedzi webservice API PrestaShop na endpoincie `/api/orders/` przez zsynchronizowanie lokalnego pliku override z wersją serwerową.

Purpose

Zewnętrzna aplikacja dostawcy nie może filtrować zamówień po kanale sprzedaży. Pole order_source (ENUM: 'Allegro', 'Sklep int.', 'Telefonicznie') istnieje już w bazie (ps_orders.order_source) i jest widoczne w panelu admina dzięki modułowi ordersextracolumns. Lokalny override/classes/order/Order.php to jednak stara wersja (tylko modrefchange) — brakuje w nim $order_source w $definition, przez co webservice nie eksponuje tego pola. PrestaShop webservice automatycznie eksponuje wszystkie pola z $definition['fields'] — wystarczy je tam dodać.

Output

  • override/classes/order/Order.php zaktualizowany do wersji AddOrderExtraFields/_overrides/classes/order/Order-modrefchange.php (zawiera $order_source + $definition z order_source)
  • API /api/orders/{id}?output_format=JSON zwraca "order_source": "Allegro" / "Sklep int." / "Telefonicznie" / null
## Project Context @.paul/PROJECT.md @.paul/STATE.md

Source Files (read before editing)

@override/classes/order/Order.php @modules/AddOrderExtraFields/_overrides/classes/order/Order-modrefchange.php

<acceptance_criteria>

AC-1: order_source w odpowiedzi API

Given webservice API PrestaShop jest aktywny
When wykonywany jest GET /api/orders/264673?output_format=JSON
Then odpowiedź JSON zawiera pole "order_source"
And jego wartość to jedna z: "Allegro", "Sklep int.", "Telefonicznie", lub null

AC-2: Istniejące pola webservice niezmienione

Given zaktualizowany override jest wgrany i cache wyczyszczony
When wykonywany jest GET /api/orders/264673?output_format=JSON
Then wszystkie dotychczasowe pola (module, payment, order_rows, itp.) nadal istnieją
And ich wartości są identyczne jak przed zmianą

AC-3: Metody modrefchange niezmienione

Given override zawiera metody add(), setLastInvoiceNumber(), setDeliveryNumber()
When PrestaShop przetwarza zamówienie (invoice, delivery)
Then hooki actionBeforeAddOrder / actionBeforeAddOrderInvoice / actionBeforeAddDeliveryNumber działają identycznie jak dotychczas

</acceptance_criteria>

Zaktualizuj override Order.php o pole order_source w $definition override/classes/order/Order.php Zastąp zawartość `override/classes/order/Order.php` treścią z `modules/AddOrderExtraFields/_overrides/classes/order/Order-modrefchange.php`.
Ta wersja zawiera:
- `public $order_source;` — deklaracja właściwości
- `$definition` — pełna definicja pól z linią: `'order_source' => array('type' => self::TYPE_STRING),`
- Trzy metody modrefchange: `add()`, `setLastInvoiceNumber()`, `setDeliveryNumber()`

PrestaShop webservice automatycznie eksponuje wszystkie pola z `$definition['fields']` — żaden dodatkowy kod nie jest potrzebny.

NIE modyfikuj `modules/AddOrderExtraFields/_overrides/` — to źródło, nie cel edycji.
NIE dodawaj webserviceParameters — nie jest potrzebne.
NIE dodawaj __construct — nie jest potrzebne.
Porównaj zawartość `override/classes/order/Order.php` z `modules/AddOrderExtraFields/_overrides/classes/order/Order-modrefchange.php` — powinny być identyczne. Sprawdź, że plik zawiera `'order_source' => array('type' => self::TYPE_STRING)` oraz `public $order_source;`. AC-1, AC-2, AC-3 będą spełnione po wgraniu przez FTP i wyczyszczeniu cache

DO NOT CHANGE

  • modules/AddOrderExtraFields/_overrides/classes/order/Order-modrefchange.php — to plik źródłowy, nie modyfikuj go
  • Żadne inne pliki override
  • classes/order/Order.php — plik core PrestaShop

SCOPE LIMITS

  • Nie dodajemy nowych kolumn do bazy — kolumna order_source już istnieje
  • Nie modyfikujemy modułu AddOrderExtraFields ani ordersextracolumns
  • Żadnych zmian w webserviceParameters, żadnych getterów
  • Tylko jeden plik do zmiany: override/classes/order/Order.php
Przed zamknięciem planu: - [ ] `override/classes/order/Order.php` zawiera `public $order_source;` - [ ] `override/classes/order/Order.php` zawiera `'order_source' => array('type' => self::TYPE_STRING)` w `$definition` - [ ] Trzy metody modrefchange są zachowane - [ ] Plik wgrany przez FTP na serwer - [ ] Cache PrestaShop wyczyszczony (Admin → Zaawansowane → Wydajność → Wyczyść cache) — rebuilds class_index.php - [ ] GET /api/orders/264673?output_format=JSON zawiera "order_source" w odpowiedzi

<success_criteria>

  • Zadanie wykonane
  • AC-1 i AC-2 zweryfikowane przez wywołanie API
  • Brak błędów PHP w logach serwera po wdrożeniu </success_criteria>
Po zakończeniu utwórz `.paul/phases/01-order-source-api/01-01-SUMMARY.md`