Změny pracovních kalendářů zaměstnanců (sestava)
Změny pracovních kalendářů zaměstnanců (sestava) je komplex sestav pro Generátor sestav II.
Prvotním podnětem byla možnost individuální úpravy dovolené na konci roku u zaměstnanců s určitým typem a číslem kalendáře. Podmínkou ovšem bylo, že zaměstnanec v tomto kalendáři odpracoval celý rok (nebo většinu roku).
- hd 60928
View
Sestava se tedy chtěla vytvářet před koncem roku, ještě v aktuálním období posledního zpracování mezd (12. měsíc) - má tedy brát v potaz údaje jak z historie, tak z aktuálního období. Proto pro zjednodušení následného skriptu sestavy je vytvořeno view jako souhrn údajů z historie a z aktuálního období.
Menu: Systom/Správa databáze/Scripty pro úpravu databáze - SQL script spuštěný po úpravě databáze. Do této části vložte následující obsah. Pak proveďte úpravu databáze - po úpravě bude vytvořeno view dle definice.
create view v_rozvrhyzamdov AS select A.os_cislo, A.prijmeni, A.jmeno, A.titul, PMES.cislo_pom, PMES.typ_kal, PMES.smena, D21A.narok_letos, PMES.datum from pracovnici A, pom_mes PMES, dovolena21 D21A where A.os_cislo = PMES.os_cislo and A.os_cislo = D21A.os_cislo and PMES.cislo_pom = D21A.cislo_pom and PMES.datum = D21A.datum union select A.os_cislo, A.prijmeni, A.jmeno, A.titul, B.cislo_pom, B.typ_kal, B.smena, D21B.narok_letos, PARM.datum_prvni from pracovnici A, prac_pom B, par_map PARM, dovolena21 D21B where A.os_cislo = B.os_cislo and A.os_cislo = D21B.os_cislo and B.cislo_pom = D21B.cislo_pom and PARM.datum_prvni = D21B.datum;
Sestava po zaměstnancích
- typ_kal_od ... typ kalendáře v měsíci "Od"
- smena_od ... číslo a název kalendáře v měsíci "Od"
- typ_kal_do ... typ kalendáře v měsíci "Do"
- smena_do ... číslo a název kalendáře v měsíci "Do"
- pocet_kalsme ... počet různých kalendářů (jak typ tak název) za období "Od" - "Do".
- narok_letos ... nárok na dovolenou v daném období (v hodinách)
select A.os_cislo, A.prijmeni, A.jmeno, A.datum_nastupu, A.datum_vystupu, B.cislo_pom, B.datum_nastupu, B.datum_ukonc, case (select typ_kal from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = %DATUMOD%) when 1 then '1 - Běžný' when 2 then '2 - Podobně jako 1, sv tar' when 4 then '4 - Měsíční' when 5 then '5 - Týdenní' when 6 then '6 - Běžný bez dopoč.' when 7 then '7 - Cyklický' when 8 then '8 - KPD' when 9 then '9 - Individuální' else end as typ_kal_od, case (select cast(typ_kal as varchar) from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = %DATUMOD%) when '1' then case (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = %DATUMOD%) when 1 then '1 - jednosměnný' when 2 then '2 - dvousměnný' when 3 then '3 - třísměnný' when 4 then '4 - nepřetržitý' else end when '4' then ( select cast(cis_roz as varchar) + ' - ' + naz_roz from mes_fondy where (cast(rok as varchar)+ cast(mesic as varchar) + cast(cis_roz as varchar)) = ( select (cast(year(VIE.datum) as varchar) + cast(month(VIE.datum) as varchar) + cast(smena as varchar)) from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = %DATUMOD% ) ) when '5' then (select cast(cis_roz as varchar) + ' - ' + naz_roz from tyd_rozvrhy where cis_roz = (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = %DATUMOD%)) when '7' then (select cast(cis_roz as varchar) + ' - ' + naz_roz from cykl_rozvrhy where cis_roz = (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = %DATUMOD%)) else end as smena_od, (select typ_kal from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and year(VIE.datum) = year(%DATUMDO%) and month(VIE.datum) = month(%DATUMDO%)) as typ_kal_do, (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and year(VIE.datum) = year(%DATUMDO%) and month(VIE.datum) = month(%DATUMDO%)) as smena_do, (select count(distinct concat(str(typ_kal),smena)) from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum >= %DATUMOD% and VIE.datum <= %DATUMDO%) as pocet_kalsme, D21.narok_letos from pracovnici A, prac_pom B, dovolena21 D21 where A.os_cislo = B.os_cislo and B.os_cislo = D21.os_cislo and B.cislo_pom = D21.cislo_pom and year(D21.datum) =year(%DATUMDO%) and month(D21.datum) = month(%DATUMDO%) order by A.prijmeni
Sestava za zaměstnance
Před vytvořením sestavy si systém vyžádá zadání osobního čísla zaměstnance.
select A.os_cislo, A.prijmeni, A.jmeno, B.cislo_pom, B.datum_nastupu, B.datum_ukonc, case (select typ_kal from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = VI.datum) when 1 then '1 - Běžný' when 2 then '2 - Podobně jako 1, sv tar' when 4 then '4 - Měsíční' when 5 then '5 - Týdenní' when 6 then '6 - Běžný bez dopoč.' when 7 then '7 - Cyklický' when 8 then '8 - KPD' when 9 then '9 - Individuální' else end as typ_kal, VI.smena, case (select cast(typ_kal as varchar) from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = VI.datum) when '1' then case (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = VI.datum) when 1 then '1 - jednosměnný' when 2 then '2 - dvousměnný' when 3 then '3 - třísměnný' when 4 then '4 - nepřetržitý' else end when '4' then ( select naz_roz from mes_fondy where (cast(rok as varchar)+ cast(mesic as varchar) + cast(cis_roz as varchar)) = ( select (cast(year(VIE.datum) as varchar) + cast(month(VIE.datum) as varchar) + cast(smena as varchar)) from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = VI.datum ) ) when '5' then (select naz_roz from tyd_rozvrhy where cis_roz = (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = VI.datum)) when '7' then (select naz_roz from cykl_rozvrhy where cis_roz = (select smena from v_rozvrhyzamdov VIE where VIE.os_cislo = B.os_cislo and VIE.cislo_pom = B.cislo_pom and VIE.datum = VI.datum)) else end as smena_nazev, VI.narok_letos, VI.datum from pracovnici A, prac_pom B, v_rozvrhyzamdov VI where A.os_cislo = B.os_cislo and A.os_cislo = VI.os_cislo and B.cislo_pom = VI.cislo_pom and A.os_cislo = %OSCISLO% and VI.datum >= %DATUMOD% and VI.datum <= %DATUMDO% order by VI.datum