コード例 #1
0
 protected override void AzAuswertungNeu()
 {
     fUeberstundenBezahlt = JgZeit.StringInZeit(_AzAuswertung.AuszahlungUeberstunden, TimeSpan.Zero);
     fKrank = _AzAuswertung.Krank;
     NotifyPropertyChanged("UeberstundenBezahltAnzeige");
     NotifyPropertyChanged("KrankAnzeige");
 }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: Gullus/JgMaschine
        private void AnmeldungBenutzerBearbeiten_Click(object sender, RoutedEventArgs e)
        {
            var anmeldung     = _ListeAnmeldungAuswahl.Current;
            var msg           = $"Korrektur der Arbeitszeit für den Mitarbeiter {anmeldung.eBediener.Name}.";
            var zeitAnmeldung = (DateTime?)anmeldung.Anmeldung;
            var zeitAbmeldung = anmeldung.Abmeldung;

            if (JgZeit.AbfrageZeit(msg, "Berichtigung Arbeitszeit", ref zeitAnmeldung, false, ref zeitAbmeldung, true))
            {
                bool safe = false;
                if (zeitAnmeldung != anmeldung.Anmeldung)
                {
                    anmeldung.AnzeigeAnmeldung  = zeitAnmeldung.Value;
                    anmeldung.ManuelleAnmeldung = true;
                    safe = true;
                }
                if (zeitAbmeldung != anmeldung.Abmeldung)
                {
                    anmeldung.AnzeigeAbmeldung  = zeitAbmeldung;
                    anmeldung.ManuelleAbmeldung = true;
                    safe = true;
                }
                if (safe)
                {
                    _ListeAnmeldungAuswahl.DsSave();
                }
            }
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: Gullus/JgMaschine
        private void ReparaturAnmeldungAuswahlBearbeiten_Click(object sender, RoutedEventArgs e)
        {
            var    colView     = (CollectionViewSource)FindResource("vsReparaturAuswahlBediener");
            var    anmeldung   = (tabAnmeldungReparatur)colView.View.CurrentItem;
            string anzeigeText = $"Reparaturzeiten für den Bediener {anmeldung.eBediener.Name} an Maschin {anmeldung.eReparatur.eMaschine.MaschinenName} bearbeiten.";

            var zeitAnmeldung = (DateTime?)anmeldung.Anmeldung;
            var zeitAbmeldung = anmeldung.Abmeldung;

            if (JgZeit.AbfrageZeit(anzeigeText, "Anmeldung Maschine bearbeiten", ref zeitAnmeldung, false, ref zeitAbmeldung, true))
            {
                var safe = false;
                if (anmeldung.Anmeldung != zeitAnmeldung)
                {
                    anmeldung.Anmeldung = zeitAnmeldung.Value;
                    safe = true;
                }
                if (anmeldung.Abmeldung != zeitAbmeldung)
                {
                    anmeldung.Abmeldung = zeitAbmeldung;
                    safe = true;
                }
                if (safe)
                {
                    _Db.SaveChanges();
                    colView.View.Refresh();
                    colView.View.MoveCurrentTo(anmeldung);
                }
            }
        }
コード例 #4
0
        private void ArbeitszeitBearbeiten_Click(object sender, RoutedEventArgs e)
        {
            var az        = _ListeArbeitszeitenAuswahl.Current;
            var msg       = $"Korrektur der Arbeitszeit für den Mitarbeiter {az.eBediener.Name}.";
            var anmeldung = (DateTime?)(az.Anmeldung ?? DateTime.Now);
            var abmeldung = az.Abmeldung;

            if (JgZeit.AbfrageZeit(msg, " Zeitabfrage !", ref anmeldung, false, ref abmeldung, true))
            {
                var sichern = false;
                if (anmeldung != az.Anmeldung)
                {
                    az.AnzeigeAnmeldung         = anmeldung;
                    az.AnzeigeAnmeldungGerundet = _AzRunden.GetZeitGerundet(EnumZeitpunkt.Anmeldung, az.fStandort, anmeldung);
                    sichern = true;
                }

                if (abmeldung != az.Abmeldung)
                {
                    az.AnzeigeAbmeldung         = abmeldung;
                    az.AnzeigeAbmeldungGerundet = _AzRunden.GetZeitGerundet(EnumZeitpunkt.Abmeldung, az.fStandort, abmeldung);
                    sichern = true;
                }

                if (sichern)
                {
                    _ListeArbeitszeitenAuswahl.DsSave();
                    if (az.eBediener == _Erstellung.AktuellerBediener)
                    {
                        _Erstellung.BenutzerGeaendert();
                    }
                }
            }
        }
コード例 #5
0
        private void BerechneUeberstundenAusTagen()
        {
            var istZeit = new TimeSpan(ListeTage.Sum(c => c.Zeit.Ticks));
            var fTage   = new TimeSpan(8 * (AuswertungMonat.fUrlaub + AuswertungMonat.fKrank + AuswertungMonat.fFeiertage), 0, 0);

            AuswertungMonat.UeberstundenAnzeige = JgZeit.ZeitInString(istZeit + fTage - AuswertungMonat.fSollStunden);

            BerechneUeberstundenGesamt();
            AuswertungMonat.NotifyPropertyChanged("IstStundenAnzeige");
        }
コード例 #6
0
        public void SetUebestundenAuszahlung(TimeSpan UeberstundenAuszahlung)
        {
            if (UeberstundenAuszahlung != AuswertungMonat.fUeberstundenBezahlt)
            {
                AuswertungMonat.UeberstundenBezahltAnzeige          = JgZeit.ZeitInString(UeberstundenAuszahlung);
                AuswertungMonat.AzAuswertung.AuszahlungUeberstunden = AuswertungMonat.UeberstundenBezahltAnzeige;
                AuswertungGesamt.UeberstundenBezahltAnzeige         = JgZeit.ZeitInString(AuswertungKumulativ.fUeberstundenBezahlt + UeberstundenAuszahlung);

                BerechneUeberstundenGesamt();

                _Db.SaveChanges();
            }
        }
コード例 #7
0
        public void SetSollstunden(TimeSpan Sollstunden)
        {
            if (Sollstunden != AuswertungMonat.fSollStunden)
            {
                var sollStunden = JgZeit.ZeitInString(Sollstunden);
                AuswertungMonat.AzAuswertung.SollStunden = sollStunden;
                _Db.SaveChanges();

                AuswertungMonat.SollStundenAnzeige = sollStunden;
                BerechneUeberstundenAusTagen();
                BerechneUeberstundenGesamt();
                AuswertungMonat.NotifyPropertyChanged("IstStundenAnzeige");
            }
        }
コード例 #8
0
ファイル: MainWindow.xaml.cs プロジェクト: Gullus/JgMaschine
        private void BenutzerMaschineAbmelden_Click(object sender, RoutedEventArgs e)
        {
            var anmeldung     = _ListeAnmeldungen.Current;
            var msg           = $"Möchten Sie den Bediener {anmeldung.eBediener.Name} von der Maschine {anmeldung.eMaschine.MaschinenName} abmelden ?";
            var zeitAbmeldung = (DateTime?)(anmeldung.Abmeldung ?? DateTime.Now);

            if (JgZeit.AbfrageZeit(msg, "Abmeldung", ref zeitAbmeldung, false))
            {
                BenutzerVonMaschineAbmelden(anmeldung, zeitAbmeldung.Value);
                BedienerVonReparaturAbmelden(anmeldung.eMaschine, anmeldung.eBediener);
                _ListeAnmeldungen.Remove(anmeldung);
                TreeViewMaschinenAktualisieren();
                _ListeAnmeldungen.DsSave();
            }
        }
コード例 #9
0
        private void DatenMonatInDatenbank()
        {
            var dsAz = AuswertungMonat.AzAuswertung;

            dsAz.Ueberstunden = JgZeit.ZeitInString(AuswertungMonat.fUeberstunden);

            dsAz.NachtschichtZuschlaege = JgZeit.ZeitInString(AuswertungMonat.fNachtschichtZuschlaege);
            dsAz.FeiertagZuschlaege     = JgZeit.ZeitInString(AuswertungMonat.fFeiertagZuschlaege);

            dsAz.Urlaub    = (byte)AuswertungMonat.fUrlaub;
            dsAz.Feiertage = (byte)AuswertungMonat.fFeiertage;
            dsAz.Krank     = (byte)AuswertungMonat.fKrank;

            _Db.SaveChanges();
        }
コード例 #10
0
        protected override void AzAuswertungNeu()
        {
            base.AzAuswertungNeu();

            fSollStunden            = JgZeit.StringInZeit(_AzAuswertung.SollStunden);
            fFeiertage              = _AzAuswertung.Feiertage;
            fNachtschichtZuschlaege = JgZeit.StringInZeit(_AzAuswertung.NachtschichtZuschlaege);
            fFeiertagZuschlaege     = JgZeit.StringInZeit(_AzAuswertung.FeiertagZuschlaege);
            NotifyPropertyChanged("NachtschichtZuschlaegeAnzeige");
            NotifyPropertyChanged("FeiertagZuschlaegeAnzeige");
            NotifyPropertyChanged("FeiertagAnzeige");
            NotifyPropertyChanged("IstStundenAnzeige");
            NotifyPropertyChanged("SollStundenAnzeige");
            NotifyPropertyChanged("FeiertageAnzeige");
            NotifyPropertyChanged("UrlaubImJahr");
        }
コード例 #11
0
        private tabArbeitszeitAuswertung ArbeitszeitAuswertungErstellen(tabBediener Bediener, short Jahr, byte Monat, TimeSpan SollStundenMonat)
        {
            var az = new tabArbeitszeitAuswertung()
            {
                Id        = Guid.NewGuid(),
                fBediener = Bediener.Id,
                Jahr      = Jahr,
                Monat     = Monat,
                Urlaub    = 0,
                AuszahlungUeberstunden = "00:00",
                SollStunden            = JgZeit.ZeitInString(SollStundenMonat),
                Status = EnumStatusArbeitszeitAuswertung.InArbeit,
            };

            _Db.tabArbeitszeitAuswertungSet.Add(az);
            _Db.SaveChanges();

            return(az);
        }
コード例 #12
0
        private void Datagrid_DoppelClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            var aktTag = (FindResource("vsArbeitszeitTage") as CollectionViewSource).View.CurrentItem;

            if (aktTag != null)
            {
                var aktDs = (tabArbeitszeitTag)aktTag;
                if (dgArbeitszeit.CurrentColumn == clPauseBerechnet)
                {
                    aktDs.PauseAnzeige = JgZeit.ZeitInString(aktDs.PauseBerechnet);
                }
                else if (dgArbeitszeit.CurrentColumn == clZeitBerechnet)
                {
                    aktDs.ZeitAnzeige = JgZeit.ZeitInString(aktDs.ZeitBerechnet);
                }
                else if (dgArbeitszeit.CurrentColumn == clNachtschichtBerechnet)
                {
                    aktDs.NachtschichtZuschlagAnzeige = JgZeit.ZeitInString(aktDs.NachtschichtBerechnet);
                }
            }
        }
