Skocz do zawartości

Krzysztof W.

InsERT
  • Liczba zawartości

    22
  • Rejestracja

  • Ostatnia wizyta

Posty dodane przez Krzysztof W.

  1. Czyli drukuje Pani opcją Drukuj listę, która (ta opcja) wykorzystuje standardowy wzorzec wydruku dla dowolnej listy.
    Zawartość tego wzorca nie jest konfigurowalna.
    Ten wzorzec wydrukuje te kolumny które są widoczne na liście.

    Skoro w raporcie nie jest dostępna kolumna Lp to takiej kolumny nie da się wydrukować.
    Niektóre raporty mają dedykowaną opcję "Drukuj raport" dla której zdefiniowano dedykowane wzorce wydruków -podany przez Panią do nich nie należy.

    Analogicznie jak w przypadku kolumny LP modyfikacja sposobu liczenia podsumowań w domyślnym wydruku listy nie jest możliwa.


     

  2. Jak pisałem wcześniej:) 

    Cytat

    Przed dodaniem pierwszego szczegółu trzeba by usunąć istniejące.

    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.
     

  3. 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.

  4. 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 :)

  5. 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();
                    }
                }
            }

     

  6. 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

     

     

  7. 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

     

  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:)
     

     


     

    • Dziękuję 1
  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. 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ń

  11. Tabela: SumaryczneECP
    Pole:     GodzinPrzepracowanych_Ticks

    W ogólnym założeniu zapis w sumarycznej ECP zawiera informacje o ilości dni/godzin z okresu 1 miesiąca.
    Okres ten może być inny, jeżeli umowa, dla której wyliczono sumaryczną nie trwa przez cały miesiąc lub w umowie zmieniono wymiar zatrudnienia - wówczas dla pracownika, w danym miesiącu może istnieć wiele sumarycznych ECP.
     

×
×
  • Dodaj nową pozycję...