Radomił Ząbik 308 Napisano 16 Sierpnia 2021 Udostępnij Napisano 16 Sierpnia 2021 w [Sfera] Absencja na godziny Czy dobrze rozumuję, że jeśli chciałbym Sferycznie wprowadzić absencję, w ilości dwóch godzin, wybranego dnia, to wystarczy, że w poniższym kodzie zrobię 08:00:00,000 do 10:00:00,000? Czy Sfera/NEXO waliduje użycie danego dnia godzin w tym samym zakresie - tu pytanie, czy muszę pilnować dokładnie godzin, czy mogę po prostu wprowadzać je codziennie od 8, nawet po kilka razy? // okres string okresod = results.from+" 07:00:00,000"; string okresdo = results.to+" 07:00:00,000"; DateTime dataOkresuOd = DateTime.ParseExact(okresod,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture); DateTime dataOkresuDo = DateTime.ParseExact(okresdo,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture); urlop.DlaOkresu(new OkresWymagany(){DataPoczatkowa = dataOkresuOd,DataKoncowa = dataOkresuDo}); Link to postu
Łukasz Gniazdowski 37 Napisano 16 Sierpnia 2021 Udostępnij Napisano 16 Sierpnia 2021 w [Sfera] Absencja na godziny Absencje na część dnia dodaje się trochę inaczej. Tak jak przy zwykłej absencji, w pierwszej kolejności należy ustawić dane pracownika, typ oraz okres absencji (w tym przypadku jeden dzień). Przy ustawianiu okresu nie ustawiamy części godzinowej. Dla programu nie ma ona znaczenia i zostanie ucięta. Następnie można oznaczyć absencję jako "na część dnia" w poniższy sposób: var naCzescDnia = new NaCzescDnia(); zapisWECP.Dane.Absencja.NaCzesciDnia.Add(naCzescDnia); naCzescDnia.Umowa = zapisWECP.Dane.Umowy.FirstOrDefault(); naCzescDnia.GodzinAbsencji.Ticks = TimeSpan.FromHours(2).Ticks; // W przypadku godzin nocnych dodatkowo: // naCzescDnia.GodzinAbsencjiNocne.Ticks = TimeSpan.FromHours(2).Ticks; Jeśli absencja powiązana jest z kilkoma umowami równoległymi, to do kolekcji NaCzesciDnia należy dodać osobną pozycję dla każdej z tych umów. 2 godziny temu, Radomił Ząbik napisał: Czy Sfera/NEXO waliduje użycie danego dnia godzin w tym samym zakresie - tu pytanie, czy muszę pilnować dokładnie godzin, czy mogę po prostu wprowadzać je codziennie od 8, nawet po kilka razy? Nie da się wprowadzić dwóch absencji powiązanych z tą samą umową tego samego dnia nawet jeśli zostaną one oznaczone jako "na część dnia". 1 Link to postu
Radomił Ząbik 308 Napisano 16 Sierpnia 2021 Autor Udostępnij Napisano 16 Sierpnia 2021 w [Sfera] Absencja na godziny Tak jeszcze dla pewności, z tablicy NaCzesciDnia, właściwe godziny z kolumny GodzinAbsencji_Ticks odczytujemy tak? SELECT *, (GodzinAbsencji_Ticks / 10000000 / 3600 ) [Godziny] FROM ModelDanychContainer.NaCzesciDnia Link to postu
Łukasz Gniazdowski 37 Napisano 17 Sierpnia 2021 Udostępnij Napisano 17 Sierpnia 2021 w [Sfera] Absencja na godziny 12 godzin temu, Radomił Ząbik napisał: Tak jeszcze dla pewności, z tablicy NaCzesciDnia, właściwe godziny z kolumny GodzinAbsencji_Ticks odczytujemy tak? SELECT *, (GodzinAbsencji_Ticks / 10000000 / 3600 ) [Godziny] FROM ModelDanychContainer.NaCzesciDnia Dokładnie tak. Link to postu
Radomił Ząbik 308 Napisano 17 Sierpnia 2021 Autor Udostępnij Napisano 17 Sierpnia 2021 w [Sfera] Absencja na godziny No dobra, niestety nie poszło tak łatwo Niestety, nie udało mi się dodać urlopu, otrzymuję taki błąd: Cytat Błąd podczas wprowadzania wniosku o urlop: Absencję na część dnia można ustawić tylko dla absencji urlopowej. na polach: Absencja.NaCzesciDnia Nie ustawiono powiązanego obiektu. na polach: NaCzescDnia.Umowa Rodzaj absencji, to Opieka nad zdrowym dzieckiem, a absencja jest dodawana z niepotwierdzonym statusem - potem Sferycznie, jak już przełożony zatwierdzi, zmieniamy status. Podejrzewałbym ten status, ale w razie czego, wrzucam cały kod odpowiedzialny u nas za absencje: IZapisyWECP zapisyWECP = sfera.PodajObiektTypu<IZapisyWECP>(); IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>(); ITypyAbsencji typyAbsencji = sfera.PodajObiektTypu<ITypyAbsencji>(); using (var urlop = zapisyWECP.Utworz()) { // typ absencji int typabsencji; typabsencji = results.type; urlop.Dane.Typ = (byte)TypZapisuWECP.Absencja; var absencja = urlop.Dane.Absencja; absencja.Typ = typyAbsencji.Dane.Wszystkie().FirstOrDefault(x => x.Id == typabsencji); urlop.Dane.Absencja.Status = 0; // ustawienie statusu absencji // pracownik int osoba; osoba = results.person; var pracownik = podmioty.Dane.WszyscyPracownicy().FirstOrDefault(x => x.Osoba.Id == osoba); if(pracownik!=null) urlop.DlaPracownika = pracownik.Osoba.Pracownik; Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Tworzenie wniosku urlopowego: "+pracownik.Osoba.Imie+" "+pracownik.Osoba.Nazwisko); // okres string okresod = results.from+" 07:00:00,000"; string okresdo = results.to+" 07:00:00,000"; DateTime dataOkresuOd = DateTime.ParseExact(okresod,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture); DateTime dataOkresuDo = DateTime.ParseExact(okresdo,"yyyy-MM-dd HH:mm:ss,fff",System.Globalization.CultureInfo.InvariantCulture); urlop.DlaOkresu(new OkresWymagany(){DataPoczatkowa = dataOkresuOd,DataKoncowa = dataOkresuDo}); Console.WriteLine("Okres: "+okresod+" - "+okresdo); // na godziny if(results.hours!=null) { int godziny = results.hours; var naCzescDnia = new NaCzescDnia(); urlop.Dane.Absencja.NaCzesciDnia.Add(naCzescDnia); naCzescDnia.Umowa = urlop.Dane.Umowy.FirstOrDefault(); naCzescDnia.GodzinAbsencji.Ticks = TimeSpan.FromHours(godziny).Ticks; Console.WriteLine("Godzinowa: "+godziny); } // opis urlop.Dane.Opis = results.comment; // zapisanie if(urlop.Zapisz()) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Wprowadzono wniosek: "+urlop.Dane.Pracownik.Osoba.Imie+" "+urlop.Dane.Pracownik.Osoba.Nazwisko); response = "{ \"id\":\""+urlop.Dane.Id+"\" }"; } else { Globals.errors = ""; urlop.WypiszBledy(); Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Błąd podczas wprowadzania wniosku o urlop: "+Globals.errors); response = "{ \"error\":\""+Globals.errors+"\" }"; } } Link to postu
Łukasz Gniazdowski 37 Napisano 17 Sierpnia 2021 Udostępnij Napisano 17 Sierpnia 2021 w [Sfera] Absencja na godziny 13 minut temu, Radomił Ząbik napisał: Rodzaj absencji, to Opieka nad zdrowym dzieckiem, a absencja jest dodawana z niepotwierdzonym statusem - potem Sferycznie, jak już przełożony zatwierdzi, zmieniamy status. Podejrzewałbym ten status, ale w razie czego, wrzucam cały kod odpowiedzialny u nas za absencje: Ma Pan rację, problemem jest status. Absencję na część dnia można ustawić tylko na zatwierdzonych absencjach urlopowych. Skoro status również zmieniany jest sferycznie, to może można by dopiero przy zatwierdzaniu wypełniać kolekcję NaCzesciDnia, a w przypadku niezatwierdzonych absencji trzymać tę liczbę godzin np. w polu własnym? Link to postu
Radomił Ząbik 308 Napisano 17 Sierpnia 2021 Autor Udostępnij Napisano 17 Sierpnia 2021 w [Sfera] Absencja na godziny No generalnie całość dodawania godzin, miała służyć temu, aby uniknąć właśnie błędów w przypisywaniu tych godzin, które do tej pory były wpisywane w uwagach. 90% urlopów jest potwierdzanych z poziomu kierownika, przez nasz system i tam rzeczywiście będę musiał się oprzeć o pole własne. Niestety, te ręcznie zatwierdzane przez Kadry w Gratyfikancie, tego nie obsłużą, więc tam będę musiał coś wymyśleć - ale wersja a pole własnym, załatwi wstępnie i to, bo mam wtedy kolumnę, którą mogę użyć do formatowania, aby kadrowa widziała to w jakimś innym kolorze. Link to postu
Łukasz Gniazdowski 37 Napisano 17 Sierpnia 2021 Udostępnij Napisano 17 Sierpnia 2021 w [Sfera] Absencja na godziny Rozumiem, teraz mam obraz całej sytuacji. Wersja z polem własnym wydaje się w tej chwili najlepszą opcją. Zapiszę sugestię, żeby udostępnić możliwość wprowadzania godzin absencji na część dnia w niezatwierdzonym urlopie, ale na razie nic nie mogę obiecać. 1 Link to postu
Radomił Ząbik 308 Napisano 17 Sierpnia 2021 Autor Udostępnij Napisano 17 Sierpnia 2021 w [Sfera] Absencja na godziny No póki co, lecę na polu własnym, poszła już wersja na produkcje, wyjdzie pewnie w życiu, ale gorzej niż teraz nie będzie Link to postu
Polecane posty