125 lines
5.1 KiB
Markdown
125 lines
5.1 KiB
Markdown
---
|
|
phase: 01-order-source-api
|
|
plan: 01
|
|
type: execute
|
|
wave: 1
|
|
depends_on: []
|
|
files_modified:
|
|
- override/classes/order/Order.php
|
|
autonomous: true
|
|
delegation: off
|
|
---
|
|
|
|
<objective>
|
|
## 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`
|
|
</objective>
|
|
|
|
<context>
|
|
## 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
|
|
</context>
|
|
|
|
<acceptance_criteria>
|
|
|
|
## 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
|
|
```
|
|
|
|
</acceptance_criteria>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Zaktualizuj override Order.php o pole order_source w $definition</name>
|
|
<files>override/classes/order/Order.php</files>
|
|
<action>
|
|
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.
|
|
</action>
|
|
<verify>
|
|
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;`.
|
|
</verify>
|
|
<done>AC-1, AC-2, AC-3 będą spełnione po wgraniu przez FTP i wyczyszczeniu cache</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<boundaries>
|
|
|
|
## 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`
|
|
|
|
</boundaries>
|
|
|
|
<verification>
|
|
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
|
|
</verification>
|
|
|
|
<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>
|
|
|
|
<output>
|
|
Po zakończeniu utwórz `.paul/phases/01-order-source-api/01-01-SUMMARY.md`
|
|
</output>
|