update
This commit is contained in:
@@ -1,3 +1,26 @@
|
||||
# TECH_CHANGELOG
|
||||
|
||||
> Chronologiczny log zmian technicznych — co i dlaczego.
|
||||
|
||||
## 2026-04-19 - Statystyki zamowien (menu + raport dzienny)
|
||||
|
||||
- Dodano nowy modul `Statistics`:
|
||||
- `OrdersStatisticsController` (obsluga filtrow i render strony `/statistics/orders`).
|
||||
- `OrdersStatisticsRepository` (agregacje dzienne po kanalach i grupach statusow).
|
||||
- Dodano nowa pozycje menu: `Statystyki -> Zamowienia`.
|
||||
- Dodano widok raportowy z filtrem zakresu dat, multiselectem kanalow i multiselectem grup statusow.
|
||||
- Dodano tabele dzienna z metrykami `Ilosc`, `Netto`, `Brutto` per kanal oraz stopka `Razem`.
|
||||
- Dodano tlumaczenia `statistics.orders.*` i `navigation.statistics*`.
|
||||
- Brak zmian migracyjnych i brak zmian schematu bazy danych.
|
||||
|
||||
## 2026-04-19 - Fix: Statystyki nie pokazywaly zamowien (kolizja collation)
|
||||
|
||||
- `OrdersStatisticsRepository::channelSql()` generowal wyrazenie `CONCAT("shoppro:", CAST(integration_id AS CHAR))`, ktore w MySQL dawalo wynik z collation `utf8mb4_bin`. W zestawieniu z parametrami bindowanymi (`utf8mb4_general_ci`) MySQL rzucal `SQLSTATE[HY000] 1271 Illegal mix of collations for operation 'in'`.
|
||||
- Blad byl polykany przez `try/catch (Throwable)` w `aggregateByDay()`, przez co widok dostawal pusta tablice i nie pokazywal zadnych zamowien.
|
||||
- Fix: dodano jawne `COLLATE utf8mb4_unicode_ci` na `CAST(integration_id AS CHAR)` oraz na calym wyrazeniu `CASE` zwracajacym `channel_key`, tak aby klucz kanalu mial spojne collation zgodne z `orders.source`.
|
||||
|
||||
## 2026-04-19 - Statystyki: fallback netto 23% VAT
|
||||
|
||||
- `OrdersStatisticsRepository::netAmountSql()` dostal fallback: jesli `orders.total_without_tax` jest `NULL` lub `0`, a `orders.total_with_tax` ma wartosc, netto wyliczane jest jako `ROUND(total_with_tax / 1.23, 2)`.
|
||||
- Uzasadnienie: shopPRO nie wysyla netto ani na zamowieniu ani w pozycjach (`order_items.original_price_without_tax` jest puste), wiec bez fallbacku kolumna `Netto` w statystykach pokazywala 0.
|
||||
- Uwaga: fallback zaklada 23% VAT. Ostateczne rozwiazanie (prawidlowy netto z shopPRO / z `order_items.tax_rate`) opisane w `.paul/TODO.md` (tag `STAT-NET`).
|
||||
|
||||
Reference in New Issue
Block a user