/// <summary> /// Ermittelt einen Ansprechpartner zu einer Adresse über den Namen und Vornamen /// </summary> /// <param name="adresse"></param> /// <param name="nachname"></param> /// <param name="vorname"></param> /// <returns></returns> public AnsprechpartnerItem CreateOrGetAnsprechpartner(int adresse, string nachname, string vorname, string email) { try { if (SeminarData.AnsprechpartnerExists(Mandant, adresse, email)) { var ansprechpartner = SeminarData.GetAnsprechpartner(Mandant, adresse, email); ansprechpartner.Nachname = nachname; ansprechpartner.Vorname = vorname; return(SeminarData.UpdateAnsprechpartner(Mandant, ansprechpartner)); } else { var ansprechpartner = new AnsprechpartnerItem(); ansprechpartner.Adresse = adresse; ansprechpartner.Nachname = nachname; ansprechpartner.Vorname = vorname; ansprechpartner.EMail = email; ansprechpartner.Ansprechpartner = $"{vorname} {nachname}"; return(SeminarData.UpdateAnsprechpartner(Mandant, ansprechpartner)); } } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
public void Test_SeminarData_CreateSeminarbuchung_Load_Delete() { var buchung = new Seminarbuchung() { Adresse = 10, AnsprechpartnerEmail = "*****@*****.**", AnsprechpartnerNachname = "Test", Ansprechpartnernummer = 1, AnsprechpartnerVorname = "Vorname", BelID = 0, BelPosID = 0, BuchungID = 0, EmailBestaetigungGesendet = false, Konto = "D100000", KontoMatchcode = "Testkunde", Mandant = _mandant.Id, SeminarterminID = "S100001", VorPosID = 0 }; var saveBuchung = SeminarData.UpdateOrInsertSeminarbuchung(_mandant, buchung); Assert.IsTrue(saveBuchung.BuchungID != 0); var loadedBuchung = SeminarData.GetSeminarbuchung(_mandant, saveBuchung.BuchungID); Assert.IsTrue(saveBuchung.SeminarterminID == loadedBuchung.SeminarterminID); //Assert.AreEqual(loadedBuchung, saveBuchung); //Assert.areEquals(saveBuchung, loadedBuchung); SeminarData.DeleteSeminarbuchung(_mandant, saveBuchung.BuchungID); loadedBuchung = SeminarData.GetSeminarbuchung(_mandant, saveBuchung.BuchungID); }
/// <summary> /// Prüft eine Seminarbuchung und sorgt für die notwendigen Plausibilitäten (z.B. Anlage Ansprechpartner etc.) /// </summary> /// <param name="seminarbuchung">Seminarbuchung</param> private void validateSeminarbuchung(Seminarbuchung seminarbuchung) { if (SeminarData.KontokorrentExists(Mandant, seminarbuchung.Konto, true)) { var konto = SeminarData.GetKunde(Mandant, seminarbuchung.Konto); if (seminarbuchung.Adresse == 0) { seminarbuchung.Adresse = konto.Adresse; } if (string.IsNullOrWhiteSpace(seminarbuchung.KontoMatchcode)) { seminarbuchung.KontoMatchcode = konto.Matchcode; } var ansprechpartner = this.CreateOrGetAnsprechpartner(seminarbuchung.Adresse, seminarbuchung.AnsprechpartnerNachname, seminarbuchung.AnsprechpartnerVorname, seminarbuchung.AnsprechpartnerEmail); seminarbuchung.Ansprechpartnernummer = ansprechpartner.Nummer; var seminartermin = this._seminarManager.GetSeminartermin(seminarbuchung.SeminarterminID); if (seminartermin.AnzahlTeilnehmer.GetValueOrDefault() >= seminartermin.AnzahlTeilnehmerMax) { throw new BuchungValidationException(Properties.Resources.BuchungValidationSeminarterminSoldOut); } } else { throw new BuchungValidationException(Properties.Resources.BuchungValidationException); } }
/// <summary> /// Führt eine Seminarbuchung durch bzw. aktualisiert diese /// </summary> /// <param name="seminarbuchung"></param> /// <returns></returns> public Seminarbuchung UpdateBuchung(Seminarbuchung seminarbuchung) { try { Seminarbuchung buchungUpdated; // Validierung des Objektes validateSeminarbuchung(seminarbuchung); buchungUpdated = SeminarData.UpdateOrInsertSeminarbuchung(Mandant, seminarbuchung); /// Aktualisierung erst, wenn Buchung erfolgreich committed SeminarData.UpdateSeminarterminTeilnehmer(Mandant, seminarbuchung.SeminarterminID); return(buchungUpdated); } catch (RecordUpdateException) { throw; } catch (Exception ex) { TraceLog.LogException(ex); throw ex; } }
public void SeminarData_GetAnsprechpartner_ByNummer() { var result = SeminarData.GetAnsprechpartner(_mandant, 6); Assert.IsNotNull(result); Assert.IsTrue(result.Ansprechpartner.Contains("Arber")); }
public void Test_SeminarData_AnsprechpartnerExists() { var test1 = SeminarData.AnsprechpartnerExists(_mandant, 43, "*****@*****.**"); Assert.IsTrue(test1); var test2 = SeminarData.AnsprechpartnerExists(_mandant, 999, "*****@*****.**"); Assert.IsFalse(test2); }
public void Test_SeminarData_KontokorrentExists() { var test1 = SeminarData.KontokorrentExists(_mandant, "D100000", true); Assert.IsTrue(test1); var test2 = SeminarData.KontokorrentExists(_mandant, "Dieses kOnto gibt es nicht", true); Assert.IsFalse(test2); }
/// <summary> /// Listet alle aktiven Seminare mit Terminen auf /// </summary> /// <returns></returns> public List <Seminar> ListSeminare() { try { return(SeminarData.GetSeminare(Mandant)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt eine Liste von Ansprechpartner für eine Adresse zurück /// </summary> /// <param name="filter"></param> /// <returns></returns> public AnsprechpartnerSet GetAnsprechpartner(int adresse) { try { return(SeminarData.GetAnsprechpartnerList(Mandant, adresse)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt eine Liste von Kunden zurück /// </summary> /// <param name="filter">Filter für Matchcode</param> /// <returns></returns> public List <Kunde> GetKunden(string filter) { try { return(SeminarData.GetKunden(Mandant, filter)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt alle Seminarbuchungen für eine Belegposition zurück /// </summary> /// <param name="belegHandle"></param> /// <param name="belegPositionHandle"></param> /// <returns></returns> public Seminarbuchungen GetBuchungen(int belegHandle, int belegPositionHandle) { try { return(SeminarData.GetSeminarbuchungen(Mandant, belegHandle, belegPositionHandle)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Löscht alle Seminarbuchungen zu einer BelegPosition /// </summary> /// <param name="belegHandle"></param> /// <param name="belegPositionHandle"></param> public void DeleteBuchungen(int belegHandle, int belegPositionHandle) { try { SeminarData.DeleteSeminarbuchungen(Mandant, belegHandle, belegPositionHandle); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt alle Seminarbuchungen für eine Belegposition zurück /// </summary> /// <param name="vorPosHandle"></param> /// <returns></returns> public Seminarbuchungen GetBuchungen(int vorPosHandle) { try { return(SeminarData.GetSeminarbuchungen(Mandant, vorPosHandle)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Löscht eine Buchung /// </summary> /// <param name="BuchungID"></param> public void DeleteBuchung(int buchungID) { try { var seminarterminList = new List <string>(); SeminarData.DeleteSeminarbuchung(Mandant, buchungID); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt eine Seminarbuchung zurück /// </summary> /// <param name="buchungID"></param> /// <returns></returns> public Seminarbuchung GetBuchung(int buchungID) { try { return(SeminarData.GetSeminarbuchung(Mandant, buchungID)); } catch (RecordNotFoundException) { throw; } catch (Exception ex) { TraceLog.LogException(ex); throw ex; } }
/// <summary> /// Listet ein Seminar inklusive Termine auf /// </summary> /// <param name="artikelnummer"></param> /// <exception cref="RecordNotFoundException">Wird ausgelöst, wenn keine Daten gefunden wurden.</exception> /// <returns></returns> public Seminar GetSeminar(string artikelnummer) { try { return(SeminarData.GetSeminar(Mandant, artikelnummer)); } catch (RecordNotFoundException) { throw; } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Aktualisiert ein Seminar inklusive der Termine /// </summary> /// <param name="Seminar"></param> /// <returns></returns> public Seminar UpdateSeminar(Seminar seminar) { try { if (seminar == null) { throw new ArgumentNullException("Seminar"); } return(SeminarData.UpdateSeminar(Mandant, seminar)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt einen Ansprechpartner zurück /// </summary> /// <param name="ansprechpartnernummer"></param> /// <returns></returns> public AnsprechpartnerItem GetAnsprechpartner(int ansprechpartnernummer) { try { return(SeminarData.GetAnsprechpartner(Mandant, ansprechpartnernummer)); } catch (RecordNotFoundException) { throw; } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Gibt einen Seminartermin zurück /// </summary> /// <param name="seminarterminID"></param> /// <exception cref="RecordNotFoundException">Wird ausgelöst, wenn keine Daten gefunden wurden.</exception> /// <returns></returns> public Seminartermin GetSeminartermin(string seminarterminID) { try { return(SeminarData.GetSeminartermin(Mandant, seminarterminID)); } catch (RecordNotFoundException) { throw; } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Aktualisiert einen Ansprechpartner /// </summary> /// <param name="ansprechpartner"></param> /// <returns></returns> public AnsprechpartnerItem UpdateAnsprechpartner(AnsprechpartnerItem ansprechpartner) { try { if (ansprechpartner.Adresse == 0) { throw new Exception("Speicherung von Ansprechpartner ohne Adresse nicht möglich."); } return(SeminarData.UpdateAnsprechpartner(Mandant, ansprechpartner)); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
public void Test_SeminarData_GetSeminarbuchung_And_ExpectException() { var buchung = SeminarData.GetSeminarbuchung(_mandant, -1); Assert.IsNull(buchung); }
/// <summary> /// Führt eine Seminarbuchung durch und legt den Warenwirtschaftsbeleg /// in der Office Line an. /// </summary> /// <param name="seminarbuchung"></param> /// <returns></returns> public Seminarbuchung CreateOrUpdateBuchungsbeleg(Seminarbuchung seminarbuchung) { try { if (seminarbuchung == null) { throw new ArgumentNullException("Seminarbuchung"); } var seminartermin = SeminarData.GetSeminartermin(Mandant, seminarbuchung.SeminarterminID); Mandant.MainDevice.GenericConnection.BeginTransaction(); using (var beleg = new Sagede.OfficeLine.Wawi.BelegEngine.Beleg(Mandant, Erfassungsart.Verkauf)) { if (seminarbuchung.BuchungID == 0) { #region Neuanlage eines Beleges if (!beleg.Initialize("VVA", DateTime.Today, (short)Mandant.PeriodenManager.Perioden.Date2Periode(DateTime.Now).Jahr)) { throw new BuchungValidationException("Fehler bei Beleganlage. " + beleg.Errors.GetDescriptionSummary()); } beleg.Bearbeiter = Mandant.Benutzer.Name; if (seminartermin.Startdatum.HasValue) { beleg.Liefertermin = seminartermin.Startdatum.GetValueOrDefault(); } else { beleg.Liefertermin = beleg.Belegdatum; } beleg.Matchcode = $"Seminarbuchung für Termin {seminartermin.SeminarterminID}"; if (!beleg.SetKonto(seminarbuchung.Konto, false)) { throw new BuchungValidationException("Fehler bei Beleganlage [SetKonto]. " + beleg.Errors.GetDescriptionSummary()); } var position = new BelegPosition(beleg); if (!position.Initialize(Positionstyp.Artikel)) { throw new BuchungValidationException("Fehler bei Beleganlage [InitializePosition]. " + beleg.Errors.GetDescriptionSummary()); } if (!position.SetArtikel(seminartermin.Artikelnummer, 0)) { throw new BuchungValidationException("Fehler bei Artikelanlage [SetArtikel]. " + beleg.Errors.GetDescriptionSummary()); } position.Menge = 1; position.RefreshBasismenge(true, 2); //bei manuellen Preisen => IstEinzelpreisManuell //position.Einzelpreis = 1000; //position.IstEinzelpreisManuell = true; position.Calculate(); beleg.Positionen.Add(position); beleg.Renumber(); beleg.ReadStandardTexte(true); if (!beleg.Validate(true)) { throw new BuchungValidationException("Fehler bei Beleganlage [Validate]. " + beleg.Errors.GetDescriptionSummary()); } // TODO: Transaktionsklammer if (!beleg.Save(false)) { throw new BuchungValidationException("Fehler bei Beleganlage [Save]. " + beleg.Errors.GetDescriptionSummary()); } seminarbuchung.BelID = beleg.Handle; seminarbuchung.BelPosID = position.Handle; seminarbuchung.VorPosID = position.VorgangspositionsHandle; seminarbuchung.KontoMatchcode = beleg.A0Matchcode; seminarbuchung.Adresse = beleg.VKA0AdressNummer; seminarbuchung = this.UpdateBuchung(seminarbuchung); #endregion } else { throw new NotImplementedException("Aktualiserung Buchungsbeleg"); } } if (!Mandant.MainDevice.GenericConnection.PendingRollback) { Mandant.MainDevice.GenericConnection.CommitTransaction(); } else { Mandant.MainDevice.GenericConnection.RollbackTransaction(); } return(seminarbuchung); } catch (Exception ex) { Mandant.MainDevice.GenericConnection.RollbackTransaction(); TraceLog.LogException(ex); throw; } }