Výpočty - definície výpočtov a postup výpočtov

Výpočty miezd sa realizujú na základe definovaných Výpočtových schém.

Výpočtová schéma - popis

Výpočtovú schému je možné chápať ako predpis, podľa ktorého má prebiehať výpočet, tzn. celá schéma výpočtu časti agendy, a to nielen výpočet položiek mzdových listov (čiastkových i súhrnných) a priemerov, ale aj ročného zúčtovania alebo mzdovej uzávierky.

Výpočtových schém (definícií výpočtu) môže byť všeobecne mnoho.

Každá výpočtová schéma obsahuje zoznam počítaných položiek, ktoré sa podľa danej schémy majú počítať a pre každú počítanú položku obsahuje definíciu jej výpočtu.

Zjednodušený nákres výpočtovej schémy obsahujúci výpočtové vzorce pre 3 počítané položky, z ktorých do 2. vstupuje súčet (Sčítanec 1) z inej položky a do 3. vstupujú dva súčty z iných dvoch položiek

Predpis výpočtu počítanej položky môže byť realizovaný rôznym spôsobom, tzn. definícia výpočtu položky môže obsahovať:

  • Súčet iných položiek - tzn. položka môže byť definovaná ako sčítaná, tzn. ako súčet z iných vybraných položiek. Pritom zahrnutie týchto vybraných položiek - sčítancov - do výsledného súčtu môže byť viazané na splnenie výrazu podmienky a výsledný súčet môže byť naviac korigovaný korekčným výrazom.
  • Štandardná akcia - na výpočet položky môže byť viazaná niektorá zo štandardných akcií, ktoré sú k dispozícii, pričom môže byť vyvolaná buď pred výpočtom alebo až po výpočte položky (podľa toho, k akému účelu má byť použitá a čo má byť jej výsledkom).
  • Výpočtový výraz - Ide o výraz zapísaný v požadovanej syntaxi, ktorý môže obsahovať odkazy na ľubovoľné iné položky, na globálne premenné, na špeciálne položky, na funkcie a môže obsahovať substitučné reťazce. Môže byť daný výrobcom alebo užívateľom, pričom v definícii výpočtu položky je možné nastaviť, či sa má použiť výraz daný výrobcom (štandardná definícia), alebo daný užívateľom (užívateľská definícia) alebo kombinácia oboch. Realizácia výrazu môže byť viazaná na splnenie podmienky, viď ďalej.
  • Výraz pre podmienku - splnenie podmienky ovplyvňuje realizáciu výpočtového výrazu. Pre výraz zadaný ako podmienka platia podobné pravidlá ako pre výpočtový výraz.
  • Kontrolný výraz - výraz pre kontrolu hodnoty položky. Pre výraz zadaný ako podmienka platia podobné pravidlá ako pre výpočtový výraz, okrem použitia substitučných reťazcov, viď ďalej.

Každú z uvedených častí je možné realizovať jednak samostatne, tak aj ľubovoľnou kombináciou všetkých. Teda je možné napr. definovať kontrolu hodnoty položky bez jej výpočtu a rovnako tak je možné, mať položku definovanú ako výpočtový výraz, do ktorého je zahrnutý výsledok súčtu iných položiek, ale napr. len za určité splnené podmienky a súčasne nejak skorigované, a súčasne výsledok nejakej štandardnej akcie.

Každá výpočtová schéma je jednoznačne identifikovaná a má evidovanú platnosť a stav v histórii (v čase). Definícia výpočtu položiek počítaných v rámci danej výpočtovej schémy sa môžu podľa potreby v čase priebežne meniť. Sleduje sa história týchto zmien v čase. Pri vlastnom výpočte sa použije vždy ta časť definície, ktorá je platná k dátumu resp. mzdovému obdobiu, za ktorý sa výpočet vykonáva.

Výpočtové schémy sa môžu aj prekrývať, čo sa týka definície počítaných položiek, tzn., že viac schém môže obsahovať definíciu výpočtu rovnakých položiek. Podľa akej definície sa nakoniec výpočet takej položky vykoná, závisí od toho, ktorá výpočtová schéma sa aktuálne použije, viď ďalej:

Ak ale k jednému druhu prac. pomeru, resp. ML priradíte naraz výpočtové schémy obsahujúce definíciu výpočtu rovnakej položky, použije sa len jedna z týchto definícii (keďže každá položka sa v rámci daného výpočtu vypočíta len raz, viď postupy výpočtu), pričom nie je možné v žiadnom prípade stanoviť, ktorá z nich to bude.

Súčtové položky

Súčtové položky sú také položky, ktorých hodnota sa vypočíta ako korigovaný súčet iných položiek mzdového listu.

Potom hovoríme o:

  • Súčtovej položke (súčet) - ktorej hodnota vznikne ako súčet hodnôt iných (sčítaných) položiek
  • Sčítanej položke (sčítanec) - ktorej hodnota sa použije ako jeden zo sčítancov pri výpočte súčtovej položky

    Sčítané položky nie sú vlastnenou kolekciou definícií výpočtu, ale sú to samostatné Business objekty. Dôvodom je to, aby bolo možné jednoducho zahrnúť užívateľskú položku do definície výpočtu originálnej položky bez toho, aby bolo nutné si zavádzať vlastnú užívateľskú definíciu výpočtu.

Sčítané položky sú uvedené ako definície súčtov patriace k danej súčtovej položke. Každá definícia súčtu definuje väzbu súčtu na sčítanec plus korekcia a podmienka. Tzn. definícia súčtu je potom identifikovaná:

  • Výpočtovou schémou, do ktorej patrí súčtová položka a súčtovou položkou,
  • Triedou Business objektu, ku ktorému patrí sčítaná položka a sčítanou položkou

Okrem toho definuje Výrazy, Podmienky, Korekcie. Vo výrazoch je možné používať substitučný reťazec %V%, ktorý je potom nahradený hodnotou položky.

Ak obsahuje korekčný výraz -1 * %V%, tak to znamená, že daná sčítaná položka - sčítanec, sa vynásobí (-1) a takto skorigovaná sa pričíta do súčtu, tzn., že sa od súčtovej položky vlastne odčíta.

Každá definícia súčtu obsahuje dátum platnosti (od).

Možnosti potlačenia započítania sčítancov do výsledného výpočtu súčtovej položky.

Ďalej viď popis spomenutých položiek v definícii súčtu a Možnosti zmien výp. schém a definícií súčtov, histórie.

Korekčné výrazy

Korekčný výraz môže byť ľubovoľný výraz, ktorý skoriguje výpočet sčítanej položky - sčítanca pred jej načítaním do súčtovej položky. Jednoduchým príkladom môže byť vynásobenie mínus jednou, tzn. vlastne "odčítanie" sčítanej položky od výsledného súčtu.

Korekčné výrazy však môžu byť omnoho zložitejšie a vlastnú hodnotu danej položky - sčítanca ani nemusí započítavať (ak korekčný výraz neobsahuje substitučný reťazec %V%. Toho sa s výhodou využíva vtedy, ak nie je k dispozícii položka, ktorá by priamo obsahovala potrebný údaj, ale potrebný údaj sa získa práve vyhodnotením korekčného výrazu.

Pri výpočte priemeru na chorobu je potrebné od menovateľa odčítať zameškané kalendárne dni nemoc. dávok, ale ešte za splnenia určitých podmienok. Nie je však k dispozícii položka, ktorá by priamo danú hodnotu obsahovala, preto je medzi sčítancami uvedená položka Nem. dávky - neprítomnosť (MLD:S_SickAbsences), a v jej korekcii je uvedený výraz, ktorý napočítanie zameškaných kalendárnych dní zaistí. Ktorá položka je uvedená ako sčítanec, nie je v daný moment dôležité, keďže samotná hodnota položky Nem.dávky - neprítomnosť (MLC:S_SickAbsences) sa vôbec do výsledku vyhodnocovaného korekčného výrazu nijak nepremieta, teda výsledný súčet nijako neovplyvní.

Toho istého by užívateľ dosiahol definíciou príslušného výrazu priamo v položke Výrazy výpočtovej schémy.

Korekčné výrazy môžu byť ďalej využité pre definície výpočtových schém triedy Výpočet uzávierky, keďže pre ne nie je možné výrazy používať, viď Výpočet uzávierky.

Výrazy pre podmienku

Určuje, za akej podmienky sa má výpočet realizovať. Podmienkou môže byť ľubovoľný výraz, ktorý je pri výpočte danej položky vyhodnotený a ak je splnený, tak je príslušný výpočtový výraz definovaný pre aktuálnu položku vyhodnotený.

Štandardné akcie

Štandardné akcie sú pevne naprogramované akcie, ktoré riešia určitú časť výpočtu podstatnú pre výpočet miezd a vykonávajú sa v definovanom okamžiku. Sú pevne definované výrobcom a nie je možné ich užívateľsky meniť. Registrované sú v repository. Dôvodom je to, že ide o zložitý výpočtový algoritmus, ktorý nie je riešiteľný metódou výpočtových vzorcov, ako je tomu v prípade ostatných počítaných položiek.

Štandardné akcie sa môžu líšiť v rôznych lokalizáciách, podľa aktuálne platnej legislatívy.

  • Registrácia v repository
  • Realizácia viazaná na konkrétnu položku vo vzorci

Štandardné akcie je nutné vykonať na určitom mieste výpočtu, tzn. že realizácia takej akcie je viazaná na konkrétnu položku vo výpočtovej schéme. To je realizované tak, že výpočtové vzorce definujú položky mzdového listu, pri ktorých výpočte sa zodpovedajúce štandardné akcie volajú a vykonávajú, pričom je možné definovať, či sa má v danom mieste vykonať pred výpočtom alebo po výpočte príslušnej položky. Štandardná akcia môže byť ďalej volaná s rôznymi parametrami (viď ďalej), ktoré môžu presnejšie špecifikovať, čo presne má byť výsledkom jej výpočtu.

Príklady štandardných akcií:

Štand. akcia - Výkony

Sčíta údaje z výkonov k danému čiastkovému mzdovému listu podľa masky.

Spúšťa sa pred výpočtom položky, v ktorej definícii výpočtu sa volá. Do výpočtového vzorca danej položky je potrebné vložiť na vhodné miesto substitučný reťazec %A%, ktorý bude nahradený výsledkom tejto štandardnej akcie.

Parametre:

  • MASK=<maska> - Štvorznaková maska pre výber výkonov podľa ich kódov.
    (je možné použiť divoký znak "?" ako ľubovoľné písmeno).
  • RESULT=<sčítaný údaj> - <sčítaný údaj> môže nadobúdať hodnôt:
    • COUNT (sčíta počty)
    • CHARGE (sčíta sadzby)
    • TOTAL (sčíta celkové sumy)

Štand.akcia Výkony vyvolaná s parametrami MASK=HC,HU a RESULT=COUNT vysčíta za počítané mzdové obdobie počet hodín zo zadaných výkonov s kódmi začínajúcimi na HC alebo HU. Tzn. vysčíta zo zadaných výkonov počet hodín odpracovaných v hodinovej alebo úkolovej mzde.

Vhodného použití: Položka "Odpracované hodiny celkom", ďalej viď Výpočet odpracovanej doby - odpracované hodiny.

Viď aj Práca s výkonmi - podklad pre mzdy alebo rozúčtovanie miezd.

Štand. akcia - Príplatky

Sčíta ostatné príplatky zadané k danému mzdovému listu v subzáložke Príplatky a vráti ich súčet.

Spúšťa sa pred výpočtom položky, v ktorej definícii výpočtu sa volá. Do výpočtového vzorca danej položky je potrebné vložiť na vhodné miesto substitučný reťazec %A%, ktorý bude nahradený výsledkom tejto štandardnej akcie.

Vhodného použití: Položka "Ostatné príplatky"(S_OtherCharges), ďalej viď Výpočet príplatkov - Ostatné príplatky.

Štand. akcia - Náhrady mzdy

Sčíta ostatné náhrady zadané k danému mzdovému listu v subzáložke Náhrady a vráti ich súčet (podľa parametra sčíta buď celkovú sumu alebo základ poistného).

Spúšťa sa pred výpočtom položky, v ktorej definícii výpočtu sa volá. Do výpočtového vzorca danej položky je potrebné vložiť na vhodné miesto substitučný reťazec %A%, ktorý bude nahradený výsledkom tejto štandardnej akcie.

Parametre:

  • RESULT=<sčítaný údaj> - <sčítaný údaj> môže nadobúdať hodnôt:
    • AMOUNT (sčíta celkovú sumu)
    • INSURANCE (sčíta základ poistného)

Vhodného použití: Položka "Ostatné náhrady"(S_OtherCompensations) a položka Ostatné náhrady základ pois. (S_OtherCompInsBase), ďalej viď Náhrady - Ostatné náhrady.

Štand. akcia - Náhrady výdajov

Sčíta náhrady výdajov zadané k danému súhrnnému mzdovému listu v subzáložke Náhrady výdajov a vráti ich súčet (sčíta sumu).

Spúšťa sa pred výpočtom položky, v ktorej definícii výpočtu sa volá. Do výpočtového vzorca danej položky je potrebné vložiť na vhodné miesto substitučný reťazec %A%, ktorý bude nahradený výsledkom tejto štandardnej akcie.

Parametre: nemá

Vhodného použití: Položka "Ostatné náhrady výdajov"(S_ExpenseCompTotal), ďalej viď Nedanený príjem - Ostatné náhrady výdajov.

Štand. akcia - Dovolenky

Ak zamestnanec čerpá v spracovávanom mzdovom období dovolenku alebo je mu nejaká dovolenka preplácaná, tak štandardná akcia vytvorí záznam čerpania dovolenky v agende dovoleniek v záložke Čerpanie príslušného nároku na dovolenku. Pritom platí nasledujúce:

Ak je v spracovávanom mzdovom liste zamestnanca zadaná položka Preferovaný druh dovolenky (MLC:HolidayType_ID) a ak má zamestnanec zadaný nejaký nárok na dovolenku daného druhu a ak je možné tento druh dovolenky v danom období čerpať, tak sa prednostne čerpá z tohto druhu dovolenky. Čerpať sa bude v dňoch alebo v hodinách podľa toho, či pri daných nárokoch Údaje o množstve dovolenky sú v dňoch alebo hodinách. Ak je počet dní resp. hodín čerpanej či preplácanej dovolenky väčší ako zostatok dovolenky preferovaného druhu alebo ak nie je možné z nej v danom období čerpať, tak sa čerpá postupne z ostatných druhov dovoleniek, na ktoré má zamestnanec nárok a z ktorých je možné v danom období čerpať, počínajúc druhom dovolenky, s najvyššou prioritou.

Ak nie je preferovaný druh dovolenky zadaný, vykoná sa čerpanie z jednotlivých druhov dovoleniek podľa ich priority postupne od najvyššej priority (najmenšie číslo v položke Priorita druhu dovolenky) k nižším. V akom období je možné nárok na dovolenku čerpať, je dané v položke Možno čerpať v dobe od-do).

