示例#1
0
        private void DataGridChanged()
        {
            foreach (Konto konto in _konten)
            {
                konto.ResetUebertraege();
            }

            try
            {
                for (int i = 0; i < BuchungsSaetze.Count; i++)
                {
                    BuchungssatzDataGridEntry buchungssatzEntry = BuchungsSaetze[i];

                    Konto kontoSoll  = _konten.Single(k => k.Name == buchungssatzEntry.Soll);
                    Konto kontoHaben = _konten.Single(k => k.Name == buchungssatzEntry.Haben);

                    float betragSoll  = buchungssatzEntry.Betrag;
                    float betragHaben = -buchungssatzEntry.Betrag;

                    if (kontoSoll.Typ == Kontotyp.Fremdkapital || kontoSoll.Typ == Kontotyp.Eigenkapital)
                    {
                        betragSoll = -betragSoll;
                    }

                    if (kontoHaben.Typ == Kontotyp.Fremdkapital || kontoHaben.Typ == Kontotyp.Eigenkapital)
                    {
                        betragHaben = -betragHaben;
                    }

                    if (!kontoSoll.DoUebertrag(betragSoll) || !kontoHaben.DoUebertrag(betragHaben))
                    {
                        throw new Exception("Der Buchungssatz mit der Nummer " + (i + 1) + " fühte zu einem negativen Schlussbestand " +
                                            "in einem der beiden Konten. Die Berechnung wurde gestoppt.");
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorMessageDialog(ex.Message);
            }
        }