Skocz do zawartości
Forum użytkowników

Krzysztof W.

InsERT
  • Ilość treści

    16
  • Rejestracja

Reputacja

1 Neutral

O Krzysztof W.

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Jak pisałem wcześniej:) czyli: zapisWECP.DlaPracownika = pracownik.Osoba.Pracownik; zapisWECP.Dane.Wyjatek.Szczegoly.Clear(); zapisWECP.Dane.Wyjatek.Szczegoly.Add(dzienSzczegoly); Pracownika należy ustawić na początku. Przy jego ustawianiu pobierane są wartości/parametry planu pracy na dany dzień i wpisywane jako domyślne dla zmiany w planie pracy. No i później te dane można edytować. Ustawienie wpierw wartości a później pracownika nic nie da bo ustawienie pracownika przywróci właśnie te wartości domyślne.
  2. Ten błąd mówi że wprowadzono już godziny szczegółowe, które pokrywają się z tymi nowymi (mogą częściowo) Pewnie dla pracownika w danym dniu prowadzony jest kalendarz ze szczegółowym planem i po podstawieniu daty domyślnie do wyjątku dodają się te godziny szczegóły z planu pracy. Przed dodaniem pierwszego szczegółu trzeba by usunąć istniejące.
  3. Faktycznie, ZapisWECP.Dane.Wyjatek nie ma właściwości DzienSzczegoly. Ma jednak Szczegoly => ZapisWECP.Dane.Wyjatek.Szczegoly , która jest kolekcją elementów typu DzienSzczegoly. Szczegóły w zmianie planu pracy można dodać w następujący sposób: //W kodzie z wcześniejszego przykładu: //Zamiast: zapisWECP.Dane.Wyjatek.DoPrzepracowania.Ticks = TimeSpan.FromHours(10).Ticks; //Wpisać var dzienSzczegoly = new DzienSzczegoly(); dzienSzczegoly.Poczatek = TimeSpan.FromHours(16).Ticks; dzienSzczegoly.Koniec = TimeSpan.FromHours(4).Ticks; dzienSzczegoly.TypOkresu = (byte)TypOkresuGodzinSzczegolowych.DwaDni; zapisWECP.Dane.Wyjatek.Szczegoly.Add(dzienSzczegoly); Należy mieć na uwadze, że dodanie każdego dzienSzczegoly do kolekcji Szczegoly przeliczy godziny rozpoczęcia i zakończenia pracy, oraz łączną liczbę godzin do przepracowania. Jeżeli istnieje potrzeba "rozjechania" tych wartości to zapisWECP.Dane.Wyjatek.DoPrzepracowania.Ticks należy ustawić po dodaniu ostatniego dzienSzczegoly
  4. Zakładam że wykorzystuje Pan metodę UstawGodziny() dla ustawienia 'zmian w godzinach przepracowanych' i pyta czy istnieje podobna metoda do ustawienia 'zmiany w planie pracy'. Metody takiej nie ma. Liczbę godzin do przepracowania ustawia się bezpośrednio w obiekcie. Przykład metody dodającej zmianę w planie pracy poniżej: public void DodanieZmianyWPlaniePracy() { using ( var sfera = UruchomSfere() ) { IZapisyWECP zapisyWECP = sfera.PodajObiektTypu<IZapisyWECP>(); IPodmioty podmioty = sfera.PodajObiektTypu<IPodmioty>(); using ( var zapisWECP = zapisyWECP.Utworz() ) { zapisWECP.Dane.Typ = (byte)TypZapisuWECP.Wyjatek; var podmiotPracownika = podmioty.Dane.WszyscyPracownicy().FirstOrDefault(x => x.Osoba.Nazwisko == "Skoliworczyński"); if ( podmiotPracownika != null ) zapisWECP.DlaPracownika = podmiotPracownika.Osoba.Pracownik; var dzien = new DateTime(2016, 9, 29); zapisWECP.DlaOkresu(new OkresWymagany() { DataPoczatkowa = dzien, DataKoncowa = dzien }); zapisWECP.Dane.Wyjatek.DoPrzepracowania.Ticks = TimeSpan.FromHours(10).Ticks; if ( !zapisWECP.Zapisz() ) zapisWECP.WypiszBledy(); } } }
  5. Poniżej przykład utworzenia nowego planu pracy: public void DodaniePlanuPracy() { using ( var sfera = UruchomSfere() ) { IKalendarze kalendarze = sfera.PodajObiektTypu<IKalendarze>(); ISystemyRozliczaniaCzasuPracy systemyRozliczaniaCzasuPracy = sfera.PodajObiektTypu<ISystemyRozliczaniaCzasuPracy>(); using ( var kalendarzBO = kalendarze.Utworz() ) { var systemRozliczaniaCzasuPracy = systemyRozliczaniaCzasuPracy.Dane.Wszystkie().FirstOrDefault(x => x.Domyslny); kalendarzBO.Dane.SystemRozliczaniaCzasuPracy = systemRozliczaniaCzasuPracy; kalendarzBO.Dane.Nazwa = "Mój kalendarz"; var cykl = new CyklKalendarza(); kalendarzBO.Dane.Cykle.Add(cykl); cykl.ObowiazujeOd = DateTime.Now.Date.PoczatekTygodnia(); cykl.WyjatkiUstawowe = true; DzienCyklu dzienCyklu = null; //wpisanie 5 dni roboczych cyklu for ( int i = 0; i < 5; i++ ) { dzienCyklu = new DzienCyklu(); cykl.Dni.Add(dzienCyklu); dzienCyklu.Lp = i; dzienCyklu.TypDnia = (byte)TypDnia.Roboczy; //po podaniu typu dnia jako roboczy liczba godzin do przepracowania ustawi się automatycznie na liczbę zgodną z wymiarem dobowego pełnego zatrudnienia //ale można ją ustawić samodzielnie dzienCyklu.DoPrzepracowania = new CzasTrwaniaWymagany() { Ticks = new TimeSpan(8, 0, 0).Ticks }; dzienCyklu.DoPrzepracowaniaNocne = new CzasTrwaniaWymagany() { Ticks = new TimeSpan(0, 0, 0).Ticks }; dzienCyklu.Opis = ""; } //wpisanie wolnej soboty dzienCyklu = new DzienCyklu(); cykl.Dni.Add(dzienCyklu); dzienCyklu.Lp = 6; dzienCyklu.TypDnia = (byte)TypDnia.Wolny; //wpisanie niedzieli dzienCyklu = new DzienCyklu(); cykl.Dni.Add(dzienCyklu); dzienCyklu.Lp = 6; dzienCyklu.TypDnia = (byte)TypDnia.Wolny; if ( !kalendarzBO.Zapisz() ) kalendarzBO.WypiszBledy(); } } } Pozdrawiam Krzysztof Wesoły
  6. Po odpowiedzi twierdzącej na zadane przez nexo pytanie wartości przeliczone zostały tylko w tabeli ModelDanychContainer.SumaryczneECP. Przeliczone zostały zarówno wartości wyedytowane ręcznie oraz te, których ręcznie nie zmieniono. (przy odpowiedzi przeczącej przeliczane są tylko wartości nieedytowane ręcznie) Wymienione przez Pana w P.S. tabele nie wpływają na Sumaryczną. Nie wiem, co dokładnie w umowach kadrowa zmieniła. Jeżeli zmieniła okresy obowiązywania umów, usunęła umowę, dodała aneks z zmianą wymiaru zatrudnienia itp to wiersze w tabelach SumaryczneECP przed i po backupie mogą być różne - różne okresy obowiązywania sumarycznych itp. Jeżeli natomiast zmieniła tylko okresy obowiązywania kalendarzy umowie (w sumarycznej zmienione zostały wówczas tylko dane dotyczące dni/godzin do przepracowania + przywrócone godziny absencji/nadgodzin/potrąceń do wartości wynikających z faktycznego stanu ECP.), wówczas porównywanie wierszy w SumaryczneECP powinno wystarczyć. Przywróciłbym bym jednak te wartości w wierszu, które faktycznie były edytowane ręcznie. Informacja o zmienionych ręcznie polach znajduje się w polu SumaryczneECP.ListaZmienionychWartosci
  7. Błąd dotyczy kalendarza, ale może pojawić się już PO zapisie. Zapisany kalendarz powinien być prawidłowy, ale proszę go jeszcze sprawdzić. Błąd poprawiliśmy do wersji 25
  8. By zadziałało prawidłowo należy dla okresu 8.00-16.00: 1. wpisać godzinę początkową (dzienSzczegoly.Poczatek = new TimeSpan(8,0,0).Ticks) 2. wpisać godzinę końcową (dzienSzczegoly.Koniec = new TimeSpan(16,0,0).Ticks) Domyślnie TypOkresu ustawiony jest na TypOkresu.PierwszyDzien i w sumie nie trzeba tego ustawiać Aby określić jednak, że ta 16.00 to jest w drugim dniu należy ustawić dzienSzczegoly.TypOkresu = TypOkresu.DwaDni; "Pod spodem' dzienSzczegoly.Koniec przeliczy się na TimeSpan(1, 16, 0 ,0).Ticks Dzięki temu dzienSzczegoly.Koniec - dzienSzczegoly.Poczatek da nam 32 godziny:)
  9. Wyznaczenie planu pracy dla absencji na konkretny dzień wymaga wyznaczenia: - umowy obowiązującej w konkretnym dniu, - planu pracy - kalendarza zdefiniowanego w umowie obowiązującego w danym dniu - cyklu planu pracy - kalendarza - uwzględnienia wyjątków systemowych - uwzględniania zmian w planie pracy Wyliczenie tego w raporcie SQL'owym byłoby karkołomną czynnością
  10. Liczba dni roboczych absencji nie jest zapisywana razem z absencją. Jest ona wyliczana na żądanie na podstawie planu pracy, który może się zmieniać (nawet po wprowadzeniu absencji).
  11. jest sumą składników wynagrodzenia w kwocie wyliczonej na wynagrodzeniu i nie musi być tą samą wartością co na umowie.
  12. Proszę mi jeszcze powiedzieć w jakim kontekście Pan potrzebuje tej kwoty z umowy? Co dokładnie chce Pan raportować/przedstawić?
  13. Z którego wynagrodzenia chce Pan konkretnie wyciągnąć różnicę między kwotą nominalną a wyliczoną?
  14. ad.4 zgadza się ad.5 IFF(Dokument.Zaswiadczenie.Absencja.IndywidualneParametryNaliczania != null; Dokument.Zaswiadczenie.Absencja.IndywidualneParametryNaliczania.KodSwiadczeniaPrzerwy.Kod; Dokument.Zaswiadczenie.Absencja.Typ.NaliczanieDomyslne.KodSwiadczeniaPrzerwy.Kod) ad.6 ad.5 IFF(Dokument.Zaswiadczenie.Absencja.IndywidualneParametryNaliczania != null; Dokument.Zaswiadczenie.Absencja.IndywidualneParametryNaliczania.KodSwiadczeniaPrzerwy.Opis; Dokument.Zaswiadczenie.Absencja.Typ.NaliczanieDomyslne.KodSwiadczeniaPrzerwy.Opis) ad.7 zgadza się ad.8 zgadza się ale pod warunkiem, że wszystkie składnik wchodzą do podstawy w kwocie nominalnej w przeciwnym razie: sumaSkladnikow = Dokument.SkladnikiMiesieczne.StaleWynagrodzenieZUmowy + Dokument.SkladnikiMiesieczne.ZmienneWynagrodzenieProporcjonalne + Dokument.SkladnikiMiesieczne.ZmienneWynagrodzeniaWyliczone do podstawy można wyliczyć jako: sumaSkladnikow - (sumaSkladnikow * Dokument.SkladnikiMiesieczne.ProcentSkladki) ad.12 - od strony ZUS Z-3 nie ma możliwości pobrania informacji z wynagrodzeń
×