Aktívne MO je august a zamestnanec má tri nároky na dovolenku (zatiaľ nič nečerpané), pričom zamestnancovi zadáme 7 dní dovolenky a preferovaný typ dovolenky DD:

a)

  • RD - 20 dní, priorita 0, možné čerpať od 1.1.do 31.12.
  • DD - 3 dni, priorita 10, možno čerpať od 1.6.do 30.6.
  • DD2 - 2 dni, priorita 11, možno čerpať od 1.1.do 31.12.

=> Z DD nenačerpá nič, načerpá 7 dní z RD.

b)

  • RD - 20 dní, priorita 0, možné čerpať od 1.1.do 31.12.
  • DD - 3 dny, priorita 10, možno čerpat od 1.6.do 31.12.
  • DD2 - 2 dni, priorita 11, možno čerpať od 1.1.do 30.06.

=> Z DD načerpá 3 dni, a zvyšné 4 dni z RD.

Ak sa nepodarí počet dní resp. hodín čerpanej a preplatenej dovolenky čerpať v plnom rozsahu, je užívateľ informovaný, či si pri súčasnom čerpaní a preplatení praje zostatok prečerpať. Zodpovedajúca chyba, ak sa nevyčerpal požadovaný počet, je po výpočte zobrazená v záložke Chybový protokol.

Štandardná akcia Dovolenky sa spúšťa po výpočte položky, v ktorej definícii výpočtu sa volá.

  • Príklad vhodného použitia: Výpočet položky Náhrada za dovolenku (MLC:S_HolidayCompTotal), popis výpočtu viď Náhrada za čerpanú dovolenku.

    V prípade, že máte nepravidelnú prac. dobu (nepravidelné zmeny alebo zmeny inak dlhé ako 8 hodín), viď ďalej výklad pri výpočte Čerpaná dovolenka celkom (dni) (MLC:HolidayDrawDays).

Štand. akcia - Výpočet zrážok

Vykoná výpočet zrážok pre daného zamestnanca a aktuálne mzdové obdobie.

Spúšťa sa buď pred alebo po výpočte položky, v ktorej definícii výpočtu sa volá, vhodnosť použitia závisí od parametra, s ktorým sa volá, teda na tom, čo sa od danej funkcie požaduje. Do výpočtového vzorca danej položky je potrebné vložiť na vhodné miesto substitučný reťazec %A%, ktorý bude nahradený výsledkom tejto štandardnej akcie.

Parametre:

  • GENERATEDEFS - vygenerujú sa zrážky podľa definícii opakovaných zrážok.
  • GENERATEDEBTS - vygenerujú sa zrážky na dĺžne sumy.
  • EVALUATE - zadané a vygenerované zrážky sa vyhodnotia a vypočíta sa ich realizácia. Aktuálna položka, pri ktorej sa štandardná akcia volá, je zároveň celková suma, z ktorej odčíta realizácia zrážok. (Použiť po výpočte. Vhodná je položka "Čistá mzda").
  • GETAMOUNT - vráti súčet realizovaných zrážok. (Použiť pred výpočtom. Do vzorca vložiť na vhodné miesto substitučný reťazec %A%).
  • ALL - vykoná všetky predchádzajúce akcie v uvedenom poradí.
  • CORRECTION - umožňuje zadať výraz pre výpočet sumy, ktorá bude použitá ako korekcia nezraziteľnej časti mzdy (resp. korekcie sumy, z ktorej sa bude môcť nakoniec zraziť, viď ďalej).

    Požiadavky na zrážky sú totiž štandardne vyčíslené zo sumy bez akéhokoľvek zohľadňovania peňazí vyplatených zamestnancami vopred (napr. formou zálohy, straveniek a pod.). Teda sa môže stať, že keď od čistej mzdy odčítame vypočítané zrážky a prípadnú vopred vyplatenú zálohu, dostaneme záporný doplatok. Tento vzniknutý záporný doplatok je v poriadku a oprávnený, ak zamestnancovi bola vopred vyplatená záloha príliš vysoká na to, aby "zostalo" na zrážky, a mal by byť so zamestnancom štandardne vyrovnaný formou pohľadávky za zamestnancom. Ak by totiž išlo napr. o výživné, nebol by naopak korektný opačný postup, a to znížiť samotnú zrážku (len preto, že na ňu "nezvýšilo"), pretože vyživované dieťa "nemôže za to", že zamestnancovi bola vyplatená príliš vysoká záloha na mzdu.

    Môže ísť o zrážku, kedy jej zníženie v danom mesiaci nebude na závadu, a mzdová účtovníčka jej dá prednosť pred vyrovnávaním pohľadávky za zamestnancom. Teda vlastne chce zohľadniť peniaze vyplatené vopred a vypočítať zrážku s ohľadom na ne tak, že výsledný doplatok nebude záporný.

    Pre tento účel je k dispozícii práve parameter CORRECTION. Umožňuje zadať výraz pre výpočet sumy, o ktorú sa bude korigovať (znižovať) základ pre výsledné zrážanie, ak boli vopred vyplatené nejaké príjmy v takej výške, že by po zrazení z vypočítaného základu bez korekcie doplatok vychádzal záporný. Systém sa najprv pokúsi príslušnú korekčnú sumu (tzn. sumu, ktorá vznikne vyhodnotením výrazu v parametri CORRECTION) pokryť tou časťou mzdy, na ktorú má zamestnanec nárok i v prípade zrážok a dostane ju vyplatenú, či už formou doplatku alebo skoršej zálohy, straveniek a pod. (základná nezabaviteľná suma, tretia tretina čistej mzdy po odčítaní základnej nezabaviteľnej sumy, príp. i druhá tretina (podľa typu zrážky)). Následne sa ju snaží pokryť sumou mzdy, z ktorej je možné zrážať bez obmedzenia. Až keď sa ani potom nepodarí celú korekciu pokryť (keďže napr. mzdová účtovníčka vyplatila chybne veľkú zálohu zamestnancovi, ktorý má veľké povinné zrážky a malý príjem), tak začne program ukrajovať z ďalších tretín, vypočítaných pre zrážanie z čistej mzdy. Teda vlastne dochádza k "znižovaniu sumy", ktorú bude možné zraziť, prípadne k zníženiu výslednej zrážky, čím sa doplatok nedostane z titulu tejto zrážky a veľkej zálohy do mínusu.

    V defaultne dodávaných dátach je k dispozícii položka Nezraziteľná suma - oprava (MLS:S_UndockableCorrection), ktorá je vo výpočtových schémach zohľadnená v parametri CORRECTION. Do nej zadá vopred vyplatenú zálohu, ktorá sa potom po výpočte zrážky zohľadní. 

    Parameter Correction objasníme na príkladoch:

    Ide napr. o korekciu o vysokú vyplatenú zálohu, kedy požiadavky na zrážky sú vyčíslené zo sumy bez akéhokoľvek zohľadňovania peňazí už vyplatených vopred. Ak je však záloha uvedená v parametri Corection, tak vlastné vyčíslenie konečnej sumy na zrazenie (realizácia zrážok) už vyplatenú zálohu rešpektuje. Ak napr. zamestnancovi vyšla čistá mzda 1000, z ktorej ale dostal už vyplatenú zálohu 400, počítajú sa mu jeho zrážky z celých 1000 (zohľadnenie životného minima, prerozdelenie zvyšnej sumy podľa pravidiel výpočtu zrážok atď). Pri vlastnom zrážaní sa však zrazí len do výšky 600, aby celková mzda nevyšla nulová, a to i v prípade, že by suma na zrazenie vychádzala podľa čistej mzdy vyššia.

    Zamestnanec nech má v roku 2007 čistú mesačnú mzdu 1000 EUR. Má zaplatiť neprednostnú zrážku v celkovej výške 2000 EUR. Zamestnanec má dve deti, ktoré vyživuje, jedno z detí nie je plnoleté.

    Výpočet pre zrážky za predpokladov nasledujúcich hodnôt platných k 1.1.07 (do 30.6. platili pre zrážanie iné pravidlá a pevné sumy):

    ŽMJ = 4980 SKK

    Nezraziteľná suma - povinný s dieťaťom (% ŽMJ) = 70%

    Nezraziteľná suma - na vyživovanú osobu (%ŽMJ) = 25%

    -----------------------------------------------------------

    Základná suma, ktorá sa nesmie zraziť povinnému zamestnancovi je 3486 SKK (teda 70% zo 4980 zaokrúhlených dole) + 2 * 1245 (teda 2 * 25% zo 4980 zaokrúhlené dole) =5976 SKK.

    Časť čistej mzdy po odčítaní základnej sumy = 10000 - 5976 = 4024 SKK

    Suma, nad ktorou sa zvyšok čistej mzdy zrazí bez obmedzenia = 7470 SKK (150% životného minima)

    Výpočet tretín:

    402,4 je menšie ako 747 - teda sa rozdelí na tretiny tak, že číslo 402,4 musí byť troma deliteľné bezozvyšku - ak nie je, potom sa znižuje o celé eurá dolu - teda 402,4/3 = 134,1 EUR (zaokrúhlené na eurá dolu), zaokrúhlenie sa pričíta k základnej nezraziteľnej sume. Pretože nejde o neprednostnú zrážku, môže sa zraziť len jedna tretina a zamestnancovi sa ponechajú obidve zvyšné tretiny. Teda nezraziteľná suma je 597,6 + 1(zaokrúhlenie) + (2 * 134,1) = 865,9 EUR. Teda ak zamestnanec má čistú mzdu 1000 EUR - zrážka bude max. vo výške 134,1 EUR.

    Z vyššie uvedeného výkladu vyplýva, že Nezraziteľná suma - oprava (MLS:S_UndockableCorrection) ovplyvní vypočítanú zrážku len vtedy, ak je vyššia ako mzda vyplatená vopred (tzn. zálohy+stravenky,...) + záporný doplatok (ktorý by vyšiel pri nepoužití korekcie).

    Oprávnenosť použitia parametra Correction je čisto na vašej zodpovednosti. Správne by bolo takému zamestnancovi zálohy vôbec nevyplácať a ak sa už stalo, tak zrážky nekorigovať (hlavne pri prednostných zrážkach!), ale situáciu "záporného" doplatku s ním vyrovnať formou pohľadávky za zamestnancom.

  • NETINCOME - umožňuje zadať výraz pre výpočet sumy, ktorá bude použitá pre zrážanie zrážok, ktoré sa nekontrolujú oproti nezraziteľnej sume, tzn. neporovnávajú s nezabaviteľným minimom (sporenie, výplaty miezd...), a na ktorých sa zamestnanec dohodne so svojím zamestnávateľom, a preto sa môžu strhávať i do nuly. Parameter teda určuje výraz, ktorého vyhodnotením sa získa čistá mzda. Táto (znížená o už zrazenú sumu na výživných, prednostných a neprednostných zrážkach) sa stane základnou pre zrážanie všeobecných zrážok a zrážok typu "výplata mzdy" (napr. Sporenie Externé alebo Sporenie Interné...), na ktorých sa zamestnanec dohodol so svojím zamestnávateľom, a preto sa môže strhávať v týchto prípadoch do nuly...
  • FULLINCOME - umožňuje zadať výraz pre výpočet sumy, ktorá bude použitá pre zrážanie zrážok, ktoré sa nekontrolujú oproti nezraziteľnej sume, tzn. neporovnávajú s nezabaviteľným minimom (sporenie, výplaty miezd...), a na ktorých sa zamestnanec dohodne so svojím zamestnávateľom, a preto sa môžu strhávať i do nuly. Parameter teda určuje výraz, ktorého vyhodnotením sa získa čistá mzda. Táto (znížená o už zrazenú sumu na výživných, prednostných a neprednostných zrážkach) sa stane základnou pre zrážanie všeobecných zrážok a zrážok typu "výplata mzdy" (napr. Sporenie Externé alebo Sporenie Interné...), na ktorých sa zamestnanec dohodol so svojím zamestnávateľom, a preto sa môže strhávať v týchto prípadoch do nuly...

  • INDIVIDUALUNDOCKABLE - umožňuje zadať výraz pre výpočet sumy individuálneho nezabaviteľného minima (napr. danej súdnym rozhodnutím), ktorá bude použitá pre výpočet zrážok zo mzdy v prípade, kedy povinný poberá mzdu od niekoľkých platiteľov. (Ak nariaďuje súd vykonávanie zrážok zo mzdy niekoľkým platiteľom mzdy, určí im jednotlivo, akú sumu základnej nezabaviteľnej sumy nemajú zrážať, popr. koľko majú na pohľadávku zrážať.) Takto zadané nezabaviteľné minimum obsahuje všetky nezabaviteľné sumy (náklady na bývanie, deti, manželky, ...) a "prebije" výpočet nezabaviteľnej sumy štandardným mechanizmom podľa textu vyššie.

    Vyvolanie akcie zrážky s týmto parametrom, kedy sa do parametra odovzdáva hodnota položky Indiv. nezabaviteľné min.(PL:S_IndividualUndockable) zo zamestnanca: INDIVIDUALUNDOCKABLE = Employee_ID.S_IndividualUndockable.

