This commit is contained in:
2026-04-07 10:44:03 +02:00
parent aadf98bc80
commit 1933c74395
19 changed files with 906 additions and 246 deletions

View File

@@ -393,10 +393,14 @@
- po imporcie pokazuje diagnostyke miniatur pozycji (ile pozycji ma obrazek i przyczyny brakow).
- `POST /settings/integrations/allegro/statuses/save`:
- `AllegroIntegrationController::saveStatusMapping(Request): Response`
- zapisuje mapowanie `allegro_status_code -> orderpro_status_code`.
- redirect stub — logika przeniesiona do `saveStatusMappingsBulk()`.
- `POST /settings/integrations/allegro/statuses/save-bulk`:
- `AllegroIntegrationController::saveStatusMappingsBulk(Request): Response`
- zapisuje mapowania zbiorczo dla wszystkich wierszy tabeli mapowan.
- zapisuje mapowania zbiorczo z kluczem `orderpro_status_code` przez `AllegroStatusMappingRepository::replaceAllMappings(...)`.
- `AllegroStatusMappingRepository::listExternalStatuses()` — zwraca liste zewnetrznych statusow Allegro.
- `AllegroStatusMappingRepository::buildAllegroToOrderproMap()` — buduje mape allegro_status -> orderpro_status.
- `AllegroStatusMappingRepository::replaceAllMappings(array)` — atomowy zapis wszystkich mapowan.
- `AllegroStatusMappingRepository::upsertMapping(...)` — teraz klucz na `orderpro_status_code`.
- `POST /settings/integrations/allegro/statuses/delete`:
- `AllegroIntegrationController::deleteStatusMapping(Request): Response`
- usuwa mapowanie po `mapping_id`.
@@ -433,7 +437,7 @@
- respektuje ustawienie kierunku `allegro_status_sync_direction`,
- dla kierunku `allegro_to_orderpro` wykorzystuje mechanizm importu zamowien do aktualizacji statusow,
- dla kierunku `orderpro_to_allegro` pushuje reczne zmiany statusow (`order_status_history.change_source=manual`) do API Allegro,
- push buduje reverse mapping `orderpro_status_code -> allegro_status_code` z `allegro_order_status_mappings`,
- push buduje mapping `orderpro_status_code -> allegro_status_code` z `allegro_order_status_mappings` (po odwroceniu kluczy mapowanie jest bezposrednie),
- push aktualizuje kursor `integration_order_sync_state.last_status_pushed_at` po sukcesie.
- `AllegroApiClient::updateCheckoutFormFulfillment()`:
- PUT `/order/checkout-forms/{id}/fulfillment`,
@@ -555,7 +559,9 @@
- `POST /settings/integrations/shoppro/statuses/save`:
- `ShopproIntegrationsController::saveStatusMappings(Request): Response`
- waliduje CSRF, `integration_id` i kody statusow orderPRO,
- zapisuje mapowania per instancja shopPRO przez `ShopproStatusMappingRepository::replaceForIntegration(...)` do `order_status_mappings`.
- zapisuje mapowania per instancja shopPRO przez `ShopproStatusMappingRepository::replaceForIntegration(...)` do `order_status_mappings` (klucz: `orderpro_status_code`).
- `ShopproStatusMappingRepository::listExternalStatuses(int)` — zwraca liste zewnetrznych statusow shopPRO dla danej integracji.
- `ShopproIntegrationsController` uzywa `buildMappingIndex()` + `buildExternalStatusOptions()` zamiast poprzedniego `buildStatusRows()`.
- `POST /settings/integrations/shoppro/delivery/save`:
- `ShopproIntegrationsController::saveDeliveryMappings(Request): Response`
- waliduje CSRF i `integration_id`,

View File

@@ -184,9 +184,9 @@ Migracje z prefiksem `ensure_` to migracje kompensujące — zostały dodane
- `orderpro_status_code` (varchar 64),
- `created_at`, `updated_at`.
- Indeksy:
- `order_status_mappings_integration_shoppro_unique` (UNIQUE: `integration_id`, `shoppro_status_code`),
- `order_status_mappings_integration_orderpro_unique` (UNIQUE: `integration_id`, `orderpro_status_code`),
- `order_status_mappings_integration_idx` (`integration_id`),
- `order_status_mappings_orderpro_idx` (`orderpro_status_code`).
- `order_status_mappings_integration_shoppro_idx` (`integration_id`, `shoppro_status_code`).
- Klucze obce:
- `order_status_mappings_integration_fk`: `integration_id` -> `integrations.id` (`ON DELETE CASCADE`, `ON UPDATE CASCADE`).
@@ -222,8 +222,8 @@ Migracje z prefiksem `ensure_` to migracje kompensujące — zostały dodane
- `orderpro_status_code` (varchar 64),
- `created_at`, `updated_at`.
- Indeksy:
- `allegro_order_status_mappings_code_unique` (UNIQUE: `allegro_status_code`),
- `allegro_order_status_mappings_orderpro_code_idx` (`orderpro_status_code`).
- `allegro_order_status_mappings_orderpro_unique` (UNIQUE: `orderpro_status_code`),
- `allegro_order_status_mappings_allegro_code_idx` (`allegro_status_code`).
### `order_payments`
- Platnosci zamowien (z importu API lub reczne).

View File

@@ -1,5 +1,23 @@
# Tech Changelog
## 2026-04-07 — Phase 74: Reverse Status Mapping
Odwrocenie kierunku mapowania statusow w integracjach shopPRO i Allegro.
**Zmiana:** UI tab Statusy teraz wyswietla statusy orderPRO po lewej stronie tabeli, a po prawej dropdown z zewnetrznymi statusami (shopPRO/Allegro). Poprzednio bylo odwrotnie.
**DB:** Migracja 20260407_000078 — zmiana unique key z external_status_code na orderpro_status_code w obu tabelach mapowania.
**Pliki:**
- database/migrations/20260407_000078_reverse_status_mapping_keys.sql
- src/Modules/Settings/ShopproStatusMappingRepository.php — replaceForIntegration() key na orderpro, +listExternalStatuses()
- src/Modules/Settings/AllegroStatusMappingRepository.php — upsertMapping() key na orderpro, +listExternalStatuses(), +buildAllegroToOrderproMap(), +replaceAllMappings()
- src/Modules/Settings/AllegroStatusMappingController.php — saveStatusMappingsBulk() odwrocony, saveStatusMapping() stub
- src/Modules/Settings/ShopproIntegrationsController.php — buildMappingIndex() + buildExternalStatusOptions() zamiast buildStatusRows()
- resources/views/settings/shoppro.php — odwrocona tabela
- resources/views/settings/allegro.php — odwrocona tabela, usuniety single-add form
- resources/lang/pl.php — nowe klucze tlumaczen
## 2026-04-07 (Phase 73 - Search by Product, Plan 01)
- `OrdersRepository::buildPaginateFilters()`: dodano EXISTS subquery na `order_items.original_name` do warunku search.
- Alias `oi_s` dla unikniecia konfliktu z `oi_agg` w buildListSql.