protected override void AzAuswertungNeu() { fUeberstundenBezahlt = JgZeit.StringInZeit(_AzAuswertung.AuszahlungUeberstunden, TimeSpan.Zero); fKrank = _AzAuswertung.Krank; NotifyPropertyChanged("UeberstundenBezahltAnzeige"); NotifyPropertyChanged("KrankAnzeige"); }
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(); } } }
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); } } }
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(); } } } }
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"); }
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(); } }
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"); } }
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(); } }
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(); }
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"); }
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); }
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); } } }
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(); } }
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"); } } } } }
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; }
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); } }
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; }
private void BerechneUeberstundenBezahlt() { var ueberstundenBezahlt = AuswertungKumulativ.fUeberstundenBezahlt + AuswertungMonat.fUeberstundenBezahlt; AuswertungGesamt.UeberstundenBezahltAnzeige = JgZeit.ZeitInString(ueberstundenBezahlt); }
private void BerechneFeiertagZuschlag() { var sumZeit = new TimeSpan(ListeTage.Sum(c => c.FeiertagZuschlag.Ticks)); AuswertungMonat.FeiertagZuschlaegeAnzeige = JgZeit.ZeitInString(sumZeit); }
private void BerechneNachtschichtZuschlag() { var sumNachtschicht = new TimeSpan(ListeTage.Sum(c => c.NachtschichtZuschlag.Ticks)); AuswertungMonat.NachtschichtZuschlaegeAnzeige = JgZeit.ZeitInString(sumNachtschicht); }
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(); }
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; } } }
public void BerechneUeberstundenGesamt() { var erg = AuswertungVorjahr.fUeberstunden + AuswertungKumulativ.fUeberstunden + AuswertungMonat.fUeberstunden - AuswertungGesamt.fUeberstundenBezahlt; AuswertungGesamt.UeberstundenAnzeige = JgZeit.ZeitInString(erg); }