Štand. akcia - Suma v cudzej mene

Vypočíta časť doplatku mzdy vyplacanú v cudzej mene. Použiť pred výpočtom, do vzorca vložiť na vhodné miesto substitučný reťazec "%A%" (bez úvodzoviek). Vhodné použitie: položka "Suma v cudzej mene".

Štand. akcia - Prenos do poistného pomeru

Spúšťa sa po výpočte položky, v ktorej definícii výpočtu sa volá.

Funkcia prerozdelí celočíselne hodnotu výrazu odovzdaného v parametri INSBASE medzi jednotlivé obdobia sociálneho poistenia, ktoré zasahujú do počítaného mzdového obdobia. Hodnota sa rozdelí v pomere počtu dní jednotlivých priebehov poistenia. Pri soc. poistení pritom ešte zohľadňuje, aké kódy priebehu sú nastavené v globálnej premennej S_SPInt - Kódy priebehov poistení pre vymeriavací základ. Funkcia ďalej napočíta neprítomnosti a nemocenské dávky, ktoré sú vylúčenou dobou k patričným intervalom priebehu sociálneho poistenia. Vylúčené doby vzniknuté ručne zadanými vojenskými cvičeniami (výraz v parametri MILITARYDAYS) sa podľa dátumu v parametri MILITARYFROM pričítajú k vylúčeným dobám v poistnom období zodpovedajúcom tomuto dátumu. Funkcia vytvorí príslušné záznamy v záložke Priebeh sociálneho poistenia resp. Priebeh zdravotného poistenia.

K vylúčenej dobe v prípade Ošetrovania člena rodiny viď poznámky pri výpočte položky Vylúčená doba (dni) (MLC:S_ExcludedDays).

Celočíselne znamená, že sa všetky diely zaokrúhlia aritmeticky a zaokrúhľovací rozdiel sa pripočíta k poslednému dielu.

Parametre:

  • INSBASEOUT - udáva, ktorá položka sa má použiť pre naplnenie položky VZ pri vylúčenej dobe. Ten sa vypĺňa v dvoch prípadoch, viď popis Vylúčená doba a vymeriavací základ pre ELDP.
  • INSBASE - udáva, ktorá položka je určená pre základ sociálneho poistenia resp. zdravotného poistenia, ktorý sa má príslušne prerozdeliť. Defaultne ide o položku Základ SP (MLC:S_SocialInsBaseCorrect) pre SP, viď Základy SP počítané na MLC resp. Základ ZP (MLC:S_HealthInsBaseCorrect) pre ZP, viď Základ ZP počítaný na MLC.
  • MILITARYDAYS - udáva, ktorá položka je určená pre ručné zadanie kal. dní vojenského cvičenia (pre vojenské cvičenia zadávané ručne priamo do ML, nie do agendy neprítomností). Defaultne ide o položku Vojenské cvičenie (kal.dni) zadané (MLC:S_ArmyExerciseCal).
  • MILITARYFROM - udáva, ktorá položka je určená pre zadanie dátumu počiatku vojenského cvičenia (pre vojenské cvičenia zadávané ručne priamo do ML, nie do agendy neprítomností). Defaultne ide o položku Vojenské cvičenie od (MLC:S_ArmyExerciseFrom).
  • EXCLDAYSCORRECT

Štand. akcia - Korekcia poistných pomerov ZP/SP

Spúšťa sa po výpočte položky, v ktorej definícii výpočtu sa volá.

Funkcia zohľadní hodnoty vymeriavacích základov v jednotlivých obdobiach sociálneho a zdravotného poistenia v záložke Priebeh sociálneho poistenia resp. Priebeh zdravotného poistenia prenesených zo mzdových listov čiastkových a vhodne ich skoriguje tak, aby celkový vymeriavací základ za počítané obdobie zodpovedal hodnote vypočítanej v položke, z ktorej sa štandardná akcia volá. Tzn. defaultne v položke Základ StP - celkom (MLS:S_RetInsBaseTotal) pre SP resp. ZP základ korigovaný (MLS:S_HealthInsBaseCorrect) pre ZP vypočítané na mzdovom liste súhrnnom. Žiadne parametre táto akcia nemá.

Táto štandardná akcia bola zavedená až od v. 7.02 vrátane. Do tej doby ku korekcii vymeriavacích základov na zodpovedajúce maximá nedochádzalo. Pre automatickú korekciu skôr prenesených hodnôt použite funkciu Prepočet poistenia.

Výpočtové výrazy

Výpočtový výraz je vzorec, podľa ktorého sa má daná položka počítať.

Kontrolné výrazy

Definíciou kontrolného výrazu je možné do výpočtu miezd zaradiť vykonanie kontrol, či sú splnené nejaké požadované podmienky (napr. hodnoty vypočítanej položky sú v požadovaných medziach a pod.). Ak nie je kontrolný výraz vyhodnotený ako splnený, tak program pri výpočte položky, ktorej definícia kontrolný výraz obsahuje, nahlási chybu pri výpočte. Závažnosť chyby je daná v definícii vzorca pre danú položku v danej Výpočtovej schéme v položke "Typ chyby" , text chyby v položke "Správa". Ďalej viď popis položky Závažnosť chyby v záložke Chybový protokol, kde sú takéto chyby po výpočte zobrazené.

Na jednu položku počítaného objektu (MLC, MLS, ...) môže vzniknúť len jedna chyba. Ak už je nad položkou uplatňovaná nejaká validácia, napr. napevno z programu, nie je možné ju kombinovať s kontrolnou hláškou definovanou pri výpočte. V takom prípade je potrebné zaviesť napr. pomocnú položku a požadovanú kontrolu volať v jej výpočte.

Na položke Čistá mzda implementovaná z programu validačná kontrola pre prípad, že "niektoré zrážky nemohli byť úplne realizované". Ak by bolo potrebné volať nejakú kontrolu týkajúcu sa výpočtu zrážok, nie je už možné použiť Čistú mzdu, ale inú položku (viď napr. Náklady na bývanie).

Vysvetlenie

Slúži na vysvetlenie alebo k poznámkam k výpočtovým výrazom, podmienkam, kontrolným výrazom alebo skriptom (zvlášť pre štandardné a užívateľské definície).

Špeciálne položky

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. Prevodná tabuľka definuje umiestnenie špeciálnych položiek v konkrétnych položkách mzdového listu alebo iných agend.

  • Špeciálne položky
    • Registrácia v repository
    • Väzba na definované položky

Špeciálna položka - položka, ktorá má zvláštny význam, pracuje sa s ňou mimo agendy ML.

Substitučné reťazce

Keďže ako bolo povedané vyššie, výpočtová schéma môže byť kombinovaná z rôznych častí, je potrebné zaistiť, aby čiastkové výsledky jednotlivých častí boli zahrnuté do ďalšej časti výpočtu v rámci danej výp. schémy. Na to slúžia tzv. substitučné reťazce, ktoré je potrebné umiestniť na vhodné miesto výp. schémy a ktoré následne budú nahradené konkrétnou veličinou:

  • %A% - reťazec bude nahradený výsledkom, ktorý vráti volaná štandardná akcia
  • %V% - reťazec bude nahradený výsledkom, ktorý je spočítaný v predchádzajúcej čiastkovej časti danej výpočtovej schémy (napr. ktorý vráti súčet, ak výpočet obsahuje súčet iných položiek)

Ako postupne prebiehajú jednotlivé časti výpočtu a ako sa pri nich substitučné reťazce plnia čiastkovými výsledkami, viď tabuľka Poradie výpočtu vo výpočtovej schéme.

Objasníme na príklade:

Položka Hodiny z výkonov (MLC: S_OperHoursTotal) je vo výp. schéme definovaná s volanou štandardnou akciou Výkony a s výpočtovým vzorcom %A% + S_OperDaysTotal * CalendarDuty / 5. Tzn., že sa najprv vysčítajú štandardnou akciou zo všetkých príslušných výkonov príslušnej hodiny a ich počet sa uloží do %A%. Následne sa vyhodnotí výraz, tzn. k hodinám vysčítaným štandardnou akciou z výkonov sa pripočíta niečo ďalšie. Ak by vo vzorci nebol subst. reťazec %A%, tak by sa síce v rámci výpočtu hodiny z výkonov sčítali, ale do výslednej počítanej položky by sa nepremietli.

