123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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); }
- }
- }
- }
|