Instrukcja administratora > Załączniki > Funkcje i procedury składowane

Drukuj

Funkcje i procedury składowane

W bazie danych dostępne są następujące funkcje, ułatwiające pobranie danych przy budowaniu własnych raportów SQL. Przykładowe wykorzystanie funkcji można zobaczyć, pobierając gotowe raporty SQL z internetu - patrz Pobieranie raportów SQL.

Funkcje pobierające dane z kart pracy:

fn_KP_NDP(X_IHistorii, Dzien, Mies, Rok) - rodzaj nominalnego dnia pracy, zwraca: 3-dzień pracy, 2-sobota, 1-niedziela, 23-sobota z dnia pracy, 13-niedziela z dnia pracy, 32-dzień pracy z soboty, 31-dzień pracy z niedzieli

fn_KP_SumNDP(NumNDP, X_IHistorii, Mies, Rok) - suma nominalnych dni danego rodzaju, zadajemy NumNDP: 30-wszystkie dni pracy, 20-wszystkie soboty, 10-wszystkie niedziele, 0-wszystkie dni (lub szczególowo wartości, jakie zwraca fn_KP_NDP)

fn_KP_SumKal(X_IKalendarza,Mies,Rok,What) - suma nominalnych dni bezpośrednio z kalendarza, w zależności od What zwraca: 0-nominalne godziny pacy, 1-nominalne dni pracy, 2-ilość sobót, 3-ilość niedziel i świąt

fn_KP_DP(X_IHistorii, Dzien, Mies, Rok) - rodzaj (numer) dnia pracy, zwraca:

o0 - niewypełniony

o1 - wolny (sobota lub niedziela)

o2 - Dp (dni pracy)

o3 - De (delegacje)

o4 - Ch (chorobowe)

o5 - Cs (chorobowe 100%)

o6 - Cw (chorobowe wypadkowe)

o7 - Rh (rehabilitacja i reh.100%)

o8 - Rw (rehabilitacja wyp.)

o9 - Op (opieka n.dzieckiem)

o10 - On (opieka inne)

o11 - Ma (macierzyński i ojcowski)

o12 - Uw (urlop wypoczynkowy)

o13 - Uo (urlop okolicznościowy)

o14 - Un (urlop n.dzieckiem)

o15 - Ud (urlop dodatkowy)

o16 - Np (nieobecność płatna)

o17 - Wu (urlop wychowawczy)

o18 - Bu (urlop bezpłatny)

o19 - Nu (nieobecność uspr.)

o20 - Nn (nieobecność nieuspr.)

o21 - Sw (służba wojskowa)

o23 - Cp (chorobowe szpitalne)

o24 - Uc (urlop wypoczynkowy limitowany)

o25 - Cn (chorobowe niepłatne inne i z tyt.nienabycia prawa do zas.)

o26 - Us (urlop szkoleniowy)

o27 - Ur (urlop rehabilitacyjny)

o40 - Praca zdalna hybrydowa

o41 - Praca zdalna polecona

o42 - Praca zdalna okazjonalna

o99 - dni nieobjęte umową

fn_KP_SumDP(NumDP, NumNDP, X_IHistorii, Mies, Rok) - suma dni pracy danego rodzaju, zadajemy:

oNumDP - numer rodzaju dnia, zgodnie z wartościami, jakie zwraca fn_KP_DP, dodatkowo dla -1 zwróci sumę nominałów (jak fn_KP_SumNDP) oraz dodatkowo szczegółowe rodzaje dni z karty zasiłkowej:

100 - wynagr.za czas choroby 80% / chorobowe szputalne

101 - wynagr.za czas choroby 100%

102 - wynagr.za czas choroby 100% wypadkowe

103 - zasiłek chorobowy 80%

104 - zasiłek chorobowy 100%

105 - zasiłek chorobowy 100% wypadkowe / zasiłek chorobowy 100%

106 - świadczenie rehabilitacyjne

107 - świadczenie rehabilitacyjne wypadkowe

108 - opieka nad dzieckiem  / opieka nad dzieckiem dod.

109 - opieka inne

110 - zasiłek macierzyński / dodatkowy macierzyńśki / ojcowski / rodzicielski 100%

111 - zasiłek chorobowy 70%