Funkcie + popis niektorých dodávaných funkcií pre výpočet miezd

V rámci výpočtových vzorcov je použitých mnoho dodávaných funkcií. Každá funkcia má svoj význam, vracia určitú hodnotu, môže byť volaná s rôznymi parametrami a pod. Syntax a popis aktuálne dostupných funkcií nájdete priamo v programe v rámci Editora výrazov, v častiach Funkcia a Popis funkcie (viď hlavne funkcie Mzdové). Tu spomenieme len význam niektorých často používaných funkcií a uvedieme príklad použitia:

Funkce WageAbsence

Syntax: WageAbsence(<Str1>:String, <Num2>:Numeric, <Num3>:Numeric, <Num4>:Numeric, <Num5>:Numeric, [<Var6>:Variable]):Numeric

Popis: Pre zadaný pracovný pomer <Str1> sčíta od dátumu <Num2> do dátumu <Num3> zo zadaných neprítomností typu <Num4>:

  • 0 - dovolenka
  • 1 - platené voľno
  • 2 - vojenské cvičenie
  • 3 - neplatené voľno
  • 4 - neospravedlnená absencia
  • 5 - dlhodobá neprítomnosť

hodnotu podľa parametra <Num5>:

  • 1 - počet zameškaných zmien
  • 2 - počet zameškaných hodín
  • 3 - počet zameškaných kalendárnych dní (tu berie do úvahy len tie neprítomnosti, ktoré majú začiarknutú položku Počítať kalendárne dni (ak nie je ďalším parametrom dané inak)).
  • 4 - počet pracovných hodín počas sviatkov (tzn. koľko prac. hodín z danej neprítomnosti spadalo na sviatok namiesto prac. zmeny)

V prípade, že je parameter <Num4> = 1 - platené voľno, tak nepovinný parameter [<Var6>] určuje typ plateného voľna, ktorý má funkcie sčítať:

  • 0 - návšteva lekára
  • 1 - doprovod k lekárovi
  • 2 - doprovod postihnutého k lekárovi
  • 3 - svadba
  • 4 - narodenie dieťaťa
  • 5 - pohreb
  • 6 - sťahovanie
  • 7 - hľadanie zamestania
  • 8 - ostatné
  • 9 - návšteva lekára z dôvodu tehotenstva

V prípade, že je parameter <Num4> = 5 - dlhodobá neprítomnosť, tak nepovinný parameter [<Var6>] určuje typ dlhodobej neprítomnosti, ktorý má funkcie sčítať:

  • 0 - neuvedené
  • 1 - rodičovská dovolenka
  • 2 - neplatené voľno
  • 3 - vojenská služba
  • 4 - civilná služba

Posledný nepovinný parameter [<Num7>] umožňuje potlačiť zohľadňovanie príznaku Počítať kalendárne dni na neprítomnostiach.

Funkcia WageAbsence na získanie počtu kalendárnych dní vojenského cvičenia:
WageAbsence(WorkingRelation_ID.ID, WageListFrom, WageListTo, 2, 3)

Ak je volaná s parametrom Num4=3, tak neberie do úvahy prvý deň neprítomnosti, ak je v ňom neprítomnosť len čiastočná, viď popis výpočtu položky Príklad pri výpočte položky Neplatené voľno (kal.dni).

Funkce WageAbsenceDaysByDates