コード例 #13
0
ファイル: MainWindow.xaml.cs プロジェクト: Gullus/JgMaschine
        private void ReparaturBeenden_Click(object sender, RoutedEventArgs e)
        {
            var reparatur      = _ListeReparaturen.Current;
            var anzeigeText    = $"Maschine {reparatur.eMaschine.MaschinenName} mit Vorgang {reparatur.Vorgang} abmelden?";
            var ergZeitAbfrage = (DateTime?)DateTime.Now;

            if (JgZeit.AbfrageZeit(anzeigeText, "Abmeldung", ref ergZeitAbfrage, false))
            {
                var repBedienerAustragen = reparatur.sAnmeldungen.Where(w => w.IstAktiv).ToList();
                foreach (var bediener in repBedienerAustragen)
                {
                    bediener.AnzeigeAbmeldung = ergZeitAbfrage;
                }

                reparatur.AnzeigeVorgangEnde        = ergZeitAbfrage;
                reparatur.eMaschine.fAktivReparatur = null;
                _ListeReparaturen.DsSave();
                _ListeReparaturen.Remove();

                TreeViewMaschinenAktualisieren();
            }
        }
コード例 #14
0
        public void ListeFuerJedenTagErstellen(tabArbeitszeitAuswertung AuswertungBediener,
                                               IEnumerable <tabFeiertage> ListeFeiertageMonat,
                                               IEnumerable <tabPausenzeit> ListePausen, bool WerteInDb)
        {
            if (AuswertungBediener == null)
            {
                return;
            }

            ListeTage.Clear();

            // Werte für Tage berechnen
            var auswTage = _Db.tabArbeitszeitTagSet.Where(w => w.fArbeitszeitAuswertung == AuswertungBediener.Id).ToList();

            var anzTageMonat = DateTime.DaysInMonth(AuswertungBediener.Jahr, AuswertungBediener.Monat);

            var monatErster  = JgZeit.ErsterImMonat(AuswertungBediener.Jahr, AuswertungBediener.Monat);
            var monatLetzter = JgZeit.LetzerImMonat(AuswertungBediener.Jahr, AuswertungBediener.Monat);

            var alleZeiten = _Db.tabArbeitszeitSet.Where(w => (w.fBediener == AuswertungBediener.fBediener) && (!w.DatenAbgleich.Geloescht) &&
                                                         (
                                                             ((w.Anmeldung != null) && (w.Anmeldung >= monatErster) && (w.Anmeldung <= monatLetzter))
                                                             ||
                                                             ((w.Anmeldung == null) && (w.Abmeldung != null) && (w.Abmeldung >= monatErster) && (w.Abmeldung <= monatLetzter))
                                                         )
                                                         ).ToList();

            for (byte tag = 1; tag <= anzTageMonat; tag++)
            {
                var auswTag = auswTage.FirstOrDefault(f => f.Tag == tag);
                if (auswTag == null)
                {
                    auswTag = new tabArbeitszeitTag()
                    {
                        Id = Guid.NewGuid(),
                        fArbeitszeitAuswertung = AuswertungBediener.Id,
                        Tag = tag
                    };
                    _Db.tabArbeitszeitTagSet.Add(auswTag);
                }

                var aktDatum = new DateTime(AuswertungBediener.Jahr, AuswertungBediener.Monat, tag);
                auswTag.Wochentag = aktDatum.ToString("ddd");

                auswTag.IstSonnabend = aktDatum.DayOfWeek == DayOfWeek.Saturday;
                auswTag.IstSonntag   = aktDatum.DayOfWeek == DayOfWeek.Sunday;
                auswTag.IstFeiertag  = ListeFeiertageMonat.FirstOrDefault(f => f.Datum == aktDatum) != null;

                auswTag.ZeitBerechnet         = TimeSpan.Zero;
                auswTag.NachtschichtBerechnet = TimeSpan.Zero;

                var zeiten = alleZeiten.Where(w => (w.Anmeldung?.Day == tag) || ((w.Abmeldung == null) && (w.Abmeldung?.Day == tag))).ToList();

                if (zeiten.Count > 0)
                {
                    foreach (var zeit in zeiten)
                    {
                        // Kontrolle ob Zeiten an Tagesauswertung hängt
                        if (zeit.eArbeitszeitAuswertung != auswTag)
                        {
                            zeit.eArbeitszeitAuswertung = auswTag;
                        }

                        zeit.AnmeldungGerundet = _AzRunden.GetZeitGerundet(EnumZeitpunkt.Anmeldung, zeit.fStandort, zeit.Anmeldung);
                        zeit.AbmeldungGerundet = _AzRunden.GetZeitGerundet(EnumZeitpunkt.Abmeldung, zeit.fStandort, zeit.Abmeldung);

                        if ((zeit.Anmeldung != null) && (zeit.Abmeldung != null))
                        {
                            auswTag.ZeitBerechnet         += zeit.DauerGerundet;
                            auswTag.NachtschichtBerechnet += NachtSchichtBerechnen(22, 0, 8, 0, zeit.AnmeldungGerundet.Value, zeit.Abmeldung.Value);
                        }
                    }
                    auswTag.ZeitBerechnet         = ZeitAufMinuteRunden(auswTag.ZeitBerechnet);
                    auswTag.NachtschichtBerechnet = ZeitAufMinuteRunden(auswTag.NachtschichtBerechnet);

                    // Pause berechnen

                    var ersteAnmeldungZeit = zeiten.Where(w => (w.Anmeldung != null)).Min(m => m.Anmeldung);
                    if (ersteAnmeldungZeit == null)
                    {
                        auswTag.PauseBerechnet = new TimeSpan(1, 0, 0);
                    }
                    else
                    {
                        var anmZeit = JgZeit.DatumInZeitMinute(ersteAnmeldungZeit.Value);
                        var dsPause = ListePausen.FirstOrDefault(w => (anmZeit >= w.ZeitVon) && (anmZeit <= w.ZeitBis));
                        if (dsPause != null)
                        {
                            auswTag.PauseBerechnet = dsPause.Pausenzeit;
                        }
                    }

                    auswTag.ZeitBerechnet        -= auswTag.PauseBerechnet;
                    auswTag.IstFehlerZeit         = !Kontrolle24StundenOK(auswTag.ZeitBerechnet);
                    auswTag.IstFehlerNachtschicht = !Kontrolle24StundenOK(auswTag.NachtschichtBerechnet);
                }

                auswTag.ArbeitszeitTagGeaendert = OnWertWurdeManuellGeaendert;

                ListeTage.Add(auswTag);
            }

            if (WerteInDb)
            {
                foreach (var tag in ListeTage)
                {
                    if (!tag.IstManuellGeaendert)
                    {
                        if (tag.Pause != tag.PauseBerechnet)
                        {
                            tag.Pause = JgZeit.KontrolleZeitDb(tag.PauseBerechnet);
                            tag.NotifyPropertyChanged("PauseAnzeige");
                        }

                        if (tag.Zeit != tag.ZeitBerechnet)
                        {
                            tag.Zeit = JgZeit.KontrolleZeitDb(tag.ZeitBerechnet);
                            tag.NotifyPropertyChanged("ZeitAnzeige");
                        }

                        if (tag.NachtschichtZuschlag != tag.NachtschichtBerechnet)
                        {
                            tag.NachtschichtZuschlag = JgZeit.KontrolleZeitDb(tag.NachtschichtBerechnet);
                            tag.NotifyPropertyChanged("NachtschichtZuschlagAnzeige");
                        }

                        if (tag.Feiertag != tag.IstFeiertag)
                        {
                            tag.Feiertag = tag.IstFeiertag;
                            tag.NotifyPropertyChanged("FeiertagAnzeige");
                        }
                    }
                }
            }
        }
