/// <summary>
        /// Saves a new Buchungszeile to the Database
        /// </summary>
        /// <param name="table">The Buchungszeilentable</param>
        /// <param name="eingangsrechnungsID">The ID of the Eingangsrechnung</param>
        public void SaveBuchungszeile(BuchungszeilenTable table, int eingangsrechnungsID)
        {
            table.BetragUST = table.BetragNetto; // we don't use UST

            // check EingangsrechnungsID
            IRule piv = new PositiveIntValidator();
            piv.Eval(eingangsrechnungsID);

            // check description
            IRule lnhsv = new LettersNumbersHyphenSpaceValidator();
            IRule slv = new StringLength150Validator();
            lnhsv.Eval(table.Bezeichnung);
            slv.Eval(table.Bezeichnung);

            // check Betrag
            IRule pdv = new PositiveDoubleValidator();
            pdv.Eval(table.BetragNetto);

            // check date
            IRule dateval = new DateValidator();
            dateval.Eval(table.Buchungsdatum);

            // check KategorieID for positive int
            IRule piv2 = new PositiveIntValidator();
            piv2.Eval(table.KategorieID);

            if (piv.HasErrors || lnhsv.HasErrors || slv.HasErrors || pdv.HasErrors || dateval.HasErrors || piv2.HasErrors)
            {
                throw new InvalidInputException("Daten ungültig");
            }

            // save Buchungszeile
            int bzID = -1;
            try
            {
                bzID = DALFactory.GetDAL().SaveBuchungszeile(table);
            }
            catch (SQLiteException)
            {
                throw;
            }

            // save Eingangsbuchung
            EingangsbuchungTable eingangsbuchung = new EingangsbuchungTable();
            eingangsbuchung.BuchungszeilenID = bzID;
            eingangsbuchung.EingangsrechungsID = eingangsrechnungsID;

            try
            {
                DALFactory.GetDAL().SaveEingangsbuchung(eingangsbuchung);
            }
            catch (SQLiteException)
            {
                throw;
            }
        }
 /// <summary>
 /// Saves a new Eingangsrechnung to the database
 /// </summary>
 /// <param name="table">The Eingangsbuchungstable</param>
 public void SaveEingangsbuchung(EingangsbuchungTable table)
 {
     string sql = "INSERT INTO Eingangsbuchung (BuchungszeilenID, EingangsrechnungsID) VALUES (?, ?)";
     this.SendStatementToDatabase(sql, -1, table.BuchungszeilenID, table.EingangsrechungsID);
 }
 /// <summary>
 /// Saves a new Eingangsbuchung to the database
 /// </summary>
 /// <param name="table">The Eingangsbuchungstable</param>
 public void SaveEingangsbuchung(EingangsbuchungTable table)
 {
     MockDataBaseManager.savedEingangsbuchungen.Add(table);
 }