Syntax: WageAbsenceDaysByDates(<Str1>:String, <Var2>:Variable, <Var3>:Variable, [<Num41,Num42,Num43, ...>:Numeric], [<Bool5>:Boolean]:Numeric

Popis: Pre zadaný pracovný pomer <Str1> a obdobie dané dátumami <Var2> a <Var3> sčíta zo zadaných neprítomností typu [<Num41,Num42,Num43, ...>] počet kalendárnych dní (berie do úvahy len neprítomnosti, ktoré majú začiarknutú položku Počítať kalendárne dni). Typy neprítomnosti:

  • 0 - dovolenka
  • 1 - platené voľno
  • 2 - vojenské cvičenie
  • 3 - neplatené voľno
  • 4 - neospravedlnená absencia
  • 5 - dlhodobá neprítomnosť

Nepovinný parameter [<Bool5>] určuje, či sa má počet kalendárnych dní krátiť v prípade, že v prvom dni neprítomnosti bola odpracovaná časť zmeny:

  • True - krátiť
  • False - nekrátiť (defaultná hodnota)

Funkcia WageAbsenceDaysByDates pre získanie počtu kal. dní voj. cvičenia, neplateného voľna a absencie z neprítomností ale len od dátumu získania nároku na dôchodok do dátumu konca mzdového listu: WageAbsenceDaysByDates(WorkingRelation_ID.ID, Employee_ID.RetirementFrom, WageListTo, 2, 3,4)

WageAverageNetWage

Syntax: WageAverageNetWage(<Str1>:String, <Str2>:String, [<Num3>:Numeric]):Numeric

Popis: Pre zamestnanca <Str1> a dátum <Str2> vracia údaj [<Num3>]. Vrátené číslo závisí od [<Num3>], ktoré môže nadobúdať hodnoty:

  • 0 - priemerná čistá mesačná mzda
  • 1 - hrubá mzda celkom
  • nevyplnené - priemerná čistá mesačná mzda

Funkcia WageAverageNetWage pre získanie priemerného čistého zárobku pri zamestnancovi s ukončeným Prac. pomerom volaná v tlačovej zostave Zápočtového listu: WageAverageNetWage(MAIN.Employee_ID.ID,if(NxDateToFloat(MAIN.DateOfEnd$DATE)<>0, MAIN.DateOfEnd$DATE,WagePeriodDate(WagePeriodActual,1)))

Funkcia WageCalendarCount

Syntax: WageCalendarCount(<Str1>:String, <Var2>:Variable, <Var3>:Variable, <Num4>:Numeric, [<Bool5>:Boolean], [<Str6>:String]):Numeric

Popis: Zo zmenového kalendára <Str1> sčíta pre obdobie od dátumu <Var2> do dátumu <Var3> údaj <Num4>. Parametre <Var2> a <Var3> môžu byť nahradené ID mzdových období, prípadne <Var3> môže byť nahradený prázdnym reťazcom. Parameter <Bool5> určuje, či sa vrátená hodnota korigovať o neprítomnosti a doby choroby (True/False = Áno/Nie). V tomto prípade sa musí v <Str6> uviesť ID pracovného pomeru. Vrátené číslo závisí od <Num4>, ktoré môže nadobúdať hodnoty:

  • 0 - počet pracovných dní
  • 1 - počet pracovných hodín
  • 2 - počet pracovných hodín v noci
  • 3 - počet pracovných hodín v škodlivom prostredí
  • 4 - počet hodín náhrady za sviatok
  • 5 - počet pracovných hodín v sobotu a nedeľu
  • 6 - počet pracovných hodín počas sviatkov (pre príplatok za prácu počas sviatkov)
  • 7 - počet sviatkov (dni)
  • 8 - fyzický počet pracovných hodín v sledovanom období (nezahrnú sa napr. hodiny zmeny posledný deň po polnoci)
  • 9 - fyzický počet hodín neodpracovaných sviatkov v sledovanom období (nezahrnú sa napr. hodiny sviatku, ktorý je namiesto zmeny posledný deň po polnoci)
  • 10 - fyzický počet pracovných hodín zmien začínajúcich v sledovanom období (nezahrnú sa napr. hodiny zmeny posledný deň po polnoci)
  • 11 - fyzický počet hodín neodpracovaných sviatkov namiesto zmien začínajúcich v sledovanom období (nezahrnú sa napr. hodiny sviatku, ktorý je namiesto zmeny posledný deň po polnoci)

WageCalendarCount(WorkingRelation_ID.ShiftCalendar_ID.ID, WageListRealFrom, WageListTo, 2, True, WorkingRelation_ID.ID) - Spočíta počet hodín v noci korigovaný o choroby a neprítomnosti.

Funkcia WageConstant (a funkcia WageViewedDate)

Syntax: WageConstant(<Str1>:String, <Var2>:Variable, [<Bool3>:Boolean]):Variable

Popis: Vráti hodnotu globálnej premennej <Str1> platnou v <Var2>. <Var2> môže byť buďto dátum alebo OID mzdového obdobia. [<Bool3>] určuje, či hodnota globálnej premennej bude vrátená v tvare, v akom je uložená v tabuľke (False), alebo či bude vrátená v tvaru, v akom ju zadal užívateľ (True).

Funkcia WageConstant pre získanie hodnoty globálnej premennej platnej pre mzdové obdobie v tomto prípade hodnoty príplatku za prácu v noci:

WageConstant('S_PriNocMz', WagePeriod_ID.ID)

Pozor! Pre použitie tejto funkcie platí: Ak sa volá funkcia WageConstant s nulovým dátumom, tak sa vypíše hodnota premennej k počiatku aktuálneho obdobia. Volať funkciu s nulovým dátumom je pochopiteľne nezmyselné, avšak môže s najväčšou pravdepodobnosťou ísť o volanie, kedy je ako druhý parameter odovzdávané pomocou funkcie WageViewedDate daátum, ku ktorému sú údaje zobrazované, ktorý ale nie je v daný okamih nastavený. Preto v agendách, kde nie je možné nastaviť zobrazované mzdové obdobie, by nikdy nemala byť použitá funkcia WageViewedDate. Objasníme na príklade:

Tlačíme report za obdobie 2008/01, WageViewedDate nie je nastavené, aktívne mzdové obdobie je 2009/08. V ten okamih by sa v takej agende tlačili hodnoty globálnych premenných platné k aktívnemu mzdovému obdobiu (2009/08), namiesto hodnôt platných v období tlačenom (2008/01).

Funkcia WageDocksSum

Syntax:WageDocksSum(<Str1>:String, <Str2>:String, <Num3>:Numeric, [<Str4>:String], [<Str5>:String]):Numeric

Popis:Pre ID obdobie <Str1> a pre ID zamestnanca <Str2> vracia zrazenú sumu danú základným typom zrážky <Num3>, kódom zrážky [<Str4>] a a ostatnými parametrami [<Str5>]

Typ zrážky môže nadobúdať hodnoty:

  • 1 - Všetky typy
  • 0 - Výživné
  • 1 - Prednostné
  • 2 - Neprednostné
  • 3 - Všeobecné
  • 4 - Výplata mzdy

Kód zrážky je nepovinný. Ostatné parametre zrážky [<Str5>] sa zadávajú do reťazca a oddeľujú sa čiarkou. Vyberajú sa len zrážky, ktoré zodpovedajú nastaveným hodnotám:

  • 1 - interná zrážka - Áno
  • 2 - interná zrážka - Nie
  • 3 - vyrovnávať dlžnú sumu - Áno
  • 4 - vyrovnávať dlžnú sumu - Nie
  • 5 - porovnávať s nezabaviteľným minimom - Áno
  • 6 - porovnávať s nezabaviteľným minimom - Nie
  • 7 - je možné zraziť len časť - Áno
  • 8 - je možné zraziť len časť - Nie
  • 9 - generovaný dlh - Áno
  • 10 - generovaný dlh - Nie
  • 11 - dlh z minulých období - Áno
  • 12 - dlh z minulých období - Nie
  • Písmeno - len zrážky so zadanou tlačovou skupinou

Ostatné parametre zrážky sú nepovinné.

WageDocksSum(MAIN.WagePeriod_ID.ID, MAIN.Employee_ID.ID, -1, '', '1,5') - funkcia vráti súčet všetkých interných zrážok s porovnávaním s nezabaviteľným minimom.

Funkcia WageExcludedDays

Syntax: WageExcludedDays(<Str1>:String, <Str2>:String, [<Num31,Num32,Num33, ...>:Numeric]):Numeric

Popis: Spočíta počet dní neprítomností typu "vylúčená doba" pre pracovný pomer <Str1> za mzdové obdobie <Str2>. Sčíta len pre zadané typy vylúčenej doby:

  • 0 - neuvedené
  • 1 - materská dovolenka
  • 2 - neplatené voľno
  • 3 - vojenská služba
  • 4 - civilná služba

WageExcludedDays(WorkingRelation_ID.ID, WagePeriod_ID.ID, 3,4) vráti počet dní vylúčenej doby typu vojenská služba a civilná služba.

Funkce WageGetRewardAmount

Syntax: WageGetRewardAmount(<Str1>:String, <Num2>:Numeric, <Num3>:Numeric, <Str4>:String, <Var5>:Variable, <Num6>:Numeric):Numeric

Popis: Pre pracovný pomer <Str1> zistí celkovú sumu odmien za dlhšie obdobie pripadajúce na časové rozmedzie od <Num1> do <Num2> vrátane prípadnej korekcie podľa odpracovanej doby (ak je nastavené). Ďalší Parameter <Str4> je meno položky, z ktorej sa zistí celk. suma odmeny. Parameter <Str5> môže byť číslo vyjadrujúce počet období, za ktoré je odmena poskytovaná alebo názov položky, v ktorej je tento údaj uložený. Posledný parameter <Num6> určuje, či ide o výpočet priemeru pre chorobu (0) alebo pre dovolenku (1).

Funkcia WageGetRewardAmount pre získanie sumy príslušného dielu všeobecných dlhodobých odmien pripadajúcej na počítané obdobie pre výpočet priemeru na chorobu:

WageGetRewardAmount(WorkingRelation_ID.ID, CalcFrom$DATE, CalcTo$DATE, "S_RewardLongTermTotal", "RewardPeriodLength", 1)

Funkcia WageGetRewardAmount pre získanie sumy príslušného dielu zo 14. platu (za 12 mesiacov) pripadajúcej na počítané obdobie pre výpočet priemeru na chorobu:

WageGetRewardAmount(WorkingRelation_ID.ID, CalcFrom$DATE, CalcTo$DATE, "S_Fourteen", 12, 1)

Funkcia WageIsHealthIns

Syntax: WageIsHealthIns(<Str1>:String, <Var2>:Variable, <Var3>:Variable):Boolean

Popis: Zistí z kolekcie priebehov zdravotného poistenia, či v rozmedzí dátumov <Var2> a <Var3> existuje poistný vzťah k pracovnému pomeru zadanému v parametri <Str1>.

Funkcia WageIsSocialIns

Syntax: WageIsSocialIns(<Str1>:String, <Var2>:Variable, <Var3>:Variable):Boolean

Popis: Zistí z kolekcie priebehov soc. poistenia, či v rozmedzí dátumov <Var2> a <Var3> existuje poistný vzťah k pracovnému pomeru zadanému v parametri <Str1>.

Funkcia WageListPartialSumBack

Syntax: WageListPartialSumBack(<Str1>:String, <Str2>:String, <Str3>:String, <Num4>:Numeric):Numeric

Popis: Vysčíta hodnoty zadanej položky <Str3> za zadaný pracovný pomer <Str1> z čiastkových mzdových listov zadaných <Num4> období dozadu od zadaného obdobia <Str2>. Ak sa v parametri <Str1> uvedie len prázdny reťazec, súčet prebehne za všetky pracovné pomery, ku ktorým v sledovanom období existujú mzdové listy.

WageListPartialSumBack(WorkingRelation_ID.ID, WagePeriod_ID.ID, "RewardYearTotal", 12) - vysčíta položku ročnej odmeny za prechádzajúcich 12 období vrátane.

Funkcia WageListCommonSumBack

Syntax: WageListCommonSumBack(<Str1>:String, <Str2>:String, <Str3>:String, <Num4>:Numeric):Numeric

Popis: Vysčíta hodnoty zadanej položky <Str3> za zadaného zamestnanca <Str1> zo súhrnných mzdových listov zadaných <Num4> období dozadu od zadaného obdobia <Str2>. Ak sa v parametri <Str1> uvedie len prázdny reťazec, súčet prebehne za všetkých zamestnancov, ku ktorým v sledovanom období existujú mzdové listy.

WageListCommonSumBack(Employee_ID.ID, WagePeriod_ID.ID, "SocialInsBase", 12) - vysčíta základ sociálneho poistenia za predchádzajúcich 12 období vrátane.

Funkcia WageListPartialSumForEmployee

Syntax: WageListPartialSumForEmployee(<Str1>:String, <Str2>:String, <Var3>:Variable, [<Num41,Num42,Num43, ...>:Numeric]):Numeric

Popis: Vysčíta hodnoty zadanej položky <Str1> za zadaného zamestnanca <Str2> zo všetkých čiastkových mzdových listov za mzdové obdobie (v prípade zadania ID mzd. obdobia) alebo rok (numerické označenie roka) <Var3>. Nepovinné parametre [<Num41,Num42,Num43, ...>] obmedzia výber mzdových listov podľa druhu činnosti na pracovných pomeroch.

WageListPartialSumForEmployee('TotalWorkTime', Employee_ID.ID, WagePeriod_ID.ID,0,1,2) vysčíta odpracované hodiny z MLC pre PP s druhom činnosti 0,1 alebo 2 (HPP a VPP).

Funkcia WageSickBenefitSum

Syntax: WageSickBenefitSum(<Str1>:String, <Str2>:String, <Num3>:Numeric, [<Num41,Num42,Num43, ...>:Numeric], [<Str5>:String]):Numeric

Popis: K pracovnému pomeru <Str1> za mzdové obdobie <Str2> vráti súčet údajov <Num3> nemocenských dávok:

  • 0 - Preplatená dávka - tzn. z riadkov ND pre dané mzd. obdobie vysčíta sumy na preplatenie z položky Suma
  • 1 - Počet zameškaných kalendárnych dní - tzn. z riadkov ND vysčíta kalendářne dni z položiek Ospravedlnený od-do za dané mzd. obdobie
  • 2 - Zameškané hodiny - spočíta prac. hodiny zameškané vďaka nemocenským
  • 3 - Počet preplatených kalendárnych dní v rámci pracovného pomeru - tzn. z riadkov ND vysčíta kalendárne dni z položiek Preplatené od-do, ale len spadajúce do daného mzdového obdobia, viď príklad ďalej
  • 4 - Počet preplatených kalendárnych dní mimo pracovný pomer (v ochrannej lehote) - tzn. obdoba predchádzajúceho, len sa týka ND k ML v ochrannej lehote
  • 5 - Počet dní vylúčenej doby v rámci pracovného pomeru - tzn. spočíta počet preplatených kalendárnych dní bez zahrnutia 1. dňa ND, ak bol tento čiastočne odpracovaný (teda v ňom nastal nejaký príjem a nespadá do vylúčenej doby)
  • 6 - Počet dní vylúčenej doby mimo pracovný pomer (v ochrannej lehote) - tzn. obdoba parametra 6, len sa týka ND k ML v ochrannej lehote
  • 7 - Počet preplatených kal. dní fyzicky preplatených v období <Str2> (preplatené dni viažuce sa k riadkom ND za obdobie <Str2>) - tzn. z riadkov ND pre dané mzd. obdobie vysčíta kalendárne dni z položiek Preplatené od-do, presne tak, ako sú zadané, tzn. nijak tento počet neobmedzuje za mzd. obdobie (na rozdiel od parametra 3).
  • 8 - Zameškané hodiny mimo pracovný pomer - tzn. obdoba parametra 2, len sa týka chorôb v ochrannej lehote. Slúži na korekciu automaticky počítanej doby (zameškané hodiny zadané na nem. dávke po ukončení PP sa nemôžu zohľadňovať ako ospravedlnená absencia).
  • 9 - Počet zameškaných kalendárnych dní skrátený v prípade, že v prvom dni bola odpracovaná časť zmeny.
  • 10 - Počet preplatených kal. dní spadajúcich do obdobia bez ohľadu na to, kedy k preplateniu došlo, v rámci pracovného pomeru
  • 11 - Počet preplatených kal. dní spadajúcich do obdobia bez ohľadu na to, kedy k preplateniu došlo, mimo pracovný pomer (v ochrannej lehote)
  • 12 - Počet kalendárnych dní kryjúcich sa s poistným pomerom na soc. poistení (len pre lokalizáciu pre SR)
  • 13 - Počet zameškaných hodín počas sviatkov
  • 14 - Počet dní nad rámec preplatiteľných dní
  • 15 - Počet kalendárnych dní po skončení pracovného pomeru
  • 16 - Suma dobrovoľného navýšenia náhrady pri PN
  • 17 - Počet preplatených pracovných dní
  • 18 - Počet preplatených pracovných hodín

Pri výpočte dní, hodín a vylúčených dôb z nemocenských dávok funkcie zohľadňuje i prípadnú históriu zmien v prac. kalendári zadanom na prac. pomere a použije vždy ten adekvátny.

K rozdílu mezi parametrem 3 a 7: Majme nemocenskú dávku od 13.01. do 25.02., preplatenú nasledovne:

Riadok ND za mzd.obdobieOspravedlnený odPreplatené od
OdDoOdDo
2005/0113.01.31.01.- -
2005/0201.02.25.02.13.01.10.02.
2005/03--11.02.25.02.

Potom funkcia vyvolaná za február s parametrom 3 vráti 25 dní (za riadok 2005/02 je to 10 dní a za riadok 2005/03 je to 15 dní). Funkcia vyvolaná za február s parametrom 7 vráti 29 dní (tzn. v mesiaci február bolo preplatených 19 dní za január+10 dní za február).

Nepovinný parameter [<Num41,Num42,Num43, ...>] (a ďalší) obmedzuje súčet len podľa vybraného základneho typu dávok:

  • 0 - Choroba
  • 1 - Materská dovolenka
  • 2 - OČR
  • 3 - Vyrovnávací príspevok v tehotenstve
  • 4 - Jednorazová suma
  • 5 - Oprava

Posledný nepovinný parameter [<Str5>] obmedzuje súčet s ohľadom na vylúčenú dobu:

  • "X" - Bez ohľadu
  • "N" - Nevylúčené doby
  • "E" - Vylúčené doby

Funkcia WageSickBenefitSum pre získanie Počtu hodín neprítomnosti zo zadaných nemocenských dávok pre daný pracovný pomer a mzdové obdobie:

WageSickBenefitSum(WorkingRelation_ID.ID, WagePeriod_ID.ID, 2)

Funkcia pre získanie Sumy preplatenej dávky za typ "choroba" pre daný pracovný pomer a mzdové obdobie:

WageSickBenefitSum(WorkingRelation_ID.ID, WagePeriod_ID.ID, 0, 0)

Funkcia pre získanie Počtu preplatených kalendárnych dní nemocenských dávok za typ "choroba", "materská dovolenka" a "OČR" pre daný pracovný pomer a mzdové obdobie:

WageSickBenefitSum(WorkingRelation_ID.ID, WagePeriod_ID.ID, 3, 0, 1, 2)

Funkcia vracia údaje bez započítania riadkov vymazaných v uzavretom období (preškrtnutých), viď Nastavenie špeciálneho režimu opráv spätne (tzv. "spiatočky" do miezd).

Funkce WageSickBenefitCountRespectValueOfField

Syntax: WageSickBenefitCountRespectValueOfField(<Str1>:String, <Str2>:String, <Str3>:String, <Var4>:Variable, [<Var5>:Variable], [<Var6>:Variable]):Numeric

Popis: K pracovnému pomeru <Str1> vráti počet nemocenských dávok preplácaných v mzdovom období <Str2>. Započítané sú len tie nemocenské dávky, pre ktoré platí, že položka <Str3> mzdového listu nadobúdala v mzdovom období, v ktorom daná nem. dávka vznikla, hodnoty <Var4>. Nepovinný parameter <Var5> slúži pre vstup defaultnej hodnoty, s ktorou sa porovnáva v prípade, že mzdový list pre dané mzdové obdobie nebol nájdený alebo ide o pomocný (importovaný) ML. Nepovinný parameter <Var6> slúži pre vstup defaultnej hodnoty, s ktorou sa porovnáva v prípade, že mzdový list je z aktívneho mzdového obdobia (keďže v tom prípade počíta ML "sám sebe", nemôže byť vyvolaná pomocou predchádzajúceho parametra <Str3>).

Funkcia WageSickBenefitCountRespectValueOfField(WorkingRelation_ID.ID, WagePeriod_ID.ID, 'S_IsSocialInsurance',2, 2) vráti počet nemocenských dávok pre daný pracovný pomer, ktoré majú riadok pre dané mzdové obdobie s nejakou sumou na preplatenie a pre ktoré súčasne platí, že v dobe vzniku danej dávky, mala položka S_IsSocialInsurance hodnotu 2, tzn. zamestnanec bol účastníkom soc. poistenia. Ak je v danom období nájdený len pomocný (importovaný) ML, tak sa použije defaultná hodnota 2, tzn. dávka sa započíta.

Funkcia sa používa pre zistenie, či existuje aspoň jedna nem. dávka, z ktorej by sa v danom období mala preniesť suma k preplateniu do ML, viď výpočet Nemocenské dávky a náhrady - celkom EUR (MLC:S_SickBenefits).

Funkcia WageSumCountOff

Syntax: WageSumCountOffs(<Str1>:String, <Var2>:Variable, [<Num3>:Numeric], [<Bool4>:Boolean]):Numeric

Popis: Sčíta odpočty (všetky alebo typu [<Num3>]) zo základu dane zamestnanca <Str1> za obdobie <Var2> (alebo platné k dátumu <Var2>). Parameter [<Bool4>] nastavený na True zaistí súčet ročných hodnôt odpočtov, inak funkcia sčíta odpočty zo základu dane pre mesačnú zálohu. Aké sumy to budú pri odpočtoch definovaných odkazom do globálnych premenných, závisí od aktuálnej hodnoty príslušnej globálnej premennej (napr. S_OdpStud) v danom mzdovom období. Typ odpočtu:

  • 0 - nezdaniteľné minimum
  • 1 - na deti
  • 2 - na manželku / manžela
  • 3 - na študenta
  • 4 - na invaliditu
  • 5 - na držiteľa ZTP-P
  • 6 - ostatné
  • 7 - na deti ZTP-P
  • 8 - na manželku / manžela ZTP-P
  • 9 - na odborový príspevok

Funkcia WageSumCountOff pre získanie súčtu ostatných odpočtov zo základu dane pre výpočet mesačnej zálohy na daň:

WageSumCountOff(Employee_ID.ID, WagePeriod_ID.ID, 6)

Funkcia WageSumTaxAdvantages

Syntax: WageSumTaxAdvantages(<Str1>:String, <Var2>:Variable, [<Num3>:Numeric], [<Bool4>:Boolean]):Numeric

Popis: Sčíta daňové bonusy (všetky alebo typu [<Num3>]) z dane zamestnanca <Str1> za obdobie <Var2> (alebo platné k dátumu <Var2>). Parameter [<Bool4>] nastavený na True zaistí súčet ročných hodnôt, inak funkcia sčíta hodnoty mesačné. Aké sumy to budú pri daň. bonusoch definovaných odkazom do globálnych premenných, závisí od aktuálnej hodnoty príslušnej globálnej premennej v danom mzdovom období. Typ daňového bonusu:

  • 0 - na poplatníka
  • 1 - na deti
  • 2 - na manželku/manžela
  • 3 - na študenta
  • 4 - na invaliditu
  • 5 - na držiteľa ZTP-P
  • 6 - ostatné
  • 7 - na dieťa v domácnosti - ZTP-P
  • 8 - na manželku/manžela v domácnosti ZTP-P
  • 9 - na odborový príspevok

Podľa aktuálnej legislatívy nie sú k dispozícii všetky vyššie uvedené typy bonusov, avšak možnosti sú tu pre úplnosť zavedené a pripravené pre prípadné budúce využitie.

WageSumTaxAdvantages(Employee_ID.ID, WagePeriod_ID.ID) - sčíta zadané daňové bonusy platné v počítanom období pre výpočet bonusu k vyplateniu v danom mesiaci.

Funkcia WageTrueDateOfPayDay

Syntax:WageTrueDateOfPayDay(<Str1>:String, <Num2>:Numeric):Numeric

Popis: Pre mzdové obdobie <Str1> vráti dátum podľa pravidelnej výplaty zohľadnenej pre prípad, že dátum v globálnej premennej S_DenD
prípadne v danom mesiaci na víkend. Parameter <Num2> posúva dátum o zadaný počet mesiacov dopredu alebo dozadu.

WageTrueDateOfPayDay(MAIN.WagePeriod_ID,1)

Funkcia WageIrrCalculateVirtualBase

Syntax: WageIrrCalculateVirtualBase(<Num1>:Numeric, <Num2>:Numeric, <Num3>:Numeric, <Str4>:String, <Str5>:String, <Str6>:String, <Str7>:String, <Num8>:Numeric, <Num9>:Numeric, <Num10>:Numeric):Boolean

Popis: Vykoná výpočet základu soc.poistenia v minulých mesiacoch pre nepravidelné príjmy.
- Rozpustenie základu poistenia <Num2> vyplývajúceho z príjmov na prac.pomere <Str5> v mzd.období <Str4> do minulých <Num2> mzdových období.
- <Str6>, <Str7> sú názvy užívateľských položiek základu poistenia a maximálneho kráteného povoleného základu poistenia.
- <Num8> koniec dátumového intervalu, do ktorého sa má základ <Num2> rozpočítať.
- <Num9>, <Num10> spôsob zaokrúhlenia základu poistenia.

WageIrrCalculateVirtualBase(0, S_SocialInsBaseCorrect, S_MonthToRecalculateCount, WagePeriod_ID.ID,

WorkingRelation_ID.ID, 'S_RetInsBaseTotal', 'S_RetInsBaseMaxSubTotal',

{Dokedy počítať - buď dátum konca WR alebo do minulého mesiaca)}

if(NxDateToFloat(WorkingRelation_ID.DateOfEnd$DATE) <> 0,

NxMin(NxDateToFloat(WorkingRelation_ID.DateOfEnd$DATE), WagePeriodDate(WagePeriod_ID.ID, 1, 0)) {ošetruje stav, kedy na nepravidelnom príjme je zadané ukončenie PP do budúcna a počíta sa WLP ešte v dobe platnosti WR},

WagePeriodDate(WagePeriod_ID.ID, 1, 0) {Koniec predchádzajúceho obdobia}

), 3, 0.01

)

