using System; using System.Globalization; namespace GCHR.Model { public class Periode { internal static Periode AktuellePeriode = new Periode("200001"); public static string ErsterMonatImGeschaeftsjahr { get; set; } public static DateipfadeXml Dateipfade { get; set; } public string Jahr; public string Monat; public string JahrZweistellig { get { return Jahr.Substring(2, 2); } } private readonly bool _keinJahresabschluss; public Periode(string periode) : this(periode, false) { } public Periode(string periode, bool keinJahresabschluss) { Jahr = periode.Substring(0, 4); Monat = periode.Substring(4, 2); _keinJahresabschluss = keinJahresabschluss; } public Periode Jahresbeginn { get { return Jahresbeginn2(false); } } public Periode Bilanzbeginn { get { return Jahresbeginn2(_keinJahresabschluss); } } private Periode Jahresbeginn2(bool keinJahresabschluss) { var aktJahr = Int32.Parse(Jahr); if (String.Compare(Monat, ErsterMonatImGeschaeftsjahr, StringComparison.Ordinal) < 0) aktJahr--; if (keinJahresabschluss) aktJahr--; return new Periode(aktJahr + ErsterMonatImGeschaeftsjahr); } public string Vormonat (int verschiebung) { var monat = Int32.Parse(Monat); var jahr = Int32.Parse(Jahr); monat -= verschiebung; if (monat < 1) { monat += 12; jahr--; } if (monat > 12) { monat -= 12; jahr++; } return (jahr + monat.ToString(CultureInfo.InvariantCulture).PadLeft(2, '0')); } public Periode Vorgaenger { get { return new Periode(Vormonat(1)); } } public Periode Nachfolger { get { return new Periode(Vormonat(-1)); } } public override string ToString() { return (Jahr + Monat); } public string Klartext { get { return (Monat + "/" + Jahr); } } public string BalanceDatei { get { return String.Format(Dateipfade.ExportBalance, Jahr, Monat); } } public string AccountsDatei { get { return String.Format(Dateipfade.ExportAccounts, Jahr, Monat); } } public string LogDatei { get { var datei = String.Format(Dateipfade.ExportLog, Jahr, Monat); return datei; } } public string ProtokollDatei { get { return String.Format(Dateipfade.ExportProtokoll, Jahr, Monat); } } public Ampelstatus Status { get { return Ampelstatus.Gelb; } } public string Stand { get { return "20.02.2013"; } } public string Info { get { return "Abweichung in Summe: 12.345 €"; } } } }