Rozpad hodnot mzdové položky na projekty dle procent (sestavy)

Z Prirucky

Rozpad hodnot mzdové položky na projekty dle procent (sestavy) - kontrolní sestavy pro zákaznickou úpravu:

Přehled přiřazení

Sestava pro Generátor sestav II. Zobrazuje jen zaměstnance, kteří mají nějaký záznam v agendě (nikoliv všechny zaměstnance). Pomery-projekty-mzdove-polozky-prirazeni-sestava-sql.png

select A.os_cislo, A.prijmeni, A.jmeno, B.cislo_pom, B.druh_pom_j, 
P.projekt, STRED.nazev, 
P.kod, C.vyznam,
P.procento, P.obdobi_od, P.obdobi_do

from pracovnici A, 
prac_pom B, projekty_pomery P,
stred STRED, ciselnik C where
A.os_cislo = B.os_cislo and
B.os_cislo = P.os_cislo and B.cislo_pom = P.cislo_pom and
P.projekt = STRED.str and
P.kod = C.kod
order by A.os_cislo, B.cislo_pom, P.kod, P.projekt

Příklad filtru nad touto sestavou (jen aktivní zaměstnanci a jen "aktivní" záznamy):

Pomery-projekty-mzdove-polozky-prirazeni-sestava-sql-priklad-filtru.png

Kontrola na 100%

Kontrolní příkaz pro zjištění, zda součet procent u zaměstnance a daného kódu dává 100%. V příkazu je potřeba změnit období dle potřeby. Určeno jen pro SQL prompt, nepředpokládá se zakládání do generátoru sestav z důvodu nízké frekvence použití.

Pomery-projekty-mzdove-polozky-kontrola-na-sto-procent.png

select os_cislo, cislo_pom, kod, sum(procento) from projekty_pomery
where (obdobi_do is null or obdobi_do > '2017-03-31')
group by os_cislo, cislo_pom, kod
order by sum(procento) asc

Záznamy pravděpodobně nebylo potřeba měnit

Sestava zobrazující záznamy se shodnými hodnotami - zaměstnanec - číslo poměru - projekt - kód - procento. Pokud jsou navíc záznamy na sebe časově navazující (v příkladu v obrázku takové jsou), pak to znamená, že nebylo nutné (bylo zbytečné) záznam časově ukončovat a zadávat nový, vždyť se jedná o stejné procentní rozvržení.

Pomery-projekty-mzdove-polozky-zaznamy-pravdepodobne-nebylo-potreba-menit.png

select A.os_cislo, A.prijmeni, A.jmeno, B.cislo_pom, B.druh_pom_j, B.datum_nastupu, B.datum_ukonc,
P.projekt, P.kod, P.procento, P.obdobi_od, P.obdobi_do
from pracovnici A, prac_pom B, projekty_pomery P
where A.os_cislo = B.os_cislo and
B.os_cislo = P.os_cislo and 
B.cislo_pom = P.cislo_pom and
(ltrim(rtrim(cast(P.os_cislo as char))) 
+ ltrim(rtrim(cast(P.cislo_pom as char)))
+ ltrim(rtrim(cast(P.projekt as char)))
+ ltrim(rtrim(cast(P.kod as char)))
+ ltrim(rtrim(cast(P.procento as char)))
) in

(
select
ltrim(rtrim(cast(PP.os_cislo as char))) 
+ ltrim(rtrim(cast(PP.cislo_pom as char)))
+ ltrim(rtrim(cast(PP.projekt as char)))
+ ltrim(rtrim(cast(PP.kod as char)))
+ ltrim(rtrim(cast(PP.procento as char)))
from projekty_pomery PP
group by PP.os_cislo, PP.cislo_pom,  PP.projekt, PP.kod, PP.procento 
having count(*) > 1  
)

order by A.os_cislo, B.cislo_pom, P.projekt, P.kod, P.obdobi_od

Odkazy