5.1 KiB
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 |
|
true | off |
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.phpzaktualizowany do wersjiAddOrderExtraFields/_overrides/classes/order/Order-modrefchange.php(zawiera$order_source+$definitionzorder_source)- API
/api/orders/{id}?output_format=JSONzwraca"order_source": "Allegro"/"Sklep int."/"Telefonicznie"/null
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_sourcejuż istnieje - Nie modyfikujemy modułu
AddOrderExtraFieldsaniordersextracolumns - Żadnych zmian w webserviceParameters, żadnych getterów
- Tylko jeden plik do zmiany:
override/classes/order/Order.php
<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>