コード例 #15
0
        public void BedienerBerechnen(tabBediener Bediener, short Jahr, byte Monat, TimeSpan SollStundenMonat,
                                      IEnumerable <tabFeiertage> ListeFeiertageMonat, IEnumerable <tabPausenzeit> ListePausen)
        {
            if (Bediener == null)
            {
                return;
            }

            this.Bediener = Bediener;
            var alleAuswertungenBediener = _Db.tabArbeitszeitAuswertungSet.Where(w => (w.fBediener == Bediener.Id) && (w.Jahr == Jahr) && (w.Monat <= Monat)).ToList();

            var auswErster = alleAuswertungenBediener.FirstOrDefault(w => w.Monat == 0);

            if (auswErster == null)
            {
                auswErster = ArbeitszeitAuswertungErstellen(Bediener, Jahr, 0, TimeSpan.Zero);
            }

            AuswertungVorjahr.AzAuswertung = auswErster;

            var auswMonat = alleAuswertungenBediener.FirstOrDefault(w => (w.Monat == Monat));

            if (auswMonat == null)
            {
                auswMonat = ArbeitszeitAuswertungErstellen(Bediener, Jahr, Monat, SollStundenMonat);
            }

            AuswertungMonat.AzAuswertung = auswMonat;
            Bediener.EArbeitszeitHelper  = auswMonat;

            var auswKumulativ = alleAuswertungenBediener.Where(w => (w.Monat > 0) && (w.Monat < Monat)).ToList();

            var sumUeberstunden = new TimeSpan(auswKumulativ.Sum(s => JgZeit.StringInZeit(s.Ueberstunden).Ticks));

            AuswertungKumulativ.UeberstundenAnzeige = JgZeit.ZeitInString(sumUeberstunden);
            var sumUeberstBezahlt = new TimeSpan(auswKumulativ.Sum(s => JgZeit.StringInZeit(s.AuszahlungUeberstunden).Ticks));

            AuswertungKumulativ.UeberstundenBezahltAnzeige = JgZeit.ZeitInString(sumUeberstBezahlt);
            AuswertungKumulativ.KrankAnzeige  = (byte)auswKumulativ.Sum(s => s.Krank);
            AuswertungKumulativ.UrlaubAnzeige = (byte)auswKumulativ.Sum(s => s.Urlaub);

            var berechneteWerteInDb = AuswertungMonat.AzAuswertung.Status == EnumStatusArbeitszeitAuswertung.InArbeit;

            ListeFuerJedenTagErstellen(Bediener.EArbeitszeitHelper, ListeFeiertageMonat, ListePausen, berechneteWerteInDb);

            BerechneKrank();
            BerechneUrlaub();
            BerechneFeiertage();
            BerechneFeiertagZuschlag();

            BerechneNachtschichtZuschlag();
            BerechneUeberstundenBezahlt();

            BerechneUeberstundenAusTagen();
            BerechneUeberstundenGesamt();

            if (berechneteWerteInDb)
            {
                DatenMonatInDatenbank();
            }

            return;
        }
