Překročení maxima vyměřovacího základu pro sociální pojištění (sestava)

Z Prirucky

Překročení maxima vyměřovacího základu pro sociální pojištění (sestava)

Požadavkem je zobrazení

  • zaměstnanců, kteří v daném roce překročili vyměřovací základ a
  • období, kdy k tomu došlo.
Období od: první měsíc roku
Období do: poslední měsíc roku

První sestava uvádí každého zaměstnance jednou, druhá vícekrát (včetně následujících měsíců).

První období

Prekroceni-maxima-vymerovaciho-zakladu-soc-poj.png

Pozn. Proti obrázku přidána ještě tři pole: B.soc_zakl, B.soc_zakl_x, B.soc_uhrn_vz

select A.os_cislo, A.prijmeni, A.jmeno, B.soc_zakl, B.soc_zakl_x, B.soc_uhrn_vz, B.soc_uhrn_vz_x, 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null)) as max_vz_socpoj,

B.soc_uhrn_vz_x - 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null))
as rozdil, 

B.datum from 
pracovnici A, telegram B
where
A.os_cislo = B.os_cislo and

B.datum >= %DATUMOD% and B.datum <= %DATUMDO% and
B.soc_uhrn_vz_x > 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null))
and
B.datum =

(select min(C.datum) from telegram C 
where B.os_cislo = C.os_cislo and 
C.soc_uhrn_vz_x > 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null))

and C.datum >=  %DATUMOD% and C.datum <= %DATUMDO%)

order by A.os_cislo, B.datum

I následující období

Prekroceni-maxima-vymerovaciho-zakladu-soc-poj-i-dale.png

select A.os_cislo, A.prijmeni, A.jmeno, B.soc_uhrn_vz_x, 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null)) as max_vz_socpoj,

B.soc_uhrn_vz_x - 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null))
as rozdil, 

B.datum from 
pracovnici A, telegram B
where
A.os_cislo = B.os_cislo and

B.datum >= %DATUMOD% and B.datum <= %DATUMDO% and
B.soc_uhrn_vz_x > 
(select hodnota from e_param where polozka = 'max_vz_socpoj' and plati_od <= %DATUMOD% 
and 
(plati_do >= %DATUMOD% or plati_do is null))
 
order by A.os_cislo, B.datum

Odkazy