/// <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; } }
/// <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); } }
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); }
public void SeminarbuchungManager_Create_Buchungsbeleg() { var buchung = new Seminarbuchung() { AnsprechpartnerEmail = "*****@*****.**", AnsprechpartnerNachname = "Fritz", AnsprechpartnerVorname = "Thomas", Konto = "D100000", SeminarterminID = "S100001" }; var manager = new SeminarbuchungManager(_mandant); buchung = manager.CreateOrUpdateBuchungsbeleg(buchung); Assert.IsTrue(buchung.BuchungID != 0); Assert.IsTrue(buchung.BelID != 0); Assert.IsTrue(buchung.VorPosID != 0); }
/// <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; } }
/// <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) { // TODO: Implementierung throw new NotImplementedException("CreateOrUpdatebuchungsbeleg"); }