Čistá mzda z původního a nového systému (kontrolní sestava pro duplicitu)

Z Prirucky

Čistá mzda z původního a nového systému (kontrolní sestava pro duplicitu)

Předpoklad

Předpokladem je dodání dat z původního systému ve tvaru:

  • os.číslo
  • k výplatě
  • sociální základ
  • měsíc
  • rok

Data mohou být např. v MS Excel.

Create tabulky

create table aa_mzdy (		
os_cislo decimal (10,0),
k_vyplate decimal (10,2),
soc_zakl decimal (10,2),
mesic smallint,
rok smallint
);		

Naplnění dat

Výše uvedenou tabulku je potřeba naplnit daty. Např. pomocí připravených sql příkazů.

Kontrolní sestava

Cista-mzda-z-původniho-a-noveho-systemu.png

Pozn. Os.č. 3,5,8 jsou obsaženy v původním i novém systému. Os.č. 10, 11 nejsou obsažena v novém systému. Os.č. 20156 a 21280 nejsou obsažena v původním systému.

Definice sestavy pro Generátor sestav II

select 
distinct X.os_cislo as os_cislo_puv,
A.os_cislo as os_cislo_ks,
A.prijmeni,
A.jmeno,
A.kmen_str,
(select skup_str from stred where str = A.kmen_str) as skup_str,

(select sum(k_vyplate) from aa_mzdy X1 where X1.os_cislo = X.os_cislo and
year(%DATUMOD%) = X1.rok and
month (%DATUMOD%) = X1.mesic
) as k_vypl_puv,

(select sum(castka) from pichacky P1 where P1.os_cislo = A.os_cislo and kod in (940, 941, 942) and P1.datum = %DATUMOD%) as k_940_1_2_ks,

((select sum(k_vyplate) from aa_mzdy X1 where X1.os_cislo = X.os_cislo and
year(%DATUMOD%) = X1.rok and
month (%DATUMOD%) = X1.mesic
)
-
(select sum(castka) from pichacky P1 where P1.os_cislo = A.os_cislo and kod in (941, 942) and P1.datum = %DATUMOD%)) as rozdil_1,

(select sum(soc_zakl) from aa_mzdy X2 where X2.os_cislo = X.os_cislo and
year(%DATUMOD%) = X2.rok and
month (%DATUMOD%) = X2.mesic
) as soc_zakl_puv,

(select sum(soc_zakl) from telegram T1 where T1.os_cislo = A.os_cislo and T1.datum = %DATUMOD%) as soc_zakl_ks,

((select sum(soc_zakl) from aa_mzdy X2 where X2.os_cislo = X.os_cislo and
year(%DATUMOD%) = X2.rok and
month (%DATUMOD%) = X2.mesic
)
-
(select sum(soc_zakl) from telegram T1 where T1.os_cislo = A.os_cislo and T1.datum = %DATUMOD%)) as rozdil_2

from pracovnici A full join aa_mzdy X on A.os_cislo = X.os_cislo

Pro Oracle: select distinct X.os_cislo as os_cislo_puv, A.os_cislo as os_cislo_ks, A.prijmeni, A.jmeno,

(select sum(k_vyplate) from aa_mzdy X1 where X1.os_cislo = X.os_cislo and TO_NUMBER(substr (%DATUMOD%, 1,4)) = X1.rok and TO_NUMBER(substr (%DATUMOD%, 6,2)) = X1.mesic ) as k_vypl_puv,

(select sum(castka) from pichacky P1 where P1.os_cislo = A.os_cislo and kod in (941, 942) and P1.datum = %DATUMOD%) as k_941_942_ks,

((select sum(k_vyplate) from aa_mzdy X1 where X1.os_cislo = X.os_cislo and TO_NUMBER(substr (%DATUMOD%, 1,4)) = X1.rok and TO_NUMBER(substr (%DATUMOD%, 6,2)) = X1.mesic ) - (select sum(castka) from pichacky P1 where P1.os_cislo = A.os_cislo and kod kod in (941, 942) and P1.datum = %DATUMOD%)) as rozdil_1,

(select sum(soc_zakl) from aa_mzdy X2 where X2.os_cislo = X.os_cislo and TO_NUMBER(substr (%DATUMOD%, 1,4)) = X2.rok and TO_NUMBER(substr (%DATUMOD%, 6,2)) = X2.mesic ) as soc_zakl_puv,

(select sum(soc_zakl) from telegram T1 where T1.os_cislo = A.os_cislo and T1.datum = %DATUMOD%) as soc_zakl_ks,

((select sum(soc_zakl) from aa_mzdy X2 where X2.os_cislo = X.os_cislo and TO_NUMBER(substr (%DATUMOD%, 1,4)) = X2.rok and TO_NUMBER(substr (%DATUMOD%, 6,2)) = X2.mesic ) - (select sum(soc_zakl) from telegram T1 where T1.os_cislo = A.os_cislo and T1.datum = %DATUMOD%)) as rozdil_2

from pracovnici A full join aa_mzdy X on A.os_cislo = X.os_cislo

Historická verze: select A.os_cislo, A.prijmeni, A.jmeno, X.k_vyplate as k_vypl_puv, sum(P.castka) as k_vypl_ks, (X.k_vyplate - sum(P.castka)) as rozdil, X.soc_zakl as soc_zakl_puv, T.soc_zakl as soc_zakl_ks, (X.soc_zakl - T.soc_zakl) as rozdil from pracovnici A, aa_mzdy X, pichacky P, telegram T where A.os_cislo = X.os_cislo and A.os_cislo = P.os_cislo and A.os_cislo = T.os_cislo and P.kod = 941 and P.datum = %DATUMOD% and T.datum = %DATUMOD% and year (%DATUMOD%) = X.rok and month (%DATUMOD%) = X.mesic group by A.os_cislo, A.prijmeni, A.jmeno, X.k_vyplate, X.soc_zakl, T.soc_zakl

Smazání

Až pominou důvody použití, je potřeba provést

  • smazání definice v Generátoru sestav
  • smazání db tabulky vč. dat z původního systému - v menu Systém/SQL prompt, příkaz
drop table aa_mzdy;

Odkazy