Dch dopl dnyabs (sk.9): Porovnání verzí
Řádek 12: | Řádek 12: | ||
|- | |- | ||
! scope="row"| Rozsah | ! scope="row"| Rozsah | ||
| Ne | | '''n - Ne''' <br> | ||
a - Ano-podle úvazku <br> | |||
p - Podle plánované délky směny | |||
|- | |- | ||
! scope="row"| Popis | ! scope="row"| Popis | ||
Řádek 18: | Řádek 20: | ||
|} | |} | ||
'''Výchozí stav: docházkový systém pošle ke kódu mzdové položky informaci o počtu hodin, ale nikoliv o počtu dnů.''' V některých případech je ovšem informace o počtu dnů žádoucí, někdy vysloveně nutná (tak např. pro dovolenou dle t.č. stávající legislativy, kdy nároky se sledují ve dnech, nikoliv v hodinách; nebo pro odpracovanou dobu - pro účely nápočtů odpracovaných dnů pro dovolenou či další statistiky.) | |||
== | Po přepnutí parametru bude aplikace doplňovat chybějící dny podle určitého algoritmu (algoritmů). | ||
<small> Pozn. Dny pro uvedenou funkcionalitu mohou nabývat hodnoty '''0 nebo nevyplněno''' (null). </small> | |||
== Ano-podle úvazku == | |||
Výpočet dnů probíhá na základě hodinového úvazku zaměstnance, tj. položky [[Skutečný úvazek]]. Vhodné jen tehdy, pokud délka směn je konstantní. | |||
== Podle plánované délky směny == | |||
Vhodný i pro případ, kdy kolísá délka směn (počet plánovaných hodin) pracovního kalendáře zaměstnance. | |||
'''POZOR: Je potřeba si uvědomit, že obecně úloha nemá správné řešení!''' | |||
1. Výpočet se děje na základě kalendáře zaměstnance v aplikaci KS (nikoliv v docházkovém systému - nicméně oba by měly být totožné). | |||
2. Pokud bude zajištěn předchozí bod, pak ke správnému výsledku (co se týče dovolené - dny a půldny) se dojde v případě, kdy | |||
: jedním záznamem přichází celé dny (např. od 8.11.2017 - do 9.11.2017 - 22 hod) | |||
: a jiným záznamem půldny (např. od 10.11.2017 - do 10.11.2017 - 5,5 hod) | |||
Příklad nemožnosti správného určení: | |||
V obecném případě se může jednat např. o následující rozvržení: | |||
plán směn 12-14.11.2017. | |||
: Plán 8-8-8 hod, čerpáno 20 hod odpovídá 2,5 dne. | |||
: Plán 4-8-12 hod, čerpáno první směnu půlden dovolené a dva celé znamená čerpání 22 hod, zatímco čerpání prvních dvou směn celých a poslední půl představuje 18 hod. | |||
=== Algoritmus === | |||
: 1. Zjištění '''průměrné délky směny části kalendáře ohraničeného datem_od a datem_do''' (součet plánovaných hodin/součet plánovaných směn). <br> | |||
: 2. Určení '''podílu vykázaného počtu hodin průměrnou délkou směny''' dle bodu (1). <br> | |||
: 3. V případě dovolené – kódu 521 – zaokrouhlení nahoru na celé půldny. | |||
== Historické řešení == | |||
<small> | |||
V době, kdy ještě neexistoval tento parametr, bylo možno využívat doplnění pomocí SQL příkazu | V době, kdy ještě neexistoval tento parametr, bylo možno využívat doplnění pomocí SQL příkazu | ||
Řádek 40: | Řádek 71: | ||
(kod <= 168 or kod in(521, 522)); | (kod <= 168 or kod in(521, 522)); | ||
</small> | |||
== Odkazy == | == Odkazy == | ||
* [http://apl.czso.cz/iSMS/cisdet.jsp?kodcis=56&razeni=ca&delka_strany=30 ČSÚ-právní forma organizace] | * [http://apl.czso.cz/iSMS/cisdet.jsp?kodcis=56&razeni=ca&delka_strany=30 ČSÚ-právní forma organizace] | ||
* [[Data pro ISP]] | * [[Data pro ISP]] |
Verze z 11. 12. 2017, 12:42
dch_dopl_dnyabs (sk.9) je parametr nastavující doplňování dnů z hodin při importu z docházky.
Funkcionalita
Kód | dch_dopl_dnyabs |
---|---|
Název | Určuje, zda se mají doplňovat dny v případě, že se rovnají nule. |
Rozsah | n - Ne a - Ano-podle úvazku |
Popis | Určuje, zda se při přenosu z docházky mají u absencí doplňovat dny v případě, že se rovnají nule. Výpočet dnů probíhá na základě hodinového úvazku. Možno použít jen v případě, že zaměstnaneci pracují na běžném kalendáři a délka směny odpovídá hodinovému úvazku. |
Výchozí stav: docházkový systém pošle ke kódu mzdové položky informaci o počtu hodin, ale nikoliv o počtu dnů. V některých případech je ovšem informace o počtu dnů žádoucí, někdy vysloveně nutná (tak např. pro dovolenou dle t.č. stávající legislativy, kdy nároky se sledují ve dnech, nikoliv v hodinách; nebo pro odpracovanou dobu - pro účely nápočtů odpracovaných dnů pro dovolenou či další statistiky.)
Po přepnutí parametru bude aplikace doplňovat chybějící dny podle určitého algoritmu (algoritmů).
Pozn. Dny pro uvedenou funkcionalitu mohou nabývat hodnoty 0 nebo nevyplněno (null).
Ano-podle úvazku
Výpočet dnů probíhá na základě hodinového úvazku zaměstnance, tj. položky Skutečný úvazek. Vhodné jen tehdy, pokud délka směn je konstantní.
Podle plánované délky směny
Vhodný i pro případ, kdy kolísá délka směn (počet plánovaných hodin) pracovního kalendáře zaměstnance.
POZOR: Je potřeba si uvědomit, že obecně úloha nemá správné řešení!
1. Výpočet se děje na základě kalendáře zaměstnance v aplikaci KS (nikoliv v docházkovém systému - nicméně oba by měly být totožné). 2. Pokud bude zajištěn předchozí bod, pak ke správnému výsledku (co se týče dovolené - dny a půldny) se dojde v případě, kdy
- jedním záznamem přichází celé dny (např. od 8.11.2017 - do 9.11.2017 - 22 hod)
- a jiným záznamem půldny (např. od 10.11.2017 - do 10.11.2017 - 5,5 hod)
Příklad nemožnosti správného určení: V obecném případě se může jednat např. o následující rozvržení: plán směn 12-14.11.2017.
- Plán 8-8-8 hod, čerpáno 20 hod odpovídá 2,5 dne.
- Plán 4-8-12 hod, čerpáno první směnu půlden dovolené a dva celé znamená čerpání 22 hod, zatímco čerpání prvních dvou směn celých a poslední půl představuje 18 hod.
Algoritmus
- 1. Zjištění průměrné délky směny části kalendáře ohraničeného datem_od a datem_do (součet plánovaných hodin/součet plánovaných směn).
- 2. Určení podílu vykázaného počtu hodin průměrnou délkou směny dle bodu (1).
- 3. V případě dovolené – kódu 521 – zaokrouhlení nahoru na celé půldny.
Historické řešení
V době, kdy ještě neexistoval tento parametr, bylo možno využívat doplnění pomocí SQL příkazu
pro aktuálně zpracovávané období a výběr kódů se zabezpečením, aby nedošlo k dělení 0 - použitelné pro MS SQL:
update odmeny set dny = odprac_hod / (select hod_uvazek from prac_pom A where A.os_cislo = odmeny.os_cislo and A.cislo_pom = odmeny.cislo_pom) where vyp_castka = -1 and (dny is null or dny = 0) and ltrim(rtrim(cast(os_cislo as char)))+ ltrim(rtrim(cast(cislo_pom as char))) in (select ltrim(rtrim(cast(os_cislo as char)))+ ltrim(rtrim(cast(cislo_pom as char))) from prac_pom B where B.hod_uvazek > 0) and datum = (select datum_prvni from par_map) and (kod <= 168 or kod in(521, 522));