using System; namespace GCHR.Model { public class Periode { 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(string geschaeftsjahr) { return Jahresbeginn(geschaeftsjahr, false); } public Periode Bilanzbeginn(string geschaeftsjahr) { return Jahresbeginn(geschaeftsjahr, _keinJahresabschluss); } private Periode Jahresbeginn(string geschaeftsjahr, bool keinJahresabschluss) { int ersterMonat; // erster Monat im Geschäftsjahr try { ersterMonat = Int32.Parse(geschaeftsjahr); if (ersterMonat > 12 || ersterMonat < 1) throw new OverflowException("Erster Monat im Geschäftsjahr muss zwischen 1 und 12 sein."); } catch (Exception) { ersterMonat = 1; } var aktJahr = Int32.Parse(Jahr); if (Int32.Parse(Monat) < ersterMonat) aktJahr--; if (keinJahresabschluss) aktJahr--; return new Periode(aktJahr + ersterMonat.ToString().PadLeft(2, '0')); } public string Vormonat (int verschiebung) { var monat = Int32.Parse(Monat); var jahr = Int32.Parse(Jahr); monat -= verschiebung; if (monat < 1) { monat += 12; jahr--; } return (jahr + monat.ToString().PadLeft(2, '0')); } public override string ToString() { return (Jahr + Monat); } public string Klartext { get { return (Monat + "/" + Jahr); } } } }