Skocz do zawartości

[MSSQL] Wykorzystanie urlopu

Polecane posty

Ok, po kolejnym przejrzeniu dokumentacji bazy danych i szukania po słowie "godzin", udało się znaleźć miejsce przechowywania:

SELECT SUM(secp.DniAbsencjiUrlopowej)
FROM ModelDanychContainer.SumaryczneECP AS secp
INNER JOIN ModelDanychContainer.UmowyPracownicze AS up ON up.Id=secp.Umowa_Id
WHERE up.Pracownik_Id=100488 AND YEAR(secp.Miesiac)=2018

 

Link to postu

I jeszcze kompleksowe podliczenie wszystkiego, gdyby ktoś potrzebował:

	
SELECT
wu.Rok
, FLOOR((wu.Wymiar/60/8)) AS Wymiar
, FLOOR((wu.Zalegly/60/8)) AS Zalegly
, FLOOR(((wu.Wymiar+wu.Zalegly)/60/8)) AS Razem
, (SELECT SUM(secp.DniAbsencjiUrlopowej) FROM ModelDanychContainer.SumaryczneECP AS secp INNER JOIN ModelDanychContainer.UmowyPracownicze AS up ON up.Id=secp.Umowa_Id WHERE up.Pracownik_Id=pr.Id AND YEAR(secp.Miesiac)=wu.Rok) AS Wykorzystany
, (FLOOR(((wu.Wymiar+wu.Zalegly)/60/8))-(SELECT SUM(secp.DniAbsencjiUrlopowej) FROM ModelDanychContainer.SumaryczneECP AS secp INNER JOIN ModelDanychContainer.UmowyPracownicze AS up ON up.Id=secp.Umowa_Id WHERE up.Pracownik_Id=pr.Id AND YEAR(secp.Miesiac)=wu.Rok)) AS Pozostaly
FROM ModelDanychContainer.WymiaryUrlopu AS wu
INNER JOIN ModelDanychContainer.DaneUrlopowe AS du ON du.Id=wu.DaneUrlopowe_Id
INNER JOIN ModelDanychContainer.PracownicyGr AS pgr ON pgr.Id=du.PracownikGr_Id
INNER JOIN ModelDanychContainer.Pracownicy AS pr ON pr.Id=pgr.Pracownik_Id
WHERE pr.Osoba_Id=100488 ORDER BY wu.Rok DESC;

 

Link to postu
  • 1 miesiąc temu...

Ok jednak wrócę do pytania, bo mam jeden problem w obliczeniach - chodzi o urlopy planowane, na późniejsze daty. Tablica SumaryczneECP posiada jedynie datę bieżących absencji o nie uwzględnia absencji np. z lipca, na którą jest już wypisany i wystawiony wniosek. Jak więc odpytać bazę danych, aby uzyskać liczby jak w GUI:

czasypracy.thumb.PNG.929a443ec9b4cee5e506ae442029352e.PNG

Link to postu

Wartość wykorzystanego urlopu w danym roku nie jest zapisywana w bazie. Program wylicza ją na bieżąco na podstawie kalendarza, wyjątków w planie pracy i wprowadzonych urlopów wypoczynkowych. Dlatego nie ma możliwości pobrania tej wartości bezpośrednio z bazy.

Obejściem problemu, który Pan napotkał może być wyliczenie wszystkich Sumarycznych ECP do końca roku. Przy wprowadzaniu urlopu, odpowiednia sumaryczna powinna się sama przeliczyć. Proszę jednak pamiętać, że pole DniAbsencjiUrlopowej zlicza wszystkie absencje urlopowe, a nie tylko urlopy wypoczynkowe. W dodatku ta metoda nie zadziała przy niestandardowych kalendarzach.

Na pocieszenie powiem, że w wersji 22 planujemy udostępnić w Sferze komponent umożliwiający wyliczenie wykorzystanego urlopu wypoczynkowego.

Link to postu
×
×
  • Dodaj nową pozycję...