112 - niepłatny

113 - świadczenie rehabilitacyjne 75%

114 - świadczenie rehabilitacyjne 100%

115 - rodzicielski 60%

116 - zasiłek macierzyński 80% / dodatkowy macierzyński 80% / rodzicielski 80%

117 - zagraniczny

118 - zagraniczny wypadek

119 - rodzicielski 70%

120 - zasiłek macierzyński 81,5% / rodzicielski 81,5%

oraz dodatkowe wpisy z ewidencji pracy zdalnej:

200 - praca zdalna (przy wypełnionej karcie pracy)

oNumNDP: 30-wszystkie dni pracy, 20-wszystkie soboty, 10-wszystkie niedziele, 0-wszystkie dni (lub szczególowo wartości, jakie zwraca fn_KP_NDP)

fn_KP_SumDPx(NumDP, NumNDP, X_IHistorii, Od, Do) - funkcja analogiczna do fn_KP_SumDP, tylko w parametrach możmy podać dowolny okres (daty Od Do), nie koniecznie obejmujący jeden miesiąc

fn_KP_SumDGP(NumDP, NumNDP, X_IHistorii, Mies, Rok) - suma dni pracy w godzinach, parametry analogiczne jak w funkcji fn_KP_SumDP

fn_KP_NGP(X_IHistorii, Dzien, Mies, Rok) - ilość nominalnych godzin pracy w danym dniu

fn_KP_SumNGP(X_IHistorii, Mies, Rok) - suma nominalnych godzin pracy w danym miesiącu

fn_KP_GP(NumGodz, X_IHistorii, Dzien, Mies, Rok) - ilość godzin pracy w danym dniu, zadajemy Num_godz jako numer godzin w kartcie pracy, czyli: 2-Godz.pracy, 3-Godz.nadl.50%, 4-Godz.nadl.100%, 5...-kolejne z definicji składników karty pracy, 101-Godz.pracy.fakt., 102-Godz.50%fakt, 103-Godz.100%fakt

fn_KP_SumGP(NumGodz, Dod, X_IHistorii, Mies, Rok) - suma godzin pracy w danym miesiącu, zadajemy:

oNum_godz - numer godzin w kartcie pracy, czyli: 2-Godz.pracy, 3-Godz.nadl.50%, 4-Godz.nadl.100%, 5...-kolejne z definicji składników karty pracy, 101-Godz.pracy.fakt., 102-Godz.50%fakt, 103-Godz.100%fakt

oDod - 0-sumowane są godziny dodatnie i ujemne, 1-sumowane tylko dodatnie, 2-sumowane tylko ujemne

fn_KP_NarGP(NumGodz,X_IHistorii,Mies,Rok) - narastająco suma godzin pracy do danego miesiąca, zadajemy Num_godz analogicznie jak przy funkcji fn_KP_SumGP

fn_KP_NarGZ(NumGodz,X_IHistorii,Mies,Rok) - narastająco suma godzin zapłaconych do danego miesiąca, zadajemy Num_godz jako: 102-Godz.50%fakt, 103-Godz.100%fakt (patrz Miesięczna karta pracy - Godziny do odpracowania)

fn_KP_NarGB(NumGodz,X_IHistorii, Mies, Rok) - narastająco suma godzin zbilansowanych do danego miesiąca, zadajemy Num_godz jako: 102-Godz.50%fakt, 103-Godz.100%fakt

Funkcje pobierające dane z ewidencji różnych nieobecności (kart urlopowych, kart zasiłkowych, nieobecności):

fn_IsNieobExt(Szczeg, X_IHistorii, Dzien, Mies, Rok) - rodzaj (numer) dnia pracy, zwraca:

odla Szczeg=0:

4 - Ch (chorobowe)

5 - Cs (chorobowe 100%)

6 - Cw (chorobowe wypadkowe)

7 - Rh (rehabilitacja i reh.100%)

8 - Rw (rehabilitacja wyp.)

9 - Op (opieka n.dzieckiem)

10 - On (opieka inne)

11 - Ma (macierzyński i ojcowski)

12 - Uw (urlop wypoczynkowy)

13 - Uo (urlop okolicznościowy)

14 - Un (urlop n.dzieckiem)

