Změny pracovních kalendářů zaměstnanců (sestava): Porovnání verzí
(Založena nová stránka: 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é …) |
|||
| Řádek 6: | Řádek 6: | ||
== View == | == 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í. | 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. | |||
<small> | <small> | ||
| Řádek 22: | Řádek 24: | ||
== Sestava po zaměstnancích == | == Sestava po zaměstnancích == | ||
[[Image: Zmeny pracovnich kalendaru zamestnancu-Vsichni.png|700px]] | |||
* 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) | |||
<small> | |||
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 | |||
</small> | |||
== Sestava za zaměstnance == | |||
Před vytvořením sestavy si systém vyžádá zadání osobního čísla zaměstnance. | |||
[[Image: Zmeny pracovnich kalendaru zamestnancu-Jedinec.png|550px]] | |||
<small> | |||
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 | |||
</small> | |||
== Odkazy == | |||
* [[Generátor sestav II]] | |||
* [[Generátor sestav II (příklady sestav)]] | |||
Aktuální verze z 19. 4. 2022, 12:17
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