Funkcia WageIrrAgrCalculateVirtualBase

Syntax: WageIrrAgrCalculateVirtualBase(<Num1>:Numeric, <Num2>:Numeric, <Str3>:String, <Str4>:String, <Str5>:String, <Str6>:String, <Str7>:String, <Str8>:String, <Str9>:String, <Num10>:Numeric, <Num11>:Numeric, <Num12>:Numeric, <Num13>:Numeric):Boolean

Popis: Výpočet základu soc.poistenia v minulých mesiacoch pre nepravidelné príjmy v prípade pracovného pomeru "dohoda".
- Rozpustenie základu poistenia <Num1> vyplývajúceho z príjmov na prac.pomere <Str4> v mzd.období <Str3> do minulých <Num2> mzdových období.
- <Str5>, <Str6>, <Str7> sú názvy užívateľských položiek základu poistenia a maximálneho kráteného povoleného základu poistenia.
- <Str8>, <Str9> názvy gl.premenných pre limit, po ktorého prekonaní platí zamestnanec - brigádnik dôchodkové poistenie a poistenie do rezervného fondu
- <Num10>, <Num11> dátumový interval, do ktorého sa má základ <Num2> rozpočítať.
- <Num12>, <Num13> spôsob zaokrúhlenia základu poistenia.

if(WageIrrAgrCalculateVirtualBase(NxValueGet('AmountToSplit'), S_MonthToRecalculateCount, WagePeriod_ID.ID,

WorkingRelation_ID.ID, 'S_RetInsBaseTotal', 'S_RetInsBaseMaxSubTotal', 'S_RetInsBaseMaxSubTotalCorr',

'S_DPDoBPŠSš', 'S_DPDoBPŠVš',

NxValueGet('DateSplitFrom'), NxDateToFloat(WageListFrom) - 1, 3, 0.01

), 0, 0)

Funkcia WageIrrCalculateVirtualIns

Syntax: WageIrrCalculateVirtualIns(<Num1>:Numeric, <Str2>:String, <Str3>:String, <Str4>:String, <Str5>:String, <Str6>:String, <Num7>:Numeric, <Num8>:Numeric):Boolean

Popis: Vykoná výpočet sociálneho poistenia v minulých mesiacoch pre nepravidelné príjmy.

Skripty

Výpočtové schémy ďalej podporujú skripty, ktoré je možné k danej schéme pripojiť na subzáložke Skripty danej schémy. Skripty sa vykonávajú pred výpočtom objektu (a po výpočte), ku ktorému je schéma priradená. Viď tiež tabuľka Poradie výpočtu vo výpočtovej schéme.

Filozofia skriptov je podobná ako v prípade výrazov pre výpočet položiek výp. schémy. Tzn. skript platí k zadanému dátumu, má systémovú a užívateľskú časť a je možné potlačiť vykonávanie užívateľskej alebo systémovej časti. Pri obnove dát dochádza pri skriptoch k podobným kontrolám ako v prípade výrazov pre výpočet položiek - tzn. pripojenie užívateľských častí k novým systémovým skriptom podobne ako pri výrazoch (viď Update výpočtových schém s užívateľsky pridanými záznamami v histórii).

Pri výpočte objektu sa postupuje nasledovne:

  • zistí výpočtové schémy priradené k objektu (napr. k MLC)
  • vykonanie skriptov "pred" vopred zistenými schémami
  • vykonanie výpočtu položiek schémy podľa Poradia spracovania častí výpočtovej schémy
  • vykonanie skriptov "po" vopred zistených schémach

Pri schémach "MSPoist" pre MLC nastavený skript "pred" tak, aby dochádzalo k nulovaniu pomocných položiek S_WLPCnt a S_WLPID v agende mesačných údajov firmy.

Poradie spracovania častí výpočtovej schémy

Ako bolo povedané vyššie v popise skriptov, najprv sa vykonajú skripty pripojené k schéme, až následne začne prebiehať výpočet jednotlivých položiek, a to podľa toho, aké časti definície obsahuje v poradí uvedenom ďalej.

Pri spracovaní výpočtovej schémy v rámci výpočtu miezd sa následne jednotlivé časti výpočtovej schémy (ich význam viď vyššie), vyhodnocujú v nasledujúcom poradí, pričom výsledok vyhodnotenia je následne obsiahnutý v premennej V resp. A a ak sa ďalšia časť výp. schémy má odkazovať na predchádzajúci, je potrebné, aby sa odkazovala na príslušný substitučný reťazec:

Vyhodnocovaná časť výp. schémy Popis

Vyhodnotenie podmienky (štandardnej, užívateľskej). Najprv sa vyhodnotí systémová časť. Potom sa vykoná vyhodnotenie užívateľskej časti. V užívateľskej časti môže byť použitý výsledok vyhodnotenia systémovej časti ako %C%. Takže užívateľská môže systémovú časť potlačiť (prebiť).

Spracovanie pokračuje len vtedy:

  • ak je splnená užívateľská, ak existuje
  • ak je splnená systémová, ak užívateľská neexistuje

Uživatelské definice podmínky, která provede inverzi výsledku systémové části: if(not %C%, True, False)

Použitie je objasnené na príklade i Kontrolného výrazu.
%A%=0, %V%=0
Štandardná akcia. Ak je použitá, tak výsledok nech sa rovná a. %A%=a
Súčet položiek. Ak je použitý, tak výsledok nech sa rovná b. %V%=b

Vyhodnotenie výrazu štandardného. Výsledok nech sa rovná c.

Súčet versus výraz:

Ak je výraz prázdny, tak nemusí obsahovať %V% a výsledok sa rovná predchádzajúcemu súčtu položiek (%V% teda nie je potrebné do prázdneho výrazu uvádzať). Ak by ale výraz bol neprázdny, tak musí obsahovať %V%, aby sa do neho pričítal i súčet položiek.

