--- phase: 01-order-source-api plan: 01 type: execute wave: 1 depends_on: [] files_modified: - override/classes/order/Order.php autonomous: true delegation: 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 ## AC-1: order_source w odpowiedzi API ```gherkin 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 ```gherkin 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 ```gherkin Given override zawiera metody add(), setLastInvoiceNumber(), setDeliveryNumber() When PrestaShop przetwarza zamówienie (invoice, delivery) Then hooki actionBeforeAddOrder / actionBeforeAddOrderInvoice / actionBeforeAddDeliveryNumber działają identycznie jak dotychczas ``` 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 - Zadanie wykonane - AC-1 i AC-2 zweryfikowane przez wywołanie API - Brak błędów PHP w logach serwera po wdrożeniu Po zakończeniu utwórz `.paul/phases/01-order-source-api/01-01-SUMMARY.md`