/// <summary> /// Saves a new Ausgangsrechnung within the database /// </summary> /// <param name="projektID">The connected ProjektID</param> /// <param name="unpaidBalance">The amount of money which the Ausgangsrechnung shall include</param> /// <param name="rechnungstitelString">The title of the Ausgangsrechnung</param> public void CreateAusgangsrechnung(int projektID, double unpaidBalance, string rechnungstitelString) { // create business objects for Ausgangsrechnung, Ausgangsbuchung & Buchungszeilen AusgangsrechnungTable rechnung = new AusgangsrechnungTable(); AusgangsbuchungTable buchung = new AusgangsbuchungTable(); BuchungszeilenTable zeile = new BuchungszeilenTable(); // fill with values and validate rechnung.ProjektID = projektID; rechnung.Rechnungsdatum = DateTime.Now.ToShortDateString(); rechnung.Bezeichnung = rechnungstitelString; zeile.BetragNetto = unpaidBalance; zeile.Bezeichnung = rechnungstitelString; zeile.Buchungsdatum = rechnung.Rechnungsdatum; // initialise Rule objects PositiveIntValidator piv = new PositiveIntValidator(); PositiveDoubleValidator pdv = new PositiveDoubleValidator(); LettersNumbersHyphenSpaceValidator lnhsv = new LettersNumbersHyphenSpaceValidator(); StringLength150Validator slv = new StringLength150Validator(); // evaluate ProjektID piv.Eval(rechnung.ProjektID); if (piv.HasErrors) { throw new InvalidInputException("ProjektID ungültig!"); } // evaluate Bezeichnung lnhsv.Eval(rechnung.Bezeichnung); slv.Eval(rechnung.Bezeichnung); if (lnhsv.HasErrors || slv.HasErrors) { throw new InvalidInputException("Bezeichnung ungültig!"); } // evaluate Betrag pdv.Eval(zeile.BetragNetto); if (pdv.HasErrors) { throw new InvalidInputException("Betrag ungültig"); } // SAVE Ausgangsrechnung, Buchungszeile and Ausgangsbuchung try { buchung.AusgangsrechnungsID = DALFactory.GetDAL().SaveAusgangsrechnung(rechnung); buchung.BuchungszeilenID = DALFactory.GetDAL().SaveBuchungszeile(zeile); // create Ausgangsbuchung with ID values which just returned from database DALFactory.GetDAL().SaveAusgangsbuchung(buchung); } catch (SQLiteException e) { this.logger.Log(Logger.Level.Info, "A database exception occured while saving a new Ausgangsrechnung, Buchungszeile or Ausgangsbuchung."); throw new DataBaseException(e.Message, e); } }
// add Buchungszeile private void AddBuchungszeileToDataGridView() { string betrag = this.eingangsrechnungBetragTextBox.Text; string bezeichnung = this.buchungszeileBezeichnungTextBox.Text; IRule pdv = new PositiveDoubleValidator(); IRule lnhsv = new LettersNumbersHyphenSpaceValidator(); IRule slv = new StringLength150Validator(); // Create Buchungszeilen business object BuchungszeilenTable buchungszeile = new BuchungszeilenTable(); buchungszeile.Bezeichnung = DataBindingFramework.BindFromString(bezeichnung, "Bezeichnung", this.eingangsrechnungMsgLabel, false, lnhsv, slv); buchungszeile.BetragNetto = DataBindingFramework.BindFromDouble(betrag, "Betrag", this.eingangsrechnungMsgLabel, false, pdv); buchungszeile.KategorieID = this.kategorieComboBox.SelectedIndex+1; buchungszeile.Buchungsdatum = DateTime.Now.ToShortDateString(); // in case of errors, do not continue with saving new Eingangsrechnung if (this.eingangsrechnungMsgLabel.Visible) { return; } // add to DataGridView this.buchungszeilenBindingSource.Add(buchungszeile); GlobalActions.ShowSuccessLabel(this.eingangsrechnungMsgLabel); }
/// <summary> /// Save new Buchungszeile to the SQLite database /// </summary> /// <param name="table">The business object</param> /// <returns>The ID of the just inserted Buchungszeile</returns> public int SaveBuchungszeile(BuchungszeilenTable table) { string sql = "INSERT INTO Buchungszeilen (KategorieID, BankkontoID, BetragNetto, BetragUST, Buchungsdatum, Bezeichnung) VALUES (?, ?, ?, ?, ?, ?)"; int insertedID; try { insertedID = this.InsertAndReturnID(sql, "Buchungszeilen", table.KategorieID, table.BankkontoID, table.BetragNetto, table.BetragUST, table.Buchungsdatum, table.Bezeichnung); } catch (SQLiteException) { throw; } // return ID of inserted item return insertedID; }
/// <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 Buchungszeile to the mock db /// </summary> /// <param name="table">The business object</param> /// <returns>The ID of the inserted Buchungszeile</returns> public int SaveBuchungszeile(BuchungszeilenTable table) { table.ID = MockDataBaseManager.BuchungszeilenID; MockDataBaseManager.savedBuchungszeilen.Add(table); return table.ID; }
/// <summary> /// Loads all Eingangsrechnungen as Views /// </summary> /// <returns>The saved Eingangsrechnungen</returns> public List<EingangsrechnungsView> LoadEingangsrechnungsView() { List<EingangsrechnungsView> view = new List<EingangsrechnungsView>(); int buchungsID = -1; BuchungszeilenTable zeile = new BuchungszeilenTable(); foreach (EingangsrechnungTable table in savedEingangsrechnungen) { EingangsrechnungsView viewelement = new EingangsrechnungsView(); viewelement.ID = table.ID; viewelement.Bezeichnung = table.Bezeichnung; viewelement.Rechnungsdatum = table.Rechnungsdatum; // get connected EingangsbuchungsID foreach (EingangsbuchungTable b in savedEingangsbuchungen) { if (b.EingangsrechungsID == viewelement.ID) { buchungsID = b.BuchungszeilenID; break; } } // get connected Buchungszeile and Betrag foreach (BuchungszeilenTable b in savedBuchungszeilen) { if (b.ID == buchungsID) { viewelement.Betrag = b.BetragUST; break; } } view.Add(viewelement); } return view; }