Release 0.265: ShopPromotion date_from and edit save fix

This commit is contained in:
2026-02-13 22:44:07 +01:00
parent 1303b17de4
commit 46a60f3679
24 changed files with 1334 additions and 436 deletions

View File

@@ -725,3 +725,60 @@ Gdy `persist = true`:
- Wyczyszczone referencje w: `cron.php`, `cron/cron-xml.php`, `shop\Order`, `admin\controls\ShopStatuses`, `admin\controls\ShopTransport`, `admin\controls\ShopPaymentMethod`, `admin\controls\ShopProduct`, `admin\factory\ShopStatuses`, `admin\factory\ShopTransport`, `admin\factory\ShopProduct`, `front\factory\ShopStatuses`, `front\factory\ShopTransport`, `front\factory\ShopPaymentMethod`, `front\factory\ShopProduct`, `front\factory\ShopOrder`, `shop\Product`, `config.php`
- Wyczyszczone szablony: `shop-statuses/*`, `shop-transport/*`, `shop-payment-method/*`, `shop-product/*`, `site/main-layout.php`
- Testy: **OK (212 tests, 577 assertions)**.
## Plan 2026-02-13 - Refaktoryzacja `/admin/shop_promotion/` (HITL)
- [x] Etap 1 (analiza i kontrakt): potwierdzic docelowy kontrakt URL i kompatybilnosc wsteczna:
- kontrakt docelowy: tylko `/admin/shop_promotion/list/`, `/admin/shop_promotion/edit/`, `/admin/shop_promotion/save/`, `/admin/shop_promotion/delete/`
- brak kompatybilnosci ze starymi URL i aliasami akcji (`view_list`, `promotion_delete`)
- [x] Etap 2 (Domain): dodac `Domain\Promotion\PromotionRepository`:
- `listForAdmin(filters, sort, dir, page, perPage)` z whitelist sortowania i bind params
- `find(int $id)` + domyslne dane dla nowego formularza
- `save(array $data): ?int` (insert/update, normalizacja switchy, JSON dla kategorii)
- `delete(int $id): bool`
- `categoriesTree(?int $parentId): array` (drzewo kategorii z tlumaczeniami, bez zaleznosci od `admin\factory\ShopCategory`)
- [x] Etap 3 (Admin Controller + routing DI): dodac `admin\Controllers\ShopPromotionController` i przepiac routing:
- rejestracja factory w `admin\Site::$newControllers` pod modulem `ShopPromotion`
- akcje: `list`, `edit`, `save`, `delete`
- zachowac obsluge legacy payload (`values` JSON) oraz obsluge `form-edit` (`$_POST`)
- [x] Etap 4 (widoki): przepiac modul z `grid/gridEdit` na nowe komponenty:
- nowy widok listy oparty o `components/table-list` (filtry: nazwa, aktywny)
- nowy widok edycji oparty o `components/form-edit` (+ pola custom dla drzew kategorii)
- nowe partiale dla drzewa kategorii w module `shop-promotion` (usuniecie zaleznosci od `shop-product/subcategories-list`)
- nowy `shop-promotion/promotion-edit-custom-script.php` (warunkowe pola po `condition_type`, obsluga drzewa kategorii)
- [x] Etap 5 (zaleznosci i cleanup): przeszukac i odpiac legacy zaleznosci:
- menu admin: link kanoniczny na `/admin/shop_promotion/list/`
- usunac legacy pliki po pelnym przepieciu:
- `autoload/admin/controls/class.ShopPromotion.php`
- `autoload/admin/factory/class.ShopPromotion.php`
- `admin/templates/shop-promotion/view-list.php` (grid)
- `admin/templates/shop-promotion/promotion-edit.php` (gridEdit)
- sprawdzic pozostale odwolania `ShopPromotion` i `shop_promotion/view_list` w calym repo
- [x] Etap 6 (testy): dodac/uzupelnic testy:
- `tests/Unit/Domain/Promotion/PromotionRepositoryTest.php`
- `tests/Unit/admin/Controllers/ShopPromotionControllerTest.php`
- uruchomic minimum: nowe testy modulu + pelny `composer test`
- [x] Etap 7 (dokumentacja po wdrozeniu): zaktualizowac:
- `DATABASE_STRUCTURE.md` (dodac `pp_shop_promotion`, jesli nadal brak)
- `PROJECT_STRUCTURE.md`
- `REFACTORING_PLAN.md` (sekcja "Aktualizacja ...")
- `TESTING.md` (nowy wynik suite)
## Aktualizacja 2026-02-13 (ver. 0.264)
- **ShopPromotion** - migracja `/admin/shop_promotion` na Domain + DI + nowe widoki
- NOWE: `Domain\Promotion\PromotionRepository` (`listForAdmin`, `find`, `save`, `delete`, `categoriesTree`, invalidacja cache aktywnych promocji)
- NOWE: `admin\Controllers\ShopPromotionController` (DI) z akcjami `list`, `edit`, `save`, `delete`
- UPDATE: routing DI (`admin\Site`) rozszerzony o modul `ShopPromotion`
- UPDATE: modul `/admin/shop_promotion/*` dziala na `components/table-list` i `components/form-edit`
- NOWE: widoki/partiale `shop-promotion/promotions-list`, `shop-promotion/promotion-edit`, `shop-promotion/promotion-categories-selector`, `shop-promotion/promotion-categories-tree`, `shop-promotion/promotion-edit-custom-script`
- CLEANUP: usuniete legacy `autoload/admin/controls/class.ShopPromotion.php`, `autoload/admin/factory/class.ShopPromotion.php`, `admin/templates/shop-promotion/view-list.php`
- UPDATE: menu admin przepiete na kanoniczny URL `/admin/shop_promotion/list/`
- Testy po zmianie: **OK (222 tests, 609 assertions)**.
## Aktualizacja 2026-02-13 (ver. 0.265)
- **ShopPromotion** - stabilizacja po migracji
- UPDATE: dodane `date_from` w `Domain\Promotion\PromotionRepository` (save/find/list/sort)
- UPDATE: `admin\Controllers\ShopPromotionController` rozszerzony o pole `Data od` na formularzu i kolumne `Data od` na liscie
- UPDATE: `shop\Promotion::get_active_promotions()` filtruje aktywnosc po `date_from` i `date_to`
- FIX: zapis edycji promocji nie tworzy nowego rekordu (hidden `id` + fallback `id` z URL)
- TEST: rozszerzono `PromotionRepositoryTest` o asercje `date_from`
- Testy po zmianie: **OK (222 tests, 614 assertions)**.