using System; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Windows; using System.Windows.Controls; using GCHR.Control; using GCHR.Control.Tasks; using GCHR.Model; using GCHR.View; namespace GCHR { public partial class Main { private TaskManager _aufgabenListe; //private readonly List _periodenListe = new List(); private bool ImportdatenSichern { get { return (BtnImportdatenSichern.IsChecked != null) && (bool) BtnImportdatenSichern.IsChecked; } } private bool Offlinemodus { get { return (BtnOffline.IsChecked != null) && (bool)BtnOffline.IsChecked; } } private bool Exportprotokoll { get { return false; } } private bool KeinJahresabschluss { get { return (BtnKeinJahresabschluss.IsChecked != null) && (bool)BtnKeinJahresabschluss.IsChecked; } } public Main() { InitializeComponent(); } private void WindowLoaded(object sender, RoutedEventArgs e) { var config = Konfiguration.CreateInstance(Constants.ConfigDatei); Logger.Info(DateTime.Now + " GCHR gestartet."); /* var von = new Periode((DateTime.Today.Year - 1).ToString(CultureInfo.InvariantCulture) + "01"); var bis = new Periode(DateTime.Today.Year + DateTime.Today.Month.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0')); while (!von.ToString().Equals(bis.ToString())) { _periodenListe.Add(von); von = von.Nachfolger; } */ AktuellenMonatEinstellen(); Kopfzeile.Content = config.Haendler + " - " + config.Mandantenname; /* LvPerioden.ItemsSource = _periodenListe; LvPerioden.SelectedIndex = _periodenListe.Count - 1; LvPerioden.ScrollIntoView(_periodenListe[_periodenListe.Count - 1]); LvPerioden.Focus(); */ } private void AktuellenMonatEinstellen() { Jahrbox.Items.Clear(); for (var i = 2010; i <= DateTime.Today.Year; i++) { Jahrbox.Items.Add(i); } var aktPeriode = aktuellenMonatBestimmen(); Monatsbox.SelectedIndex = Int32.Parse(aktPeriode.Monat) - 1; Jahrbox.SelectedValue = Int32.Parse(aktPeriode.Jahr); } private Periode aktuellenMonatBestimmen() { var neuerMonat = new Periode(DateTime.Today.Year + DateTime.Today.Month.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0')); var monateZurueck = DateTime.Today.Month; if (monateZurueck <= 2) { monateZurueck += 12; } for (var i = 0; i < monateZurueck; i++) { neuerMonat = neuerMonat.Vorgaenger; if (!File.Exists(neuerMonat.Vorgaenger.BalanceDatei)) continue; var aelterAlsFuenfTage = File.GetLastWriteTime(neuerMonat.Vorgaenger.BalanceDatei).AddDays(5).CompareTo(DateTime.Now) <= 0; return (aelterAlsFuenfTage) ? neuerMonat : neuerMonat.Vorgaenger; } return neuerMonat.Nachfolger; } private void BtnStartenClick(object sender, RoutedEventArgs e) { BtnStarten.IsEnabled = false; AufgabenListeErstellen(); AmpelnRegistrieren(); _aufgabenListe.TryRunNextWorker(); } private string PeriodeAusAuswahl() { var monat = (Monatsbox.SelectedIndex + 1).ToString(CultureInfo.InvariantCulture).PadLeft(2, '0'); return Jahrbox.Text + monat; } private void AufgabenListeErstellen() { _aufgabenListe = new TaskManager { Data = { ImportdatenSichern = ImportdatenSichern, Offlinemodus = Offlinemodus, Exportprotokoll = Exportprotokoll, KeinJahresabschluss = KeinJahresabschluss } }; _aufgabenListe.CreateTasks(Ablaufsteuerung, new Periode(PeriodeAusAuswahl(), KeinJahresabschluss)); } private void AmpelnRegistrieren() { var ampeln = new[] { AmpelKontenrahmenLaden, AmpelÜbersetzungstabelleLaden, AmpelÜbersetzungstabelleStatLaden, AmpelManuelleLaden, AmpelSuSaKontenImport, AmpelStatKontenImport, AmpelSuSaKontenVerarbeitung, AmpelManuelleKontenVerarbeitung, AmpelExport }; _aufgabenListe.RegisterAmpeln(ampeln); } private void Ablaufsteuerung(object s, RunWorkerCompletedEventArgs e) { var aktuellerWorker = (BackgroundWorker)s; var aktuelleAufgabe = _aufgabenListe.GetAufgabeByWorker(aktuellerWorker); if (e.Error != null) { BtnStarten.IsEnabled = true; } else { if (aktuelleAufgabe.ID == 3 && AmpelManuelleLaden.Done) { var mkb = new ManuelleKontenBearbeiten(_aufgabenListe.Data.GetManuelleKonten()); mkb.Closed += ManuelleKontenBearbeitenClosed; mkb.Show(); } if (aktuelleAufgabe.ID == 8) { BtnStarten.IsEnabled = true; BtnProtokoll.Visibility = Visibility.Visible; } } } private void ManuelleKontenBearbeitenClosed(object sender, EventArgs e) { var mkb = (ManuelleKontenBearbeiten)sender; _aufgabenListe.Data.SetManuelleKonten(mkb.ManuelleKonten); _aufgabenListe.Data.AufManuelleKontenWarten.Set(); } #region Events für Checkboxen private void BtnOfflineChecked(object sender, RoutedEventArgs e) { var chk = sender as CheckBox; BtnImportdatenSichern.IsChecked = false; if (chk != null && chk.IsChecked != null) BtnImportdatenSichern.IsEnabled = !(bool)chk.IsChecked; } private void BtnImportdatenSichernChecked(object sender, RoutedEventArgs e) { BtnOffline.IsChecked = false; BtnOffline.Visibility = Visibility.Hidden; } private void BtnImportdatenSichernUnchecked(object sender, RoutedEventArgs e) { BtnOffline.Visibility = Visibility.Visible; } #endregion private void BtnProtokollClick(object sender, RoutedEventArgs e) { var dateiInfo = new FileInfo(Logger.ExportLog); if (dateiInfo.Directory == null) return; var psi = new ProcessStartInfo("explorer.exe", dateiInfo.Directory.ToString()) { RedirectStandardOutput = true, WindowStyle = ProcessWindowStyle.Normal, UseShellExecute = false }; Process.Start(psi); } } }