Skip to content

Filtry pro historii transakcí a nespárované platby - #68

Open
janzhanal wants to merge 5 commits into
arnost00:masterfrom
janzhanal:feature/#55-transaction-filters
Open

janzhanal wants to merge 5 commits into
arnost00:masterfrom
janzhanal:feature/#55-transaction-filters

Conversation

@janzhanal

Copy link
Copy Markdown
Contributor

Co a proč

Řeší #55 — Historie transakcí zatím šla jen procházet po stránkách řazených podle data, bez možnosti záznamy zúžit. Při větším množství transakcí je pak těžké najít konkrétní platbu.

Historie transakcí

  • Přidán filtrovací formulář: rozsah data, člen (reg. č. nebo jméno), rozsah částky, text v poznámce a přepínač "jen reklamace"
  • Filtr se po odeslání zachovává i při stránkování
  • Datum je přednastaveno na poslední 2 měsíce, ať se stránka needotahuje celou historii zbytečně
  • Původní řazení podle roku nahrazeno řazením podle měsíce (nadpis měsíce obsahuje i rok, takže se nic neztrácí, jen je granularita jemnější) — starší měsíce jsou defaultně sbalené jako dřív roky

Nespárované bankovní platby

  • Přidán filtr na variabilní symbol, rozsah částky a text zprávy plátce — to jsou právě ty údaje, které účetní má po ruce z bankovního výpisu, když řeší konkrétní nedohledanou platbu

Jak to bylo otestováno

Obě stránky prošly manuálně přes lokální dev docker-compose (přihlášení jako admin), pro každý filtr zvlášť ověřeno, že vrací jen odpovídající záznamy (u nespárovaných plateb dočasně vloženy testovací řádky, po ověření smazány). php -l bez chyb na všech upravených souborech.

jan.zhanal and others added 3 commits August 25, 2026 09:43
Historie transakcí only supported browsing by date-sorted pages, with
no way to narrow down the large transaction list (issue arnost00#55). Add
filters for date range, member, amount range, note text and claims,
and replace the existing year-only grouping with per-month grouping
(still nested by year via the label) so the default view stays small.
Nespárované bankovní platby only filtered by date range, making it
hard to check whether one specific unmatched payment is present.
Add filters for variable symbol, amount range and originator message,
the fields an accountant actually has on hand from a bank statement.
- add reusable parameterized SQL filter and time-range abstractions
- load transaction history by month on demand through an authenticated endpoint
- retain loaded month rows locally while supporting collapse and retry
- refactor unmatched bank-payment filtering to prepared statements
- distinguish database errors from valid empty results
- share lazy month/year range-heading rendering in a base detector
- add the finance storno/date index migration and update the version
- add Playwright coverage for filtering, lazy loading, and endpoint access

This functionality shall later apply on races table as well,
@scoufal

scoufal commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

Změřil jsem časy na zbm databázi.

Pro stránkování po 50 je na otevření první stránky potřeba jedna query 40ms. Pro posledni stránku 540ms.

Pro lazy loading je potřeba 37ms na seznam měsíců a 18ms na první měsíc. Dohromady 55ms. Každý další měsic 18ms i když je z roku 2017.

- use data-group consistently for month and year grouping
- switch month expansion to the shared group toggle
- remove the obsolete class-based toggle helper
- preserve authoritative range visibility attributes during row-attribute merges
- update finance-history tests for the unified grouping contract
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants