Výpočty - definice výpočtů a postup výpočtů
Výpočty mezd se realizují na základě definovaných Výpočtových schémat.
Výpočtové schéma lze chápat jako předpis, podle kterého má probíhat výpočet, tj. celé schéma výpočtu části agendy a to nejen výpočet položek mzdových listů (dílčích i souhrnných) a průměrů, ale i ročního zúčtování nebo mzdové uzávěrky.
Výpočtových schémat (definic výpočtu) může být obecně mnoho.
Každé výpočtové schéma obsahuje seznam počítaných položek, které se podle daného schématu mají počítat a pro každou počítanou položku obsahuje definici jejího výpočtu.
Zjednodušený nákres výpočtového schématu obsahující výpočtové vzorce pro 3 počítané položky, z nichž do 2. vstupuje součet (Sčítanec 1) z jiné položky a do 3. vstupují dva součty z jiných dvou položek
Předpis výpočtu počítané položky může být realizován různým způsobem, tj. definice výpočtu položky může obsahovat:
- Součet jiných položek - tj. položka může být definována jako sčítaná, tj. jako součet z jiných vybraných položek. Přitom zahrnutí těchto vybraných položek - sčítanců - do výsledného součtu může být vázáno na splnění výrazu podmínky a výsledný součet může být navíc korigován korekčním výrazem.
- Standardní akce - na výpočet položky může být vázána některá ze standardních akcí, které jsou k dispozici, přičemž může být volána buď před výpočtem anebo až po výpočtu položky (podle toho, k jakému účelu má být použita a co má být jejím výsledkem).
- Výpočetní výraz - Jedná se o výraz zapsaný v požadované syntaxi, který může obsahovat odkazy na libovolné jiné položky, na globální proměnné, na speciální položky, na funkce a může obsahovat substituční řetězce. Může být dán výrobcem nebo uživatelem, přičemž v definici výpočtu položky lze nastavit, zda se má použít výraz daný výrobcem (standardní definice), nebo daný uživatelem (uživatelská definice) nebo kombinace obojího. Realizace výrazu může být vázána na splnění podmínky, viz dále.
- Výraz pro podmínku - splnění podmínky ovlivňuje realizaci výpočetního výrazu. Pro výraz zadaný jako podmínka platí obdobná pravidla jako pro výpočetní výraz.
- Kontrolní výraz - výraz pro kontrolu hodnoty položky. Pro výraz zadaný jako podmínka platí obdobná pravidla jako pro výpočetní výraz, kromě použití substitučních řetězců, viz dále.
Každou z uvedených částí lze realizovat jak samostatně, tak libovolnou kombinací všech. Tedy je možné např. definovat kontrolu hodnoty položky bez jejího výpočtu a stejně tak je možné, mít položku definovánu jako výpočetní výraz, do něhož je zahrnut výsledek součtu jiných položek, ale např. jen za určité splněné podmínky a současně nějak zkorigovaný, a současně výsledek nějaké standardní akce.
Každé výpočtové schéma je jednoznačně identifikováno a má evidovánu platnost a stav v historii (v čase). Definice výpočtu položek počítaných v rámci daného výpočtového schématu se mohou podle potřeby v čase průběžně měnit. Sleduje se historie těchto změn v čase. Při vlastním výpočtu se použije vždy ta část definice, která je platná k datu resp. mzdovému období, za který se výpočet provádí.
Výpočtová schémata se mohou i překrývat, co se týče definice počítaných položek, tzn., že více schémat může obsahovat definici výpočtu týchž položek. Podle jaké definice se nakonec výpočet takové položky provede, závisí na tom, které výpočtové schéma se aktuálně použije, viz dále:
Pokud ale k jednomu druhu prac. poměru, resp. ML přiřadíte najednou výpočtová schémata obsahující definici výpočtu téže položky, použije se pouze jedna z těchto definic (jelikož každá položka se v rámci daného výpočtu vypočte pouze jednou, viz postupy výpočtu), přičemž nelze v žádném případě stanovit, která z nich to bude.
Součtové položky jsou takové položky, jejichž hodnota se vypočte jako korigovaný součet jiných položek mzdového listu.
Pak mluvíme o:
- Součtové položce (součet) - jejíž hodnota vznikne jako součet hodnot jiných (sčítaných) položek
-
Sčítané položce (sčítanec) - jejíž hodnota se použije jako jeden ze sčítanců při výpočtu součtové položky
Sčítané položky nejsou vlastněnou kolekcí definic výpočtu, ale jsou to samostatné Business objekty. Důvodem je to, aby bylo možné jednoduše zahrnout uživatelskou položku do definice výpočtu originální položky, aniž by bylo nutné si zavádět vlastní uživatelskou definici výpočtu.
Sčítané položky jsou uvedeny jako definice součtů patřící k dané součtové položce. Každá definice součtu definuje vazbu součtu na sčítanec plus korekce a podmínka. Tj. definice součtu je pak identifikována:
- Výpočtovým schématem, do něhož patří součtová položka a součtovou položkou,
- Třídou Business objektu, k němuž patří sčítaná položka a sčítanou položkou
Kromě toho definuje Výrazy, Podmínky, Korekce. Ve výrazech lze používat substituční řetězec %V%, který je pak nahrazen hodnotou položky.
Obsahuje-li korekční výraz -1 * %V%, pak to znamená, že daná sčítaná položka - sčítanec, se vynásobí (-1) a takto zkorigovaná se přičte do součtu, tzn., že se od součtové položky vlastně odečte.
Každá definice součtu obsahuje datum platnosti (od).
Možnosti potlačení započtení sčítanců do výsledného výpočtu součtové položky:
- potlačením sčítance, jelikož každou definici součtu lze potlačit
- nastavením hodnoty "Bez součtu" v položce Součet v definici výpočtu položky ve výpočtovém schématu
-
nebo neuvedením %V% u výrazu (pozor platí jen u neprázdného výrazu)! Tj. u prázdného výrazu se %V% nemusí uvádět a součet se načte, neboli neuvedením %V% u prázdného výrazu se součet nepotlačí. Prázdným výrazem se rozumí i výraz obsahující pouze mezery. - Viz Tip pro vás v popisu Pořadí zpracování částí výpočtového schématu.
Speciálním případem je pak možnost nastavit na výp. schématu Nezapočítávat dílčí mzd. listy do součtu - sčítanec se pak nezapočte, nicméně je využit jiným způsobem (např. k rozúčtování) - používá se např. u schémat třídy Výpočet uzávěrky. Viz např. výpočet Položek uzávěrky.
Dále viz popis zmíněných položek v definici součtu a Možnosti změn výp. schémat a definic součtů, historie.
Korekční výraz může být libovolný výraz, který zkoriguje výpočet sčítané položky - sčítance před jejím načtením do součtové položky. Jednoduchým příkladem může být vynásobení minus jednou, tj. vlastně "odečtení" sčítané položky od výsledného součtu.
Korekční výrazy však mohou být mnohem složitější a vlastní hodnotu dané položky - sčítance ani nemusí započítávat (pokud korekční výraz neobsahuje substituční řetězec %V%. Toho se s výhodou využívá tehdy, pokud není k dispozici položka, která by přímo obsahovala potřebný údaj, ale potřebný údaj se získá právě vyhodnocením korekčního výrazu.
U výpočtu průměrů na nemoc je třeba od jmenovatele odečíst zameškané kalendářní dny nemoc. dávek, ale ještě za splnění určitých podmínek. Není však k dispozici položka, která by přímo danou hodnotu obsahovala, proto je mezi sčítanci uvedena položka Nem. dávky a náhrady - nepřítomnost (MLD:S_SickAbsences), a v její korekci je uveden výraz, který napočtení zameškaných kalendářních dnů zajistí. Která položka je uvedena jako sčítanec, není v daný moment důležité, jelikož samotná hodnota položky Nem.dávky - nepřítomnost (MLD:S_SickAbsences) se vůbec do výsledku vyhodnocovaného korekčního výrazu nijak nepromítá, tudíž výsledný součet nijak neovlivní.
Téhož by uživatel dosáhl definicí příslušného výrazu přímo v položce Výrazy výpočtového schématu.
Korekční výrazy mohou být dále využity pro definice výpočtových schémat třídy Výpočet uzávěrky, jelikož pro ně nelze výrazy používat, viz Výpočet uzávěrky.
Určuje, za jaké podmínky se má výpočet provést. Podmínkou může být libovolný výraz, který je při výpočtu dané položky vyhodnocen a je-li splněn, pak je příslušný výpočetní výraz definovaný pro aktuální položku vyhodnocen.
Standardní akce jsou pevně naprogramované akce, které řeší určitou část výpočtu podstatnou pro výpočet mezd a provádějí se v definovaném okamžiku. Jsou pevně definovány výrobcem a nelze je uživatelsky měnit. Registrovány jsou v repozitoři. Důvodem je to, že se jedná o složitý výpočtový algoritmus, který není řešitelný metodou výpočtových vzorců, jako je tomu u ostatních počítaných položek.
Standardní akce se mohou lišit v různých lokalizacích, podle aktuálně platné legislativy.
- Registrace v repozitoři
- Realizace vázána na konkrétní položku ve vzorci
Standardní akce je nutné provést na určitém místě výpočtu, tzn. že realizace takové akce je vázána na konkrétní položku ve výpočtovém schématu. To je realizováno tak, že výpočtové vzorce definují položky mzdového listu, při jejichž výpočtu se odpovídající standardní akce volají a provádějí, přičemž lze definovat, zda se má v daném místě provést před výpočtem anebo po výpočtu příslušné položky. Standardní akce může být dále volána s různými parametry (viz dále), které mohou přesněji specifikovat, co přesně má být výsledkem jejího výpočtu.
Příklady standardních akcí:
- Náhrady mzdy - pro výpočet ostatních náhrad mzdy celkem
- Dovolené - pro výpočet a uložení zůstatku dovolené - řeší Business Object dovolených
- Příplatky - pro výpočet ostatních příplatků - spouští se u položky Ostatní příplatky
- Výkony - pro výpočet údajů z výkonů (počty, sazby, celkové částky (sazba*čas))
- Výpočet srážek - pro výpočet a uložení srážek - řeší Business Object srážek
- Částka v cizí měně - pro výpočet Částky v cizí měně
- Náhrady výdajů - pro výpočet ostatních náhrad výdajů celkem
Sečte údaje z výkonů k danému dílčímu mzdovému listu podle masky.
Spouští se před výpočtem položky, v jejíž definici výpočtu se volá. Do výpočtového vzorce dané položky je třeba vložit na vhodné místo substituční řetězec %A%, který bude nahrazen výsledkem této standardní akce.
Parametry:
- MASK=<maska> - Čtyřznaková maska pro výběr výkonů podle jejich kódů.
(je možné použít divoký znak "?" jako libovolné písmeno). - RESULT=<sčítaný údaj> - <sčítaný údaj> může nabývat hodnot:
- COUNT (sčítá počty)
- CHARGE (sčítá sazby)
- TOTAL (sčítá celkové částky)
Stand.akce Výkony vyvolaná s parametry MASK=HC,HU a RESULT=COUNT vysčítá za počítané mzdové období počet hodin ze zadaných výkonů s kódy začínajícími na HC nebo HU. Tj. vysčítá ze zadaných výkonů počet hodin odpracovaných v hodinové nebo úkolové mzdě.
Vhodného použití: Položka "Odpracované hodiny celkem", dále viz Výpočet odpracované doby - odpracované hodiny.
Viz též Práce s výkony - podklad pro mzdy nebo rozúčtování mezd.
Sečte ostatní příplatky zadané k danému mzdovému listu v subzáložce Příplatky a vrátí jejich součet.
Spouští se před výpočtem položky, v jejíž definici výpočtu se volá. Do výpočtového vzorce dané položky je třeba vložit na vhodné místo substituční řetězec %A%, který bude nahrazen výsledkem této standardní akce.
Vhodného použití: Položka "Ostatní příplatky"(S_OtherCharges), dále viz Výpočet příplatků - Ostatní příplatky.
Sečte ostatní náhrady zadané k danému mzdovému listu v subzáložce Náhrady a vrátí jejich součet (podle parametru sčítá buď celkovou částku nebo základ pojistného).
Spouští se před výpočtem položky, v jejíž definici výpočtu se volá. Do výpočtového vzorce dané položky je třeba vložit na vhodné místo substituční řetězec %A%, který bude nahrazen výsledkem této standardní akce.
Parametry:
- RESULT=<sčítaný údaj> - <sčítaný údaj> může nabývat hodnot:
- AMOUNT (sečte celkovou částku)
- INSURANCE (sečte základ pojistného)
Vhodného použití: Položka "Ostatní náhrady"(S_OtherCompensations) a položka Ostatní náhrady základ poj. (S_OtherCompInsBase), dále viz Náhrady - Ostatní náhrady.
Sečte náhrady výdajů zadané k danému souhrnnému mzdovému listu v subzáložce Náhrady výdajů a vrátí jejich součet (sčítá částku).
Spouští se před výpočtem položky, v jejíž definici výpočtu se volá. Do výpočtového vzorce dané položky je třeba vložit na vhodné místo substituční řetězec %A%, který bude nahrazen výsledkem této standardní akce.
Parametry: nemá
Vhodného použití: Položka "Ostatní náhrady výdajů"(S_ExpenseCompTotal), dále viz Nedaněný příjem - Ostatní náhrady výdajů.
Pokud zaměstnanec čerpá ve zpracovávaném mzdovém období dovolenou nebo je mu nějaká dovolená proplácena, pak standardní akce vytvoří záznam čerpání dovolené v agendě dovolených v záložce Čerpání odpovídajícího nároku na dovolenou. Přitom platí následující:
Je-li ve zpracovávaném mzdovém listu zaměstnance zadána položka Preferovaný druh dovolené (MLD:HolidayType_ID) a má-li zaměstnanec zadán nějaký nárok na dovolenou daného druhu a lze-li tento druh dovolené v daném období čerpat, pak se přednostně čerpá z tohoto druhu dovolené. Čerpat se bude ve dnech nebo v hodinách podle toho, zda u daných nároků Údaje o množství dovolené jsou ve dnech nebo hodinách. Je-li počet dnů resp. hodin čerpané či proplacené dovolené větší než zůstatek dovolené preferovaného druhu nebo nelze-li z ní v daném období čerpat, pak se čerpá postupně z ostatních druhů dovolených, na něž má zaměstnanec nárok a z kterých v daném období čerpat lze, počínaje druhem dovolené, s nejvyšší prioritou.
Není-li preferovaný druh dovolené zadán, provede se čerpání z jednotlivých druhů dovolených podle jejich priority postupně od nejvyšší priority (nejmenší číslo v položce Priorita druhu dovolené) k nižším. V jakém období lze nárok na dovolenou čerpat, je dáno v položce Možno čerpat v době od-do).
Aktivní MO je srpen a zaměstnanec má tři nároky na dovolenou (dosud nic nečerpáno), přičemž zaměstnanci zadáme 7 dnů dovolené a preferovaný typ dovolené DD:
a)
- RD - 20 dní, priorita 0, možno čerpat od 1.1.do 31.12.
- DD - 3 dny, priorita 10, možno čerpat od 1.6.do 30.6.
- DD2 - 2 dny, priorita 11, možno čerpat od 1.1.do 31.12.
⇒ Z DD nenačerpá nic, načerpá 7 dnů z RD.
b)
- RD - 20 dní, priorita 0, možno čerpat od 1.1.do 31.12.
- DD - 3 dny, priorita 10, možno čerpat od 1.6.do 31.12.
- DD2 - 2 dny, priorita 11, možno čerpat od 1.1.do 30.06.
⇒ Z DD načerpá 3 dny, a zbývající 4 dny z RD.
Pokud se nepodaří počet dnů resp. hodin čerpané a proplacené dovolené čerpat v plném rozsahu, je uživatel informován, zda si při současném čerpání a proplácení přeje zůstatek přečerpat. Odpovídající chyba, pokud se nevyčerpal požadovaný počet, je po výpočtu zobrazena v záložce Chybový protokol.
Standardní akce Dovolené se spouští po výpočtu položky, v jejíž definici výpočtu se volá.
-
Příklad vhodného použití: Výpočet položky Náhrada za dovolenou (MLD:S_HolidayCompTotal), popis výpočtu viz Náhrada za čerpanou dovolenou.
V případě, že máte nepravidelnou prac. dobu (nepravidelné směny nebo směny jinak dlouhé než 8 hodin), viz dále výklad u výpočtu Čerpaná dovolená celkem (dny)(MLD:HolidayDrawDays).
Provede výpočet srážek pro daného zaměstnance a aktuální mzdové období.
Spouští se buď před nebo po výpočtu položky, v jejíž definici výpočtu se volá, vhodnost použití závisí na parametru, s kterým se volá, tedy na tom, co se od dané funkce požaduje. Do výpočtového vzorce dané položky je třeba vložit na vhodné místo substituční řetězec %A%, který bude nahrazen výsledkem této standardní akce.
Parametry:
- GENERATEDEFS - vygenerují se srážky podle definic opakovaných srážek.
- GENERATEDEBTS - vygenerují se srážky na dlužné částky.
- EVALUATE - zadané a vygenerované srážky se vyhodnotí a vypočte se jejich realizace. Aktuální položka, u které se standardní akce volá, je zároveň celková částka, ze které odečítá realizace srážek. (Použít po výpočtu. Vhodná je položka "Čistá mzda").
- GETAMOUNT - vrátí součet realizovaných srážek. (Použít před výpočtem. Do vzorce vložit na vhodné místo substituční řetězec %A%).
- ALL - provede všechny předcházející akce v uvedeném pořadí.
-
CORRECTION - umožňuje zadat výraz pro výpočet částky, která bude použita jako korekce nesrazitelné části mzdy (resp. korekce částky, z níž se bude moci nakonec srazit, viz dále).
Požadavky na srážky jsou totiž standardně vyčíslené z částky bez jakéhokoliv zohledňování peněz vyplacených zaměstnanci předem (např. formou zálohy, stravenek apod.). Tudíž se může stát, že když od čisté mzdy odečteme vypočtené srážky a případnou předem vyplacenou zálohu, dostaneme záporný doplatek. Tento vzniklý záporný doplatek je v pořádku a oprávněný, pokud zaměstnanci byla předem vyplacena záloha příliš vysoká na to, aby "zbylo" na srážky, a měl by být se zaměstnancem standardně vyrovnán formou pohledávky za zaměstnancem. Pokud by se totiž jednalo např. o výživné, nebyl by naopak korektní opačný postup a to snížit samotnou srážku (jenom proto, že na ni "nezbylo"), protože vyživované dítě "nemůže za to", že zaměstnanci byla vyplacena příliš vysoká záloha na mzdu.
Nicméně může se jednat o srážku, kdy její snížení v daném měsíci nebude na závadu, a mzdová účetní jí dá přednost před vyrovnáváním pohledávky za zaměstnancem. Tudíž vlastně chce zohlednit peníze vyplacené předem, a vypočíst srážku s ohledem na ně tak, že výsledný doplatek nebude záporný.
Pro tento účel je k dispozici právě parametr CORRECTION. Umožňuje zadat výraz pro výpočet částky, o kterou se bude korigovat (snižovat) základ pro výsledné srážení, pokud byly předem vyplaceny nějaké příjmy v takové výši, že by po sražení z vypočteného základu bez korekce doplatek vycházel záporný. Systém se nejdříve pokusí příslušnou korekční částku (tj. částku, která vznikne vyhodnocením výrazu v parametru CORRECTION) pokrýt tou částí mzdy, na kterou má zaměstnanec nárok i v případě srážek a dostane ji vyplacenu, ať už formou doplatku nebo dřívější zálohy, stravenek apod. (základní nezabavitelná částka, třetí třetina čisté mzdy po odečtení základní nezabavitelné částky, příp. i druhá třetina (podle typu srážky)). Poté se jí snaží pokrýt částkou mzdy, z níž lze srážet bez omezení. Teprve když se ani poté nepodaří celou korekci pokrýt (jelikož např. mzdová účetní vyplatila chybně velikou zálohu zaměstnanci, který má velké povinné srážky a malý příjem), pak začne program ukrajovat z dalších třetin, vypočtených pro srážení z čisté mzdy. Tedy vlastně dochází ke "snižování částky", kterou půjde srazit, potažmo ke snížení výsledné srážky, čímž se doplatek nedostane z titulu této srážky a velké zálohy do minusu.
V defaultně dodávaných datech je k dispozici položka Nesrazitelná částka - oprava(MLS:S_UndockableCorrection), která je ve výpočtových schématech zohledněna v parametru CORRECTION. Do ní zadá předem vyplacenou zálohu, která se pak po výpočtu srážky zohlední.
Parametr Correction objasníme na příkladech:
Jedná se např. o korekci o vysokou vyplacenou zálohu, kdy požadavky na srážky jsou vyčíslené z částky bez jakéhokoliv zohledňování peněz již vyplacených předem. Pokud je ovšem záloha uvedena v parametru Corection, pak vlastní vyčíslení konečné částky ke sražení (realizace srážek) již vyplacenou zálohu respektuje. Pokud např. zaměstnanci vyšla čistá mzda 10000, z níž ale dostal již vyplacenou zálohu 4000, počítají se mu jeho srážky z celých 10000 (zohlednění životního minima, přerozdělení zbývající sumy podle pravidel výpočtu srážek atd). Při vlastním srážení se však srazí jen do výše 6000, aby celková mzda nevyšla nulová, a to i v případě, že by částka ke sražení vycházela dle čisté mzdy vyšší.
Mějme zaměstnance, jehož čistý příjem určený k výpočtu srážek je 10000Kč. Zaměstnanec platí výživné ve výši 4900Kč. Normativní náklady na bydlení zaměstnance nechť jsou pro jednoduchost nulové.
Výpočet pro srážky za předpokladů následujících hodnot platných k 1.1.07:
ŽMJ = 3126Kč
% ŽMJ, nad které se sráží bez omezení = 100%
Nesrazitelné % ŽMJ na povinnou osobu = 66,6666667%
-----------------------------------------------------------
Normativní náklady na bydlení =0
Základní nezabavitelná částka na povinného = 2/3 z (ŽMJ + nákladů na bydlení) = 66,6666667% z 3126
Nezabavitelná částka na vyživovanou osobu = 1/4 ze 2/3 z (ŽMJ + Norm. nákl. na bydlení)
Celková zákl. nesrazitelná částka = 66,6666667*3126/100 + 0 + 0 = 2085Kč (zaokrouhleno na koruny nahoru)
Výpočet třetin:
- 1. třetina je určena k vydobytí pohledávek oprávněných osob
- 2. třetina slouží jen k vydobytí přednostních pohledávek (tj. u nepřednostních se vyplatí povinnému)
- 3. třetina se vždy vyplatí povinnému
(10000-2085)/3 = 7915/3 = 2638Kč (zaokrouhleno na koruny dolů), zaokrouhlení se přičte k základní nesrazitelné částce
Částka, nad kterou se sráží bez omezení dle ŽMJ = ŽMJ + normativní náklady na bydlení = 3126Kč
Max. výše jedné třetiny = 3126/3 = 1042KčZákl. nesrazitelná částka = 2085+2 (zaokrouhlení) = 2087Kč
Výše jedné třetiny bude rovna maximu = 1042Kč
Částka, nad kterou se bude srážet bez omezení u daného zaměstnance = (10000 - 2087) - 3*1042 = 4789Kč
a) Zaměstnanci je vyplacena záloha ve výši 5500Kč, žádná korekční položka není zadána.
jedná se o výživné, čili srážet lze z částky bez omezení + z 2. třetiny a 1. třetiny (=4789 + 1042 + 1042) = 6873Kč ⇒ celý předpis srážky lze srazit:
NČ 1/3 1/3 1/3 Bez omezení
II--------I-------II--------I--------I---------------------I
2085 1042 1042 1042 4789
Po výpočtu mezd:
- Záloha = 5500Kč
- Srážka = 4900Kč
- Doplatek = -400Kč (=10000-5500-4900)
b) Zaměstnanci je vyplacena záloha ve výši 5500Kč. Zálohu chceme zohlednit do výpočtu srážky, zadáme korekční položku ve výši této zálohy:
Korekci 5500 pokryje nejdříve částkou, na níž má zaměstnanec v každém případě nárok, tj. nesrazitelnou částkou plus spočtenou jednou třetinou, tj. 2087 + 1042 = 3127
Zbytek ve výši 5500 - 3127 = 2737 bude postupně ukrajovat z dalších srazitelných částí, jako první v pořadí z částky, nad kterou se sráží bez omezení, tj. z 4789Kč
výsledná srážku bude možno srážet z částky bez omezení ponížené o kus zálohy (tj. 4789-2373) + z 2. třetiny a 1.třetiny (=(4789-2373) + 1042 + 1042) = 4500Kč ⇒ celý předpis srážky NElze srazit:
NČ 1/3 1/3 1/3 Bez omezení
II--------I-------II--------I--------I---------------------I
2085 1042 1042 1042 4789 (-2373)
Po výpočtu mezd:
- Záloha = 5500Kč
- Srážka = 4500Kč !!! Srážku nebylo možno srazit celou.
- Doplatek = 0Kč (=10000-5500-4500)
Příklad ilustruje obecný princip použití parametru Nesrazitelná částka - oprava. V reálné praxi je zapotřebí zohlednit zejména následující skutečnosti:
- Životní minimum jednotlivce se v čase mění, hodnota platná pro dané období se nastavuje v globální proměnné S_ZivMinJ.
- Normativní náklady na bydlení nejsou 0, rovněž se v čase mění a nastavují se v globální proměnné S_NormNakl.
- Od období 6/2019 včetně se část mzdy, nad kterou je mzda zabavitelná bez omezení, určuje jako dvojnásobek nezabavitelného minima - viz popis zkratky ZBO (ZČM zabavitelný bez omezení) v kapitole Základní typy srážek.
Z výše uvedeného výkladu plyne, že Nesrazitelná částka - oprava(MLS:S_UndockableCorrection) ovlivní vypočtenou srážku jen tehdy, je-li vyšší než mzda vyplacená předem (tj. zálohy+stravenky,...) + záporný doplatek (který by vyšel při nepoužití korekce).
Oprávněnost použití parametru Correction je čistě na vaší odpovědnosti. Správné by bylo takovému zaměstnanci zálohy vůbec nevyplácet a pokud už se stalo, tak srážky nekorigovat (zejména u přednostních srážek!), ale situaci "záporného" doplatku s ním srovnat formou pohledávky za zaměstnancem.
- NETINCOME - umožňuje zadat výraz pro výpočet částky, která bude použita pro srážení srážek, které se nekontrolují
oproti nesrazitelné částce, tj. neporovnávají s nezabavitelným minimem (spoření, výplaty mezd...), a na kterých se zaměstnanec dohodne se svým zaměstnavatelem, a proto se mohou strhávat i do nuly. Parametr tedy určuje výraz, jehož vyhodnocením se získá čistá mzda. Tato (snížená o již sraženou částku na výživných, přednostních a nepřednostních srážkách) se stane základnou pro srážení všeobecných srážek a srážek typu "výplata mzdy" (např. Spoření Externí nebo Spoření Interní...), na kterých se zaměstnanec dohodnul se svým zaměstnavatelem a proto se může strhávat v těchto případech do nuly...
-
FULLINCOME - umožňuje zadat výraz pro výpočet částky, která bude použita pro srážení srážek, které se nekontrolují oproti nesrazitelné částce, tj. neporovnávají s nezabavitelným minimem (spoření, výplaty mezd...), a na kterých se zaměstnanec dohodne se svým zaměstnavatelem, a proto se mohou strhávat i do nuly. Parametr tedy určuje výraz, jehož vyhodnocením se získá čistá mzda. Tato (snížená o již sraženou částku na výživných, přednostních a nepřednostních srážkách) se stane základnou pro srážení všeobecných srážek a srážek typu "výplata mzdy" (např. Spoření Externí nebo Spoření Interní...), na kterých se zaměstnanec dohodnul se svým zaměstnavatelem a proto se může strhávat v těchto případech do nuly...
-
INDIVIDUALUNDOCKABLE - umožňuje zadat výraz pro výpočet částky individuálního nezabavitelného minima (např. dané soudním rozhodnutím), která bude použita pro výpočet srážek ze mzdy v případě, kdy povinný pobírá mzdu od několika plátců. (Nařizuje-li soud provádění srážek ze mzdy několika plátcům mzdy, určí jim jednotlivě, jakou část základní nezabavitelné částky nemají srážet, popř. kolik mají na pohledávku srážet.) Takto zadané nezabavitelné minimum obsahuje všechny nezabavitelné částky (náklady na bydlení, děti, manželky, ...) a "přebije" výpočet nezabavitelné částky standardním mechanizmem dle textu výše.
Volání akce srážky s tímto parametrem, kdy se do parametru předává hodnota položky Indiv. nezabavitelné min.(PL:S_IndividualUndockable) ze zaměstnance: INDIVIDUALUNDOCKABLE = Employee_ID.S_IndividualUndockable.
-
INDIVIDUALUNDOCKABLEUSE - ovlivňuje, zda se uplatní výpočet zohledňující individuální nezabav. minimum. Nestačí totiž pouhé zadání nenulového Ind. nezabavitelného minima, jelikož částka Ind. nezabavitelného minima může v některých případech být i nulová.
Volání akce srážky s tímto parametrem, kdy se do parametru předává hodnota položky Použít částku individuálního nezabavitelného minima(PL:S_IndividualUndockableUse) ze zaměstnance: INDIVIDUALUNDOCKABLEUSE=Employee_ID.S_IndividualUndockableUse
Pak částka v položce Indiv. nezabavitelné min.(PL:S_IndividualUndockable) při výpočtu srážky nahradí částku "základní nezabavitelné částky" včetně částek na vyživované osoby, je-li toto nastaveno prostřednictvím parametru INDIVIDUALUNDOCKABLEUSE.
Výpočet pro srážky za předpokladů následujících hodnot platných k 1.12.12:
ŽMJ = 3410Kč, Norm. nákl. na bydlení = 5352
% ŽMJ, nad které se sráží bez omezení = 100%
Nesrazitelné % ŽMJ na povinnou osobu = 66,6666667%
-----------------------------------------------------------
⇒
Základní nezabavitelná částka na povinného = 2/3 z (ŽMJ + nákladů na bydlení) = 66,6666667% z (3410+5352) = 5841,34
Nezabavitelná částka na vyživovanou osobu = 1/4 ze 2/3 z (ŽMJ + Norm. nákl. na bydlení) = 1460,34
Celková zákl. nesrazitelná částka v roce 2012 pro zaměstnance se dvěma vyživovanými osobami (výpočtová základna) = 5841,34 + (2 * 1460,34) = 8762,02
-------------------------
Zaměstnanec má čistý příjem 15850 Kč.
Individuální nezabavitelné minimum 5000 Kč.
Požadovaná srážka: 20 000 Kč nepřednostní.
Výpočet:
Zbytek čisté mzdy (ZČM): 15850 - 5000 = 10850
výpočtová základna ... 8762 Kč (pro rok 2012)
jedna třetina = 8762/3 = 2920 Kč
Srážka: 1.třetina + (ZČM - výpočtová základna) = 2920 + (10850 - 8762) = 5008
Zaměstnanec má čistý příjem 15850 Kč..
Individuální nezabavitelné minimum 5000 Kč.
Požadovaná srážka: 20 000 Kč přednostní.
Výpočet:
Zbytek čisté mzdy (ZČM): 15850 - 5000 = 10850
Srážka: 1.třetina + 2.třetina + (ZČM - výpočtová základna) = 2920 + 2920 + (10850 - 8762) = 7928
Zaměstnanec má čistý příjem 7500 Kč.
Individuální nezabavitelné minimum 5000 Kč.
Požadovaná srážka: 20 000 Kč nepřednostní.
Výpočet:
Zbytek čisté mzdy (ZČM): 7500 - 5000 = 2500
výpočtová základna ... 8762 Kč (pro rok 2012). Protože (ZČM - výpočtová základna) je záporná, budeme třetiny určovat ze ZČM.
jedna třetina = 2500/3 = 833 Kč
Srážka: 1.třetina = 833
Zaměstnanec má čistý příjem 7500 Kč.
Individuální nezabavitelné minimum 5000 Kč.
Požadovaná srážka: 20 000 Kč přednostní.
Výpočet:
Zbytek čisté mzdy (ZČM): 7500 - 5000 = 2500
výpočtová základna ... 8762 Kč (pro rok 2012). Protože (ZČM - výpočtová základna) je záporná, budeme třetiny určovat ze ZČM.
jedna třetina = 2500/3 = 833 Kč
Srážka: 1.třetina + 2.třetina = 833 + 833 = 1666
Zaměstnanec má čistý příjem 9806 Kč.
Individuální nezabavitelné minimum 0 Kč, protože se jedná např. o situaci, kdy základní částka je započtena u srážek z důchodu prvního plátce ČSSZ, proto ji další plátci mzdy nebudou již od čisté mzdy povinného odečítat.
Požadovaná srážka: 20 000 Kč nepřednostní.
Výpočet:
Zbytek čisté mzdy (ZČM): 9806- 0 = 9806
výpočtová základna ... 8762 Kč (pro rok 2012). Protože (ZČM - výpočtová základna) je záporná, budeme třetiny určovat ze ZČM.
jedna třetina = 9806/3 = 3268, ale max. může být 2920 (8762/3) ⇒ 2920Kč
Srážka: 1.třetina + (ZČM - výpočtová základna) = 2920 + (9806 - 8762) = 2920 + 1044 = 3964
Použití při výpočtu v dodávaných datech: Položka Čistý příjem k určení srážek(MLS:S_NetWageForDocksTotal) dále viz Hrubý příjem, čistá mzda, doplatek - Čistá mzda a Položka "Srážky celkem"(MLS:S_DocksTotal), dále viz Srážky - Srážky celkem.
Stand. akce - Částka v cizí měně
Vypočte část doplatku mzdy vyplácenou v cizí měně. Použít před výpočtem, do vzorce vložit na vhodné místo substituční řetězec "%A%" (bez uvozovek). Vhodné použití: položka "Částka v cizí měně".
Výpočetní výraz je vzorec, podle kterého se má daná položka počítat.
Definicí kontrolního výrazu lze do výpočtu mezd zařadit provedení kontrol, zda jsou splněné nějaké požadované podmínky (např. hodnoty vypočtené položky jsou v požadovaných mezích apod.). Pokud není kontrolní výraz vyhodnocen jako splněný, pak program při výpočtu položky, jejíž definice kontrolní výraz obsahuje, nahlásí chybu při výpočtu. Závažnost chyby je dána v definici vzorce pro danou položku v daném Výpočtovém schématu v položce "Typ chyby" , text chyby v položce "Zpráva". Dále viz popis položky Závažnost chyby v záložce Chybový protokol, kde jsou takové chyby po výpočtu zobrazeny.
- Příklady použití:
- Kontrola při výpočtu Hrubé mzdy (MLD:GrossWageTotal), zda je nezáporná. V opačném případě kritická chyba.
- Kontrola při výpočtu Doplatku (MLS:S_WageRest), zda je nezáporný. V opačném případě kritická chyba.
- Kontrola při výpočtu celkového Odpracovaného času(hod) (MLD:TotalWorkTime), zda v případě, že jde o Nepravidelnou výpomoc, je celkový počet hodin méně než limit povolený na rok udaný v globální proměnné S_DPPHod, dále viz též popis dané glob. proměnné). V opačném případě informativní chyba.
- Kontrola při výpočtu Hodin přesčas celkem (MLD:S_OverTimeTotal), zda je celkový počet hodin přesčas méně než povolený limit za rok udaný v globální proměnné S_MaxPresc, dále viz též popis dané glob. proměnné). V opačném případě informativní chyba.
- Kontrola při výpočtu Odpracované hodiny celkem (MLD:S_WorkHoursTotal), zda není nastaven současně přenos hodin z prac. kalendáře a automatický výpočet přesčasových hodin, jelikož by šlo o nesmyslnou kombinaci. V opačném případě informativní chyba.
- Kontrola při výpočtu Časové mzdy(MLD:S_TimeWage), zda celkový Odpracovaný čas(hod) (MLD:TotalWorkTime) je větší nebo roven rozdílu fondu pracovní doby a celkové nepřítomnosti. V opačném případě informativní chyba.
- Kontrola při výpočtu Jednotkové mzdy (MLD:WageForUnit), zda je zadána položka Mzda - částka v prac. poměrech (PL:WageAmount). V opačném případě informativní chyba.
- Kontrola při výpočtu Nepřítomnosti (MLD:TotalAbsence), zda není vyšší než spočtený fond prac. doby. V opačném případě informativní chyba.
- Kontrola při výpočtu PHM za soukromé cesty - srážka (MLD:S_POL_DockTotal), je-li nenulová, zda je také zadáno procento ze vstupní ceny auta v položce % ze vstupní ceny auta Služ. auto 1% ceny(PL:DutyCar)
- Apod.
Na jednu položku počítaného objektu (MLD, MLS, ...) může vzniknout pouze jedna chyba. Pokud už je nad položkou uplatňována nějaká validace, např. napevno z programu, není možné ji kombinovat s kontrolní hláškou definovanou při výpočtu. V takovém případě je třeba zavést např. pomocnou položku a požadovanou kontrolu volat v jejím výpočtu.
Na položce Čistá mzda implementována z programu validační kontrola pro případ, že "některé srážky nemohly být zcela realizovány". Pokud by bylo třeba volat nějakou kontrolu týkající se výpočtu srážek, není možno již použít Čistou mzdu, ale jinou položku (viz např. Náklady na bydlení).
Slouží k vysvětlení nebo poznámkám k výpočetním výrazům, podmínkám, kontrolním výrazům či skriptům (zvlášť pro standardní a uživatelské definice).
Speciální položky jsou takové položky, které se natvrdo používají v některých metodách, jejich seznam je registrován v repozitoři. Převodní tabulka definuje umístění speciálních položek v konkrétních položkách mzdového listu nebo jiných agend.
- Speciální položky
- Registrace v repozitoři
- Vazba na definované položky
Speciální položka - položka, která má zvláštní význam, pracuje se s ní vně agendy ML.
Jelikož jak bylo řečeno výše, výpočtové schéma může být kombinováno z různých částí, je třeba zajistit, aby dílčí výsledky jednotlivých částí byly zahrnuty do další části výpočtu v rámci daného výp. schématu. K tomu slouží tzv. substituční řetězce, které je třeba umístit na vhodné místo výp. schématu a které pak budou nahrazeny konkrétní veličinou:
- %A% - řetězec bude nahrazen výsledkem, který vrátí volaná standardní akce
- %V% - řetězec bude nahrazen výsledkem, který je spočten v předcházející dílčí části daného výpočtového schématu (např. který vrátí součet, pokud výpočet obsahuje součet jiných položek)
Jak postupně probíhají jednotlivé části výpočtu a jak se při nich substituční řetězce plní dílčími výsledky, viz tabulka Pořadí výpočtu ve výpočtovém schématu.
Objasníme na příkladu:
Položka Hodiny z výkonů (MLD: S_OperHoursTotal) je ve výp. schématu definována s volanou standardní akcí Výkony a s výpočtovým vzorcem %A% + S_OperDaysTotal * CalendarDuty / 5. Tzn., že se nejdříve vysčítají standardní akcí ze všech odpovídajících výkonů příslušné hodiny a jejich počet se uloží do %A%. Následně se vyhodnotí výraz, tj. k hodinám vysčítaným standardní akcí z výkonů se připočte něco dalšího. Pokud by ve vzorci nebyl subst. řetězec %A%, tak by se sice v rámci výpočtu hodiny z výkonů sečetly, ale do výsledné počítané položky by se nepromítly.
V rámci výpočtových vzorců je použita řada dodávaných funkcí. Každá funkce má svůj význam, vrací určitou hodnotu, může být volána s různými parametry apod. Syntaxi a popis aktuálně dostupných funkcí naleznete přímo v programu v rámci Editoru výrazů, v částech Funkce a Popis funkce (viz zejména funkce Mzdové). Zde jen zmíníme význam některých často používaných funkcí a uvedeme příklad použití:
Syntaxe: WageAbsence(<Str1>:String, <Num2>:Numeric, <Num3>:Numeric, <Num4>:Numeric, <Num5>:Numeric, [<Var6>:Variable]):Numeric
Popis: Pro zadaný pracovní poměr <Str1> sečte od data <Num2> do data <Num3> ze zadaných nepřítomností typu <Num4>:
- 0 - dovolená
- 1 - placené volno
- 2 - vojenské cvičení
- 3 - neplacené volno
- 4 - neomluvená absence
- 5 - dlouhodobá nepřítomnost
hodnotu podle parametru <Num5>:
- 1 - počet zameškaných směn
- 2 - počet zameškaných hodin
- 3 - počet zameškaných kalendářních dní (zde bere v potaz jen ty nepřítomnosti, které mají zatrženu položku Počítat kalendářní dny (není-li dalším parametrem dáno jinak)).
- 4 - počet pracovních hodin ve svátek (tj. kolik prac. hodin z dané nepřítomnosti spadalo na svátek místo prac. směny)
V případě, že je parametr <Num4> = 1 - placené volno, pak nepovinný parametr [<Var6>] určuje typ placeného volna, který má funkce sčítat:
- 0 - návštěva lékaře
- 1 - doprovod k lékaři
- 2 - doprovod postiženého k lékaři
- 3 - svatba
- 4 - narození dítěte
- 5 - pohřeb
- 6 - stěhování
- 7 - hledání zaměstnání
- 8 - ostatní
- 9 - návštěva lékaře z důvodu těhotenství
V případě, že je parametr <Num4> = 5 - dlouhodobá nepřítomnost, pak nepovinný parametr [<Var6>] určuje typ dlouhodobé nepřítomnosti, který má funkce sčítat:
- 0 - neuvedeno
- 1 - rodičovská dovolená
- 2 - neplacené volno
- 3 - vojenská služba
- 4 - civilní služba
Poslední nepovinný parametr [<Num7>] umožňuje potlačit zohledňování příznaku Počítat kalendářní dny na nepřítomnostech.
Funkce WageAbsence pro získání počtu kalendářních dnů vojenského cvičení:
WageAbsence(WorkingRelation_ID.ID, WageListFrom, WageListTo, 2, 3)
Je-li volána s parametrem Num4=3, pak nebere v potaz první den nepřítomnosti, je-li v něm nepřítomnost pouze částečná, viz popis výpočtu položky Příklad u výpočtu položky Neplacené volno (kal.dny).
Syntaxe: WageAbsenceDaysByDates(<Str1>:String, <Var2>:Variable, <Var3>:Variable, [<Num41,Num42,Num43, ...>:Numeric], [<Bool5>:Boolean]:Numeric
Popis: Pro zadaný pracovní poměr <Str1> a období dané daty <Var2> a <Var3> sečte ze zadaných nepřítomností typu [<Num41,Num42,Num43, ...>] počet kalendářních dní (bere v potaz jen nepřítomnosti, které mají zatrženu položku Počítat kalendářní dny). Typy nepřítomnosti:
- 0 - dovolená
- 1 - placené volno
- 2 - vojenské cvičení
- 3 - neplacené volno
- 4 - neomluvená absence
- 5 - dlouhodobá nepřítomnost
Nepovinný parametr [<Bool5>] určuje, zda se má počet kalendářních dnů krátit v případě, že v prvém dni nepřítomnosti byla odpracována část směny:
- True - krátit
- False - nekrátit (defaultní hodnota)
Funkce WageAbsenceDaysByDates pro získání počtu kal. dní voj. cvičení, neplaceného volna a absence z nepřítomností ale jen od data získání nároku na důchod do data konce mzdového listu: WageAbsenceDaysByDates(WorkingRelation_ID.ID, Employee_ID.RetirementFrom, WageListTo, 2, 3,4)
Syntaxe: WageAverageNetWage(<Str1>:String, <Str2>:String, [<Num3>:Numeric]):Numeric
Popis: Pro zaměstnance <Str1> a datum <Str2> vrací udaj [<Num3>]. Vrácené číslo závisí na [<Num3>], které může nabývat hodnoty:
- 0 - průměrná čistá měsíční mzda
- 1 - hrubá mzda celkem
- nevyplněno - průměrná čistá měsíční mzda
Funkce WageAverageNetWage pro získání průměrného čistého výdělku u zaměstnance s ukončeným Prac. poměrem volaná v tiskové sestavě Zápočtového listu: WageAverageNetWage(MAIN.Employee_ID.ID,if(NxDateToFloat(MAIN.DateOfEnd$DATE)<>0, MAIN.DateOfEnd$DATE,WagePeriodDate(WagePeriodActual,1)))
Syntaxe: WageCalendarCount(<Str1>:String, <Var2>:Variable, <Var3>:Variable, <Num4>:Numeric, [<Bool5>:Boolean], [<Str6>:String]):Numeric
Popis: Ze směnového kalendáře <Str1> sečte pro období od data <Var2> do data <Var3> údaj <Num4>. Parametry <Var2> a <Var3> mohou být nahrazeny ID mzdových období, případně <Var3> může být nahrazen prázdným řetězcem. Parametr <Bool5> určuje, zda se má vrácená hodnota korigovat o nepřítomnosti a doby nemocí (True/False = Ano/Ne). V tomto případě se musí v <Str6> uvést ID pracovního poměru. Vrácené číslo závisí na <Num4>, které může nabývat hodnoty:
- 0 - počet pracovních dní
- 1 - počet pracovních hodin
- 2 - počet pracovních hodin v noci
- 3 - počet pracovních hodin ve škodlivém prostředí
- 4 - počet hodin náhrady za svátek
- 5 - počet pracovních hodin v sobotu a neděli
- 6 - počet pracovních hodin ve svátek (např. pro příplatek za práci ve svátek)
- 7 - počet svátků (dny)
- 8 - fyzický počet pracovních hodin ve sledovaném období (nezahrnou se např. hodiny směny poslední den po půlnoci)
- 9 - fyzický počet hodin neodpracovaných svátků ve sledovaném období (nezahrnou se např. hodiny svátku, který je místo směny poslední den po půlnoci)
- 10 - fyzický počet pracovních hodin směn začínajících ve sledovaném období (nezahrnou se např. hodiny směny poslední den po půlnoci)
- 11 - fyzický počet hodin neodpracovaných svátků místo směn začínajících ve sledovaném období (nezahrnou se např. hodiny svátku, který je místo směny poslední den po půlnoci)
- 12 - počet pracovních hodin v sobotu
- 13 - počet pracovních hodin v neděli
WageCalendarCount(WorkingRelation_ID.ShiftCalendar_ID.ID, WageListRealFrom, WageListTo, 2, True, WorkingRelation_ID.ID) - Spočte počet hodin v noci korigovaný o nemoci a nepřítomnosti.
Syntaxe: WageConstant(<Str1>:String, <Var2>:Variable, [<Bool3>:Boolean]):Variable
Popis: Vrátí hodnotu globální proměnné <Str1> platnou v <Var2>. <Var2> může být buďto datum nebo OID mzdového období. [<Bool3>] určuje, zda hodnota globální proměnné bude vrácena ve tvaru, v jakém je uložena v tabulce (False), nebo zda bude vrácena ve tvaru, v jakém ji zadal uživatel (True).
Funkce WageConstant pro získání hodnoty globální proměnné platné pro mzdové období, v tomto případě hodnoty příplatku za práci v noci:
WageConstant('S_PriNocMz', WagePeriod_ID.ID)
Pozor! Pro použití této funkce platí: Pokud se zavolá funkce WageConstant s nulovým datem, tak se vypíše hodnota proměnné k počátku aktuálního období. Volat funkci s nulovým datem je pochopitelně nesmyslné, nicméně může se s největší pravděpodobností jednat o volání, kdy je jako druhý parametr předáváno pomocí funkce WageViewedDate datum, k němuž jsou údaje zobrazovány, které ale není v daný okamžik nastaveno. Proto v agendách, kde nelze nastavit zobrazované mzdové období, by nikdy neměla být použita funkce WageViewedDate. Objasníme na příkladu:
Tiskneme report za období 2008/01, WageViewedDate není nastaveno, aktivní mzdové období je 2009/08. V ten okamžik by se v takové agendě tiskly hodnoty globálních proměnných platné k aktivnímu mzdovému období (2009/08), namísto hodnot platných v období tištěném (2008/01).
Syntaxe: WageDaysOfStatus(<Str1>:String, <Str2>:String, <Num3>:Numeric):Numeric
Popis: Vrátí počet kalendářních dní v období <Str2>, po které byl alespoň jeden pracovní poměr zadaného zaměstnance <Str1> ve stavu <Num3>:
- 1 - evidenčním stavu
- 2 - zaměstnanci se počítala mzda
- 3 - zaměstnanec byl účastníkem pojištění
WageDaysOfStatus(Employee_ID.ID, WagePeriod_ID.ID, 3) vrátí počet dní, po které byl zaměstnanec v zadaném mzdovém období pojištěn.
Zda je zaměstnanec v evidenčním stavu, zda se mu počítá mzda a zda je účastníkem pojištění, se posuzuje podle toho, zda má zaměstnanec v posuzovaném mzdovém období platný prac. poměr, u něhož má zatrženu položku V evidenčním stavu(PL:RecordedStatus), resp. Počítat mzdu(PL:CalcWage) resp. Počítat pojištění(PL:CalcInsurance) a nemá nepřítomnost, která by ho z evidence, resp. z počítání mzdy resp. z počítání pojištění vylučovala. Objasníme na příkladu:
Nechť zaměstnanec Novák má vedlejší prac. poměr VPP platný do 10.10.04. Hlavní prac. poměr nastoupil ke dni 15.10.04 na dobu neurčitou. Od 20.10.04 si vybírá dlouhodobé neplacené volno, u něhož je zatrženo Mimo evidenční stav, nepočítat mzdu a nepočítat pojištění. Funkce WageDaysOfStatus(Employee_ID.ID, WagePeriod_ID.ID, 3) vrátí počet dní, po které byl zaměstnanec v říjnu pojištěn, tj. celkem 15 dní (10 dní z titulu VPP (od 1.10. do 10.10.) plus 5 dní z titulu HPP (od 15.10. do 19.10.), od 20.10. už je nepřítomnost).
Syntaxe:WageDocksSum(<Str1>:String, <Str2>:String, <Num3>:Numeric, [<Str4>:String], [<Str5>:String]):Numeric
Popis:Pro ID období <Str1> a pro ID zaměstnance <Str2> vrací sraženou částku danou základním typem srážky <Num3>, kódem srážky [<Str4>] a a ostatními parametry [<Str5>]
Typ srážky může nabývat hodnot :
- 1 - Všechny typy
- 0 - Výživné
- 1 - Přednostní
- 2 - Nepřednostní
- 3 - Všeobecné
- 4 - Výplata mzdy
Kód srážky je nepovinný. Ostatní parametry srážky [<Str5>] se zadávají do řetězce a oddělují se čárkou. Vybírají se jen srážky, které odpovídají nastaveným hodnotám:
- 1 - interní srážka - Ano
- 2 - interní srážka - Ne
- 3 - vyrovnávat dlužnou částku - Ano
- 4 - vyrovnávat dlužnou částku - Ne
- 5 - porovnávat s nezabavitelným minimem - Ano
- 6 - porovnávat s nezabavitelným minimem - Ne
- 7 - lze srazit jen část - Ano
- 8 - lze srazit jen část - Ne
- 9 - generovaný dluh - Ano
- 10 - generovaný dluh - Ne
- 11 - dluh z minulých období - Ano
- 12 - dluh z minulých období - Ne
- Písmeno - jen srážky se zadanou tiskovou skupinou
Ostatní parametry srážky jsou nepovinné.
WageDocksSum(MAIN.WagePeriod_ID.ID, MAIN.Employee_ID.ID, -1, '', '1,5') - funkce vrátí součet všech interních srážek s porovnávaním s nezabavitelným minimem.
Syntaxe: WageExcludedDays(<Str1>:String, <Str2>:String, [<Num31,Num32,Num33, ...>:Numeric]):Numeric
Popis: Spočte počet dní nepřítomností typu "vyloučená doba" pro pracovní poměr <Str1> za mzdové období <Str2>. Sčítá pouze pro zadané typy vyloučené doby:
- 0 - neuvedeno
- 1 - mateřská dovolená
- 2 - neplacené volno
- 3 - vojenská služba
- 4 - civilní služba
WageExcludedDays(WorkingRelation_ID.ID, WagePeriod_ID.ID, 3,4) vrátí počet dní vyloučené doby typu vojenská služba a civilní služba.
Syntaxe: WageGetRewardAmount(<Str1>:String, <Num2>:Numeric, <Num3>:Numeric, <Str4>:String, <Var5>:Variable, <Num6>:Numeric):Numeric
Popis: Pro pracovní poměr <Str1> zjistí celkovou částku odměn za delší období připadající na časové rozmezí od <Num1> do <Num2> včetně případné korekce podle odpracované doby (je-li nastaveno). Další Parametr <Str4> je jméno položky, z níž se zjistí celk. částka odměny. Parametr <Str5> může být číslo vyjadřující počet období, za které je odměna poskytována nebo název položky, ve které je tento údaj uložen. Poslední parametr <Num6> určuje, zda jde o výpočet průměru pro nemoc (0) nebo pro dovolenou (1).
Funkce WageGetRewardAmount pro získání částky odpovídajícího dílu obecných dlouhodobých odměn připadající na počítané období pro výpočet průměru na nemoc:
WageGetRewardAmount(WorkingRelation_ID.ID, CalcFrom$DATE, CalcTo$DATE, "S_RewardLongTermTotal", "RewardPeriodLength", 1)
Funkce WageGetRewardAmount pro získání částky odpovídajícího dílu ze 14. platu (za 12 měsíců) připadající na počítané období pro výpočet průměru na nemoc:
WageGetRewardAmount(WorkingRelation_ID.ID, CalcFrom$DATE, CalcTo$DATE, "S_Fourteen", 12, 1)
Syntaxe: WageIsHealthIns(<Str1>:String, <Var2>:Variable, <Var3>:Variable):Boolean
Popis: Zjistí z kolekce průběhů zdravotního pojištění, zda v rozmezí dat <Var2> a <Var3> existuje pojistný vztah k pracovnímu poměru zadanému v parametru <Str1>.
Syntaxe: WageIsSocialIns(<Str1>:String, <Var2>:Variable, <Var3>:Variable):Boolean
Popis: Zjistí z kolekce průběhů soc. pojištění, zda v rozmezí dat <Var2> a <Var3> existuje pojistný vztah k pracovnímu poměru zadanému v parametru <Str1>.
Syntaxe: WageListPartialSumBack(<Str1>:String, <Str2>:String, <Str3>:String, <Num4>:Numeric):Numeric
Popis: Vysčítá hodnoty zadané položky <Str3> za zadaný pracovní poměr <Str1> z dílčích mzdových listů zadaných <Num4> období dozadu od zadaného období <Str2>. Pokud se v parametru <Str1> uvede pouze prázdný řetězec, součet proběhne za všechny pracovní poměry, ke kterým ve sledovaném období existují mzdové listy.
WageListPartialSumBack(WorkingRelation_ID.ID, WagePeriod_ID.ID, "RewardYearTotal", 12) - vysčítá položku roční odměny za předchozích 12 období včetně.
Syntaxe: WageListCommonSumBack(<Str1>:String, <Str2>:String, <Str3>:String, <Num4>:Numeric):Numeric
Popis: Vysčítá hodnoty zadané položky <Str3> za zadaného zaměstnance <Str1> ze souhrnných mzdových listů <Num4> zadaných období dozadu od zadaného období <Str2>. Pokud se v parametru <Str1> uvede pouze prázdný řetězec, součet proběhne za všechny zaměstnance, ke kterým ve sledovaném období existují mzdové listy.
WageListCommonSumBack(Employee_ID.ID, WagePeriod_ID.ID, "SocialInsBase", 12) - vysčítá základ sociálního pojištění za předchozích 12 období včetně.
Syntaxe: WageListPartialSumForEmployee(<Str1>:String, <Str2>:String, <Var3>:Variable, [<Num41,Num42,Num43, ...>:Numeric]):Numeric
Popis: Vysčítá hodnoty zadané položky <Str1> za zadaného zaměstnance <Str2> ze všech dílčích mzdových listů za mzdové období (v případě zadání ID mzd. období) nebo rok (numerické označení roku) <Var3>. Nepovinné parametry [<Num41,Num42,Num43, ...>] omezí výběr mzdových listů za druh činnosti na pracovních poměrech.
WageListPartialSumForEmployee('TotalWorkTime', Employee_ID.ID, WagePeriod_ID.ID,0,1,2) vysčítá odpracované hodiny z MLD pro PP s druhem činnosti 0,1 nebo 2 (HPP a VPP).
Využití např. při výpočtu částky pro srážky, kdy se např, pro výpočet některých druhů srážek nezahrnují příjmy z dohod apd.
Syntaxe: WageSickBenefitSum(<Str1>:String, <Str2>:String, <Num3>:Numeric, [<Num41,Num42,Num43, ...>:Numeric], [<Str5>:String]):Numeric
Popis: K pracovnímu poměru <Str1> za mzdové období <Str2> vrátí součet údajů <Num3> nemocenských dávek:
- 0 - Proplacená dávka - tj. z řádků ND pro dané mzd. období vysčítá částky k proplacení z položky Částka
- 1 - Počet zameškaných kalendářních dní - tj. z řádků ND vysčítá kalendářní dny z položek Omluven od-do za dané mzd. období
- 2 - Zameškané hodiny - spočte prac. hodiny zameškané díky nemocenským
- 3 - Počet proplacených kalendářních dní v rámci pracovního poměru - tj. z řádků ND vysčítá kalendářní dny z položek Proplaceno od-do, ale jen spadající do daného mzdového období, viz příklad dále
- 4 - Počet proplacených kalendářních dní mimo pracovní poměr (v ochranné lhůtě) - tj. obdoba předchozího, jen se týká ND k ML v ochranné lhůtě
- 5 - Počet dní vyloučené doby v rámci pracovního poměru - tj. spočte počet proplacených kalendářních dní bez zahrnutí 1. dne ND, pokud byl tento částečně odpracován (tudíž v něm nastal nějaký příjem a nespadá do vyloučené doby)
- 6 - Počet dní vyloučené doby mimo pracovní poměr (v ochranné lhůtě) - tj. obdoba parametru 5, jen se týká ND k ML v ochranné lhůtě
- 7 - Počet proplacených kal. dní fyzicky proplacených v období <Str2> (proplacené dny vážící se k řádkům ND za období <Str2>) - tj. z řádků ND pro dané mzd. období vysčítá kalendářní dny z položek Proplaceno od-do, přesně tak, jak jsou zadány, tj. nijak tento počet neomezuje za mzd. období (na rozdíl od parametru 3).
- 8 - Zameškané hodiny mimo pracovní poměr - tj. obdoba parametru 2 , jen se týká nemocí v ochranné lhůtě. Slouží pro korekci automaticky počítané doby (zameškané hodiny zadané na nem. dávce po ukončení PP se nemohou zohledňovat jakožto omluvená absence).
- 9 - Počet zameškaných kalendářních dní zkrácený v případě, že v prvním dni byla odpracována část směny.
- 10 - Počet proplacených kal. dní spadajících do období bez ohledu na to, kdy k proplacení došlo, v rámci pracovního poměru
- 11 - Počet proplacených kal. dní spadajících do období bez ohledu na to, kdy k proplacení došlo, mimo pracovní poměr (v ochrané lhůtě)
- 12 - Počet kalendářních dní kryjících se s pojistným poměrem na soc. pojištění (pouze pro lokalizaci pro SR)
- 13 - Počet zameškaných hodin ve svátek
- 14 - Počet dní nad rámec proplatitelných dní
- 15 - Počet kalendářních dní po skončení pracovního poměru
- 16 - Částka dobrovolného navýšení náhrady při PN
- 17 - Počet proplacených pracovních dní
- 18 - Počet proplacených pracovních hodin
Při výpočtu dní, hodin a vyloučených dob z nemocenských dávek funkce zohledňuje i případnou historii změn v prac. kalendáři zadaném na prac. poměru a použije vždy ten adekvátní.
K rozdílu mezi parametrem 3 a 7: Mějme nemocenskou dávku od 13.01. do 25.02., proplacenou následovně:
Řádek ND za mzd.období | Omluven od | Proplaceno od | ||
---|---|---|---|---|
Od | Do | Od | Do | |
2005/01 | 13.01. | 31.01. | - | - |
2005/02 | 01.02. | 25.02. | 13.01. | 10.02. |
2005/03 | - | - | 11.02. | 25.02. |
Pak funkce volaná za únor s parametrem 3 vrátí 25 dní (za řádek 2005/02 je to 10 dní a za řádek 2005/03 je to 15 dní). Funkce volaná za únor s parametrem 7 vrátí 29 dní (tj. v měsíci únoru bylo proplaceno 19 dní za leden+10 dní za únor).
Nepovinný parametr [<Num41,Num42,Num43, ...>] (a další) omezuje součet pouze na vybraný základní typ dávek:
- 0 - Nemoc
- 1 - Mateřská dovolená
- 2 - OČR
- 3 - Vyrovnávací příspěvek v těhotenství
- 4 - Jednorázová částka
- 5 - Oprava
- 6 - Náhrada příjmu při PN
- 7 - Otcovská
- 8 - Dlouhodobé ošetřovné
Poslední nepovinný parametr [<Str5>] omezuje součet s ohledem na vyloučenou dobu:
- "X" - Bez ohledu
- "N" - Nevyloučené doby
- "E" - Vyloučené doby
Funkce WageSickBenefitSum pro získání Počtu hodin nepřítomnosti ze zadaných nemocenských dávek pro daný pracovní poměr a mzdové období:
WageSickBenefitSum(WorkingRelation_ID.ID, WagePeriod_ID.ID, 2)
Funkce pro získání Částky proplacené dávky za typ "nemoc" pro daný pracovní poměr a mzdové období:
WageSickBenefitSum(WorkingRelation_ID.ID, WagePeriod_ID.ID, 0, 0)
Funkce pro získání Počtu proplacených kalendářních dní nemocenských dávek za typ "nemoc", "mateřská dovolená" a "OČR" pro daný pracovní poměr a mzdové období:
WageSickBenefitSum(WorkingRelation_ID.ID, WagePeriod_ID.ID, 3, 0, 1, 2)
Funkce vrací údaje bez započtení řádků vymazaných v uzavřeném období (přeškrtnutých), viz Nastavení speciálního režimu oprav zpětně (tzv. "zpátečky" do mezd).
Syntaxe: WageSickBenefitCountRespectValueOfField(<Str1>:String, <Str2>:String, <Str3>:String, <Var4>:Variable, [<Var5>:Variable], [<Var6>:Variable]):Numeric
Popis: K pracovnímu poměru <Str1> vrátí počet nemocenských dávek proplácených ve mzdovém období <Str2>. Započteny jsou pouze ty nemocenské dávky, pro které platí, že položka <Str3> mzdového listu nabývala ve mzdovém období, v němž daná nem. dávka vznikla, hodnoty <Var4>. Nepovinný parametr <Var5> slouží pro vstup defaultní hodnoty, s níž se porovnává v případě, že mzdový list pro dané mzdové období nebyl nalezen nebo se jedná o pomocný (importovaný) ML. Nepovinný parametr <Var6> slouží pro vstup defaultní hodnoty, s níž se porovnává v případě, že mzdový list je z aktivního mzdového období (jelikož v tom případě počítá ML "sám sebe", nemůže být volána pomocí předchozího parametru <Str3>).
Funkce WageSickBenefitCountRespectValueOfField(WorkingRelation_ID.ID, WagePeriod_ID.ID, 'S_IsSocialInsurance',2, 2) vrátí počet nemocenských dávek pro daný pracovní poměr, které mají řádek pro dané mzdové období s nějakou částkou k proplacení a pro které současně platí, že v době vzniku dané dávky, měla položka S_IsSocialInsurance hodnotu 2, tj. zaměstnanec byl účasten soc. pojištění. Pokud je v daném období nalezen pouze pomocný (importovaný) ML, pak se použije defaultní hodnota 2, tj. dávka se započte.
Funkce se používá pro zjištění, zda existuje alespoň jedna nem. dávka, ze které by se v daném období měla přenést částka k proplacení do ML, viz výpočet Nemocenské dávky a náhrady - celkem Kč(MLD:S_SickBenefits).
Syntaxe: WageSickExcludedDaysSum(<Str1>:String, <Num2>:Numeric, <Num3>:Numeric, <Num4>:Numeric, [<Num51,Num52,Num53, ...>:Numeric], [<Bool6>:Boolean]):Numeric
Popis: K pracovnímu poměru <Str1> za období <Num2> - <Num3> vrátí součet vyloučených dob typu <Num4>:
- 1 - Počet dní vyloučené doby v rámci pracovního poměru
- 2 - Počet dní vyloučené doby mimo pracovní poměr (v ochranné lhůtě)
Nepovinný parametr [<Num51,Num52,Num53, ...>] (a další) omezuje součet pouze na vybraný základní typ dávek:
- 0 - Nemoc
- 1 - Mateřská dovolená
- 2 - OČR
- 3 - Vyrovnávací příspěvek v těhotenství
- 4 - Jednorázová částka
- 5 - Oprava
-
6 - Náhrada příjmu při PN (*)
(*) Připraveno na přijetí novely zákona o NP.
Poslední nepovinný parametr [<Bool6>] určuje, zda se má k dávkám přistupovat z pozice velké nebo malé organizace:
- True - Velká organizace
- False - Malá organizace
Statut malé a velké organizace byl od 1.1.2009 zrušen a aktuálně se nerozlišuje. Dříve, pokud nebyl parametr zadán, přebírala se hodnota z položky Typ organizace z Nastavení parametrů mezd. Aktuálně nemá význam.
WageSickExcludedDaysSum(WorkingRelation_ID.ID, WagePeriod_ID.DateFrom$DATE, WagePeriod_ID.DateTo$DATE, 0)
vrátí vyloučené doby z ND za typ "nemoc" pro daný pracovní poměr a období.
Syntaxe: WageSumCountOffs(<Str1>:String, <Var2>:Variable, [<Num3>:Numeric], [<Bool4>:Boolean]):Numeric
Popis: Sečte odpočty (všechny nebo typu [<Num3>]) ze základu daně zaměstnance <Str1> za období <Var2> (nebo platné k datu <Var2>). Parametr [<Bool4>] nastavený na True zajistí součet ročních hodnot odpočtů, jinak funkce sečte odpočty ze základu daně pro měsíční zálohu. Jaké částky to budou u odpočtů definovaných odkazem do globálních proměnných, závisí na aktuální hodnotě příslušné globální proměnné (např. S_OdpStud) v daném mzdovém období. Typ odpočtu:
- 0 - nezdanitelné minimum
- 1 - na děti
- 2 - na manželku / manžela
- 3 - na studenta
- 4 - na invaliditu
- 5 - na držitele ZTP-P
- 6 - ostatní
- 7 - na děti ZTP-P
- 8 - na manželku / manžela ZTP-P
- 9 - na odborový příspěvek
Funkce WageSumCountOff pro získání součtu ostatních odpočtů ze základu daně pro výpočet měsíční zálohy na daň:
WageSumCountOff(Employee_ID.ID, WagePeriod_ID.ID, 6)
Syntaxe: WageSumTaxAdvantages(<Str1>:String, <Var2>:Variable, [<Num3>:Numeric], [<Bool4>:Boolean]):Numeric
Popis: Sečte slevy (všechny nebo typu [<Num3>]) z daně zaměstnance <Str1> za období <Var2> (nebo platné k datu <Var2>). Parametr [<Bool4>] nastavený na True zajistí součet ročních hodnot daňových slev, jinak funkce sečte daňové slevy pro měsíční zálohu. Jaké částky to budou u daň. zvýhodnění definovaných odkazem do globálních proměnných, závisí na aktuální hodnotě příslušné globální proměnné (např. S_DZDite) v daném mzdovém období. Typ slevy:
- 0 - na poplatníka
- 1 - na děti
- 2 - na manželku/manžela
- 3 - na studenta
- 4 - na invaliditu
- 5 - na držitele ZTP-P
- 6 - ostatní
- 7 - na děti ZTP-P
- 8 - na manželku / manžela ZTP-P
- 9 - na odborový příspěvek
Dle aktuální legislativy nejsou k dispozici všechny výše uvedené typy slev a zvýhodnění, nicméně možnosti jsou zde pro úplnost zavedeny a připraveny pro případné budoucí využití.
WageSumTaxAdvantages(Employee_ID.ID, WagePeriod_ID.ID, 2) - sečte daňovou slevu na manželku pro výpočet měsíční zálohy na daň.
Syntaxe:WageTrueDateOfPayDay(<Str1>:String, <Num2>:Numeric):Numeric
Popis: Pro mzdové období <Str1> vrátí datum dle pravidelné výplaty zohledněné pro případ, že datum v globální proměnné S_DenD
připadne v daném měsíci na víkend. Parametr <Num2> posouvá datum o zadaný počet měsíců dopředu nebo dozadu.
WageTrueDateOfPayDay(MAIN.WagePeriod_ID,1)
Výpočtová schémata dále podporují skripty, které lze k danému schématu připojit na subzáložce Skripty daného schématu. Skripty se provádějí před výpočtem objektu (a po výpočtu), ke kterému je schéma přiřazeno. Viz též tabulka Pořadí výpočtu ve výpočtovém schématu.
Filozofie skriptů je podobná jako u výrazů pro výpočet položek výp. schématu. Tzn. skript platí k zadanému datu, má systémovou a uživatelskou část a lze potlačit vykonávání uživatelské nebo systémové části. Při obnově dat dochází u skriptů k podobným kontrolám jako u výrazů pro výpočet položek - tzn. připojení uživatelských částí k novým systémovým skriptům obdobně jako u výrazů (viz Update výpočtových schémat s uživatelsky přidanými záznamy v historii).
Při výpočtu objektu se postupuje následovně:
- zjistí výpočtová schémata přiřazená k objektu (např. k MLD)
- provedení skriptů "před" předem zjištěných schémat
- provedení výpočtu položek schématu dle Pořadí zpracování částí výpočtového schématu
- provedení skriptů "po" předem zjištěných schémat
V SK lokalizaci na výp. schématu pro výpočet pojištění na MLD pro nulování pomocných položek, které se využívají při výpočtu soc. pojištění pro zjišťování, o jaký MLD v pořadí (v případě, že zaměstnanec má více prac. poměrů), se jedná.
Jak bylo řečeno výše v popisu skriptů, nejdříve se provedou skripty připojené ke schématu, poté teprve začne probíhat výpočet jednotlivých položek a to dle toho, jaké části definice obsahuje v pořadí uvedeném dále.
Při zpracování výpočtového schématu v rámci výpočtu mezd se pak jednotlivé části výpočtového schématu (jejich význam viz výše), vyhodnocují v následujícím pořadí, přičemž výsledek vyhodnocení je pak obsažen v proměnné V resp. A a pokud se další část výp. schématu má odkazovat na předcházející, je třeba, aby se odkazovala na příslušný substituční řetězec:
Vyhodnocovaná část výp. schématu | Popis |
---|---|
Vyhodnocení podmínky (standardní, uživatelské). Nejdříve se vyhodnotí systémová část. Potom se provede vyhodnocení uživatelské části. V uživatelské části může být použit výsledek vyhodnocení systémové části jako %C%. Tudíž uživatelská může systémovou část potlačit (přebít). Zpracování pokračuje jen tehdy:
Uživatelské definice podmínky, která provede inverzi výsledku systémové části: if(not %C%, True, False) |
%A%=0, %V%=0 |
Standardní akce. Pokud je použita, pak výsledek nechť se rovná a. | %A%=a |
Součet položek. Pokud je použit, pak výsledek nechť se rovná b. | %V%=b |
Vyhodnocení výrazu standardního. Výsledek nechť se rovná c. Součet versus výraz: Pokud je výraz prázdný, pak nemusí obsahovat %V% a výsledek se rovná předchozímu součtu položek (%V% tedy netřeba do prázdného výrazu uvádět). Pokud by ale výraz byl neprázdný, pak musí obsahovat %V%, aby se do něj přičetl i součet položek. Toho lze s výhodou využít i opačně: pokud je položka definována z historických důvodů jako součtová položka, nicméně aktuálně už tomu tak být nemá a její definice je dána jinak pouhým výrazem, pak stačí, aby výraz neobsahoval substituční řetězec %V% - tak se sčítanec do výsledku nijak nepromítne. Viz např. výpočet Pojistné SP a to položky Pojistné SP zaměstnanec celkem (za všechny PP) (MLS:SocialInsEmployee). Jedná se o jednu z Možností potlačení započtení sčítanců do výsledného výpočtu součtové položky. Pokud je ale potřeba, aby výraz i nadále obsahoval %V% (jelikož je třeba zohlednit součet dalších jiných sčítanců), pak je třeba nezahrnutí již neaktuálního sčítance vyřešit jiným způsobem - viz další Možnosti potlačení započtení sčítanců do výsledného výpočtu součtové položky. |
%V%=c |
Vyhodnocení výrazu uživatelského. Výsledek nechť se rovná d. | %V%=d |
Vyhodnocení kontroly (standardní, uživatelské). Zde platí stejný postup jako při vyhodnocování systémové a uživatelské podmínky, viz výše. Objasníme na příkladu: V definici položky WageForUnit (Jedn. mzda) nechť je systémový kontrolní výraz WorkingRelation_ID.WageAmount>0 a pokud není výraz splněn, zobrazuje se uživateli zpráva, že není zadána jednotková mzda. Nechť tuto zprávu nechceme zobrazovat pro společníky, tj. pokud je typ aktivity = 7 (společníci a komanditisté). Pak si do uživatelské části kontroly zadáme if(((not %C%)and(WorkingRelation_ID.typeOfActivity=7)), True, False). Pak pokud není jedn. mzda zadána, ale typ aktivity je 7, je uživatelský kontrolní výraz splněn a tudíž se žádná kontrolní zpráva nezobrazí. |
Výpočet probíhá postupně podle definic obsažených ve výpočtovém schématu (resp. ve výpočtových schématech) aktuálně přiřazených k počítanému záznamu:
- U výpočtu mezd (MLD a MLS) pro dané mzdové období se jedná o výp. schémata, která jsou pro počítané mzdové období aktuálně přiřazená v záložce Výpočtová schémata počítaného MLD a v záložce Výpočtová schémata odpovídajícího MLS (přičemž do zmíněných subzáložek mzdových listů jsou výpočtová schémata předvyplňována, viz Předvyplnění a použití výp.schémat k ML, ale mohou být zadávána i ručně).
- U výpočtu průměru se jedná o Výp. schéma aktuálně přiřazené v položce Výp. schéma daného záznamu průměru (přičemž při automatickém výpočtu je výpočtové schéma k průměrům předvyplňováno, viz Předvyplnění a použití výp.schémat k průměrům, ale může být zadáváno i ručně).
- U výpočtu RZÚ se jedná o Výp. schémata aktuálně přiřazená k druhu prac. poměru, resp. jednoho z druhů souběžných prac. poměrů, podle stanovených pravidel, viz Použití výp.schémat k RZÚ.
- U výpočtu uzávěrky se jedná o Výp. schémata aktuálně zadaná v položce Výp. schéma v definicích uzávěrky (zadávají se ručně, viz Použití výp.schémat k uzávěrce).
U výpočtu dokladu ELDP se nejedná o výpočet dle výpočtových schémat, ale postupuje se podle definic ELDP odpovídající roku, za který se ELDP počítá, viz Použití definic ELDP.
Jedná-li se o případ, kdy lze mít přiřazeno výp. schémat více, nijak nezáleží na pořadí výp.schémat. Stejně tak nezáleží na pořadí definic ve výpočtových schématech (pořadí počítaných položek).
Pokud proběhne výpočet položky, je tato interně označena jako vypočtená. Postupně se prochází definice výpočtu dané v přiřazených výpočtových schématech jedna za druhou a pokud se narazí na položku, která dosud nebyla počítána, tak se tato vypočte. (Tj. vyhodnotí se případné výrazy pro podmínku výpočtového vzorce, případný součet ze sčítaných položek, vyhodnotí se výpočetní výrazy, provedou se volané standardní akce, provede se příslušné zaokrouhlení a vyhodnotí se kontrolní výraz, viz výše Pořadí zpracování částí výpočtového schématu.) Pokud se při výpočtu položky narazí na potřebu mít k dispozici jinou položku, která rovněž dosud nemá interní příznak vypočtenosti, pak se musí spočíst nejdříve tato. Tj. "kalkulátor" se pokusí v přiřazených výpočtových schématech najít definici výpočtu pro danou položku a podle ní pak požadovanou položku vypočte a označí interním příznakem vypočtenosti. Pokud definici výpočtu nenajde (jedná se o zadávanou položku či omylem chybí výpočt. schéma pro její výpočet), pak vrátí aktuální hodnotu dané položky a položku rovněž označí příznakem vypočtenosti.
Pokud se jedná o situaci, kdy položka má být počítaná, ale výpočt. schéma není nalezeno, pak vrácená hodnota položky bude nějaká její defaultní hodnota (např. nula apod.).
Poté se dokončí výpočet původní položky.
Schéma výpočtu naznačíme pro mzdové listy:
Každá položka se v rámci daného výpočtu počítá jenom jednou, tj. pokud již má příznak vypočtenosti, pak už se podruhé počítat nebude, i kdyby definice jejího výpočtu byla v přiřazených výpočtových schématech obsažena vícekrát.
Pokud se při výpočtu narazí na nějakou chybu, je zobrazeno informativní hlášení, přičemž uživatel může zvolit, zda pokračovat ve výpočtu či výpočet přerušit. Chyby jsou pak zobrazeny v chybovém protokolu. Zde si je uživatel může prohlédnout a uvážit, zda je třeba její příčiny opravit a výpočet zopakovat. Chyba při výpočtu mzdových listů může podle své závažnosti způsobit, že příslušný mzdový list nezíská příznak správnosti výpočtu (v takovém případě je nutno příčinu chyby odstranit vždy a výpočet zopakovat). Může se jednat jednak o chyby dané chybou ve výpočtových vzorcích nebo nějakým chybějícím údajem (např. chybí vypočtený průměr na náhrady), či nemožností provést nějakou akci (např. nelze provést zadané čerpání dovolené, jelikož by došlo k přečerpání, nelze generovat průměry, jelikož není definováno mzdové období apod.).
Vynulování hodnot některých dříve vypočtených položek ML před výpočtem:
Pokud je výpočet spuštěn opakovaně, pak se původní vypočtené položky znovu přepočtou, čímž se zaktualizují podle aktuálních podmínek platných při novém výpočtu. Opakovaný výpočet však může být spuštěn za radikálně jiných podmínek než výpočet předchozí (např. uživatel změnil přiřazená výpočtová schémata či vyloučil mzdový list z výpočtu mezd, viz dále Kdy se ML nepřepočítává vůbec nebo částečně). Aby v takových situacích nedocházelo k tomu, že v některých položkách zůstanou nezaktualizované hodnoty z předchozího výpočtu (např. proto, že při opakovaném výpočtu není přiřazeno výpočtové schéma pro výpočet dané položky a tudíž se daná položka nepřepočte (nemá dle čeho)), tak pro výpočet položek mzdových listů (MLD i MLS) platí:
- Před spuštěním vlastního výpočtu se některé dříve vypočítané položky vynulují. Vynulují i v případě, že je výpočet mzdy blokován a dále nepokračuje!!!
Kterých položek se vynulování týká: Nulují se položky MLD a MLS, které jsou typu číslo a celé číslo a jsou počítané, tj. nejsou editovatelné, určené pro zadání hodnot uživatelem (není účelem mazat před výpočtem položky, do nichž si uživatel již mohl zadat své hodnoty). Toto pravidlo se týká všech definovatelných položek (uživatelských i systémových) a několika vybraných pevných (na MLS např. Hrubá mzda celkem(MLS:GrossWageTotal), SP pojistné zaměstnanec(MLS:S_SocialInsEmployee), ZP pojistné zaměstnanec(MLS:HealthInsBaseEmployee) apod.). Nenulují se hodnoty položek, které mají příznak, že jsou editovatelné (ani kdyby na ně existoval nějaký výpočet).
V některých případech se mzdový list záměrně nepřepočítává vůbec nebo se přepočte jen částečně. Kdy se ML nepřepočte vůbec nebo jen částečně:
- Je-li výpočet mzdy zablokován - tj. je-li daný prac. poměr sice platný, ale je vyjmut z počítání mezd - a to buď úplně odtržením položky Počítat mzdu v prac.poměrech nebo jen dočasně zadáním dlouhodobé nepřítomnosti s nastavenou položkou Nepočítat mzdu.
Zmíněné položky nejsou nijak zahrnuty ve výpočtových schématech, ale výpočet blokují následovně:
Pokud zaměstnanec nemá ani jeden den, pro který by se mu měla mzda počítat a ani nemá na dané období zadanou žádnou nemocenskou dávku (tj. nemá žádnou nem. dávku s řádkem typu 1, 2 nebo 4 v počítaném mzdovém období) ani nemá do daného MO přeneseno roční zúčtování, mzda se nepočítá. Tj. po vyvolání výpočtu mezd se výpočet mezd dle výpočtových schémat nespustí (bez ohledu na to, zda jsou či nejsou k ML aktuálně přiřazena nějaká výpočtová schémata), pouze dojde k vynulování položek z případného předchozího výpočtu.
Pokud ale pro takového zaměstnance v daném období existuje nem. dávka nebo roční zúčtování, výpočet mzdy dle výpočtových schémat se spustí (aby bylo možno ND resp. RÚZ do ML zohlednit). Spuštěný výpočet se pak provede již standardně podle všech aktuálně přiřazených Výpočtových schémat.
Pokud byste měli v ML chybně zadané údaje (např. zadaný odpracovaný čas, přestože je po celý měsíc dlouhodobá nepřítomnost), nemůžete očekávat smysluplné výsledky!
Objasníme na příkladu:
Zaměstnanec má hlavní PP, aktivní mzdové období nechť je říjen. Zaměstnanec odjede 1.března na 3 měsíce do zahraničí s tím, že čerpá dlouhodobé neplacené volno. Má tedy zadánu dlouhodobou nepřítomnost, která jej vyjímá z počítání mezd. Pokud nad jeho ML za březen spustíme výpočet mezd, výpočet se nezahájí a ML se rovnou nastaví do stavu Vypočten správně. Pokud by zaměstnanci do měsíce března zasahovala např. nějaká nem. dávka (která nastala např. v únoru, ale je třeba ji ještě proplatit apod., tj. např. nemoc za 24.-26.2., u níž je v řádcích řádek za období 9/2004 typu jen Omluvené dny a dále řádek za období 10/2004 typu Jen proplacení), či měl do března přeneseno roční zúčtování za předchozí rok, výpočet se provede (pochopitelně se zohledněním příslušné dlouhodobé nepřítomnosti, viz použitá výpočtová schémata).
Pokud máte zaměstnance dlouhodobě vyloučeného z výpočtu mezd (např. z důvodu rodičovské dovolené), ale potřebujete mu vyplatit nějakou odměnu apod., pak je na daný měsíc třeba na dané nepřítomnosti dočasně zrušit vyloučení z výpočtu mezd. V opačném případě se mu samozřejmě zadaná odměna nijak nezapočítá.
- Je-li daný prac. poměr již ukončen, ale existuje ND v ochranné lhůtě nebo RZÚ - výpočet mzdy dle výpočtových schémat se spustí (aby bylo možno ND resp. RZÚ do ML zohlednit), ale ML pro tento účet založené by měly mít přiřazená jen výpočtová schémata pro ochrannou lhůtu resp. RZÚ zadaná pro tento účel v Nastavení parametrů mezd.
Spuštěný výpočet se pak provede již standardně podle všech aktuálně přiřazených Výpočtových schémat.
Pokud byste měli v ML chybně přiřazená i jiná Výpočtová schémata a chybně zadané údaje (např. zadané složky mzdy, přestože je prac. ukončen), nemůžete očekávat smysluplné výsledky!
O tom, že mzdový list nebyl přepočten vůbec nebo byl přepočten jen částečně ve výše uvedených případech, se ohlásí v průběhu výpočtu Informativní sdělení do záložky Chybový protokol a pokud necháte výpočet dokončit jak pro dílčí, tak souhrnný ML, pak mzdový list dílčí i souhrnný označí rovnou jako spočtený, tj. nastaví se položka Vypočten správně.
Způsoby výpočtu se mohou v čase měnit (např. z důvodů legislativních změn apod.). Obdobně se mohou v čase měnit i hodnoty některých dalších záznamů, na které se výpočet odkazuje, např. globálních proměnných apod. Proto je třeba v některých agendách sledovat datum, odkdy - dokdy dané definice platí. Tam, kde je třeba zachovat i původní hodnoty, se sleduje i historie v čase. Při výpočtu zpracovávaného mzdového období je pak zajištěno, aby se použily definice a hodnoty platné k počítanému mzdovému období. Aby se o legislativní úpravy nemusel starat uživatel, jsou dodávané předpisy výpočtu, globální proměnné atd. dodávány jako systémové a podléhají update, viz též Defaultní data a update mzdových agend. Aby však mohly podléhat update, platí pro takové záznamy omezení, co se týče mazání a uživatelských změn.
V dalším textu zmíníme možnosti změn v některých agendách a objasníme, které hodnoty pak budou použity při výpočtu:
Pravidla pro přidání a mazání výp. schémat a počítaných položek v nich
Mazání výp. schémat - systémové výp. schéma nelze vymazat ani skrýt. Dále nelze vymazat výp. schéma, pokud alespoň jedna jeho položka má platnost v již uzavřených mzdových obdobích. Dále nelze mazat výp. schéma, které obsahuje položky definované jako součtové, k nimž existují nějaké sčítance v záložce Součty.
Přidání počítaných položek - Zda je k dispozici možnost pro přidání počítaných položek (funkce Přidat v navigátoru v záložce Položky) do výpočtového schématu, je dáno vlastnostmi výpočtového schématu a řídí se následujícími pravidly:
Jedná se o systémovou definici výpočtového schématu a běžného uživatele?
- ANO - Nelze přidat novou počítanou položku, je povolena pouze částečná editace dodávaných položek, viz dále.
- NE - Lze přidat novou počítanou položku, ale nikoli s platností zpětně do již uzavřených období.
Mazání počítaných položek - mazat celou položku z výp. schématu nelze, mazat lze pouze její definice výpočtu v čase na záložce Historie položky, ale s ohledem na systémovost definice, viz dále. Zda je tato možnost mazání k dispozici (je k dispozici funkce Vymazat v záložce Historie položky), se řídí následujícími pravidly:
Jedná se o systémovou definici výpočtového schématu a běžného uživatele?
- ANO - Nelze vymazat žádnou definici výpočtu počítané položky bez ohledu na její platnost, je povolena pouze částečná editace dodávaných položek, viz dále.
- NE - Nelze vymazat definice výpočtu počítané položky platné v již uzavřených obdobích.
Mazání položky přímo na záložce Položky není, jelikož by nebylo věcně zřejmé, zda si uživatel přeje smazat celou historii položky (vč. všech jejích definic výpočtů v čase) či pouze jednu konkrétní aktualizaci.
Pravidla pro editaci počítaných položek ve výpočtovém schématu
Podle vlastností výpočtového schématu a počítaných položek nejsou některé atributy definice položky k dispozici k editaci a jsou k dispozici jen pro čtení:
Jedná se o situaci, kdy definice výpočtu položky platí v již uzavřeném období (tj. kontrola dle časové platnosti definice výpočtu jedné položky)?
-
ANO - Žádné atributy v definici položky na záložce nejsou k dispozici k editaci a jsou jen pro čtení. Lze pouze přidat nový záznam do historie, tj. do záložky Historie položky, ovšem editovat u něj lze jen něco a nelze jej zadávat zpětně. Tj. nový záznam do historie takové položky musí mít platnost nejdříve od prvního dne otevřeného mzdového období. U systémových definic je u něj kromě datumu platnosti povolena pouze editace uživatelských vzorců a jejich použití. U nesystémových je u něj povolena editace všech atributů kromě názvu položky.
- NE - viz dále:
Jedná se o systémovou definici výpočtového schématu a běžného uživatele?
- ANO - Je povolena pouze editace uživatelských vzorců a jejich použití.
- NE - viz dále:
Jedná se o nově zařazenou položku do definice?
- ANO - Je povolena editace všech atributů, na záložce Historie pouze není k dispozici k editaci položka Název položky.
- NE - Je povolena editace všech atributů kromě Názvu položky a počátku platnosti položky.
Tedy nesystémovou definici (novou resp. platnou nejdříve od prvního dne otevřeného mzdového období) lze editovat i mazat takřka libovolně. Přístupný je i systémový (standardní) výraz, jelikož update do nesystémové definice nijak nezasahuje, tudíž nijak nehrozí, že by jí systémový (standardní) výraz změnil. Novou definici ale nelze zadat s platností zpětně v již uzavřených mzdových obdobích, tj. datum "Platí od" nemůže spadat do již uzavřeného období.
Pravidla pro editaci definic součtů
Jedná se o situaci, kdy definice součtu platí v již uzavřeném období (tj. kontrola dle časové platnosti definice součtu)?
- ANO - Všechny atributy položky nejsou k dispozici k editaci a jsou jen pro čtení. Definici nelze tedy opravovat ani vymazat. Takovou definici lze pouze kopírovat, datum platnosti se nastaví první volné.
- NE - viz dále:
Jedná se o systémovou definici součtu, která je nová (počátek platnosti je otevřen), a běžného uživatele?
- ANO - Je povolena pouze editace uživatelských vzorců a jejich použití. Systémovou definici nelze smazat.
- NE - Je povolena editace všech atributů.
Tedy nesystémovou definici (novou resp. platnou nejdříve od prvního dne otevřeného mzdového období) lze editovat i mazat libovolně. Přístupný je i systémový (standardní) výraz, jelikož update do nesystémové definice nijak nezasahuje, tudíž nijak nehrozí, že by jí systémový (standardní) výraz změnil. Nelze ji ale zadat s platností zpětně v již uzavřených mzdových období, tj. datum "Platí od" nemůže spadat do již uzavřeného období.
Jak zajistit změny definic výpočtů sčítanců v čase, viz mj. popis položky Platí od v definici součtu.
Jak bylo uvedeno v předchozím textu, za určitých okolností nelze definice výpočtu položek ve výpočtových schématech upravovat (ani uživatelské výrazy) a lze jedině přidávat do historie. Pokud tedy uživatel chce upravit dodávaný výpočet, přidá si do historie položky nový záznam s platností nejdříve od prvního dne otevřeného mzdového období. Jak bylo zmíněno v popisu záložky Historie, u nového záznamu jsou položky předvyplněny podle předchozí platné definice, přičemž většina z nich nemusí být s ohledem na systémovost definice atd.) k dispozici k editaci (viz výše).
Při vytváření změn ve výpočtových schématech (uživatelské vytváření nových záznamů v historii), se tedy zkopíruje systémová část definice (výraz, podmínka, vysvětlení, kontrolní výraz), která je tedy posléze platná od nějakého novějšího data. Aby se i do těchto záznamů adekvátně promítla případná úprava, kterou poté výrobce provede do další verze v této systémové části definice platné od data dřívějšího, při procesu obnovy zálohy v rámci update platí následující: Po obnovení výpočtových schémat se projdou uživatelem zadané záznamy v historii jednotlivých položek výpočtových schémat. Systémové části každého takového záznamu se přepíší hodnotami z nejbližšího staršího systémového záznamu. O provedených změnách se vytvoří záznam do servisní knížky. Tedy pokud se narazí na nesystémovou historii, jejíž systémová část (výraz, podmínka, vysvětlení, kontrolní výraz, skript) po update na další verzi neodpovídá prvnímu nejbližšímu staršímu systémovému schématu, tak se automaticky opraví na aktuální dodávané znění.
Globální proměnné obsahují hodnoty, které podléhají legislativním změnám. Dodávané globální proměnné jsou definovány jako systémové, které mají systémové hodnoty, které nelze uživatelsky měnit. Výrobcem jsou aktualizovány prostřednictvím update. Některé systémové globální proměnné však obsahují hodnotu, která není pevně dána ze zákona a kterou si uživatel může potřebovat nastavit jinak.
V takovém případě si uživatel může:
- buď zavést svojí globální proměnnou s odlišnou zkratkou a tuto ve výp. schématech a speciálních položkách zapojit namísto dodávané
- nebo do systémové globální proměnné si přidat svou vlastní uživatelskou hodnotu platnou od nějakého data. Je-li toto možné zpětně již nepřístupných mzdových období, záleží na nastavení příznaku Lze měnit hodnoty v uzavřených obdobích. Tzn. pokud si uživatel chce změnit systémovou hodnotu (dodávanou) systémové proměnné, musí si přidat další řádek s novou hodnotou. Tuto hodnotu může zadat se stejným datem jako je zadané u systémové hodnoty.
Pak pro editaci a použití hodnoty pro výpočet a pro update platí:
- V editaci se zobrazuje, jestli je hodnota systémová či nikoliv.
- Pokud ke stejnému datu existují dvě hodnoty, tak má přednost uživatelská.
- Nelze zadat více uživatelských hodnot dané proměnné se stejným datem.
- Ve zvláštní tabulce se pamatují horní a dolní omezení hodnot dodávaných globálních proměnných, přičemž při zadání uživatelské hodnoty mimo meze, je uživatel upozorněn.
Pro update platí:
- Update uživatelskou hodnotu nepřemaže, pouze přidá příp. další dodávanou hodnotu.
- Pokud je uživatelská hodnota mimo meze, pak je uživatel varován zápisem vygenerovaným při update do servisní knížky.
Jinými slovy: uživatel nemůže změnit dodávanou hodnotu, ale může si přidat vlastní. Uživatelská hodnota je respektována, pokud je platná stejně či později než hodnota dodávaná. Objasníme na příkladech:
Systémová hodnota platí od ledna, uživatelská nechť platí:
- od předcházejícího prosince - v lednu i únoru se použije systémová, jelikož je aktuálnější (tj. uživatelská je přebita novější systémovou proměnnou)
- také od ledna - v lednu a únoru se použije uživatelská (platí stejně nebo později než systémová)
- od února - v lednu se použije systémová, v únoru se použije uživatelská (dtto)
Výpočty se dále odkazují na daňové tabulky.
Pro daňové tabulky není dáno období, odkdy dokdy platí, ale jen počátek platnosti. Daňová tabulka platí do té doby, dokud není definována následná s pozdějším počátkem platnosti.
Systémové daň. tabulky nelze měnit, ale může existovat souběžně systémová a uživatelská tabulka pro stejné datum platnosti.
Systém při výpočtu mezd dle defaultních výpočtových vzorců či při výpočtu ročního zúčtování vyčíslí pro danou mzdu odpovídající daň a to z daňové tabulky odpovídajícího typu platné k počátečnímu datu mzdového období, pro něž se daň vyčísluje, resp. k datu ročního zúčtování. Pokud by k danému datu nebyla k dispozici žádná platná tabulka, výpočtový vzorec vrátí nulu. Pokud k danému datu existuje platná systémová i uživatelská daň. tabulka daného typu, pak uživatelská tabulka bude použita přednostně.