Klientské reporty
Klientské reporty jsou editovatelné CRM dokumenty s odpracovanými hodinami, které posíláte klientovi pro odsouhlasení nebo informaci. Liší se od faktur — report je prezentace práce, faktura je daňový doklad.
Typický uživatel: account manager / projektový manažer (Karel). Pracuje s reportem v 5 krocích:
- Vybere klienta a období (např. Březen 2026).
- Otevře editor — uvidí raw výkazy z týmu.
- Post-edituje řádky — sloučí "Schůzky + Telefonáty + E-maily" do jediné řádky "Komunikace s klientem 5h", upraví popisky pro klienta.
- Pošle report e-mailem (PDF příloha) — klient vidí 8 čistých prezentačních řádků místo 30 raw výkazů.
- Pokud klient požádá o úpravu, vytvoří revizi (v2).
Životní cyklus reportu
| Stav | Popis | Lze upravit? |
|---|---|---|
| Draft (koncept) | Karel připravuje, edituje řádky | ✅ Ano |
| Sent (odesláno) | Report poslán klientovi | ❌ Ne — pouze přes revizi |
| Revision (revize) | Nová verze (v2, v3, …) odeslaného reportu | ✅ Ano (do dalšího odeslání) |
Po odeslání je report immutable — chrání to integritu dat odeslaných klientovi (pokud byste ho upravili po odeslání, klient by měl jiný PDF než vy).
Co může report obsahovat
- Časové výkazy (
time_entries) — odpracované hodiny týmu. - Náklady (
expenses) — fakturovatelné položky z modulu Náklady (Sprint 84). Náklady mají em-dash (—) místo hodinové sazby a označení "Náklad" v badge. - Karel může řádky slučovat (merge) do agregovaných řádků pro klienta.
Vytvoření reportu
- Sidebar → Klientské reporty → + Nový report.
- Vyberte klienta a období.
- Volitelné: zaškrtnete "Zahrnout fakturovatelné náklady" (Sprint 84 Wave G).
- Klikněte Vytvořit — otevře se editor.
V editoru můžete:
- Upravit popisek řádku (text pro klienta).
- Sloučit řádky drag-and-drop nebo přes kontextové menu.
- Smazat řádek (data v
time_entrieszůstávají — pouze se nezobrazí v reportu). - Zobrazit jména pracovníků (toggle v hlavičce).
Odeslání reportu
- V editoru klikněte Odeslat klientovi.
- Vyplňte e-mail a předmět zprávy.
- PDF se vygeneruje a připojí jako příloha.
- Status se změní na Sent, řádky jsou zafixované.
Před Sprint 91 odeslání reportu automaticky flipnulo time_entries.status='invoiced' (Sprint 75 closure flow A1). Sprint 91 to změnil: odeslání reportu přidá pouze marker "Reportováno klientovi" badge, ALE NE-uzavře výkazy. Closure (uzavření) je separate flow přes Uzávěrky — finance concept (Michala persona), ne CRM concept (Karel persona).
Revize odeslaného reportu
Pokud klient požádá o úpravu, klikněte na sent report → Revidovat:
- Vytvoří se draft v2 se zkopírovanými řádky.
- Původní v1 zůstává immutable (klient stále má originální PDF).
- Editujete v2 → odešlete → status se změní na Sent revision number 2.
Verze jsou propojené přes revisionOfId self-FK. V seznamu reportů uvidíte badge v2, v3 vedle čísla.
Sprint 92 — faktura z reportu
Po Sprint 92 můžete vystavit fakturu, která zrcadlí klientský report 1:1. Více v Faktura z klientského reportu.
- Karel post-edituje report (8 prezentačních řádků z 30 raw výkazů) → pošle.
- Michala (CFO/účetní) vidí dashboard widget "Reportováno klientovi, čeká na fakturaci" → otevře
/invoicing→ klikne + Nová faktura → smart-default zvolí source="Z klientského reportu" → vidí preview → submit → faktura má přesně 8 řádků jako report. - Klient dostane fakturu identickou s reportem = žádný "wtf moment".
Prevence duplicit (Sprint 91.5)
Sprint 91.5 přidal 3-vrstvou ochranu proti duplicitním sent reportům per (klient × overlapping period):
- Klient-side: dialog při vytvoření blokuje "Vytvořit nový" pokud existuje překrývající sent report — jediný forward path je Revidovat poslední.
- Server-side:
detectOverlapWithSentReportshelper vracíCONFLICTchybu s odkazem na existující report. - Database UNIQUE index:
client_reports_unique_sent_per_periodzajišťuje hard constraint na úrovni DB.
Před Sprint 91.5 měl uživatel ACME × Březen 2026 = 4 duplicate sent reports v DB. Klient by mohl dostat 4 různé PDFs pro stejné období — záleželo by jen na tom, které otevřel. Sprint 91.5 to zafixoval: 1 sent non-revision report per period.
Přístup
Klientské reporty má každý plán (Free, Starter, Business, Custom). Role:
- Owner / Admin: plný přístup ke všem reportům v org.
- Manager / Accountant: scoped přes
client_assignments(vidí jen reporty pro své klienty). - HR / Worker: žádný přístup.