/// <summary> /// Liefert eine Liste von Kunden zu einem Matchcode Filter /// </summary> /// <param name="mandant"></param> /// <param name="filter"></param> /// <returns></returns> public static List <Kunde> GetKunden(Mandant mandant, string filter) { var kunden = new List <Kunde>(); var parameterList = new QueryParameterList(); parameterList.AddClauseParameter("Mandant", mandant.Id); if (!filter.StartsWith("%")) { filter = "%" + filter; } if (!filter.EndsWith("%")) { filter = filter + "%"; } parameterList.AddClauseParameter("Matchcode", filter, ClauseParameterComparisonType.Like); parameterList.AddClauseParameter("KtoArt", "D"); var kontokorrentSet = mandant.MainDevice.Entities.Kontokorrent.GetList(parameterList); foreach (var k in kontokorrentSet) { kunden.Add(SeminarData.GetKunde(mandant, k.Kto)); } return(kunden); }
public static Seminar GetSeminar(Mandant mandant, string artikelnummer) { var artikelItem = mandant.MainDevice.Entities.Artikel.GetItem(artikelnummer, mandant.Id); if (artikelItem == null) { throw new RecordNotFoundException("Seminar/Artikel", artikelnummer); } var seminar = new Seminar() { Aktiv = artikelItem.Aktiv, Artikelgruppe = artikelItem.Artikelgruppe, Artikelnummer = artikelItem.Artikelnummer, Bezeichnung1 = artikelItem.Bezeichnung1, Bezeichnung2 = artikelItem.Bezeichnung2, Dimensionstext = artikelItem.Dimensionstext, DimensionstextHTML = artikelItem.DimensionstextHTML, DimensionstextRTF = artikelItem.DimensionstextRTF, Langtext = artikelItem.Langtext, LangtextHTML = artikelItem.LangtextHTML, LangtextRTF = artikelItem.LangtextRTF, Mandant = artikelItem.Mandant, Matchcode = artikelItem.Matchcode, Memo = artikelItem.Memo, Timestamp = artikelItem.Timestamp, USER_AnzahlTage = ConversionHelper.ToInt16(artikelItem.UserDefinedFields["USER_AnzahlTage"].Value), USER_Seminar = ConversionHelper.ToBoolean(artikelItem.UserDefinedFields["USER_Seminar"].Value), USER_UhrzeitBis = ConversionHelper.ToString(artikelItem.UserDefinedFields["USER_UhrzeitBis"].Value), USER_UhrzeitVon = ConversionHelper.ToString(artikelItem.UserDefinedFields["USER_UhrzeitVon"].Value) }; seminar.SeminarterminCollection = SeminarData.GetSeminartermine(mandant, seminar.Artikelnummer); return(seminar); }
/// <summary> /// Gibt eine Liste aller Seminarbuchungen zu einer BelegPosition anhand der VorPosID zurück /// </summary> /// <param name="mandant"></param> /// <param name="vorPosID"></param> /// <returns></returns> public static Seminarbuchungen GetSeminarbuchungen(Mandant mandant, int vorPosID) { try { var list = new Seminarbuchungen(); var qry = "SELECT BuchungID FROM PSDSeminarbuchungen WHERE Mandant=@mandant AND VorPosID=@vorposid"; var command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(qry); command.AppendInParameter("mandant", typeof(short), mandant.Id); command.AppendInParameter("vorposid", typeof(int), vorPosID); using (var reader = command.ExecuteReader()) { while (reader.Read()) { list.Add(SeminarData.GetSeminarbuchung(mandant, reader.GetInt32("BuchungID"))); } } return(list); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }
/// <summary> /// Aktualisiert die Teilnehmer zu einem Termin /// </summary> /// <param name="mandant"></param> /// <param name="seminarterminID"></param> public static void UpdateSeminarterminTeilnehmer(Mandant mandant, string seminarterminID) { var seminartermin = SeminarData.GetSeminartermin(mandant, seminarterminID); var countTeilnehmer = mandant.MainDevice.Lookup.RowCount("PSDSeminarbuchungen", $"Mandant={mandant.Id} AND SeminarterminID={SqlStrings.ToSqlString(seminarterminID)}"); seminartermin.AnzahlTeilnehmer = ConversionHelper.ToInt16(countTeilnehmer); SeminarData.UpdateOrCreateSeminartermin(mandant, seminartermin); }
/// <summary> /// Aktualisiert oder legt eine neue Seminarbuchung an /// </summary> /// <param name="mandant"></param> /// <param name="buchung"></param> /// <returns></returns> /// <exception cref="Exception">wird bei allgemeinen Fehler geworfen.</exception> /// <exception cref="RecordUpdateException">wird bei Fehlern im DB-Update geworfen.</exception> public static Seminarbuchung UpdateOrInsertSeminarbuchung(Mandant mandant, Seminarbuchung buchung) { var qry = new StringBuilder(); if (buchung.BuchungID == 0) { // Neuanlage buchung.BuchungID = mandant.MainDevice.GetTan("PSDSeminarbuchungen", mandant.Id); buchung.Mandant = buchung.Mandant == 0 ? mandant.Id : buchung.Mandant; qry.AppendLine("INSERT INTO PSDSeminarbuchungen "); qry.AppendLine("(BuchungID, Mandant, SeminarterminID, BelID, BelPosID, VorPosID, Adresse, "); qry.AppendLine("Konto, KontoMatchcode, Ansprechpartnernummer, AnsprechpartnerVorname, "); qry.AppendLine("AnsprechpartnerNachname, AnsprechpartnerEmail, EmailBestaetigungGesendet)"); qry.AppendLine("VALUES"); qry.AppendLine("(@buchungid, @mandant, @seminarterminid, @belid, @belposid, @vorposid, @adresse, "); qry.AppendLine("@konto, @kontomatchcode, @ansprechpartnernummer, @ansprechpartnervorname, "); qry.AppendLine("@ansprechpartnernachname, @ansprechpartneremail, @emailbestaetigunggesendet)"); } else { // Aktualisierung qry.AppendLine("UPDATE PSDSeminarbuchungen SET "); qry.AppendLine("SeminarterminID=@seminarterminid, BelID=@belid, BelPosID=@belposid, VorPosID=@vorposid, "); qry.AppendLine("Adresse=@adresse, Konto=@konto, KontoMatchcode=@kontomatchcode, Ansprechpartnernummer=@ansprechpartnernummer, AnsprechpartnerVorname=@ansprechpartnervorname, "); qry.AppendLine("AnsprechpartnerNachname=@ansprechpartnernachname, AnsprechpartnerEmail=@ansprechpartneremail, EmailbestaetigungGesendet=@emailbestaetigunggesendet "); qry.AppendLine("WHERE Mandant=@mandant AND BuchungID=@buchungID"); } var command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(qry.ToString()); command.AppendInParameter("buchungid", typeof(int), buchung.BuchungID); command.AppendInParameter("mandant", typeof(short), buchung.Mandant); command.AppendInParameter("seminarterminid", typeof(string), buchung.SeminarterminID); command.AppendInParameter("belid", typeof(int), buchung.BelID); command.AppendInParameter("belposid", typeof(int), buchung.BelPosID); command.AppendInParameter("vorposid", typeof(int), buchung.VorPosID); command.AppendInParameter("adresse", typeof(int), buchung.Adresse); command.AppendInParameter("konto", typeof(string), buchung.Konto); command.AppendInParameter("kontomatchcode", typeof(string), buchung.KontoMatchcode); command.AppendInParameter("ansprechpartnernummer", typeof(int), buchung.Ansprechpartnernummer); command.AppendInParameter("ansprechpartnervorname", typeof(string), buchung.AnsprechpartnerVorname); command.AppendInParameter("ansprechpartnernachname", typeof(string), buchung.AnsprechpartnerNachname); command.AppendInParameter("ansprechpartneremail", typeof(string), buchung.AnsprechpartnerEmail); command.AppendInParameter("emailbestaetigunggesendet", typeof(short), ConversionHelper.ToDBBoolean(buchung.EmailBestaetigungGesendet)); var result = command.TryExecuteNonQuery(); if (result.State.IsSucceeded) { buchung = SeminarData.GetSeminarbuchung(mandant, buchung.BuchungID); return(buchung); } else { TraceLog.LogException(result.State.ExceptionOccurred); throw new RecordUpdateException("Seminarbuchung", buchung.BuchungID.ToString()); } }
/// <summary> /// Aktualisiert bzw. legt einen neuen Ansprechpartner an /// </summary> /// <param name="mandant"></param> /// <param name="ansprechpartner"></param> /// <returns></returns> public static AnsprechpartnerItem UpdateAnsprechpartner(Mandant mandant, AnsprechpartnerItem ansprechpartner) { AnsprechpartnerItem item = null; if (SeminarData.AnsprechpartnerExists(mandant, ansprechpartner.Adresse, ansprechpartner.EMail)) { var parameterList = new QueryParameterList(); parameterList.AddClauseParameter("Mandant", mandant.Id); parameterList.AddClauseParameter("Adresse", ansprechpartner.Adresse); parameterList.AddClauseParameter("EMail", ansprechpartner.EMail); item = mandant.MainDevice.Entities.Ansprechpartner.GetItem(parameterList); } else { item = mandant.MainDevice.Entities.Ansprechpartner.CreateItem(); item.Mandant = mandant.Id; } item.Abteilung = ansprechpartner.Abteilung; item.Adresse = ansprechpartner.Adresse; item.Anrede = ansprechpartner.Anrede; item.Ansprechpartner = ansprechpartner.Ansprechpartner; item.Autotelefon = ansprechpartner.Autotelefon; item.Briefanrede = ansprechpartner.Briefanrede; item.EMail = ansprechpartner.EMail; if (ansprechpartner.Geburtsdatum.HasValue) { item.Geburtsdatum = ansprechpartner.Geburtsdatum.GetValueOrDefault(); } item.Gruppe = ansprechpartner.Gruppe; item.Memo = ansprechpartner.Memo; item.Mobilfunk = ansprechpartner.Mobilfunk; item.Nachname = ansprechpartner.Nachname; item.Position = ansprechpartner.Position; item.Telefax = ansprechpartner.Telefax; item.Telefon = ansprechpartner.Telefon; item.TelefonPrivat = ansprechpartner.TelefonPrivat; item.Titel = ansprechpartner.Titel; item.Transferadresse = ansprechpartner.Transferadresse; item.Vorname = ansprechpartner.Vorname; item.ZuHaendenText = ansprechpartner.ZuHaendenText; //ansprechpartner.UserDefinedFields.ToList().ForEach(u => item.UserDefinedFields[u.Name].Value = u.Value); var result = item.TrySave(); if (!result.IsSucceeded) { TraceLog.LogException(result.ExceptionOccurred); throw result.ExceptionOccurred; } return(item); }
public static List <Seminar> GetSeminare(Mandant mandant) { var list = new List <Seminar>(); var qry = $"SELECT Artikelnummer FROM KHKArtikel WHERE Mandant={mandant.Id} AND USER_Seminar=-1"; using (var reader = mandant.MainDevice.GenericConnection.ExecuteReader(qry)) { while (reader.Read()) { list.Add(SeminarData.GetSeminar(mandant, reader.GetString("Artikelnummer"))); } } return(list); }
public static List <Seminartermin> GetSeminartermine(Mandant mandant, string artikelnummer) { var list = new List <Seminartermin>(); var qry = "SELECT SeminarterminID FROM PSDSeminartermine WHERE Mandant=@mandant AND Artikelnummer=@artikelnummer"; var command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(qry); command.AppendInParameter("mandant", typeof(short), mandant.Id); command.AppendInParameter("artikelnummer", typeof(string), artikelnummer); using (var reader = command.ExecuteReader()) { while (reader.Read()) { list.Add(SeminarData.GetSeminartermin(mandant, reader.GetString("SeminarterminID"))); } } return(list); }
public static Seminar UpdateSeminar(Mandant mandant, Seminar seminar) { try { var artikelItem = mandant.MainDevice.Entities.Artikel.GetItem(seminar.Artikelnummer, mandant.Id); if (artikelItem == null) { artikelItem = mandant.MainDevice.Entities.Artikel.CreateItem(); artikelItem.Mandant = mandant.Id; artikelItem.Artikelnummer = seminar.Artikelnummer; } artikelItem.Bezeichnung1 = seminar.Bezeichnung1; artikelItem.Bezeichnung2 = seminar.Bezeichnung2; artikelItem.Aktiv = seminar.Aktiv; artikelItem.Artikelgruppe = seminar.Artikelgruppe; artikelItem.Dimensionstext = seminar.Dimensionstext; artikelItem.DimensionstextHTML = seminar.DimensionstextHTML; artikelItem.DimensionstextRTF = seminar.DimensionstextRTF; artikelItem.Langtext = seminar.Langtext; artikelItem.LangtextHTML = seminar.LangtextHTML; artikelItem.LangtextRTF = seminar.LangtextRTF; artikelItem.Matchcode = seminar.Matchcode; artikelItem.Memo = seminar.Memo; artikelItem.UserDefinedFields["USER_AnzahlTage"].Value = seminar.USER_AnzahlTage; artikelItem.UserDefinedFields["USER_Seminar"].Value = ConversionHelper.ToDBBoolean(seminar.USER_Seminar); artikelItem.UserDefinedFields["USER_UhrzeitBis"].Value = seminar.USER_UhrzeitBis; artikelItem.UserDefinedFields["USER_UhrzeitVon"].Value = seminar.USER_UhrzeitVon; mandant.MainDevice.GenericConnection.BeginTransaction(); seminar.SeminarterminCollection.ForEach(t => SeminarData.UpdateSeminarterminTeilnehmer(mandant, t.SeminarterminID)); artikelItem.Save(); mandant.MainDevice.GenericConnection.CommitTransaction(); return(seminar); } catch (Exception) { mandant.MainDevice.GenericConnection.RollbackTransaction(); throw; } }
public static object UpdateOrCreateSeminartermin(Mandant mandant, Seminartermin seminartermin) { var newRecord = false; var qry = new StringBuilder(); try { var loadTermin = SeminarData.GetSeminartermin(mandant, seminartermin.SeminarterminID); } catch (RecordNotFoundException) { newRecord = true; } if (newRecord) { qry.AppendLine("INSERT INTO PSDSeminartermine "); qry.AppendLine("(SeminarterminID, Mandant, Matchcode, Artikelnummer, TrainerIDEins, TrainerIDZwei, Startdatum, Endedatum, Startzeit, Endezeit, "); qry.AppendLine("AnzahlTeilnehmer, AnzahlTeilnehmerMax, AnzahlTeilnehmerMin, Stornofrist, Adresse, PLZ, Ort, Absagetermin, Abgesagt, "); qry.AppendLine("Absagegrund, Status, Memo, Aktiv)"); qry.AppendLine("VALUES"); qry.AppendLine("@seminarterminid, @mandant, @matchcode, @artikelnummer, @trainerideins, @traineridzwei, @startdatum, @endedatum, @startzeit, @endezeit, "); qry.AppendLine("@anzahlteilnehmer, @anzahlteilnehmermax, @anzahlteilnehmermin, @stornofrist, @adresse, @plz, @ort, @absagetermin, @abgesagt, "); qry.AppendLine("@absagegrund, @status, @memo, @aktiv)"); } else { qry.AppendLine("UPDATE PSDSeminartermine "); qry.AppendLine("SET "); qry.AppendLine("Matchcode=@matchcode, Artikelnummer=@artikelnummer, TrainerIDEins=@trainerideins, TrainerIDZwei=@traineridzwei, Startdatum=@startdatum, Endedatum=@endedatum, Startzeit=@startzeit, Endezeit=@endezeit, "); qry.AppendLine("AnzahlTeilnehmer=@anzahlteilnehmer, AnzahlTeilnehmerMax=@anzahlteilnehmermax, AnzahlTeilnehmerMin=@anzahlteilnehmermin, Stornofrist=@stornofrist, Adresse=@adresse, PLZ=@plz, Ort=@ort, Absagetermin=@absagetermin, Abgesagt=@abgesagt, "); qry.AppendLine("Absagegrund=@absagegrund, Status=@status, Memo=@memo, Aktiv=@aktiv"); qry.AppendLine("WHERE"); qry.AppendLine("SeminarterminID=@seminarterminid AND Mandant=@mandant"); } try { var command = mandant.MainDevice.GenericConnection.CreateSqlStringCommand(qry.ToString()); command.AppendInParameter("seminarterminid", typeof(string), seminartermin.SeminarterminID); command.AppendInParameter("mandant", typeof(short), mandant.Id); command.AppendInParameter("matchcode", typeof(string), seminartermin.Matchcode); command.AppendInParameter("artikelnummer", typeof(string), seminartermin.Artikelnummer); command.AppendInParameter("trainerideins", typeof(string), seminartermin.TrainerIDEins); command.AppendInParameter("traineridzwei", typeof(string), seminartermin.TrainerIDZwei); command.AppendInParameter("startdatum", typeof(DateTime), seminartermin.Startdatum); command.AppendInParameter("endedatum", typeof(DateTime), seminartermin.Endedatum); command.AppendInParameter("startzeit", typeof(string), seminartermin.Startzeit); command.AppendInParameter("endezeit", typeof(string), seminartermin.Endezeit); command.AppendInParameter("anzahlteilnehmer", typeof(short), seminartermin.AnzahlTeilnehmer); command.AppendInParameter("anzahlteilnehmermin", typeof(short), seminartermin.AnzahlTeilnehmerMin); command.AppendInParameter("anzahlteilnehmermax", typeof(short), seminartermin.AnzahlTeilnehmerMax); command.AppendInParameter("stornofrist", typeof(short), seminartermin.Stornofrist); command.AppendInParameter("adresse", typeof(int), seminartermin.Adresse); command.AppendInParameter("plz", typeof(string), seminartermin.PLZ); command.AppendInParameter("ort", typeof(string), seminartermin.Ort); command.AppendInParameter("absagetermin", typeof(DateTime), seminartermin.Absagetermin); command.AppendInParameter("abgesagt", typeof(short), ConversionHelper.ToDBBoolean(seminartermin.Abgesagt)); command.AppendInParameter("absagegrund", typeof(string), seminartermin.Absagegrund); command.AppendInParameter("status", typeof(string), seminartermin.Status); command.AppendInParameter("memo", typeof(string), seminartermin.Memo); command.AppendInParameter("aktiv", typeof(short), ConversionHelper.ToDBBoolean(seminartermin.Aktiv)); command.ExecuteNonQuery(); seminartermin = SeminarData.GetSeminartermin(mandant, seminartermin.SeminarterminID); return(seminartermin); } catch (Exception ex) { TraceLog.LogException(ex); throw; } }