5.8 KiB
5.8 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous
| phase | plan | type | wave | depends_on | files_modified | autonomous | |||
|---|---|---|---|---|---|---|---|---|---|
| 21-order-source-display | 01 | execute | 1 |
|
true |
Purpose
Sprzedawca z wieloma sklepami shopPRO musi wiedziec, z ktorego konkretnie sklepu pochodzi zamowienie.
Output
Zmodyfikowane pliki: OrdersRepository.php, OrdersController.php, show.php
## Project Context @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.mdSource Files
@src/Modules/Orders/OrdersRepository.php @src/Modules/Orders/OrdersController.php @resources/views/orders/show.php @DOCS/todo.md
No specialized flows required for this plan.<acceptance_criteria>
AC-1: Integration name displayed on orders list
Given zamowienie pochodzi z integracji shopPRO o nazwie "Moj Sklep"
When uzytkownik otwiera liste zamowien
Then w kolumnie "Numer" w sekcji orders-ref__meta widzi "Moj Sklep" zamiast "shopPRO"
And widzi "ID: <source_order_id>" jako drugi element
AC-2: Integration name displayed on order detail page
Given zamowienie pochodzi z integracji shopPRO o nazwie "Moj Sklep"
When uzytkownik otwiera szczegoly zamowienia
Then w naglowku pod numerem zamowienia widzi "Moj Sklep" i identyfikator zamowienia
AC-3: Allegro/Erli orders unaffected
Given zamowienie pochodzi z Allegro
When uzytkownik otwiera liste zamowien
Then w sekcji orders-ref__meta widzi "Allegro" jako zrodlo (bez zmian)
And widzi "ID: <source_order_id>" jako identyfikator
AC-4: Source first, ID second in meta
Given dowolne zamowienie na liscie
When uzytkownik patrzy na kolumne "Numer"
Then pierwszy span w orders-ref__meta to nazwa zrodla/integracji
And drugi span to "ID: <identyfikator>"
</acceptance_criteria>
Task 1: Dodac integration name do query listy i szczegulow src/Modules/Orders/OrdersRepository.php 1. W `buildListSql()`: dodac LEFT JOIN do tabeli `integrations`: ``` LEFT JOIN integrations ig ON ig.id = o.integration_id ``` Dodac kolumne `ig.name AS integration_name` do SELECT.2. W `transformOrderRow()`: dodac pole `'integration_name' => (string) ($row['integration_name'] ?? '')` do zwracanej tablicy.
3. W `findDetails()`: dodac LEFT JOIN do `integrations` i dodac `ig.name AS integration_name` do SELECT query.
Avoid: Nie zmieniac countSql (nie potrzebuje JOIN do integrations). Nie zmieniac istniejacych kolumn — tylko dodac nowe.
Sprawdzic ze query nie rzuca bledu — otworzyc liste zamowien w przegladarce.
AC-1, AC-2 — dane integration_name dostepne w wynikach query
Task 2: Wyswietlic integration name w UI (lista + show)
src/Modules/Orders/OrdersController.php, resources/views/orders/show.php
1. W `OrdersController::toTableRow()`:
- Odczytac `$integrationName = trim((string) ($row['integration_name'] ?? ''));`
- Zmienic logike wyswietlania zrodla w `orders-ref__meta`:
- Jesli `$integrationName !== ''` → uzyc `$integrationName` jako label
- W przeciwnym razie → uzyc `$this->sourceLabel($source)` (fallback dla Allegro/Erli/starych danych)
- Upewnic sie ze kolejnosc spanow to: [1] zrodlo/integracja, [2] ID: identyfikator
- Obecny kod JUZ ma poprawna kolejnosc (source first), wiec tylko dodac logike integration_name
2. W `resources/views/orders/show.php` linia 48:
- Zmienic wyswietlanie z `ucfirst(source) external_order_id` na:
- Uzyc `$orderRow['integration_name']` jesli niepuste, inaczej `ucfirst(source)`
- Dodac prefiks "ID:" przed identyfikatorem
- Rozdzielic na dwa oddzielne spany (jak na liscie) dla spojnosci
3. Metoda `sourceLabel()` — pozostawic bez zmian (fallback).
Avoid: Nie zmieniac CSS. Nie zmieniac filtrow zrodla (dropdown). Nie zmieniac logiki statusow.
Otworzyc liste zamowien — zamowienia shopPRO pokazuja nazwe integracji. Allegro pokazuje "Allegro". Otworzyc szczegoly zamowienia — naglowek pokazuje nazwe integracji.
AC-1, AC-2, AC-3, AC-4 satisfied
DO NOT CHANGE
- resources/scss/* (zadnych zmian CSS)
- Filtry zrodla w dropdownie (sourceOptions) — poza zakresem
- Logika statusow, platnosci, przesylek
- Inne widoki niz show.php
SCOPE LIMITS
- Tylko wyswietlanie — bez zmian w logice importu zamowien
- Bez zmian w bazie danych (kolumna integration_id juz istnieje w orders)
- Bez nowych zaleznosci
<success_criteria>
- Todo #15 i #17 zrealizowane
- Brak regresji na liscie zamowien i stronie szczegulow
- Kod uzywa prepared statements (medoo/PDO) — brak SQL injection </success_criteria>