To je možné s výhodou využiť i opačne: ak je položka definovaná z historických dôvodov ako súčtová položka, avšak aktuálne už tomu tak byť nemá a jej definícia je daná inak len samotným výrazom, potom stačí, aby výraz neobsahoval substituční reťazec %V% - tak sa sčítanec do výsledku nijak nepremietne. Viz např. výpočet Pojistné SP a to položky Pojistné SP zaměstnanec celkem (za všechny PP) (MLS:SocialInsEmployee).

Ide o jednu z Možností potlačenia započítania sčítancov do výsledného výpočtu súčtovej položky.

Ak je ale potrebné, aby výraz aj naďalej obsahoval %V% (keďže je nutné zohľadniť súčet ďalších iných sčítancov), tak je potrebné nezahrnutie už neaktuálneho sčítanca vyriešiť iným spôsobom - viď ďalšie Možnosti potlačenia započítania sčítancov do výsledného výpočtu súčtovej položky.

%V%=c
Vyhodnotenie výrazu užívateľského. Výsledok nech sa rovná d. %V%=d

Vyhodnotenie kontroly (štandardnej, užívateľskej). Tu platí rovnaký postup ako pri vyhodnocovaní systémovej a užívateľskej podmienky, viď vyššie. Objasníme na príklade:

V definícii položky WageForUnit (Jedn. mzda) nech je systémový kontrolný výraz WorkingRelation_ID.WageAmount>0 a ak nie je výraz splnený, zobrazuje sa užívateľovi správa, že nie je zadaná jednotková mzda. Nech túto správu nechceme zobrazovať pre spoločníkov, tzn. ak je typ aktivity = 7 (spoločníci a komanditisti). Potom si do užívateľskej časti kontroly zadáme if(((not %C%)and(WorkingRelation_ID.typeOfActivity=7)), True, False). Ak nie je jedn. mzda zadaná, ale typ aktivity je 7, je užívateľský kontrolný výraz splnený a teda sa žiadna kontrolná správa nezobrazí.

Postup výpočtu položiek podľa výp. schém

Výpočet prebieha postupne podľa definícií obsiahnutých vo výpočtovej schéme (resp. vo výpočtových schémach) aktuálne priradených k počítanému záznamu:

Ak ide o prípad, kedy je možné mať priradených výp. schém viac, nijak nezáleží na poradí výp.schém. Rovnako tak nezáleží na poradí definícií vo výpočtových schémach (poradí počítaných položiek).

Ak prebehne výpočet položky, je táto interne označená ako vypočítaná. Postupne sa prechádzajú definície výpočtu dané v priradených výpočtových schémach jedna za druhou a ak sa narazí na položku, ktorá ešte nebola počítaná, tak sa táto vypočíta. (Tzn. vyhodnotia sa prípadné výrazy pre podmienku výpočtového vzorca, prípadný súčet zo sčítaných položiek, vyhodnotia sa výpočtové výrazy, vykonajú sa volané štandardné akcie, vykoná sa príslušné zaokrúhlenie a vyhodnotí sa kontrolný výraz, viď vyššie Poradie spracovania častí výpočtovej schémy.) Ak sa pri výpočte položky narazí na potrebu mať k dispozícii inú položku, ktorá tiež ešte nemá interný príznak vypočítateľnosti, tak sa musí spočítať najprv táto. Tzn. "kalkulátor" sa pokúsi v priradených výpočtových schémach nájsť definíciu výpočtu pre danú položku a podľa nej potom požadovanú položku vypočíta a označí interným príznakom vypočítateľnosti. Ak definíciu výpočtu nenájde (ide o zadávanú položku či omylom chýba výpočt. schéma pre jej výpočet), tak vráti aktuálnu hodnotu danej položky a položku tiež označí príznakom vypočítateľnosti.

Ak ide o situáciu, kedy položka má byť počítaná, ale výpočt. schéma nie je nájdená, tak vrátená hodnota položky bude nejaká jej defaultná hodnota (napr. nula a pod.).

Potom sa dokončí výpočet pôvodnej položky.

Schému výpočtu naznačíme pre mzdové listy:

Každá položka sa v rámci daného výpočtu počíta len raz, tzn. ak už má príznak vypočítateľnosti, tak už sa druhýkrát počítať nebude, aj keby definícia jej výpočtu bola v priradených výpočtových schémach obsiahnutá viackrát.

Ak sa pri výpočte narazí na nejakú chybu, je zobrazené informatívne hlásenie, pričom užívateľ môže zvoliť, či pokračovať vo výpočte či výpočet prerušiť. Chyby sú následne zobrazené v chybovom protokole. Tu si ich užívateľ môže prehliadnuť a uvážiť, či je potrebné jej príčiny opraviť a výpočet zopakovať. Chyba pri výpočte mzdových listov môže podľa svojich závažností spôsobiť, že príslušný mzdový list nezíska príznak správnosti výpočtu (v takom prípade je nutné príčinu chyby odstrániť vždy a výpočet zopakovať). Môže ísť jednak o chyby dané chybou vo výpočtových vzorcoch alebo nejakým chýbajúcim údajom (napr. chýba vypočítaný priemer na náhrady), či nemožnosťou vykonať nejakú akciu (napr. nie je možné vykonať zadané čerpanie dovolenky, keďže by došlo k prečerpaniu, nie je možné generovať priemery, keďže nie je definované mzdové obdobie a pod.).

Vynulovanie hodnôt niektorých skôr vypočítaných položiek ML pred výpočtom:

Ak je výpočet spustený opakovane, tak sa pôvodné vypočítané položky znova prepočítajú, čím sa zaktualizujú podľa aktuálnych podmienok platných pri novom výpočte. Opakovaný výpočet však môže byť spustený za radikálne iných podmienok ako výpočet predchádzajúci (napr. užívateľ zmenil prirodzené výpočtové schémy či vylúčil mzdový list z výpočtu miezd, viď ďalej Kedy sa ML neprepočítava vôbec alebo čiastočne). Aby v takých situáciách nedochádzalo k tomu, že v niektorých položkách zostanú nezaktualizované hodnoty z predchádzajúceho výpočtu (napr. preto, že pri opakovanom výpočte nie je priradená výpočtová schéma pre výpočet danej položky a teda sa daná položka neprepočíta (nemá podľa čoho)), tak pre výpočet položiek mzdových listov (MLC i MLS) platí:

  • Pred spustením vlastného výpočtu sa niektoré skôr vypočítané položky vynulujú. Vynulujú aj v prípade, že je výpočet mzdy blokovaný a ďalej nepokračuje!!!

Ktorých položiek sa vynulovanie týka: Nulujú sa položky MLC a MLS, ktoré sú typu číslo a celé číslo a sú počítané, tzn. nie sú editovateľné, určené pre zadanie hodnôt užívateľom (nie je účelom mazať pred výpočtom položky, do ktorých si užívateľ už mohol zadať svoje hodnoty). Toto pravidlo sa týka všetkých definovateľných položiek (užívateľských i systémových) a niekoľkých vybraných pevných (na MLS napr. Hrubá mzda celkom (MLS:GrossWageTotal), SP poistné zamestnanec (MLS:S_SocialInsEmployee), ZP poistné zamestnanec (MLS:HealthInsBaseEmployee) a pod.). Nenulujú sa hodnoty položiek, ktoré majú príznak, že sú editovateľné (ani keby na ne existoval nejaký výpočet).

Kedy sa ML neprepočítava vôbec alebo čiastočne - Zablokovanie výpočtu miezd

V niektorých prípadoch sa mzdový list zámerne neprepočítava vôbec alebo sa prepočíta len čiastočne. Kedy sa ML neprepočíta vôbec alebo len čiastočne:

  • 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.

    Spomenuté položky nie sú nijak zahrnuté vo výpočtových schémach, ale výpočet blokujú nasledovne:

    Ak zamestnanec nemá ani jeden deň, pre ktorý by sa mu mala mzda počítať a ani nemá na dané obdobie zadanú žiadnu nemocenskú dávku (tzn. nemá žiadnu nem. dávku s riadkom typu 1, 2 alebo 4 v počítanom mzdovom období) ani nemá do daného MO prenesené ročné zúčtovanie, mzda sa nepočíta. Tzn. po vyvolaní výpočtu miezd sa výpočet miezd podľa výpočtových schém nespustí (bez ohľadu na to, či sú k ML aktuálne priradené nejaké výpočtové schémy), len dôjde k vynulovaniu položiek z prípadného predchádzajúceho výpočtu.

    Ak ale pre takého zamestnanca v danom období existuje nem. dávka alebo ročné zúčtovanie, výpočet mzdy podľa výpočtových schém sa spustí (aby bolo možné ND resp. RÚZ do ML zohľadniť). Spustený výpočet sa potom realizuje už štandardne podľa všetkých aktuálne priradených Výpočtových schém.

    Ak by ste mali v ML chybne zadané údaje (napr. zadaný odpracovaný čas, aj keď je po celý mesiac dlhodobá neprítomnosť), nemôžete očakávať zmysluplné výsledky!

    Objasníme na príklade:

    Zamestnanec má hlavný PP, aktívne mzdové obdobie nech je október. Zamestnanec odíde 1.marca na 3 mesiace do zahraničia s tým, že čerpá dlhodobé neplatené voľno. Má teda zadanú dlhodobú neprítomnosť, ktorá ho vyníma z počítania miezd. Ak nad jeho ML za marec spustíme výpočet miezd, výpočet sa nezaháji a ML sa automaticky nastaví do stavu Vypočítaný správne. Ak by zamestnancovi do mesiaca marca zasahovala napr. nejaká nem. dávka (ktorá nastala napr. vo februára, ale je potrebné ju ešte preplatiť a pod., tzn. napr. choroba za 24.-26.2., u ktorej je v riadkoch riadok za obdobie 9/2004 typu len Ospravedlnené dni a ďalej riadok za obdobie 10/2004 typu Len preplatenie), či mal do marca prenesené ročné zúčtovanie za predchádzajúci rok, výpočet sa realizuje (pochopiteľne so zohľadnením príslušnej dlhodobej neprítomnosti, viď použité výpočtové schémy).

    Ak máte zamestnanca dlhodobo vylúčeného z výpočtu miezd (napr. z dôvodu rodičovskej dovolenky), ale potrebujete mu vyplatiť nejakú odmenu a pod., potom je na daný mesiac potrebné na danej neprítomnosti dočasne zrušiť vylúčenie z výpočtu miezd. V opačnom prípade sa mu samozrejme zadaná odmena nijako nezapočíta.

  • Ak je daný prac. pomer už ukončený, ale existuje RZÚ - výpočet mzdy podľa výpočtových schém sa spustí (aby bolo možné RZÚ do ML zohľadniť), ale ML pre tento účet založené by mali mať priradené len výpočtové schémy pre ochrannú lehotu resp. RZÚ zadané pre tento účel v Nastavení parametrov miezd.

    Spustený výpočet sa potom realizuje už štandardne podľa všetkých aktuálne priradených Výpočtových schém.

    Ak by ste mali v ML chybne priradené aj iné Výpočtové schémy a chybne zadané údaje (napr. zadané zložky mzdy, aj keď je prac. ukončený), nemôžete očakávať zmysluplné výsledky!

O tom, že mzdový list nebol prepočítaný vôbec alebo bol prepočítaný len čiastočne vo vyššie uvedených prípadoch, sa ohlási v priebehu výpočtu Informatívne zdelenie do záložky Chybový protokol a ak necháte výpočet dokončiť ako pre čiastkový, tak pre súhrnný ML, potom mzdový list čiastkový i súhrnný označí rovno ako spočítaný, tzn. nastaví sa položka Vypočítaný správne.

Možnosti zmien a použitie aktuálnych hodnôt

Spôsoby výpočtu sa môžu v čase meniť (napr. z dôvodov legislatívnych zmien a pod.). Podobne sa môžu v čase meniť aj hodnoty niektorých ďalších záznamov, na ktoré sa výpočet odkazuje, napr. globálnych premenných a pod. Preto je potrebné v niektorých agendách sledovať dátum, odkedy - dokedy dané definície platia. Tam, kde je potrebné zachovať i pôvodné hodnoty, sa sleduje i história v čase. Pri výpočte spracovávaného mzdového obdobia je potom zaistené, aby sa použili definície a hodnoty platné k počítanému mzdovému obdobiu. Aby sa o legislatívne úpravy nemusel starať užívateľ, sú dodávané predpisy výpočtu, globálne premenné atď. dodávané ako systémové a podliehajú update, viď tiež Defaultné dáta a update mzdových agend. Aby však mohli podliehať update, platí pre také záznamy obmedzenie, čo sa týka mazania a užívateľských zmien.

