Evidencia dochádzky
Alternatíva k mesačnému kalendáru — dni v stĺpcoch, kategórie v riadkoch (inšpirované ipdf.sk); Dovolenka sa nastavuje klikom (½ / celý deň)
Horný riadok pod čiarou simuluje budúcu Personalistiku — polia, ktoré OdvodyADaneService potrebuje, ale zatiaľ nemá odkiaľ ich načítať automaticky. „Poberateľ dôchodku“ a „Študent“ sú zatiaľ len prijaté, nie premietnuté do výpočtu — pozri upozornenia pod výsledkom.
DVZ pre PN nevie engine dopočítať sám: podľa §8 zák. 462/2003 Z. z. sa počíta z vymeriavacích základov za rozhodujúce obdobie, ktorého dĺžka závisí od toho, či nemocenské poistenie trvalo aspoň 90 dní (ak nie, počíta sa od vzniku poistenia do dňa pred PN; ak v ňom nie je žiadny vymeriavací základ, použije sa pravdepodobný DVZ). To sú historické údaje, ktoré dodá personalistika alebo Sociálna poisťovňa. Ak pole necháte prázdne, engine použije zdokumentovanú aproximáciu a vráti o tom upozornenie.
Mzdová rekapitulácia
Hrubá mzda dopočítaná zo zadanej dochádzky vyššie a z konštánt v záložke „Konštanty“ — zjednodušený výpočet pre tento návrh, pozri poznámky nižšie.
Poznámky k tomuto návrhu
- Toto je alternatívne rozloženie k mesačnému kalendáru (ten ostáva zachovaný na svojom pôvodnom linku, pre prípadný návrat k tej myšlienke) — sem sme skúsili riadkový výkaz podľa vzoru ipdf.sk: dni v stĺpcoch, kategórie v riadkoch.
- Odpracované hodiny sa pri "Hlavnom pracovnom poměre" predpokladajú na 100 % úväzku a predvyplnia sa automaticky na pracovné dni (mimo sviatku/víkendu/dní pred nástupom). Zmena poľa "Úväzok" tento predpoklad prepočíta naspätne pre všetky už zobrazené mesiace — na dňoch, ktoré nie sú zamknuté inou celodennou absenciou (Dovolenka/§141 celodenné/Hradené soc. poisťovňou), sa Odpracované hodiny prepíšu na novú hodnotu úväzku, aj keby ste ich predtým ručne upravili.
- Dovolenka, Platené — hodinové (vlastné vyšetrenie/narodenie) a Platené — celodenné podporujú aj pravý klik na pole/tlačidlo — otvorí malé menu, kde sa dá hodnota vybrať priamo (namiesto opakovaného ľavo-klikania cez cyklus). Ľavé kliknutie (tam kde existuje) stále cyklí ako doteraz — je to len rýchlejšia alternatíva.
- Dovolenka sa nastavuje klikom na malé tlačidlo v jej riadku — cyklí prázdne → ½ (4 hodiny, fixne) → 🏖️ (celý deň = denný úväzok) → prázdne. Pláž namiesto čísla "1" je zámerná — v hárku plnom hodín by "1" pôsobilo ako "1 hodina". Pri "celý deň" sa Odpracované hodiny zamknú na 0; pri "½" sa automaticky prepočítajú na zvyšok (úväzok − 4), ale zostávajú editovateľné.
- §141 ZP je rozdelené na riadky podľa právnej povahy dôvodu (rovnaké kategórie ako v zhrnutí, ktoré sme si prešli v chate) — "Hradené sociálnou poisťovňou" je zámerne posledný, pretože je svojou povahou najodlišnejší (hradí ho Sociálna poisťovňa, nie zamestnávateľ). Kliknite (alebo Tab-om nabehnite) na názov riadku vľavo — pod tabuľkou sa vypíše presný zoznam, čo všetko do daného riadku patrí; rovnako to funguje aj priamo v poli/tlačidle daného dňa.
- Platené — hodinové (vlastné vyšetrenie/narodenie) zlučuje dva dôvody do jedného riadku — pravým klikom na pole vyberiete kategóriu pre daný deň z menu, samotné číslo je počet hodín tej kategórie. Pole je biele, kým je prázdne/nulové — farba pozadia (kategória) sa ukáže až po zadaní hodín. Rozpočty sa aj tak sledujú oddelene: 🩺 Vlastné vyšetrenie max 7 dní/rok; 👶 Narodenie dieťaťa bez ročného limitu (každé dieťa je vlastná udalosť), ale ku každému záznamu treba rodný list (evidencia patrí do budúcej Personalistiky). Sprievod k lekárovi (rovnaká právna povaha, ale ľahko sa mýlil s vyšetrením) má od 2026-09-18 vlastný, samostatný riadok nižšie — obyčajné hodinové pole bez kategórie — max 7 dní/rok, alebo 10 dní/rok pri doklade o ZŤP dieťati (pole "Sprievod ZŤP dieťaťa" hore), nezávisle od Vlastného vyšetrenia.
- Platené — celodenné: fixný celodenný nárok, ľavý klik cyklí prázdne → 💍 (svadba) → 🕊️ (pohreb) → ❔ (iné, napr. poveternostné dôvody) → prázdne, alebo pravý klik pre priamy výber; viacdňová udalosť (napr. 3-dňový pohreb) sa zaznačí zvolením tej istej ikony na viac po sebe nasledujúcich dní.
- Neplatené voľno (§141 ods. 3 ZP): akékoľvek iné neplatené voľno, ktoré zamestnávateľ poskytne dohodou nad rámec zákona — hodinové pole.
- Hradené sociálnou poisťovňou (na konci tabuľky): PN, materská/otcovská/rodičovská dovolenka, karanténa, ošetrovanie člena rodiny (OČR) — hradí ich Sociálna poisťovňa, nie mzda; klikacie tlačidlo (celý deň), pretože tieto neprítomnosti bývajú spravidla viacdňové.
- Keď hodinové pole alebo celodenný toggle v niektorom z týchto riadkov dosiahne/zaznačí celý denný úväzok, Odpracované hodiny sa pre ten deň automaticky zamknú na 0.
- Sledovanie limitu: referenčný ročný súčet kombinuje len oba "Platené" riadky (hodinové aj celodenné, prepočítané na hodiny) — ročný hodinový nárok (lekár/sprievod, 7 alebo 10 dní/rok podľa "Sprievod ZŤP dieťaťa") s jednorazovými nárokmi (svadba, pohreb), ktoré môžu nastať teoreticky aj viackrát/krátko po sebe — presné, oddelené sledovanie každého nároku naraz sa nedá vykonať automaticky. Preto sa nižšie pod tabuľkou zobrazuje len upozornenie (nie tvrdý strop). "Neplatené voľno" a "Hradené sociálnou poisťovňou" nemajú zmysluplný spoločný limit, takže tam len zoznam dôvodov po kliku/focuse.
- Spolu riadok dole = súčet všetkých kategórií za deň (kontrolný súčet); posledný stĺpec Spolu = súčet danej kategórie za celý mesiac.
- Šípky (← ↑ → ↓) na klávesnici presúvajú focus medzi bunkami tabuľky (vľavo/vpravo = iný deň v tom istom riadku, hore/dole = ten istý deň v inom riadku) — prekrývajú natívne správanie číselných polí (kurzor/spinner), presun po mriežke má prioritu; na okraji riadku/mesiaca alebo pri "Spolu" (nie je klikateľné) sa šípka jednoducho neuplatní.
- Pri Konateľovi/Spoločníkovi/Členovi družstva sa riadok Dovolenka zablokuje (nie sú zamestnanci podľa Zákonníka práce) — rovnako ako v mesačnom kalendári.
- Dovolenka a Platené — celodenné (svadba/pohreb/iné) sa nedajú naklikať na deň bez pracovného fondu (víkend, sviatok, alebo pred nástupom) — voľno z fondu 0 hodín nedáva zmysel. Hradené sociálnou poisťovňou (PN/materská/OČR/karanténa) tento limit nemá — choroba nečaká na pracovný deň.
- Nočná práca (22:00–06:00) je hneď pod Dovolenkou — je to oddelená časť fondu, nie podmnožina: pri zadaní sa Odpracované hodiny automaticky prepočítajú na (fond − nočné hodiny), takže Spolu zostane pri fonde (napr. 8). Ak si Odpracované hodiny potom ručne prepíšete (napr. späť na celý fond), Spolu ukáže reálny súčet vrátane prípadného nadčasu (napr. 8 + 4 = 12). Nočná práca sa zamkne na 0, ak je celý deň inak absencia (Dovolenka/§141 celodenné).
- Panel vpravo nad kalendárom: nárok na dovolenku za rok (pomerná časť 1/12 × mesiac trvania, zaokrúhlené nahor na pol dňa — vlastná politika, zákon zaokrúhlenie nešpecifikuje; nesleduje vek/opatrovanie dieťaťa), ročné čerpanie Vlastného vyšetrenia (presne, voči 7×úväzok) a Sprievodu k lekárovi (presne, voči 7×úväzok alebo 10×úväzok podľa poľa "Sprievod ZŤP dieťaťa") — sú to dva nezávislé rozpočty, a mesačný fond pracovného času (pracovné dni × úväzok) voči súčtu vyklikaných hodín — pri prekročení fondu sa zobrazí "+X h nadčas".
- Poznámka k limitu 7/10 dní: podľa §141 ods. 2 sa nečerpá po celých dňoch, ale v nevyhnutne potrebnom čase (vrátane cesty) — preto je limit v tomto návrhu prevedený na hodiny (dni × úväzok), nie na celé dni. Krátenie limitu pri nástupe v priebehu roka je podľa dostupných zdrojov len fakultatívna možnosť zamestnávateľa s garantovaným minimom 1/3 nároku za každú začatú tretinu roka — nie automatická povinná redukcia — preto tu nový nástup limit nekráti; treba overiť priamo v Zákonníku práce pred nasadením do ostrej verzie.
- Pracovný pomer, Dátum nástupu, Úväzok, Mesačná hrubá mzda a Sprievod ZŤP dieťaťa sú testovacie polia — v reáli prídu z budúcej Personalistiky.
- Pod výberom Pracovný pomer sa vždy zobrazí stručná charakteristika vybraného typu (hodinové stropy, na koho sa vzťahuje ZP, čo blokuje) — nielen upozornenia pri špeciálnych typoch ako predtým. Zatiaľ ide len o informačný text; skutočné výpočtové rozdiely medzi typmi (napr. Domáci pracovník bez príplatkov) sú väčšinou len zdokumentované, nie premietnuté do tabuľky — mimo blokovania Dovolenky pri Konateľovi/Spoločníkovi/Členovi družstva.
- Ročné súčty (nárok panel) sa počítajú len z mesiacov, ktoré už boli v tomto behu aplikácie navštívené (mockup nemá žiadne úložisko mimo prehliadaného kalendára) — po obnovení stránky sa vynulujú.
- V hlavičke kalendára sa červenou farbou zvýrazňujú len sviatky, za ktoré vzniká sviatočný príplatok podľa §122 ZP — 1.9. (Deň Ústavy SR) a 17.11. (Deň boja za slobodu a demokraciu) sú štátne sviatky (deň pracovného pokoja), ale zákon ich z §122 permanentne vylučuje, takže nie sú mzdovo relevantné a nezvýrazňujú sa. Názov sviatku (vrátane tejto výnimky) je vždy v tooltipe (nájazd myšou na deň).
- Vstupná maska sa mení podľa vybraného Pracovného pomeru — začali sme Dohodou o pracovnej činnosti: tabuľka sa zúži len na Odpracované hodiny a Nočnú prácu (+ Spolu), obe políčka sú na začiatku prázdne (žiadne predvyplnenie podľa fondu — dohoda sa evidencuje spätne); pole "Mesačná hrubá mzda" sa zmení na "Hodinová mzda (€/h)", keďže DPČ sa nepláca mesačným platom. Súčet oboch polí za kalendárny týždeň (Po–Ne) je pevne obmedzený na 10 h/týždeň (§228a ods. 1 ZP) — bez priemerovania medzi týždňami (jeden nabitý a jeden prázdny týždeň sa nekompenzujú, podľa výkladu Národného inšpektorátu práce). Dohoda navyše trvá najviac 12 mesiacov od dátumu uzavretia (pole "Dátum nástupu") — dni po tomto termíne sú zamknuté rovnako ako dni pred nástupom. Hodnota, ktorá by týždenný limit prekročila, sa vôbec neprijme (pole sa vráti na predchádzajúcu hodnotu, pod tabuľkou sa červeno zobrazí dôvod + krátke pípnutie) — zámerne za užívateľa nedopočítavame žiadnu "skrátenú" náhradnú hodnotu (napr. z pokusu o "8" tichým prepisom na "2"), to by mohlo viesť k chybám. Ostatné typy pracovného pomeru majú zatiaľ nezmenené (pôvodné, HPP-štýl) riadky — postupne doplníme aj ich vlastné pravidlá.
- Zámerne otvorená otázka na porovnanie: je toto rýchlejšie na zadávanie ako kalendárová mriežka, alebo je priveľa scrollovania do strany? (na to slúži toto porovnanie).
- Mzdová rekapitulácia (karta pod tabuľkou) sa nepočíta v JS tejto stránky — pri každej zmene dochádzky sa zostaví JSON presne zo zadaných dní a pošle sa na samostatný Java výpočtový engine (
POST /api/v1/mzda/hruba-mzda, bežiaci v tom istom lokálnom Spring Boot procese, ktorý servíruje aj túto stránku). Metodika je rovnaká, akú sme si prešli v chate (hodinová sadzba pri DPČ = priamo zadaná hodinová mzda, inak mesačná hrubá mzda ÷ mesačný fond hodín; nočný príplatok 40 % z minimálnej hodinovej mzdy podľa §123 ZP, sobotný 50 % podľa §122a ZP, nedeľný 100 % podľa §122b ZP — opravené 2026-09-17, pôvodne sme mali zastarané predreformné 25 %/50 %; sviatočný príplatok 100 % — z vlastnej sadzby pri bežnom zamestnancovi, ale zo 100 % minimálnej hodinovej mzdy pri dohodárovi (DPČ), nie z jeho dohodnutej sadzby, podľa §122 ZP) — len teraz existuje na jednom mieste (v Jave), nie duplicitne aj v tomto mockupe. Ak engine nebeží, karta to zobrazí ako chybu namiesto tichého výpadku. - Legislatívne konštanty zobrazené v záložke „Konštanty“ sú zatiaľ samostatná kópia tých istých čísel v JS tejto stránky (len na zobrazenie, do samotného výpočtu nezasahujú — ten má vlastnú kópiu v Jave). Až raz bude zmysel spraviť z tejto stránky tenkého klienta úplne, presunie sa aj toto zobrazenie na Java engine (napr. cez nový GET endpoint), nech existuje naozaj len jeden zdroj pravdy.
- Pracovný fond (nový prvý riadok tabuľky, 2026-09-18) ukazuje, čo má zamestnanec podľa zmluvy odpracovať (úväzok × pracovný deň) — je to vždy zamknuté pole (rovnaký výpočet ako predvyplnenie Odpracovaných hodín), zámerne farebne odlíšené od bežných zamknutých polí (fialkastý tón), aby bolo jasné, že ide o dôležitú referenčnú hodnotu, nie o "nepoužiteľné" pole.
- Riadky sú zoskupené do 4 vizuálnych blokov (hrubšia čiara nad prvým riadkom skupiny): Pracovný fond samostatne · Odpracované hodiny + Nočná práca (reálne odpracovaný čas) · Dovolenka + platené prekážky v práci podľa §141 (hodinové aj celodenné) · Neplatené voľno + Hradené sociálnou poisťovňou (zamestnávateľ neplatí nič, alebo platí len SP).
- Stĺpec „Spolu“ pre riadky Dovolenka, Platené — celodenné a Hradené sociálnou poisťovňou je zámerne prázdny — tieto tri riadky evidujú dni (0/½/1), nie hodiny ako všetky ostatné riadky tabuľky; miešať dni a hodiny v jednom stĺpci by pri rýchlom čítaní zvislo pôsobilo, že ide vždy o hodiny. Skutočný ročný nárok/čerpanie v dňoch pre tieto kategórie ukazuje panel nároku nad kalendárom (napr. „Dovolenka nárok“).
Legislatívne konštanty
Hodnoty ovplyvňujúce mzdové, odvodové a daňové výpočty — menia sa každý rok (niektoré aj v jeho priebehu), preto sú vedené podľa roka, nie ako pevné čísla v kóde. Rok, za ktorý sa počíta konkrétna mzda, určuje, ktorý stĺpec sa použije.
Poznámky
- Zdroj: Zákon o minimálnej mzde (663/2007 Z. z.), Zákon o sociálnom poistení (461/2003 Z. z.), Zákon o zdravotnom poistení (580/2004 Z. z.), Zákon o dani z príjmov (595/2003 Z. z.), Zákon o cestovných náhradách (283/2002 Z. z.), Zákon o sociálnom fonde (152/1994 Z. z.).
- Zatiaľ je do samotného výpočtu hrubej mzdy (karta „Mzdová rekapitulácia“) zapojená len minimálna hodinová mzda — ostatné hodnoty sú tu pripravené ako referencia pre budúce odvodové/daňové výpočty (čistá mzda, odvody, preddavok na daň), ktoré ešte nie sú implementované.
- Stĺpec 2027 je zámerne prázdny — hodnoty na daný rok v čase písania tohto návrhu ešte neboli zverejnené. Doplní sa priamo do tabuľky
LEGISLATIVNE_KONSTANTYv zdrojovom kóde, hneď ako budú známe; výpočet aj táto obrazovka ich potom automaticky použijú bez ďalších zmien. - Ak sa v kalendári vyššie prejde na rok, pre ktorý tu ešte nie sú vyplnené konštanty, mzdová rekapitulácia to viditeľne označí a dočasne použije najbližší predchádzajúci vyplnený rok — nie je to tichá chyba.