15 - Ud (urlop dodatkowy)

16 - Np (nieobecność płatna)

17 - Wu (urlop wychowawczy)

18 - Bu (urlop bezpłatny)

19 - Nu (nieobecność uspr.)

20 - Nn (nieobecność nieuspr.)

21 - Sw (służba wojskowa)

23 - Cp (chorobowe szpitalne)

24 - Uc (urlop wypoczynkowy limitowany)

25 - Cn (chorobowe niepłatne inne i z tyt.nienabycia prawa do zas.)

26 - Us (urlop szkoleniowy)

27 - Ur (urlop rehabilitacyjny)

odla Szczeg=1:

100 - wynagr.za czas choroby 80%

101 - wynagr.za czas choroby 100%

102 - wynagr.za czas choroby 100% wypadkowe

103 - zasiłek chorobowy 80%

104 - zasiłek chorobowy 100%

105 - zasiłek chorobowy 100% wypadkowe

106 - świadczenie rehabilitacyjne

107 - świadczenie rehabilitacyjne wypadkowe

108 - zasiłek opiekuńczy nad dzieckiem 80%

109 - zasiłek opiekuńczy inne 80%

110 - zasiłek macierzyński 100% / rodzicielski 100%

111 - zasiłek chorobowy 70%

112 - niepłatny

115 - zasiłek macierzyński 60%

116 - zasiłek macierzyński 80% / zasiłek dod.macierzyński 80%

119 - rodzicielski 70%

120 - zasiłek macierzyński 81,5% / rodzicielski 81,5%

17 - urlop wychowawczy

18 - urlop bezpłatny

19 - nieobecność uspr.

20 - nieobecność nieuspr.

21 - służba wojskowa

200 - urlop wypoczynkowy

201 - urlop okolicznościowy

202 - urlop opieka nad dzieckiem

203 - urlop dodatkowy

204 - nieobecność płatna

205 - urlop wyp.na żądanie

206 - ekwiwalent za url.wypocz.

207 - urlop szkoleniowy

208 - ekwiwlaent za url.dod.

209 - nioeobecność płatna (uw)

210 - urlop rehabilitacyjny

211 - nieobecność płatna (ekw)

Funkcje pobierające dane z umów o pracę:

fn_ANG_Zatr(Zatr, Etat, X_IHistorii, Dzien, Mies, Rok) - zwraca informację o zatrudnieniu pracownika w danym dni w ilości (Etat=0) lub w etacie pracownika (Etat=1), w zależności od Zatr: 0 - w całym okresie zatrudnienia, 1 - tylko w pierwszym dniu pracy, -1 - tylko w ostatnim dniu pracy

fn_ANG_SrZatr(Zatr, Etat, X_IHistorii, Mies, Rok) - średnie zatrudnieniu w zadanym miesiącu (Zatr=0) albo ilość zatrudnionych pracowników w miesiącu (Zatr=1) lub zwolnionych (Zatr=-1), w zależności od Etat: 0 - w ilościach pracowników, 1 - w etatach

fn_ANG_Skl(War,Nazwa, X_IUmowy) - wartości zadana (War=0) lub wyliczona (War=1) składnika wynagrodzeń (Nazwa) z umowy o pracę o identyfikatorze (X_IUmowy)

Funkcje pobierające dane z list płac:

fn_LP_DSkl(Nazwa, X_IHistorii,Od,Do) - suma wybranego składnika wynagrodzeń za podany okres, obejmujący daty wypłaty list płac, zadajemy: Nazwa - nazwa składnika wynagrodzeń, Od, Do - listy wypłacone w okresie

fn_LP_WSkl(Nazwa, X_IHistorii,Od,Do) - suma składnika Nazwa obejmująca listy płac z podanego Od, Do okresu wynagrodzeń

fn_LP_KSkl(Nazwa, X_IHistorii,Od,Do) - suma składnika wynagrodzeń za podane okresy z kartoteki listy płac

fn_LP_DSys(Nazwa, X_IHistorii,Od,Do) - suma wybranego pola systemowego za podany okres, obejmujący daty wypłaty list płac, zadajemy: Nazwa - nazwa składnika wynagrodzeń, Od, Do - listy wypłacone w okresie