コード例 #16
0
        private void BtnExporteren_Click(object sender, RoutedEventArgs e)
        {
            var datName = Properties.Settings.Default.NameXmlDatei;

            if (string.IsNullOrWhiteSpace(datName))
            {
                datName = Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments) + @"\JgArbeitszeit.xml";
            }

            var fo = new SaveFileDialog()
            {
                Title            = "Xml Datei speichern",
                FileName         = Path.GetFileName(datName),
                InitialDirectory = Path.GetDirectoryName(datName),
                Filter           = "Xml Files | *.xml | Alle Dateien | *.*",
            };

            if (fo.ShowDialog() ?? false)
            {
                var lBediener = _Erstellung.ListeBediener.Daten.Where(w => (w.EArbeitszeitHelper != null) && (w.EArbeitszeitHelper.Status == EnumStatusArbeitszeitAuswertung.Fertig)).ToList();

                var listeAuswertungen = new List <ArbeitszeitBediener>();
                foreach (var bedAusw in lBediener)
                {
                    var ds = new ArbeitszeitBediener(_Db, _AzRunden);
                    ds.BedienerBerechnen(bedAusw, _Erstellung.Jahr, _Erstellung.Monat, _Erstellung.SollStundenMonat, _Erstellung.ListeFeiertageMonat, _Erstellung.ListePausen.Daten);
                    listeAuswertungen.Add(ds);
                }
                ;

                var en            = new CultureInfo("en-US", false);
                var formatDezimal = Properties.Settings.Default.FormatXmlAusgabeDezimal;
                var formatZeit    = Properties.Settings.Default.FormatXmlAusgabeZeit;

                XDocument xDoc = new XDocument(
                    new XComment($"Arbeitszeit Monat: {_Erstellung.Monat}.{_Erstellung.Jahr} Datum: {DateTime.Now.ToString("dd.MM.yy HH:mm")}"),
                    new XElement("Root",
                                 new XElement("Monat", $"{(JgZeit.Monate)_Erstellung.Monat} {_Erstellung.Jahr.ToString()}"),

                                 from z in listeAuswertungen
                                 let azMonat = z.AuswertungMonat.AzAuswertung
                                               let normalStunden = JgZeit.StringInZeit(azMonat.SollStunden) - (new TimeSpan(8 * (azMonat.Urlaub + azMonat.Krank + azMonat.Feiertage), 0, 0))
                                                                   let istStunden = JgZeit.ZeitStringAddieren(azMonat.SollStunden, azMonat.Ueberstunden)
                                                                                    select new XElement("Datensatz",
                                                                                                        new XElement("Mitarbeiter", z.Bediener.Name),
                                                                                                        new XElement("Nachname", z.Bediener.NachName),
                                                                                                        new XElement("Vorname", z.Bediener.VorName),
                                                                                                        new XElement("IdBuchhaltung", z.Bediener.IdBuchhaltung),

                                                                                                        new XElement("Standort", z.Bediener.eStandort.Bezeichnung),
                                                                                                        new XElement("Zahltag", z.Bediener.AuszahlungGehalt),
                                                                                                        new XElement("Urlaubstage", z.Bediener.Urlaubstage),

                                                                                                        // Formatierung als Dezimalzahl mit einer Kommastelle mit Frau Glatter besprochen

                                                                                                        new XElement("IstStunden", istStunden.TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("Normalstunden", normalStunden.TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("SollStunden", JgZeit.StringInZeit(azMonat.SollStunden).TotalHours.ToString(formatDezimal, en)),

                                                                                                        new XElement("UeberStunden", JgZeit.StringInZeit(azMonat.Ueberstunden).TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("UeberstundenAusgezahlt", JgZeit.StringInZeit(azMonat.AuszahlungUeberstunden).TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("UeberstundenGesamt", z.AuswertungGesamt.fUeberstunden.TotalHours.ToString(formatDezimal, en)),

                                                                                                        new XElement("Urlaub", (azMonat.Urlaub * 8).ToString(formatDezimal, en)),
                                                                                                        new XElement("UrlaubstageOffen", z.AuswertungMonat.UrlaubOffenAnzeige),

                                                                                                        new XElement("Krank", (azMonat.Krank * 8).ToString(formatDezimal, en)),
                                                                                                        new XElement("Feiertage", (azMonat.Feiertage * 8).ToString(formatDezimal, en)),

                                                                                                        new XElement("NachtschichtZuschlag", JgZeit.StringInZeit(azMonat.NachtschichtZuschlaege).TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("NachtschichtZuschlagGerundet", azMonat.NachtschichtZuschlaegeGerundet.TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("FeiertagsZuschlag", JgZeit.StringInZeit(azMonat.FeiertagZuschlaege).TotalHours.ToString(formatDezimal, en)),
                                                                                                        new XElement("FeiertagsZuschlagGerundet", azMonat.FeiertagZuschlaegeGerundet.TotalHours.ToString(formatDezimal, en)),


                                                                                                        // Ausgabe als Zeit

                                                                                                        new XElement("IstStundenD", XmlZeitInString(istStunden, formatZeit)),
                                                                                                        new XElement("NormalstundenD", XmlZeitInString(normalStunden, formatZeit)),
                                                                                                        new XElement("SollStundenD", XmlZeitInString(JgZeit.StringInZeit(azMonat.SollStunden), formatZeit)),

                                                                                                        new XElement("UeberStundenD", XmlZeitInString(JgZeit.StringInZeit(azMonat.Ueberstunden), formatZeit)),
                                                                                                        new XElement("UeberstundenAusgezahltD", XmlZeitInString(JgZeit.StringInZeit(azMonat.AuszahlungUeberstunden), formatZeit)),
                                                                                                        new XElement("UeberstundenGesamtD", XmlZeitInString(z.AuswertungGesamt.fUeberstunden, formatZeit)),


                                                                                                        new XElement("UrlaubD", XmlZeitInString(new TimeSpan(azMonat.Urlaub * 8, 0, 0), formatZeit)),
                                                                                                        new XElement("UrlaubstageOffenD", XmlZeitInString(new TimeSpan(z.AuswertungMonat.UrlaubOffenAnzeige * 8, 0, 0), formatZeit)),

                                                                                                        new XElement("KrankD", XmlZeitInString(new TimeSpan(azMonat.Krank * 8), formatZeit)),
                                                                                                        new XElement("FeiertageD", XmlZeitInString(new TimeSpan(azMonat.Feiertage * 8), formatZeit)),

                                                                                                        new XElement("NachtschichtZuschlagD", XmlZeitInString(JgZeit.StringInZeit(azMonat.NachtschichtZuschlaege), formatZeit)),
                                                                                                        new XElement("NachtschichtZuschlagGerundetD", XmlZeitInString(azMonat.NachtschichtZuschlaegeGerundet, formatZeit)),
                                                                                                        new XElement("FeiertagsZuschlagD", XmlZeitInString(JgZeit.StringInZeit(azMonat.FeiertagZuschlaege), formatZeit)),
                                                                                                        new XElement("FeiertagsZuschlagGerundetD", XmlZeitInString(azMonat.FeiertagZuschlaegeGerundet, formatZeit))
                                                                                                        )
                                 )
                    );

                try
                {
                    xDoc.Save(fo.FileName);
                }
                catch (Exception f)
                {
                    var msg = $"Datei konnte nicht erstellt werden.\nGrund: {f.Message}";
                    MessageBox.Show(msg, "Fehlermeldung", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }

                if (Properties.Settings.Default.NameXmlDatei != fo.FileName)
                {
                    Properties.Settings.Default.NameXmlDatei = fo.FileName;
                }

                foreach (var bed in lBediener)
                {
                    bed.EArbeitszeitHelper.StatusAnzeige = EnumStatusArbeitszeitAuswertung.Erledigt;
                }

                _Erstellung.Db.SaveChanges();

                Helper.InfoBox($"{lBediener.Count} Mitarbeiter in Datei gespeichert !", Helper.ProtokollArt.Info);
            }
        }
コード例 #17
0
        public FormDatumZeitVonBis(string Caption, string Anzeigetext, DateTime?DatumZeitVon, bool DatumVonNullZulassen, DateTime?DatumZeitBis, bool DatumBisNullZulassen)
        {
            InitializeComponent();
            this.Title         = Caption;
            tbInformation.Text = Anzeigetext;

            _ErgDatumZeitVon = DatumZeitVon;
            _ZeitAnzeigeVon.AnzeigeDatumZeit = DatumZeitVon == null ? DateTime.Now : DatumZeitVon.Value;
            _ZeitAnzeigeVon.OnNeuerWert      = (d, z) =>
            {
                _ErgDatumZeitVon = d + z;
                if (cbDatumVonLeer.IsChecked ?? false)
                {
                    cbDatumVonLeer.IsChecked = false;
                }
            };

            _ErgDatumZeitBis = DatumZeitBis;
            _ZeitAnzeigeBis.AnzeigeDatumZeit = DatumZeitBis == null ? (_ErgDatumZeitVon == null ? DateTime.Now : _ErgDatumZeitVon.Value.Date + JgZeit.DatumInZeitMinute(DateTime.Now)) : DatumZeitBis.Value;
            _ZeitAnzeigeBis.OnNeuerWert      = (d, z) =>
            {
                _ErgDatumZeitBis = d + z;
                if (cbDatumBisLeer.IsChecked ?? false)
                {
                    cbDatumBisLeer.IsChecked = false;
                }
            };

            cbDatumVonLeer.Visibility = DatumVonNullZulassen ? Visibility.Visible : Visibility.Collapsed;
            cbDatumVonLeer.IsChecked  = !DatumZeitVon.HasValue;

            cbDatumBisLeer.Visibility = DatumBisNullZulassen ? Visibility.Visible : Visibility.Collapsed;
            cbDatumBisLeer.IsChecked  = !DatumZeitBis.HasValue;
        }
コード例 #18
0
        private void BerechneUeberstundenBezahlt()
        {
            var ueberstundenBezahlt = AuswertungKumulativ.fUeberstundenBezahlt + AuswertungMonat.fUeberstundenBezahlt;

            AuswertungGesamt.UeberstundenBezahltAnzeige = JgZeit.ZeitInString(ueberstundenBezahlt);
        }
コード例 #19
0
        private void BerechneFeiertagZuschlag()
        {
            var sumZeit = new TimeSpan(ListeTage.Sum(c => c.FeiertagZuschlag.Ticks));

            AuswertungMonat.FeiertagZuschlaegeAnzeige = JgZeit.ZeitInString(sumZeit);
        }
コード例 #20
0
        private void BerechneNachtschichtZuschlag()
        {
            var sumNachtschicht = new TimeSpan(ListeTage.Sum(c => c.NachtschichtZuschlag.Ticks));

            AuswertungMonat.NachtschichtZuschlaegeAnzeige = JgZeit.ZeitInString(sumNachtschicht);
        }
コード例 #21
0
        private void OnWertWurdeManuellGeaendert(tabArbeitszeitTag AuswertungTag, string PropertyName)
        {
            if (PropertyName == "Pause")
            {
                var zeiten = AuswertungTag.sArbeitszeiten.Where(w => (w.Anmeldung != null) && (w.Abmeldung != null)).ToList();

                AuswertungTag.ZeitBerechnet         = TimeSpan.Zero;
                AuswertungTag.NachtschichtBerechnet = TimeSpan.Zero;

                foreach (var zeit in zeiten)
                {
                    AuswertungTag.ZeitBerechnet         += zeit.Dauer;
                    AuswertungTag.NachtschichtBerechnet += NachtSchichtBerechnen(22, 0, 8, 0, zeit.Anmeldung.Value, zeit.Abmeldung.Value);
                }
                AuswertungTag.ZeitBerechnet         = ZeitAufMinuteRunden(AuswertungTag.ZeitBerechnet - AuswertungTag.Pause);
                AuswertungTag.NachtschichtBerechnet = ZeitAufMinuteRunden(AuswertungTag.NachtschichtBerechnet);

                BerechneUeberstundenAusTagen();
                AuswertungMonat.AzAuswertung.Ueberstunden = JgZeit.ZeitInString(AuswertungMonat.fUeberstunden);
            }
            else if (PropertyName == "Zeit")
            {
                BerechneUeberstundenAusTagen();
                AuswertungMonat.AzAuswertung.Ueberstunden = JgZeit.ZeitInString(AuswertungMonat.fUeberstunden);
            }
            else if (PropertyName == "Urlaub")
            {
                BerechneUrlaub();
                AuswertungMonat.AzAuswertung.Urlaub = (byte)AuswertungMonat.fUrlaub;
                BerechneUeberstundenAusTagen();
                AuswertungMonat.AzAuswertung.Ueberstunden = JgZeit.ZeitInString(AuswertungMonat.fUeberstunden);
            }
            else if (PropertyName == "Krank")
            {
                BerechneKrank();
                AuswertungMonat.AzAuswertung.Krank = (byte)AuswertungMonat.fKrank;
                BerechneUeberstundenAusTagen();
                AuswertungMonat.AzAuswertung.Ueberstunden = JgZeit.ZeitInString(AuswertungMonat.fUeberstunden);
            }
            else if (PropertyName == "Feiertag")
            {
                BerechneFeiertage();
                AuswertungMonat.AzAuswertung.Feiertage = (byte)AuswertungMonat.fFeiertage;
                BerechneUeberstundenAusTagen();
                AuswertungMonat.AzAuswertung.Ueberstunden = JgZeit.ZeitInString(AuswertungMonat.fUeberstunden);
            }
            else if (PropertyName == "FeiertagZuschlag")
            {
                BerechneFeiertagZuschlag();
                AuswertungMonat.AzAuswertung.FeiertagZuschlaege = JgZeit.ZeitInString(AuswertungMonat.fFeiertagZuschlaege);
            }
            else if (PropertyName == "NachtschichtZuschlag")
            {
                BerechneNachtschichtZuschlag();
                AuswertungMonat.AzAuswertung.NachtschichtZuschlaege = JgZeit.ZeitInString(AuswertungMonat.fNachtschichtZuschlaege);
            }

            if (AuswertungTag.IstManuellGeaendert == false)
            {
                AuswertungTag.IstManuellGeaendert = true;
                AuswertungTag.NotifyPropertyChanged("IstManuellGeaendert");
            }

            _Db.SaveChanges();
        }
コード例 #22
0
        private void BtnDrucken_Click(object sender, RoutedEventArgs e)
        {
            _Report.Clear();
            var vorgang = Convert.ToInt32((sender as Button).Tag);  // 1 - Anzeigen, 2 - Drucken, 3 - Design, 4 - Neuer Report, 5 - Report Exportieren, 6 - Löschen

            var auswahl = EnumFilterAuswertung.Arbeitszeit;

            if (tcArbeitszeit.SelectedIndex == 1)
            {
                auswahl = EnumFilterAuswertung.ArbeitszeitAuswertung;
            }

            if (vorgang != 4)
            {
                switch (auswahl)
                {
                case EnumFilterAuswertung.Arbeitszeit: _AktuellerReport = _ListeReporteArbeitszeiten.Current; break;

                case EnumFilterAuswertung.ArbeitszeitAuswertung: _AktuellerReport = _ListeReporteAuswertung.Current; break;
                }

                if (_AktuellerReport == null)
                {
                    MessageBox.Show("Es wurde kein Report ausgewählt.", "Fehler !", MessageBoxButton.OK, MessageBoxImage.Information);
                    return;
                }

                switch (vorgang)
                {
                case 0:     // Reportname ändern
                    var formNeu = new Fenster.FormReportName(_AktuellerReport.ReportName);
                    if (formNeu.ShowDialog() ?? false)
                    {
                        _AktuellerReport.AnzeigeReportname = formNeu.ReportName;
                        _ListeReporteArbeitszeiten.DsSave();
                    }
                    return;

                case 5:     // Exportieren
                    SaveFileDialog dia = new SaveFileDialog()
                    {
                        FileName    = _AktuellerReport.ReportName,
                        Filter      = "Fastreport (*.frx)|*.frx|Alle Dateien (*.*)|*.*",
                        FilterIndex = 1
                    };
                    if (dia.ShowDialog() ?? false)
                    {
                        _Report.Save(dia.FileName);
                        MemoryStream mem;
                        mem = new MemoryStream(_AktuellerReport.Report);
                        using (Stream f = File.Create(dia.FileName))
                        {
                            mem.CopyTo(f);
                        }
                    }
                    return;

                case 6:      // Report löschen
                    var mb = MessageBox.Show($"Report {_AktuellerReport.ReportName} löschen ?", "Löschabfrage", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.None);
                    if (mb == MessageBoxResult.Yes)
                    {
                        _AktuellerReport.DatenAbgleich.Geloescht = true;
                        switch (auswahl)
                        {
                        case EnumFilterAuswertung.Arbeitszeit: _ListeReporteArbeitszeiten.Remove(_AktuellerReport); break;

                        case EnumFilterAuswertung.ArbeitszeitAuswertung: _ListeReporteAuswertung.Remove(_AktuellerReport); break;
                        }
                    }
                    return;
                }

                if (_AktuellerReport.Report == null)
                {
                    vorgang = 3;
                }
                else
                {
                    var mem = new MemoryStream(_AktuellerReport.Report);
                    _Report.Load(mem);
                }
            }

            switch (auswahl)
            {
            case EnumFilterAuswertung.Arbeitszeit:
                var bediener = _ListeArbeitszeitenAuswahl.Daten.Select(s => s.eBediener).Distinct().ToList();
                _Report.RegisterData(bediener.Select(s => new { s.Id, s.Name }).ToList(), "Bediener");

                var dat         = _DzArbeitszeitBis.AnzeigeDatumZeit;
                var db          = _ListeArbeitszeitenAuswahl.Db;
                var sollStunden = JgZeit.StringInZeit(db.tabSollStundenSet.FirstOrDefault(w => (w.Jahr == dat.Year) && (w.Monat == dat.Month) && !w.DatenAbgleich.Geloescht).SollStunden, TimeSpan.Zero);
                var lFeiertage  = db.tabFeiertageSet.Where(w => (w.Datum.Year == dat.Year) && (w.Datum.Month == dat.Month) && !w.DatenAbgleich.Geloescht).ToList();
                var lPausen     = db.tabPausenzeitSet.Where(w => !w.DatenAbgleich.Geloescht).ToList();

                var listeAuswertungen = new List <ArbeitszeitBediener>();

                foreach (var bedAusw in bediener)
                {
                    var ds = new ArbeitszeitBediener(_Erstellung.Db, _AzRunden);
                    ds.BedienerBerechnen(bedAusw, (short)dat.Year, (byte)dat.Month, sollStunden, lFeiertage, lPausen);
                    listeAuswertungen.Add(ds);
                }
                _Report.RegisterData(listeAuswertungen, "Auswertungen");

                _Report.RegisterData(_ListeArbeitszeitenAuswahl.Daten, "Stechzeiten");
                _Report.SetParameterValue("Zeitraum.DatumVon", _DzArbeitszeitVon.AnzeigeDatumZeit);
                _Report.SetParameterValue("Zeitraum.DatumBis", _DzArbeitszeitBis.AnzeigeDatumZeit);
                break;

            case EnumFilterAuswertung.ArbeitszeitAuswertung:
                var aktStandort = _Erstellung.AktuellerBediener.eStandort;

                var bedienerImStandort = _Erstellung.ListeBediener.Daten.Where(w => w.fStandort == aktStandort.Id).ToList();
                var listeAuswertung    = new List <ArbeitszeitBediener>();

                foreach (var bedAusw in bedienerImStandort)
                {
                    var ds = new ArbeitszeitBediener(_Erstellung.Db, _AzRunden);
                    ds.BedienerBerechnen(bedAusw, _Erstellung.Jahr, _Erstellung.Monat, _Erstellung.SollStundenMonat, _Erstellung.ListeFeiertageMonat, _Erstellung.ListePausen.Daten);
                    listeAuswertung.Add(ds);
                }

                _Report.RegisterData(bedienerImStandort.Select(s => new { s.Id, s.Name }).ToList(), "Bediener");
                _Report.RegisterData(listeAuswertung, "ListeAuswertung");
                _Report.SetParameterValue("Auswertung.Monat", (JgZeitHelper.JgZeit.Monate)_Erstellung.Monat);
                _Report.SetParameterValue("Auswertung.Jahr", _Erstellung.Jahr);
                break;

            default:
                break;
            }

            if (vorgang == 4) // Neuer Report
            {
                var repName = "";

                var formNeu = new Fenster.FormReportName();
                if (!formNeu.ShowDialog() ?? false)
                {
                    return;
                }
                repName = formNeu.ReportName;

                string username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                _AktuellerReport = new tabAuswertung()
                {
                    Id = Guid.NewGuid(),
                    FilterAuswertung = auswahl,
                    ReportName       = repName,
                    ErstelltDatum    = DateTime.Now,
                    ErstelltName     = username,
                    GeaendertDatum   = DateTime.Now,
                    GeaendertName    = username,
                };

                switch (auswahl)
                {
                case EnumFilterAuswertung.Arbeitszeit: _ListeReporteArbeitszeiten.Add(_AktuellerReport); break;

                case EnumFilterAuswertung.ArbeitszeitAuswertung: _ListeReporteAuswertung.Add(_AktuellerReport); break;
                }

                _Report.Design();
            }

            else
            {
                switch (vorgang)
                {
                case 1:
                    try
                    {
                        _Report.Show();
                    }
                    catch (Exception ex)
                    {
                        Helper.InfoBox("Fehler beim Aufruf der Auswertung", ex);
                    }
                    break;

                case 2:
                    try
                    {
                        _Report.Print();
                    }
                    catch (Exception ex)
                    {
                        Helper.InfoBox("Fehler beim Drucken der Auswertung", ex);
                    }
                    break;

                case 3:
                    try
                    {
                        _Report.Design();
                    }
                    catch { }
                    break;
                }
            }
        }
コード例 #23
0
        public void BerechneUeberstundenGesamt()
        {
            var erg = AuswertungVorjahr.fUeberstunden + AuswertungKumulativ.fUeberstunden + AuswertungMonat.fUeberstunden - AuswertungGesamt.fUeberstundenBezahlt;

            AuswertungGesamt.UeberstundenAnzeige = JgZeit.ZeitInString(erg);
        }