V ďalšom texte spomenieme možnosti zmien v niektorých agendách a objasníme, ktoré hodnoty potom budú použité pri výpočte:

Možnosti zmien výp. schém a definícií súčtov, história.

Pravidlá pre pridanie a mazanie výp. schém a počítaných položiek v nich

Mazanie výp. schém - systémové výp. schémy nie je možné vymazať ani skryť. Ďalej nie je možné vymazať výp. schému, ak aspoň jedna jeho položka má platnosť v už uzavretých mzdových obdobiach. Ďalej nie je možné mazať výp. schému, ktorá obsahuje položky definované ako súčtové, ku ktorým existujú nejaké sčítance v záložke Súčty.

Pridanie počítaných položiek - Či je k dispozícii možnosť pre pridanie počítaných položiek (funkcia Pridať v navigátore v záložke Položky) do výpočtovej schémy, je dané vlastnosťami výpočtovej schémy a riadi sa nasledujúcimi pravidlami:

Ide o systémovú definíciu výpočtovej schémy a bežného užívateľa?

  • ÁNO - Nie je možné pridať novú počítanú položku, je povolená len čiastočná editácia dodávaných položiek, viď ďalej.
  • NIE - Je možné pridať novú počítanú položku, ale nie s platnosťou spätne do už uzavretých období.

Mazanie počítaných položiek - mazať celú položku z výp. schémy nie je možné, mazať je možné len jej definície výpočtu v čase na záložke História položky, ale s ohľadom na systémovosť definície, viď ďalej. Či je táto možnosť mazanie k dispozícii (je k dispozícii funkcia Vymazať v záložke História položky), sa riadi nasledujúcimi pravidlami:

Ide o systémovú definíciu výpočtovej schémy a bežného užívateľa?

  • ÁNO - Nie je možné vymazať žiadnu definíciu výpočtu počítanej položky bez ohľadu na jej platnosť, je povolená len čiastočná editácia dodávaných položiek, viď ďalej.
  • NIE - Nie je možné vymazať definície výpočtu počítanej položky platnej v už uzavretých obdobiach.

Mazanie položky priamo na záložke Položky nie je , keďže by nebolo vecne zrejmé, či si užívateľ praje zmazať celú históriu položky (vr. všetkých jej definícií výpočtov v čase) či len jednu konkrétnu aktualizáciu.

Pravidlá pre editáciu počítaných položiek vo výpočtovej schéme

Podľa vlastností výpočtovej schémy a počítaných položiek nie sú niektoré atribúty definície položky k dispozícii na editáciu a sú k dispozícii pre čítanie:

Ide o situáciu, kedy definícia výpočtu položky platí v už uzavretom období (tzn. kontrola podľa časovej platnosti definície výpočtu jednej položky)?

  • ÁNO - Žiadne atribúty v definícii položky na záložke nie sú k dispozícii na editáciu a sú len na čítanie. Je možné len pridať nový záznam do histórie, tzn. do záložky História položky, samozrejme editovať pri ňom je možné len niečo a nie je možné ho zadávať spätne. Tzn. nový záznam do histórie takej položky musí mať platnosť najskôr od prvého dňa otvoreného mzdového obdobia. V prípade systémových definícií je pri ňom okrem dátumu platnosti povolená len editácia užívateľských vzorcov a ich použitie. V prípade nesystémových je pri ňom povolená editácia všetkých atribútov okrem názvu položky.

  • NIE - viď ďalej:

Ide o systémovú definíciu výpočtovej schémy a bežného užívateľa?

  • ÁNO - Je povolená len editácia užívateľských vzorcov a ich použitie.
  • NIE - viď ďalej:

Ide o novo zaradenú položku do definície?

  • ÁNO - Je povolená editácia všetkých atribútov, na záložke História len nie je k dispozícii na editáciu položka Názov položky.
  • NIE - Je povolená editácia všetkých atribútov okrem Názvu položky a počiatku platnosti položky.

    Teda nesystémovú definíciu (novú resp. platnú najskôr od prvého dňa otvoreného mzdového obdobia) je možné editovať i mazať takpovediac ľubovoľne. Prístupný je i systémový (štandardný) výraz, keďže update do nesystémovej definície nijak nezasahuje, teda nijak nehrozí, že by jej systémový (štandardný) výraz zmenil. Novú definíciu ale nie je možné zadať s platnosťou spätne v už uzavretých mzdových obdobiach, tzn. dátum "Platí od" nemôže spadať do už uzavretého obdobia.

Pravidlá pre editáciu definícií súčtov

Ide o situáciu, kedy definícia súčtu platí v už uzavretom období (tzn. kontrola podľa časovej platnosti definície súčtu)?

  • ÁNO - Všetky atribúty položky nie sú k dispozícii na editáciu a sú len na čítanie. Definíciu teda nie je možné opravovať ani vymazať. Takú definíciu je možné len kopírovať, dátum platnosti sa nastaví prvý voľný.
  • NIE - viď ďalej:

Ide o systémovú definíciu súčtu, ktorá je nová (počiatok platnosti je otvorený), a bežného užívateľa?

  • ÁNO - Je povolená len editácia užívateľských vzorcov a ich použitie. Systémovú definíciu nie je možné zmazať.
  • NIE - Je povolená editácia všetkých atribútov.

Teda nesystémovú definíciu (novú resp. platnú najskôr od prvého dňa otvoreného mzdového obdobia) je možné editovať i mazať ľubovoľne. Prístupný je i systémový (štandardný) výraz, keďže update do nesystémovej definície nijak nezasahuje, teda nijak nehrozí, že by jej systémový (štandardný) výraz zmenil. Nie je možné ju zadať s platnosťou spätne v už uzavretých mzdových obdobiach, tzn. dátum "Platí od" nemôže spadať do už uzavretého obdobia.

Ako zaistiť zmeny definícií výpočtov sčítancov v čase, viď o.i. popis položky Platí od v definícii súčtu.

Update výpočtových schém s užívateľsky pridanými záznamami v histórii

Ako bolo uvedené v predchádzajúcom texte, za určitých okolností nie je možné definície výpočtu položiek vo výpočtových schémach upravovať (ani užívateľské výrazy) a je možné jedine pridávať do histórie. Ak teda užívateľ chce upraviť dodávaný výpočet, pridá si do histórie položky nový záznam s platnosťou najskôr od prvého dňa otvoreného mzdového obdobia. Ako bolo spomenuté v popise záložky História, pri novom zázname sú položky predvyplnené podľa predchádzajúcej platnej definície, pričom väčšina z nich nemusí byť s ohľadom na systémovosť definície atď.) k dispozícii k editácii (viď vyššie).

Pri vytváraní zmien vo výpočtových schémach (užívateľské vytváranie nových záznamov v histórii), sa teda skopíruje systémová časť definície (výraz, podmienka, vysvetlenie, kontrolný výraz), ktorá je teda neskôr platná od nejakého novšieho dátumu. Aby sa aj do týchto záznamov adekvátne premietla prípadná úprava, ktorú potom výrobca vykoná do ďalšej verzie v tejto systémovej časti definície platnej od dátumu skoršieho, pri procese obnovy zálohy v rámci update platí nasledujúce: Po obnovení výpočtových schém sa prejdú užívateľom zadané záznamy v histórii jednotlivých položiek výpočtových schém. Systémové časti každého takého záznamu sa prepíšu hodnotami z najbližšieho staršieho systémového záznamu. O vykonaných zmenách sa vytvorí záznam do servisnej knižky. Teda ak sa narazí na nesystémovú históriu, ktorej systémová časť (výraz, podmienka, vysvetlenie, kontrolný výraz, skript) po update na ďalšiu verziu neodpovedá prvej najbližšej staršej systémovej schéme, tak sa automaticky opraví na aktuálne dodávané znenie.

Možnosti zmien a použitie glob. premenných pri výpočte, update glob. premenných

Globálne premenné obsahujú hodnoty, ktoré podliehajú legislatívnym zmenám. Dodávané globálne premenné sú definované ako systémové, ktoré majú systémové hodnoty, ktoré nie je možné užívateľsky meniť. Výrobcom sú aktualizované prostredníctvom update. Niektoré systémové globálne premenné však obsahujú hodnotu, ktorá nie je pevne daná zo zákona a ktorú si užívateľ môže potrebovať nastaviť inak.

V takom prípade si užívateľ môže:

  • buď zaviesť svoju globálnu premennú s odlišnou skratkou a túto vo výp. schémach a špeciálnych položkách zapojiť namiesto dodávanej
  • alebo do systémovej globálnej premennej si pridať svoju vlastnú užívateľskú hodnotu platnú od nejakého dátumu. Ak je toto možné spätne už neprístupných mzdových období, záleží od nastavenia príznaku Je možné meniť hodnoty v uzavretých obdobiach. Tzn. ak si užívateľ chce zmeniť systémovú hodnotu (dodávanú) systémovej premennej, musí si pridať ďalší riadok s novou hodnotou. Túto hodnotu môže zadať s rovnakým dátumom ako je zadané pri systémovej hodnote.

Potom pre editáciu a použitie hodnoty pre výpočet a pre update platí:

  • V editácii sa zobrazuje, či je hodnota systémová alebo nie.
  • Ak k rovnakému dátumu existujú dve hodnoty, tak má prednosť užívateľská.
  • Nie je možné zadať viac užívateľských hodnôt danej premennej rovnakým dátumom.
  • V zvláštnej tabuľke sa pamätajú horné a dolné obmedzenia hodnôt dodávaných globálnych premenných, pričom pri zadaní užívateľskej hodnoty mimo medze, je užívateľ upozornený.

Pre update platí:

  • Update užívateľskú hodnotu nepremaže, len pridá príp. ďalšiu dodávanú hodnotu.
  • Ak je užívateľská hodnota mimo medze, tak je užívateľ varovaný zápisom vygenerovaným pri update do servisnej knižky.

Inými slovami: užívateľ nemôže zmeniť dodávanú hodnotu, ale môže si pridať vlastnú. Užívateľská hodnota je rešpektovaná, ak je platná rovnako či neskôr ako hodnota dodávaná. Objasníme na príkladoch:

Systémová hodnota platí od januára, užívateľská nech platí:

  • od predchádzajúceho decembra - v januári i februári sa použije systémová, keďže je aktuálnejšia (tzn. užívateľská je prebitá novšou systémovou premennou)
  • tiež od januára - v januári a februári sa použije užívateľská (platí rovnako alebo neskôr ako systémová)
  • od februára - v januári sa použije systémová, vo februári sa použije užívateľská (dtto)

Možnosti zmien a použitia daňových tabuliek pri výpočte

Výpočty sa ďalej odkazujú na daňové tabuľky.

Pre daňové tabuľky nie je dané obdobie, odkedy dokedy platí, ale len počiatok platnosti. Daňová tabuľka platí do tej doby, pokým nie je definovaná následná s neskorším začiatkom platnosti.

Systémové daň. tabuľky nie je možné meniť, ale môže existovať súbežne systémová a užívateľská tabuľka pre rovnaký dátum platnosti.

Systém pri výpočte miezd podľa defaultných výpočtových vzorcov či pri výpočte ročného zúčtovania vyčísli pre danú mzdu zodpovedajúcu daň, a to z daňovej tabuľky zodpovedajúceho typu platnej k počiatočnému dátumu mzdového obdobia, pre ktoré sa daň vyčísluje, resp. k dátumu ročného zúčtovania. Ak by k danému dátumu nebola k dispozícii žiadna platná tabuľka, výpočtový vzorec vráti nulu. Ak k danému dátumu existuje platná systémová i užívateľská daň. tabuľka daného typu, tak užívateľská tabuľka bude použitá prednostne.