fn_LP_WSys(Nazwa, X_IHistorii,Od,Do) - suma pola Nazwa obejmująca listy płac z podanego Od, Do okresu wynagrodzeń

fn_LP_KSys(Nazwa, X_IHistorii,Od,Do) - suma pola systemowego za podane okresy z kartoteki listy płac

fn_LP_Skl(War,Okres,Nazwa, X_IHistorii,Od,Do) - suma wartości zadanej (War=0) lub wartości wyliczonej (War=1) składnika wynagrodzeń (Nazwa) za podany okres (Od, Do), obejmujący w zależności od paramatru Okres: 0-datę wypłaty listy, 1-okres wynagrodzeń, 2-miesiąc kartoteki

Funkcje dodatkowe:

fn_BDate(Mc,Rok) - zwraca datę pierwszego dnia miesiąca

fn_EDate(Mc,Rok) - zwraca datę ostatniego dnia miesiąca

fn_X_IDzial(X_IHistorii,Data) - zwraca identyfikator działu pracownika zapamiętany na dany dzień (Data), jeśli Data=0 to zwróci aktualny identyfikator działu

fn_X_IOddzial(X_IHistorii,Data) - przy rozszerzonej strukturze działów zwraca identyfikator oddziału pracownika zapamiętany na dany dzień

fn_X_IZespol(X_IHistorii,Data) - przy rozszerzonej strukturze działów zwraca identyfikator zespołu pracownika zapamiętany na dany dzień

fn_Przelozony(X_IHistorii,poziom,mod) - zwracja dane przełożonego w zależności od poziomu:

o0-dane pracownika

o1-bezpośredni przełożony (a jak brak to dane kierownik działu)

o2-przełożony przełożonego (a jak brak to dane kierownika działu przełożonego)

dla mod:

o0 - e-mail z aktualnego zatrudnienia, a jak brak to z adresu do korespondencji

o1 - nazwisko i imię

o2 - hierarchia: pracownik/przełożony/kierownik działu

o3 - hierarchia2: pracownika/przełożonego/kierownika działu

o4 - nazwisko i imię (e-mail)

o5 - nazwisko i imię (hierarchia)

o6 - hierarchia2 (nazwisko i imię)

o7 - hierarchia2 (e-mail)

Dodatkowe funkcje w bazie BIN:

<BIN>.fn_Kod(Tabela,Pole,Wartość) - tekstowy opis zawartości pola o nazwiePole z tabeli o nazwie Tabela, które w bazie ma wartość wyliczeniową Wartość (smallint)

<BIN>.fn_Podsw(Podsw, X_I, X_P, UserIde, FormName) - funkcja przydatna przy własnym raporcie SQL do wstawienia opcji na podświetlone pozycje w tabeli, np. pracowników:
select p.Nazwisko,p.Imie
FROM PRACOWNK p
WHERE <BIN>.fn_Podsw(p.X_I,p.X_P,<USERIDE>,'PracownikT')=1

Przykładowe zapytanie, wykorzystujące funkcję (mającą w parametrze X_IHistorii) i zwracające jej wartość dla listy pracowników:

SELECT p.Nazwisko, p.Imie, d.Nazwa as 'Dział', h.AzNazwa,

dbo.fn_LP_DSkl('Płaca zasadnicza', h.X_I, '2007-01-01', '2007-12-31') as 'Płaca zasadnicza'

dbo.fn_KP_SumDPx(2,30,h.X_I,'2007-01-01','2007-12-31') as 'Dni przepracowane'

FROM HISTORIA h

JOIN PRACOWNK p ON p.X_I = h.X_IPracownik

JOIN DZIAL d ON d.X_I = h.X_IDzial

WHERE (h.AktZatrudnienie = 1)

Funkcje można wykorzystać przy budowaniu własnych raportów - patrz Moduł raportów SQL.

W bazie danych dostępne są również następujące procedury:

Nieobecnosci X_IHistorii procedura zwraca tabelę zawierającą wszystkie nieobecności pracownika o podanym numerze aktualnego zatrudnienia (X_IHistorii), dla numeru 0 tabela zawierać będzie nieobecności wszystkich pracowników, tabela zawiera następujące kolumny: X_IHistorii, Od, Do, Rodzaj