using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Data; using System.IO; using De.Lambertz.Essentials; using Microsoft.Data.SqlClient; using De.Lambertz.Essentials; namespace De.Lambertz.ODAL { /// /// Erweiterte Bestellungsklasse (erbt von BestellungsRumpf) /// public class ODALBestellung : ODALBestellungsRumpf { private DokumentArt bestellungsArt = new DokumentArt(); // private bool komplettGeladen = false; private bool bestellungSollKopiertWerden = false; private bool anhängeSollenKopiertWerden = false; // private int firmenNr = 0; private int freigabeFirmenNr = 0; private string rAdresse = ""; private string lAdresse = ""; private DateTime datum; private string projektNr = ""; private string bestellGrund = ""; private string bestellGrundText = ""; private string lieferantenNr = ""; private string lieferantenAndresse = ""; private DateTime lieferTermin; private string lieferArt = ""; private string betreff = ""; private DateTime druckAm; private DateTime erfasstAm; private string warenEmpfänger = ""; private string auftragsbestätigung = ""; private string zahlungsBedingung = ""; private string status = ""; private string rStatus = ""; private int anzahlScans = 0; private DateTime archivTimeStamp; private string kdNr = ""; private int kopiertVon = 0; private bool istEntsperrt = false; private string tabellenNamensZusatz = ""; private string berechnetMitRechnung = ""; private bool gelöschteBestellung = false; private int ekva = 0; private bool sofortAndrucken = false; private SortedList zusätzlicheFreigeber = null; // private List positionen = null; private bool positionenSindGeladen = true; // private LamList korrekturbuchungen = null; // //Projektdaten zur Bestellung string projketBezeichnung = ""; double budget = 0; double rest = 0; // //Terminserien private int terminserienID = 0; private int terminserienPositionsNummer = 0; private DateTime nächsterTermin = DateTime.MinValue; //Auftragsbestätigung und Liefertermine private TerminKommentar datumDerAuftragsbestätigung = null; private List bestätigteLiefertermine = null; public ODALBestellung() : base() { this.positionen = new List(); } // public ODALBestellung(int bestellNr, bool sofortLaden) : base() { this.nummer = bestellNr; if (sofortLaden) { this.NachLaden(); } } // public ODALBestellung(int bestellNr, bool sofortLaden, bool gelöschteBestellung, bool orginialDatenLaden) : base() { if (orginialDatenLaden) { this.tabellenNamensZusatz = "_ORIGINAL"; } else { this.gelöschteBestellung = gelöschteBestellung; } this.nummer = bestellNr; if (sofortLaden) { this.NachLaden(); } } // public ODALBestellung(int bestellNr, bool sofortLaden, bool orginialDatenLaden) : base() { if (orginialDatenLaden) { this.tabellenNamensZusatz = "_ORIGINAL"; } this.nummer = bestellNr; if (sofortLaden) { this.NachLaden(); } } public ODALBestellung(ODALBestellungsRumpf rumpf) : base() { this.nummer = rumpf.Nummer; this.besteller = rumpf.Besteller; this.bereich = rumpf.Bereich; this.bestellWert = rumpf.BestellWert; this.freiAm1 = rumpf.FreiAm1; this.freiAm2 = rumpf.FreiAm2; this.freiAm3 = rumpf.FreiAm3; this.freiVon1 = rumpf.FreiVon1; this.freiVon2 = rumpf.FreiVon2; this.freiVon3 = rumpf.FreiVon3; this.freiAmTE = rumpf.FreiAmTE; this.freiVonTE = rumpf.FreiVonTE; this.sonderGrund = rumpf.SonderGrund; this.finaleFreigabeAm = rumpf.FinaleFreigabeAm; this.finaleFreigabeVon = rumpf.FinaleFreigabeVon; } public SortedList ZusätzlicheFreigeber { get { if (zusätzlicheFreigeber == null && this.nummer != 0) { zusätzlicheFreigeber = new SortedList(); using (var con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "select SORTNR, HABELUSERID from ZUREFREIGEBER where BESTNR = @p1 order by SORTNR"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); using (SqlDataReader reader = cmd.ExecuteReader()) { int index = 1000; while (reader.Read()) { if (reader.IsDBNull(0)) { zusätzlicheFreigeber.Add(index++, DBTools.DBGetString(reader, 1)); } else { if (zusätzlicheFreigeber.ContainsKey(DBTools.DBGetInt(reader, 0))) { zusätzlicheFreigeber.Add(DBTools.DBGetInt(reader, 0), DBTools.DBGetString(reader, 1)); } } } } } } if (zusätzlicheFreigeber == null) { zusätzlicheFreigeber = new SortedList(); } return zusätzlicheFreigeber; } } public void ClearZusätzlicheFreigeber() { this.zusätzlicheFreigeber = new SortedList(); if (this.nummer != 0) { using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "delete from ZUREFREIGEBER where BESTNR = @p1"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); cmd.ExecuteNonQuery(); } } } //public void AddZusätzlicheFreigeber(HabelUserBean habelUser) //{ // SortedList tempList = ZusätzlicheFreigeber; // if (habelUser != null && habelUser.Id != null) // { // int index = 0; // bool ok = false; // do // { // if (tempList.ContainsKey(index)) // { // index++; // } // else // { // tempList.Add(index, habelUser.Id); // ok = true; // } // } while (!ok); // } //} public string OdalProjektNummerNr { get { return FreigabeFirmenNr.ToString("00") + projektNr; } } public string BerechnetMitRechnung { get { return berechnetMitRechnung; } set { berechnetMitRechnung = value; } } public bool IstOriginal { get { return this.tabellenNamensZusatz == "_ORIGINAL"; ; } } public void NachLaden(bool auchPositionenLaden) { this.NachLaden(); if (auchPositionenLaden) { if (this.positionen == null || (this.positionen.Count == 0 && positionenSindGeladen == false)) { this.PositionenLaden(); } } } public void NachLaden() { if (!komplettGeladen && this.nummer != 0) { using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); StringBuilder sql = new StringBuilder(); sql.Append("select "); sql.Append("FIRMENNR, "); // 0 sql.Append("RADRESSE, "); // 1 sql.Append("LADRESSE, "); // 2 sql.Append("DATUM, "); // 3 sql.Append("PROJEKTNR, "); // 4 sql.Append("BESTELLGRUND, "); // 5 sql.Append("LIEFERANTENNR, "); // 6 sql.Append("LIEFERANTENADRESSE, "); // 7 sql.Append("LIEFERTERMIN, "); // 8 sql.Append("LIEFERART, "); // 9 sql.Append("BETREFF, "); //10 sql.Append("SONDERGRUND, "); //11 sql.Append("FREIGABEAM, "); //12 sql.Append("FREIGABEVON, "); //13 sql.Append("DRUCKAM, "); //14 sql.Append("DRUCKVON, "); //15 sql.Append("BEREICH, "); //16 sql.Append("BESTELLER, "); //17 sql.Append("ERFASSTAM, "); //18 sql.Append("WARENEMPFAENGER, "); //19 sql.Append("AUFTRAGSBESTAETIGUNG, "); //20 sql.Append("STATUS, "); //21 sql.Append("RSTATUS, "); //22 sql.Append("BESTELLGRUNDTEXT, "); //23 sql.Append("FRAM1, "); //24 sql.Append("FRVON1, "); //25 sql.Append("FRAM2, "); //25 sql.Append("FRVON2, "); //27 sql.Append("FRAM3, "); //28 sql.Append("FRVON3, "); //29 sql.Append("GESAMTSUMME, "); //30 sql.Append("ANZSCANNS, "); //31 sql.Append("TE, "); //32 sql.Append("TEAM, "); //33 sql.Append("TEVON, "); //34 sql.Append("ARCHIV, "); //35 sql.Append("KDNR, "); //36 sql.Append("ENTSPERRT, "); //37 NEU 22.12.2010 sql.Append("BELEGART, "); //38 NEU 20.05.2011 sql.Append("WKZ, "); //39 NEU 12.07.2012 sql.Append("EKVA, "); //40 NEU 27.11.2017 sql.Append("PRIORITAET "); //41 NEU 12.02.2020 if (!gelöschteBestellung) { sql.Append("from ODAL.BESTELLUNGEN" + tabellenNamensZusatz + " "); } else { sql.Append("from ODAL.ODALBES "); } sql.Append("where BESTELLUNGSNR = "); sql.Append(this.nummer); SqlCommand command = new SqlCommand(sql.ToString(), con); SqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { try { //Rumpf besteller = DBTools.DBGetString(reader, 17); bereich = DBTools.DBGetInt(reader, 16); freiAm1 = DBTools.DBGetDate(reader, 24); freiAm2 = DBTools.DBGetDate(reader, 26); freiAm3 = DBTools.DBGetDate(reader, 28); freiAmTE = DBTools.DBGetDate(reader, 33); freiVon1 = DBTools.DBGetInt(reader, 25); freiVon2 = DBTools.DBGetInt(reader, 27); freiVon3 = DBTools.DBGetInt(reader, 29); freiVonTE = DBTools.DBGetInt(reader, 34); sonderGrund = DBTools.DBGetString(reader, 11); finaleFreigabeAm = DBTools.DBGetDate(reader, 12); finaleFreigabeVon = DBTools.DBGetInt(reader, 13); bestellWert = DBTools.DBGetDouble(reader, 30); druckVon = DBTools.DBGetInt(reader, 15); //Rest firmenNr = DBTools.DBGetInt(reader, 0); rAdresse = DBTools.DBGetString(reader, 1); lAdresse = DBTools.DBGetString(reader, 2); datum = DBTools.DBGetDate(reader, 3); projektNr = DBTools.DBGetString(reader, 4); bestellGrund = DBTools.DBGetString(reader, 5); lieferantenNr = DBTools.DBGetString(reader, 6); lieferantenAndresse = DBTools.DBGetString(reader, 7); //IstAnfrage = (lieferantenAndresse == "ANFRAGE"); lieferTermin = DBTools.DBGetDate(reader, 8); lieferArt = DBTools.DBGetString(reader, 9); betreff = DBTools.DBGetString(reader, 10); druckAm = DBTools.DBGetDate(reader, 14); ErfasstAm = DBTools.DBGetDate(reader, 18); warenEmpfänger = DBTools.DBGetString(reader, 19); auftragsbestätigung = DBTools.DBGetString(reader, 20); status = DBTools.DBGetString(reader, 21); rStatus = DBTools.DBGetString(reader, 22); bestellGrundText = DBTools.DBGetString(reader, 23); bestellWert = DBTools.DBGetDouble(reader, 30); anzahlScans = DBTools.DBGetInt(reader, 31); TE = DBTools.DBGetInt(reader, 32); archivTimeStamp = DBTools.DBGetDate(reader, 35); kdNr = DBTools.DBGetString(reader, 36); istEntsperrt = DBTools.DBGetBool(reader, 37); if (!reader.IsDBNull(38)) { bestellungsArt = new DokumentArt(DBTools.DBGetInt(reader, 38)); } else { bestellungsArt = new DokumentArt(); } Wkz = DBTools.DBGetString(reader, 39); ekva = DBTools.DBGetInt(reader, 40); Priorität = Konstanten.GetPriorität(DBTools.DBGetInt(reader, 41)); komplettGeladen = true; } catch (Exception ex) { komplettGeladen = false; Console.WriteLine(ex.Message); } } reader.Close(); //Laden aus ZusatzTabelle sql = new StringBuilder(); sql.Append("select "); sql.Append("ZAHLUNGSBED, TSID, TSLFDNR, NTERMIN, RECHNUNG, FREIFIRMENNR, SOFORTANDRUCKEN "); // 0 if (!gelöschteBestellung) { sql.Append("from ODAL.BESTELLUNGEN2" + tabellenNamensZusatz + " "); } else { sql.Append("from ODAL.ODALBES2 "); } sql.Append("where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); reader = command.ExecuteReader(); if (reader.Read()) { try { zahlungsBedingung = DBTools.DBGetString(reader, 0); freigabeFirmenNr = DBTools.DBGetInt(reader, 5); sofortAndrucken = DBTools.DBGetBool(reader, 6); //Terminserie if (!reader.IsDBNull(1)) { terminserienID = DBTools.DBGetInt(reader, 1); terminserienPositionsNummer = DBTools.DBGetInt(reader, 2); nächsterTermin = DBTools.DBGetDate(reader, 3); berechnetMitRechnung = DBTools.DBGetString(reader, 4); } } catch (Exception) { komplettGeladen = false; } } reader.Close(); } } } //private bool freigabeAusMinderwert() //{ // bool result = false; // if (UserSingelton.GetInstance().Bereiche.ContainsKey(bereich)) // { // ODALBereich oBereich = UserSingelton.GetInstance().Bereiche[bereich]; // if (oBereich.Freigabe1 > bestellWert || oBereich.Freigabe1 == 0) // { // result = true; // } // } // return result; //} public bool AlsNeuesSerienElementSpeichern() { bool result = false; if(!this.komplettGeladen) { this.NachLaden(true); } if (this.terminserienID != 0) { Terminserie ts = new Terminserie(); ts.Laden(this.terminserienID); //Alte Werte merken int alteBestellNr = this.nummer; int freigabeKennzeichen = this.finaleFreigabeVon; int teKz = this.tE; using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { int lfdnr = 0; DateTime datum = DateTime.MinValue; //Letztes Serienelement laden con.Open(); string sql = "select top 1 TSLFDNR, NTERMIN from ODAL.BESTELLUNGEN2 where TSID = @p1 order by TSLFDNR DESC"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.terminserienID); using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { lfdnr = DBTools.DBGetInt(reader, 0); datum = DBTools.DBGetDate(reader, 1); } } if(lfdnr>0) { //Nächster Termin!!! if (ts.KeinEnde) { ts.EndeNach = lfdnr; ts.KeinEnde = false; } if (lfdnr < (ts.EndeNach + 1)) { //Neue Bestellung vorbereiten this.nummer = 0; this.terminserienPositionsNummer = lfdnr + 1; this.nächsterTermin = ts.GetTermine()[lfdnr + 1]; TimeSpan timspa = this.lieferTermin - this.datum; this.datum = datum; this.lieferTermin = datum.AddDays(timspa.Days); //Liefertermin nicht am Wochenende (Verschieben auffolgenden Montag) while (this.lieferTermin.DayOfWeek == DayOfWeek.Saturday || this.lieferTermin.DayOfWeek == DayOfWeek.Saturday) { this.lieferTermin = this.lieferTermin.AddDays(1); } // this.Speichern(); //Freigaben kopieren!!!!!! sql = "delete from ODAL.FREIGABEN where BESTELLUNGSNR = @p1"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", alteBestellNr); cmd.ExecuteNonQuery(); // 0 1 2 3 4 5 6 sql = "select LFDNR, FREIART, KOSTENSTELLE, MOEGLICHVON, ERTEILTVON, ERTEILTAM, KOMMENTAR, HIERARCHIESTUFE from ODAL.FREIGABEN where BESTELLUNGSNR = @p1"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", alteBestellNr); using (SqlDataReader reader = cmd.ExecuteReader()) { sql = "INSERT INTO ODAL.FREIGABEN (BESTELLUNGSNR, LFDNR, FREIART, KOSTENSTELLE, MOEGLICHVON, ERTEILTVON, ERTEILTAM, KOMMENTAR, HIERARCHIESTUFE) values (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9)"; while (reader.Read()) { cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); cmd.Parameters.AddWithValue("@p2", DBTools.DBGetInt(reader,0)); cmd.Parameters.AddWithValue("@p3", DBTools.DBGetInt(reader,1)); if (reader.IsDBNull(2)) { cmd.Parameters.AddWithValue("@p4", DBNull.Value); } else { cmd.Parameters.AddWithValue("@p4", DBTools.DBGetString(reader, 2)); } if (reader.IsDBNull(3)) { cmd.Parameters.AddWithValue("@p5", DBNull.Value); } else { cmd.Parameters.AddWithValue("@p5", DBTools.DBGetInt(reader, 3)); } if (reader.IsDBNull(4)) { cmd.Parameters.AddWithValue("@p6", DBNull.Value); } else { cmd.Parameters.AddWithValue("@p6", DBTools.DBGetInt(reader, 4)); } if (reader.IsDBNull(5)) { cmd.Parameters.AddWithValue("@p7", DBNull.Value); } else { cmd.Parameters.AddWithValue("@p7", DBTools.DBGetDate(reader, 5)); } if (reader.IsDBNull(6)) { cmd.Parameters.AddWithValue("@p8", DBNull.Value); } else { cmd.Parameters.AddWithValue("@p8", DBTools.DBGetString(reader, 6)); } if (reader.IsDBNull(7)) { cmd.Parameters.AddWithValue("@p9", DBNull.Value); } else { cmd.Parameters.AddWithValue("@p9", DBTools.DBGetInt(reader, 7)); } cmd.ExecuteNonQuery(); } } //Status setzten! sql = "update ODAL.BESTELLUNGEN set FREIGABEVON = @p1, TE = @p2 where BESTELLUNGSNR = @p3"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", freigabeKennzeichen); cmd.Parameters.AddWithValue("@p2", teKz); cmd.Parameters.AddWithValue("@p3", this.nummer); cmd.ExecuteNonQuery(); result = true; } } } } return result; } public string Speichern() { string result = null; //using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) //{ // string sqlFürFehlerReport = ""; // try // { // List möglicheFreigaben = null; // FreigabeStatus freigabeStatus = null; // bool anfrage = false; // //if (this.LieferantenAndresse == "ANFRAGE") // if (this.LieferantenAndresse == ML.GetInstance().Txt(ML.XXX_ANFRAGE)) // { // anfrage = true; // } // int saveNr = this.nummer; // if (this.nummer == 0 || bestellungSollKopiertWerden) // { // if (bestellungSollKopiertWerden && this.nummer != 0) // { // //Sollte nie nötig sein, aber hier sicherheitshalber, falls die Maske es "vergessen" hat. // InBearbeitungMarkierungEntfernen(); //für die original Bestellung // } // this.nummer = IDFactory.GetInstance().GetID(IDFactory.KEY_BESTELLUNG); // EXPCenter.GetInstance().BestellInfoSchreiben(this, false); // // // if (bestellungSollKopiertWerden && anhängeSollenKopiertWerden) // { // //Anhänge kopieren! // ZipIt zip = new ZipIt(null); // // // String pfadZumZip = zip.GetScanPath(saveNr); // FileInfo fi = new FileInfo(Path.Combine(pfadZumZip, saveNr + ".zip")); // if (fi.Exists) // { // if (!File.Exists(Path.Combine(pfadZumZip, this.nummer + ".zip"))) // { // fi.CopyTo(Path.Combine(pfadZumZip, this.nummer + ".zip")); // //Datenbankeinträge kopieren! // using (SqlConnection conA = new SqlConnection(DBTools.ConnectionStringODAL())) // { // conA.Open(); // String sqlA = "select BELEGNR, INFO, SCAN, DATUM, SEITE, ART, BELEGDATUM, EXTERN, IBELEGNR from ODAL.SCANS where BESTELLUNGSNR = @p1"; // sqlFürFehlerReport = sqlA; // SqlCommand cmd = new SqlCommand(sqlA, conA); // cmd.Parameters.AddWithValue("@p1", saveNr); // using (SqlDataReader reader = cmd.ExecuteReader()) // { // sqlA = "insert into ODAL.SCANS (BESTELLUNGSNR, BELEGNR, INFO, SCAN, DATUM, SEITE, ART, BELEGDATUM, EXTERN, IBELEGNR) Values (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10)"; // while (reader.Read()) // { // cmd = new SqlCommand(sqlA, conA); // cmd.Parameters.AddWithValue("@p1", this.nummer); // cmd.Parameters.AddWithValue("@p2", reader.GetString(0)); // cmd.Parameters.AddWithValue("@p3", reader.GetString(1)); // cmd.Parameters.AddWithValue("@p4", reader.GetString(2)); // cmd.Parameters.AddWithValue("@p5", reader.GetDateTime(3)); // cmd.Parameters.AddWithValue("@p6", reader.GetInt32(4)); // cmd.Parameters.AddWithValue("@p7", reader.GetString(5)); // cmd.Parameters.AddWithValue("@p8", reader.GetDateTime(6)); // cmd.Parameters.AddWithValue("@p9", reader.GetString(7)); // cmd.Parameters.AddWithValue("@p10", reader.GetString(8)); // cmd.ExecuteNonQuery(); // } // } // } // } // } // } // else if (bestellungSollKopiertWerden && !anhängeSollenKopiertWerden) // { // //31.01.2013 Änderung, da sonst Scans angezeigt werden obwohl keine da sind. // this.anzahlScans = 0; // using (SqlConnection conB = new SqlConnection(DBTools.ConnectionStringODAL())) // { // conB.Open(); // String sqlB = "delete from ODAL.SCANS where BESTELLUNGSNR = @p1"; // sqlFürFehlerReport = sqlB; // SqlCommand cmd = new SqlCommand(sqlB, conB); // cmd.Parameters.AddWithValue("@p1", this.nummer); // cmd.ExecuteNonQuery(); // } // } // } // else // { // EXPCenter.GetInstance().BestellInfoSchreiben(this, false); // this.Löschen(false); //Löscht auch alle Positionen!! (Sichert weg) // } // //Freigaben speichern (Erst hier, da BestellungsNr vorhanden sein muss!!; Anfragen haben keine Freigaben!) // FreigabenHandler fh = new FreigabenHandler(); // if (anfrage) // { // this.IstAnfrage = true; // } // { // //Freigaben speichern (aktualisieren) /FreigabeHandler arbeitet mit übergebener Bestellung und lädt nicht nach!) // möglicheFreigaben = fh.MöglicheFreigaben(this, true); // fh.Save(möglicheFreigaben); // if (this.bereich >= 10000) // { // freigabeStatus = new FreigabeStatus(this, möglicheFreigaben); // } // } // bool fam = freigabeAusMinderwert(); // //Keine Freigabe wenn Anfrage! // if (anfrage) // { // fam = false; // } // Bereich ob; // if (bereich < 10000) // { // ob = UserSingelton.GetInstance().Bereiche[bereich]; // } // else // { // ob = UserSingelton.GetInstance().FachBereiche[bereich]; // } // //Haupttabelle // StringBuilder sql = new StringBuilder(); // sql.Append("insert into ODAL.BESTELLUNGEN ("); // sql.Append("BESTELLUNGSNR, "); // sql.Append("FIRMENNR, "); // sql.Append("RADRESSE, "); // sql.Append("LADRESSE, "); // sql.Append("DATUM, "); // sql.Append("PROJEKTNR, "); // sql.Append("BESTELLGRUND, "); // sql.Append("LIEFERANTENNR, "); // sql.Append("LIEFERANTENADRESSE, "); // sql.Append("LIEFERTERMIN, "); // sql.Append("LIEFERART, "); // sql.Append("BETREFF, "); // sql.Append("BEREICH, "); // sql.Append("BESTELLER, "); // sql.Append("ERFASSTAM, "); // sql.Append("WARENEMPFAENGER, "); // sql.Append("BESTELLGRUNDTEXT, "); // sql.Append("GESAMTSUMME, "); // sql.Append("ANZSCANNS, "); // if (ob.GetType() == typeof(ODALBereich)) // { // if (((ODALBereich)ob).TeFreigabeVorFreigabe == 1) // { // sql.Append("TE, "); // } // } // sql.Append("KDNR"); // if (bereich < 10000) // { // if (fam) // { // sql.Append(", FREIGABEAM, "); // sql.Append("FREIGABEVON"); // } // } // else if (freigabeStatus != null) // { // sql.Append(", FREIGABEVON"); // } // sql.Append(", ENTSPERRT"); // sql.Append(", BELEGART"); // sql.Append(", WKZ"); // sql.Append(", PRIORITAET"); // sql.Append(") VALUES ( "); // sql.Append(nummer.ToString()); // sql.Append(", "); // sql.Append(firmenNr.ToString()); // sql.Append(", N"); // sql.Append(DBTools.Txt(rAdresse)); // sql.Append(", N"); // sql.Append(DBTools.Txt(lAdresse)); // sql.Append(", "); // sql.Append(DBTools.Dat(datum)); // sql.Append(", "); // sql.Append(DBTools.Txt(projektNr)); // sql.Append(", "); // sql.Append(DBTools.Txt(bestellGrund)); // sql.Append(", "); // sql.Append(DBTools.Txt(lieferantenNr)); // sql.Append(", "); // sql.Append(DBTools.Txt(lieferantenAndresse)); // sql.Append(", "); // sql.Append(DBTools.Dat(lieferTermin)); // sql.Append(", N"); // sql.Append(DBTools.Txt(lieferArt)); // sql.Append(", N"); // sql.Append(DBTools.Txt(betreff)); // sql.Append(", "); // sql.Append(bereich.ToString()); // sql.Append(", N"); // sql.Append(DBTools.Txt(besteller)); // sql.Append(", "); // sql.Append(DBTools.Dat(DateTime.Now)); // sql.Append(", N"); // sql.Append(DBTools.Txt(warenEmpfänger)); // sql.Append(", "); // sql.Append(DBTools.Txt(bestellGrundText)); // sql.Append(", "); // sql.Append(DBTools.Dbl(bestellWert)); // sql.Append(", "); // sql.Append(anzahlScans.ToString()); // if (ob.GetType() == typeof(ODALBereich)) // { // if (((ODALBereich)ob).TeFreigabeVorFreigabe == 1) // { // sql.Append(", 1"); // } // } // sql.Append(", "); // sql.Append(DBTools.Txt(kdNr)); // if (bereich < 10000) // { // if (fam) // { // sql.Append(", "); // sql.Append(DBTools.Dat(DateTime.Now)); // sql.Append(", "); // sql.Append(UserSingelton.GetInstance().UserID); // } // } // else if (freigabeStatus != null) // { // sql.Append(", "); // sql.Append(freigabeStatus.Kennzahl); // } // sql.Append(", "); // //entsperren bei 0 -> Wert zur späteren Abänderung der Bestellung // int entsperrtKennzahl = 0; // if (this.bestellWert == 0) // { // entsperrtKennzahl = 1; // } // sql.Append(entsperrtKennzahl.ToString()); // sql.Append(", "); // if (bestellungsArt != null && bestellungsArt.Art != DokumentArt.Arten.Bestellung) // { // sql.Append(((int)bestellungsArt.Art).ToString()); // } // else // { // sql.Append("NULL"); // } // sql.Append(", "); // if (String.IsNullOrEmpty(this.Wkz)) // { // sql.Append("NULL"); // } // else // { // sql.Append(DBTools.Txt(this.Wkz)); // } // sql.Append(", "); // sql.Append((int)Priorität); // sql.Append(")"); // sqlFürFehlerReport = sql.ToString(); // SqlCommand command = new SqlCommand(sql.ToString(), con); // command.ExecuteNonQuery(); // //Zusatztabelle // sql = new StringBuilder(); // sql.Append("insert into ODAL.BESTELLUNGEN2 ("); // sql.Append("BESTELLUNGSNR, ZAHLUNGSBED, TSID, TSLFDNR, NTERMIN, FREIFIRMENNR, SOFORTANDRUCKEN"); // sql.Append(") values (@p1, @p2, @p3, @p4, @p5, @p6, @p7)"); // command = new SqlCommand(sql.ToString(), con); // command.Parameters.AddWithValue("@p1", nummer); // command.Parameters.AddWithValue("@p2", zahlungsBedingung); // if (terminserienID != 0) // { // command.Parameters.AddWithValue("@p3", terminserienID); // command.Parameters.AddWithValue("@p4", terminserienPositionsNummer); // command.Parameters.AddWithValue("@p5", nächsterTermin); // } // else // { // command.Parameters.AddWithValue("@p3", DBNull.Value); // command.Parameters.AddWithValue("@p4", DBNull.Value); // command.Parameters.AddWithValue("@p5", DBNull.Value); // } // command.Parameters.AddWithValue("@p6", freigabeFirmenNr); // command.Parameters.AddWithValue("@p7", sofortAndrucken); // command.ExecuteNonQuery(); // foreach (ODALBestellungsPosition p in positionen) // { // //Positionen // sql = new StringBuilder(); // sql.Append("insert into ODAL.BESTELLUNGSPOS ("); // sql.Append("MENGE, "); // sql.Append("ME, "); // sql.Append("KOSTENSTELLE, "); // sql.Append("STRUKTURNR, "); // sql.Append("ARTIKEL, "); // sql.Append("RABATT, "); // sql.Append("EINZELPREIS, "); // sql.Append("SUMME, "); // sql.Append("POSITION, "); // sql.Append("BESTELLUNGSNR, "); // sql.Append("EKLASSE, "); // sql.Append("KONTO, "); // sql.Append("EXPLAGERNR, "); // sql.Append("EXPART, "); // sql.Append("SUMMEW"); // sql.Append(") values ("); // sql.Append(DBTools.Dbl(p.Menge)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.MengenEinheit)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Kostenstelle)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.StrukturNr)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Artikel)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Rabatt)); // sql.Append(", "); // sql.Append(DBTools.Dbl(p.EinzelPreis)); // sql.Append(", "); // sql.Append(DBTools.Dbl(p.Summe)); // sql.Append(", "); // sql.Append(p.Position.ToString()); // sql.Append(", "); // sql.Append(nummer.ToString()); // sql.Append(", "); // sql.Append(DBTools.Txt(p.EKlasse)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Konto)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.ExpLager)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.ExpArtikel)); // sql.Append(", "); // sql.Append(DBTools.Dbl(p.SummeInFirmenWährung)); // sql.Append(")"); // sqlFürFehlerReport = sql.ToString(); // command = new SqlCommand(sql.ToString(), con); // command.ExecuteNonQuery(); // //Anlage vermerken // sql = new StringBuilder("INSERT INTO BEST_AENDERUNGEN (BESTELLUNGSNR, DATUM, USERNAME, KOMMENTAR) values (@p1, @p2, @p3, @p4)"); // command = new SqlCommand(sql.ToString(), con); // command.Parameters.AddWithValue("@p1", this.nummer); // command.Parameters.AddWithValue("@p2", DateTime.Now); // command.Parameters.AddWithValue("@p3", besteller); // command.Parameters.AddWithValue("@p4", "INSERT"); // command.ExecuteNonQuery(); // } // mailAnContriollerWennInvestitionMitKostentKonto(); // if (ob.ID < 10000 && !fam && !anfrage) // { // this.MailAnNächstenFreigeber(); // } // } // catch (Exception ex) // { // // ERmm ....?!?! // result = ex.Message + "\n" + sqlFürFehlerReport; // } // if (ZusätzlicheFreigeber != null && zusätzlicheFreigeber.Count > 0) // { // String sql = "delete from ZUREFREIGEBER where BESTNR = @p1"; // SqlCommand cmd = new SqlCommand(sql, con); // cmd.Parameters.AddWithValue("@p1", this.nummer); // cmd.ExecuteNonQuery(); // foreach (int key in zusätzlicheFreigeber.Keys) // { // String habelUser = zusätzlicheFreigeber[key]; // sql = "insert into ZUREFREIGEBER (BESTNR, SORTNR, HABELUSERID) values(@p1, @p2, @p3)"; // cmd = new SqlCommand(sql, con); // cmd.Parameters.AddWithValue("@p1", this.nummer); // cmd.Parameters.AddWithValue("@p2", key); // cmd.Parameters.AddWithValue("@p3", habelUser); // cmd.ExecuteNonQuery(); // } // } //} return result; } private void mailAnContriollerWennInvestitionMitKostentKonto() { ////Prüfen //bool hatKostenkontenTrotzInvestition = false; //foreach (ODALBestellungsPosition p in positionen) //{ // if (!hatKostenkontenTrotzInvestition) // { // //hatKostenkontenTrotzInvestition = ODALTools.IstInvestitionMitKostenKonto(this.ProjektNr, p.Konto); // break; // } //} ////Versenden //if (hatKostenkontenTrotzInvestition) //{ // String empfänger = null; // //Empfänger Laden // using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) // { // con.Open(); // StringBuilder sql = new StringBuilder(); // sql.Append("select Firma, Controller from ODAL.ControllerPerFirma where Firma in (1, "); // sql.Append(firmenNr.ToString()); // sql.Append(") order by firma desc"); // using (SqlCommand command = new SqlCommand(sql.ToString(), con)) // { // using (SqlDataReader reader = command.ExecuteReader()) // { // if (reader.Read()) // { // empfänger = DBTools.DBGetString(reader, 1); // } // } // } // } // //Empfänger soltte NIE leer sein, da Firma 1 immer geladen wird // if (empfänger != null) // { // LambertzMail mail = new LambertzMail(); // mail.AddAn(empfänger); // mail.AddBcc("Ruediger.Vossel@Lambertz.com"); // mail.Subject = "Bestellung " + this.Nummer + " mit Projekt " + projektNr + " hat Kostentkonten."; // String body = "Folgende Konten wurden eingetragen:"; // foreach (ODALBestellungsPosition p in positionen) // { // body = body + "\n\n" + p.Konto + " für Artikel: " + p.Artikel; // } // mail.Body = body; // mail.SendAsync(); // } // else // { // LambertzMail mail = new LambertzMail(); // mail.AddAn("Ruediger.Vossel@Lambertz.com"); // mail.Subject = "ODAL.ControllerPerFirma nicht in Ordnung."; // mail.Body = "Für Firma " + FirmenNr.ToString() + " wurde kein Controller gefunden!"; // mail.SendAsync(); // } //} } public string Aendern(Bereich originalBereich) { string result = null; //SqlConnection con = getConnection(); //try //{ // bool anfrage = false; // FreigabeStatus freigabeStatus = null; // List möglicheFreigaben = null; // //if (this.LieferantenAndresse == "ANFRAGE") // if (this.LieferantenAndresse == ML.GetInstance().Txt(ML.XXX_ANFRAGE)) // { // anfrage = true; // } // else // { // //Freigaben speichern (aktualisieren) // FreigabenHandler fh = new FreigabenHandler(); // möglicheFreigaben = fh.Save(this); // if (this.bereich >= 10000) // { // freigabeStatus = new FreigabeStatus(this, möglicheFreigaben); // } // } // EXPCenter.GetInstance().BestellInfoSchreiben(this, false); // //Sichert die Bestellung und Pos ins Save und löscht alle Pos // this.SichernBeiAenderung(); // bool fam = freigabeAusMinderwert(); // //Keine Freigabe wenn Anfrage! // if (anfrage) // { // fam = false; // } // Bereich ob = null; // if (bereich > 10000) // { // ob = UserSingelton.GetInstance().FachBereiche[bereich]; // } // else // { // ob = UserSingelton.GetInstance().Bereiche[bereich]; // } // String erfasserÄndernSQL = ""; // if (originalBereich!=null && ob.ID != originalBereich.ID) // { // this.FreigabenEntfernen(); // if (typeof(FachBereich) == ob.GetType()) // { // if (((FachBereich)ob).IstFachBereichOhneFreigabe) // { // erfasserÄndernSQL = ", BESTELLER = " + DBTools.Txt(UserSingelton.GetInstance().Name); // } // } // } // //Haupttabelle // StringBuilder sql = new StringBuilder(); // sql.Append("Update ODAL.BESTELLUNGEN"); // sql.Append(" set FIRMENNR = "); // sql.Append(firmenNr.ToString()); // sql.Append(", RADRESSE = N"); // sql.Append(DBTools.Txt(rAdresse)); // sql.Append(", LADRESSE = N"); // sql.Append(DBTools.Txt(lAdresse)); // sql.Append(", DATUM = "); // sql.Append(DBTools.Dat(datum)); // sql.Append(", PROJEKTNR = "); // sql.Append(DBTools.Txt(projektNr)); // sql.Append(", BESTELLGRUND = "); // sql.Append(DBTools.Txt(bestellGrund)); // sql.Append(", LIEFERANTENNR = "); // sql.Append(DBTools.Txt(lieferantenNr)); // sql.Append(", LIEFERANTENADRESSE = "); // sql.Append(DBTools.Txt(lieferantenAndresse)); // sql.Append(", LIEFERTERMIN = "); // sql.Append(DBTools.Dat(lieferTermin)); // sql.Append(", LIEFERART = N"); // sql.Append(DBTools.Txt(lieferArt)); // sql.Append(", BETREFF = N"); // sql.Append(DBTools.Txt(betreff)); // sql.Append(", BEREICH = "); // sql.Append(bereich.ToString()); // // // sql.Append(erfasserÄndernSQL); // //sql.Append(", ERFASSTAM = "); // //sql.Append(DBTools.Dat(DateTime.Now)); // sql.Append(", WARENEMPFAENGER = N"); // sql.Append(DBTools.Txt(warenEmpfänger)); // sql.Append(", BESTELLGRUNDTEXT = "); // sql.Append(DBTools.Txt(bestellGrundText)); // sql.Append(", GESAMTSUMME = "); // sql.Append(DBTools.Dbl(bestellWert)); // sql.Append(", ANZSCANNS = "); // sql.Append(anzahlScans.ToString()); // if (ob.GetType() == typeof(ODALBereich)) // { // if (((ODALBereich)ob).TeFreigabeVorFreigabe == 1) // { // sql.Append(", TE = 1"); // } // } // else // { // if (((FachBereich)ob).TEEinbinden) // { // sql.Append(", TE = 1"); // } // } // sql.Append(", KDNR = "); // sql.Append(DBTools.Txt(kdNr)); // if (bereich < 10000) // { // if (fam) // { // sql.Append(", FREIGABEAM = "); // sql.Append(DBTools.Dat(DateTime.Now)); // sql.Append(", FREIGABEVON = "); // sql.Append(UserSingelton.GetInstance().UserID); // } // else // { // sql.Append(", FREIGABEAM = null"); // sql.Append(", FREIGABEVON = null"); // } // } // else if (freigabeStatus != null) // { // sql.Append(", FREIGABEVON = "); // sql.Append(freigabeStatus.Kennzahl); // } // if (bestellungsArt != null && bestellungsArt.Art != DokumentArt.Arten.Bestellung) // { // sql.Append(", BELEGART = "); // sql.Append((Int32)bestellungsArt.Art); // } // else // { // sql.Append(", BELEGART = null"); // } // if (String.IsNullOrEmpty(Wkz)) // { // sql.Append(", WKZ = null"); // } // else // { // sql.Append(", WKZ = " + DBTools.Txt(Wkz)); // } // sql.Append(", PRIORITAET = " + (int)Priorität); // sql.Append(" where BESTELLUNGSNR = "); // sql.Append(nummer.ToString()); // SqlCommand command = new SqlCommand(sql.ToString(), con); // command.ExecuteNonQuery(); // //Zusatztabelle // sql = new StringBuilder(); // sql.Append("Update ODAL.BESTELLUNGEN2 set ZAHLUNGSBED = @p2, TSID = @p3, TSLFDNR = @p4, NTERMIN = @p5, FREIFIRMENNR = @p6, SOFORTANDRUCKEN =@p7 where BESTELLUNGSNR = @p1"); // command = new SqlCommand(sql.ToString(), con); // command.Parameters.AddWithValue("@p1", nummer); // command.Parameters.AddWithValue("@p2", zahlungsBedingung); // if (terminserienID != 0) // { // command.Parameters.AddWithValue("@p3", terminserienID); // command.Parameters.AddWithValue("@p4", terminserienPositionsNummer); // command.Parameters.AddWithValue("@p5", nächsterTermin); // } // else // { // command.Parameters.AddWithValue("@p3", DBNull.Value); // command.Parameters.AddWithValue("@p4", DBNull.Value); // command.Parameters.AddWithValue("@p5", DBNull.Value); // } // command.Parameters.AddWithValue("@p6", freigabeFirmenNr); // command.Parameters.AddWithValue("@p7", sofortAndrucken); // command.ExecuteNonQuery(); // //Änderung vermerken // sql = new StringBuilder("INSERT INTO BEST_AENDERUNGEN (BESTELLUNGSNR, DATUM, USERNAME, KOMMENTAR) values (@p1, @p2, @p3, @p4)"); // command = new SqlCommand(sql.ToString(), con); // command.Parameters.AddWithValue("@p1", this.nummer); // command.Parameters.AddWithValue("@p2", DateTime.Now); // command.Parameters.AddWithValue("@p3", besteller); // command.Parameters.AddWithValue("@p4", "UPDATE"); // command.ExecuteNonQuery(); // foreach (ODALBestellungsPosition p in positionen) // { // //Positionen // sql = new StringBuilder(); // sql.Append("insert into ODAL.BESTELLUNGSPOS ("); // sql.Append("MENGE, "); // sql.Append("ME, "); // sql.Append("KOSTENSTELLE, "); // sql.Append("STRUKTURNR, "); // sql.Append("ARTIKEL, "); // sql.Append("RABATT, "); // sql.Append("EINZELPREIS, "); // sql.Append("SUMME, "); // sql.Append("POSITION, "); // sql.Append("BESTELLUNGSNR, "); // sql.Append("EKLASSE, "); // sql.Append("KONTO, "); // sql.Append("EXPLAGERNR, "); // sql.Append("EXPART, "); // sql.Append("SUMMEW"); // sql.Append(") values ("); // sql.Append(DBTools.Dbl(p.Menge)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.MengenEinheit)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Kostenstelle)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.StrukturNr)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Artikel)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Rabatt)); // sql.Append(", "); // sql.Append(DBTools.Dbl(p.EinzelPreis)); // sql.Append(", "); // sql.Append(DBTools.Dbl(p.Summe)); // sql.Append(", "); // sql.Append(p.Position.ToString()); // sql.Append(", "); // sql.Append(nummer.ToString()); // sql.Append(", "); // sql.Append(DBTools.Txt(p.EKlasse)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.Konto)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.ExpLager)); // sql.Append(", "); // sql.Append(DBTools.Txt(p.ExpArtikel)); // sql.Append(", "); // sql.Append(DBTools.Dbl(p.SummeInFirmenWährung)); // sql.Append(")"); // command = new SqlCommand(sql.ToString(), con); // command.ExecuteNonQuery(); // } // if (!fam && !anfrage) // { // this.MailAnNächstenFreigeber(); // } //} //catch (Exception ex) //{ // // ERmm ....?!?! // result = ex.Message; //} //returnConnection(con); return result; } public void PositionenLaden() { if (this.nummer != 0) { this.positionen = new List(); using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); StringBuilder sql = new StringBuilder(); sql.Append("select "); sql.Append("MENGE, "); // 0 sql.Append("ME, "); // 1 sql.Append("KOSTENSTELLE, "); // 2 sql.Append("STRUKTURNR, "); // 3 sql.Append("ARTIKEL, "); // 4 sql.Append("RABATT, "); // 5 sql.Append("EINZELPREIS, "); // 6 sql.Append("SUMME, "); // 7 sql.Append("POSITION, "); // 8 sql.Append("EKLASSE, "); // 9 sql.Append("KONTO, "); //10 sql.Append("EXPLAGERNR, "); //11 sql.Append("EXPART, "); //12 sql.Append("SUMMEW "); //12 if (!gelöschteBestellung) { sql.Append("from ODAL.BESTELLUNGSPOS" + tabellenNamensZusatz + " where BESTELLUNGSNR = "); } else { sql.Append("from ODAL.ODALBPS where BESTELLUNGSNR = "); } sql.Append(this.nummer); sql.Append(" order by POSITION"); SqlCommand command = new SqlCommand(sql.ToString(), con); SqlDataReader reader = command.ExecuteReader(); ODALBestellungsPosition pos; while (reader.Read()) { try { pos = new ODALBestellungsPosition(); pos.BestellungsNr = this.nummer; pos.Menge = DBTools.DBGetDouble(reader, 0); pos.MengenEinheit = DBTools.DBGetString(reader, 1); pos.Kostenstelle = DBTools.DBGetString(reader, 2); pos.StrukturNr = DBTools.DBGetString(reader, 3); pos.Artikel = DBTools.DBGetString(reader, 4); pos.Rabatt = DBTools.DBGetString(reader, 5); pos.EinzelPreis = DBTools.DBGetDouble(reader, 6); pos.SetSumme(DBTools.DBGetDouble(reader, 7), DBTools.DBGetDouble(reader, 13)); pos.Position = DBTools.DBGetInt(reader, 8); pos.EKlasse = DBTools.DBGetString(reader, 9); pos.Konto = DBTools.DBGetString(reader, 10); pos.ExpLager = DBTools.DBGetString(reader, 11); pos.ExpArtikel = DBTools.DBGetString(reader, 12); this.positionen.Add(pos); } catch (Exception) { //Nothing } } reader.Close(); } positionenSindGeladen = true; } } public string KdNr { get { return kdNr; } set { kdNr = value; } } public double Rest { get { return rest; } set { rest = value; } } public int TerminserienID { get { return terminserienID; } set { terminserienID = value; } } public int TerminserienPositionsNummer { get { return terminserienPositionsNummer; } set { terminserienPositionsNummer = value; } } public DateTime NächsterTermin { get { return nächsterTermin; } set { nächsterTermin = value; } } public double Budget { get { return budget; } set { budget = value; } } public string ProjketBezeichnung { get { return projketBezeichnung; } set { projketBezeichnung = value; } } public bool IstEntsperrt { get { return istEntsperrt; } set { istEntsperrt = value; } } public string Betreff { get { return betreff; } set { betreff = value; } } public DateTime LieferTermin { get { return lieferTermin; } set { lieferTermin = value; } } public string LieferantenAndresse { get { return lieferantenAndresse; } set { lieferantenAndresse = value; } } public string LieferantenNr { get { return lieferantenNr; } set { lieferantenNr = value; } } public string ProjektNr { get { return projektNr; } set { projektNr = value; } } public DateTime Datum { get { return datum; } set { datum = value; } } public string LAdresse { get { return lAdresse; } set { lAdresse = value; } } public string RAdresse { get { return rAdresse; } set { rAdresse = value; } } public int FirmenNr { get { return firmenNr; } set { firmenNr = value; } } public DateTime ErfasstAm { get { return erfasstAm; } set { erfasstAm = value; } } public string BestellGrund { get { return bestellGrund; } set { bestellGrund = value; } } public string LieferArt { get { return lieferArt; } set { lieferArt = value; } } public DateTime DruckAm { get { return druckAm; } set { druckAm = value; } } public string WarenEmpfänger { get { return warenEmpfänger; } set { warenEmpfänger = value; } } public string Auftragsbestätigung { get { return auftragsbestätigung; } set { auftragsbestätigung = value; } } public string Status { get { return status; } set { status = value; } } public string RStatus { get { return rStatus; } set { rStatus = value; } } public int AnzahlScans { get { return anzahlScans; } set { anzahlScans = value; } } public DateTime ArchivTimeStamp { get { return archivTimeStamp; } set { archivTimeStamp = value; } } public ODALBestellungsPosition GetPosition(int nummer) { ODALBestellungsPosition result = null; if (this.positionen == null) { this.PositionenLaden(); } int index = nummer - 1; if (index >= 0 && nummer <= positionen.Count) { result = this.positionen[index]; } return result; } public bool PDFErstellen(bool druckProtokollieren) { if (!komplettGeladen) { NachLaden(true); } bool vorschau = true; if (bereich > 10000) { vorschau = false; FreigabeStatus fs = new FreigabeStatus(this); if (fs.Kennzahl < 11) { vorschau = true; } } else { if (finaleFreigabeVon != 0) { vorschau = false; } } BestellungsDrucker drucker = new BestellungsDrucker(this, vorschau); return drucker.PDFErstellen(druckProtokollieren); } public bool PDFDrucken(bool druckProtokollieren) { BestellungsDrucker drucker = new BestellungsDrucker(this); bool result = drucker.PDFDrucken(druckProtokollieren); if (result) { if (druckVon == 0) { this.BestellungAlsGedrucktMarkieren(); this.MailAnWarenempfängerSenden(); } } return result; } public bool PDFErstellenIntern() { BestellungsDruckerIntern drucker = new BestellungsDruckerIntern(this); return drucker.PDFErstellen(); } public bool PDFErstellenMitUnterschriftsFeld() { BestellungsDrucker drucker = new BestellungsDrucker(this); drucker.MitUnterschriftFeld = true; return drucker.PDFErstellen(false); } public bool PDFErstellenAnfrage(string lieferNr, string anschrift, string kundenNrBeimLieferanten, String saveName) { AnfrageDrucker drucker = new AnfrageDrucker(this); drucker.AnfrageLieferantenNr = lieferNr; drucker.AnfrageLieferant = anschrift; drucker.AnfrageKundenNrBeimLieferanten = kundenNrBeimLieferanten; return drucker.PDFErstellen(saveName); } public bool PDFErstellenAnfrage(string lieferNr, string anschrift, string kundenNrBeimLieferanten) { AnfrageDrucker drucker = new AnfrageDrucker(this); drucker.AnfrageLieferantenNr = lieferNr; drucker.AnfrageLieferant = anschrift; drucker.AnfrageKundenNrBeimLieferanten = kundenNrBeimLieferanten; return drucker.PDFErstellen(); } public string GetLieferAdresse() { return this.LAdresse; } /// /// Je nach Parametereinstellungen wird eine Mail an den bzw die Warenempfänger gesendet. /// Ebenfalls wird anhand der Parameter festgestellt, ob die Bestellung als PDF angehängt wird. /// Die eMail Adresse des Warenempfängers wird über den ODAL-eigenen Warenempfängerstamm bestimmt. /// Nur wenn eine gültige eMai-Adresse gefunden wurde, wird die Mail versendet /// public void MailAnWarenempfängerSenden() { UserSingelton us = UserSingelton.GetInstance(); String par = us.Parameter.GetValue("BESTELLUNG", "Mail", false); if (par == "1" || par == "2") { if (!komplettGeladen) { this.NachLaden(); } if (!String.IsNullOrEmpty(warenEmpfänger)) { using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { string reciever = null; StringBuilder sql = new StringBuilder(); sql.Append("select EMAIL from ODAL.ODALWE where WE = "); sql.Append(DBTools.Txt(warenEmpfänger)); SqlCommand command = new SqlCommand(sql.ToString(), con); SqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { //reciever = DBTools.DBGetString(reader, 0); //if (!String.IsNullOrEmpty(reciever)) //{ // if (par == "1") // { // DialogResult dr = Tools.QuestionBox(ML.GetInstance().Txt(ML.MSG_FRAGE_MAIL_AN_WARENEMPFAENGER_P1, warenEmpfänger)); // if (dr == DialogResult.Yes) // { // par = "2"; // } // } // if (par == "2") // { // bool mitAttachment = false; // if (us.Parameter.GetValue("BESTELLUNG", "Anhang", false) == "1") // { // mitAttachment = true; // } // ODALMailer mail = new ODALMailer(nummer); // mail.SendEmail(reciever, ML.GetInstance().Txt(ML.XXX_BESTELLUNG_AN_LIEFERANT_UEBERMITTELT_P1, nummer.ToString()), ODALMailer.SUBJECT_BESTELLT, mitAttachment); // } //} } reader.Close(); } } } } public string GetRechnungsAdresse() { string result = ""; if (this.firmenNr==30) { result = "Wilhelm Kinkartz GmbH & Co. KG\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr==1) { result = "Aachener Printen-und Schokoladenfabrik\nHenry Lambertz GmbH & Co. KG\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr==8) { result = "LAC Beteiligungs GmbH\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr==11) { result = "Max Weiss Lebkuchenfabrik\nNeu-Ulm GmbH\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr==12) { result = "Ferd. Wolff GmbH & Co.\nLebkuchenfabrik\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr==32) { result = "WiKi Vertriebsgesellschaft mbH\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr == 3) { result = "Spezialitäten-Haus für Aachener Printen und Lebkuchen G. Schulteis GmbH\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr == 35) { result = "AN Vermögensverwaltung GmbH & Co. KG\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr == 40) { result = "Nürnberger Burg Lebkuchen\nGmbH & Co. KG\nc/o Postfach 100154\n52001 Aachen"; } else if (this.firmenNr == 41) { result = "Wendler Nougat GmbH & Co. KG\nc/o Postfach 100154\n52001 Aachen"; } else { result = "Die Rechnungsadresse ist gleich der\nAdresse des Leistungsempfängers"; } // else if (this.firmenNr == 39) //{ // result = "Dr. Quendt GmbH & Co. KG\nOffenburger Straße 1\01189 Dresden"; //} return result; } public string GetLeistungsempfängerAdresse() { return this.rAdresse; } public List Positionen { get { if (this.positionen == null || (this.positionen.Count == 0 && positionenSindGeladen == false)) { this.PositionenLaden(); } return positionen; } set { this.positionen = value; } } public string ZahlungsBedingung { get { return zahlungsBedingung; } set { zahlungsBedingung = value; } } public string BestellGrundText { get { return bestellGrundText; } set { bestellGrundText = value; } } public bool BestellungSollKopiertWerden { get { return bestellungSollKopiertWerden; } set { bestellungSollKopiertWerden = value; } } public bool KomplettGeladen { get { return komplettGeladen; } } public int KopiertVon { get { return kopiertVon; } set { kopiertVon = value; } } /// /// Gibt den "ersten" Buchstaben des Projektes zurück /// /// public String GetProjektArt() { String result = null; if (!String.IsNullOrEmpty(this.projektNr)) { int z = 0; foreach (Char c in this.projektNr.ToCharArray()) { if (!EssentialTools.IsNumeric(c)) { result = Convert.ToString(c).ToUpper(); break; } //Abbruch nach dem zweiten Zeichen... z++; if (z > 2) { break; } } } return result; } public bool IstNachträglichGeändert() { bool result = false; using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "select ANWENDER from ODAL.ORIGINAL_LOG where BESTELLNR = @p1"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { result = true; } } } return result; } public bool OriginalSichern() { bool result = false; if (FreigabeKennzeichen == 11) { using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "select ANWENDER from ODAL.ORIGINAL_LOG where BESTELLNR = @p1"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { result = true; } } if (!result) { //Kopieren der Positionen sql = "insert into ODAL.BESTELLUNGSPOS_ORIGINAL select * from ODAL.BESTELLUNGSPOS where ODAL.BESTELLUNGSPOS.BESTELLUNGSNR = @p1"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); cmd.ExecuteNonQuery(); //Kopieren der Kopfdaten sql = "insert into ODAL.BESTELLUNGEN_ORIGINAL select * from ODAL.BESTELLUNGEN where ODAL.BESTELLUNGEN.BESTELLUNGSNR = @p1"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); cmd.ExecuteNonQuery(); //Kopieren der Kopfdaten2 sql= "insert into ODAL.BESTELLUNGEN2_ORIGINAL select * from ODAL.BESTELLUNGEN2 where ODAL.BESTELLUNGEN2.BESTELLUNGSNR = @p1"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); cmd.ExecuteNonQuery(); sql = "insert into ODAL.ORIGINAL_LOG (ANWENDER, DATUM, BESTELLNR) values (@p1, @p2, @p3)"; cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", UserSingelton.GetInstance().UserID); cmd.Parameters.AddWithValue("@p2", DateTime.Now); cmd.Parameters.AddWithValue("@p3", this.nummer); cmd.ExecuteNonQuery(); // result = true; } } } return result; } public void Löschen(bool save) { SqlConnection con = getConnection(); StringBuilder sql; SqlCommand command; if (save) { EXPCenter.GetInstance().BestellInfoSchreiben(this, true); } //Löschen der Positionen im SAVE sql = new StringBuilder(); sql.Append("delete from ODAL.ODALBPS where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Kopieren der Positionen sql = new StringBuilder(); sql.Append("insert into ODAL.ODALBPS select * from ODAL.BESTELLUNGSPOS where ODAL.BESTELLUNGSPOS.BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Löschen der Kopfdaten im SAVE sql = new StringBuilder(); sql.Append("delete from ODAL.ODALBES where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Kopieren der Kopfdaten sql = new StringBuilder(); sql.Append("insert into ODAL.ODALBES select * from ODAL.BESTELLUNGEN where ODAL.BESTELLUNGEN.BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Löschen der Kopfdaten2 im SAVE sql = new StringBuilder(); sql.Append("delete from ODAL.ODALBES2 where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Kopieren der Kopfdaten2 sql = new StringBuilder(); sql.Append("insert into ODAL.ODALBES2 select * from ODAL.BESTELLUNGEN2 where ODAL.BESTELLUNGEN2.BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); // //Löschen der Positionen im Original sql = new StringBuilder(); sql.Append("delete from ODAL.BESTELLUNGSPOS where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Löschen der Kopfdaten im Original sql = new StringBuilder(); sql.Append("delete from ODAL.BESTELLUNGEN where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); //Löschen der Kopfdaten2 im Original sql = new StringBuilder(); sql.Append("delete from ODAL.BESTELLUNGEN2 where BESTELLUNGSNR = "); sql.Append(this.nummer); command = new SqlCommand(sql.ToString(), con); command.ExecuteNonQuery(); this.Gelöscht = true; returnConnection(con); } public bool AnhängeSollenKopiertWerden { get { return anhängeSollenKopiertWerden; } set { anhängeSollenKopiertWerden = value; } } public LamList Korrekturbuchungen { get { if (korrekturbuchungen == null) { korrekturbuchungen = new LamList(); using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "select KBID, KOSTENSTELLE, KOSTENART, BETRAG, WARUM, WER, WANN from ODAL.KORBU where BESTNR = @p1 order by KBID"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", this.nummer); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Korrekturbuchung kb = new Korrekturbuchung(); kb.Id = DBTools.DBGetInt(reader, 0); kb.BestellNr = this.Nummer; kb.Kostenstelle = DBTools.DBGetString(reader, 1); kb.Kostenart = DBTools.DBGetString(reader, 2); kb.Summe = DBTools.DBGetDezimal(reader, 3); kb.Begründung = DBTools.DBGetString(reader, 4); kb.User = DBTools.DBGetString(reader, 5); kb.Datum = DBTools.DBGetDate(reader, 6); this.korrekturbuchungen.Add(kb); } } } } return korrekturbuchungen; } } public String GetInfo() { StringBuilder result = new StringBuilder(); result.Append(Tools.FirstLineOfMultilineText(this.lieferantenAndresse)); result.Append(" vom "); result.Append(this.datum.ToString("d", PortalTools.GermanCultureInfo)); if (!String.IsNullOrEmpty(projektNr)) { result.Append(" - "); result.Append(this.projektNr); } if (!String.IsNullOrEmpty(betreff)) { result.Append(" - "); result.Append(this.betreff); } return result.ToString(); } /// /// Prüft ob alle verwendeten Kostenstellen gültige, bebuchbare Kostenstellen für die ausgewählte Firma sind /// /// public bool KostenstellenCheck() { bool result = true; if (this.Positionen != null) { List kst = StrukturSingelton.GetInstance().GetKostenstellen(this.FreigabeFirmenNr); if (kst != null && kst.Count > 0) { foreach (ODALBestellungsPosition pos in this.Positionen) { result = false; foreach (KostenstelleStrukturEintrag kse in kst) { if (kse.Kostenstelle == pos.Kostenstelle) { if (kse.istBebuchbar()) { result = true; } break; } } if (result == false) { break; } } } } return result; } public bool IstKostenträgerpflichtig() { bool result = false; if (this.FreigabeFirmenNr != 23 && this.FreigabeFirmenNr != 34) { if (positionen == null || (this.positionen.Count == 0 && positionenSindGeladen == false)) { this.PositionenLaden(); } StrukturSingelton ss = StrukturSingelton.GetInstance(); foreach (ODALBestellungsPosition pos in positionen) { if (ss.HatKostenTrägerPflicht(pos.Konto)) { result = true; break; } } } return result; } public DokumentArt BestellungsArt { get { return bestellungsArt; } set { bestellungsArt = value; } } public int FreigabeFirmenNr { get { int result = firmenNr; if (freigabeFirmenNr != 0) { result = freigabeFirmenNr; } return result; } set { freigabeFirmenNr = value; } } public int FreigabeFirmenNrOhnePrüfung { get { return freigabeFirmenNr; } } public int Ekva { get => ekva; set => ekva = value; } public bool SofortAndrucken { get => sofortAndrucken; set => sofortAndrucken = value; } public List BestätigteLiefertermine { get { if(bestätigteLiefertermine == null) { auftragsbbestätigteLiefertermineestätigungLaden(); } return bestätigteLiefertermine; } set => bestätigteLiefertermine = value; } public TerminKommentar DatumDerAuftragsbestätigung { get { if (datumDerAuftragsbestätigung == null) { auftragsbbestätigteLiefertermineestätigungLaden(); } return datumDerAuftragsbestätigung; } set => datumDerAuftragsbestätigung = value; } private void auftragsbbestätigteLiefertermineestätigungLaden() { bestätigteLiefertermine = new List(); using(SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "select [ART], [TERMIN], [TEXT] from [ODAL].[ABundLT] where [BESTELLNR] = @p1 order by [ART], [TERMIN]"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", nummer); using(SqlDataReader reader = cmd.ExecuteReader()) { Dictionary fi = DBTools.GetFelderIndex(reader); while(reader.Read()) { if(DBTools.DBGetString(reader, fi["ART"]) == "A") { datumDerAuftragsbestätigung = new TerminKommentar(); datumDerAuftragsbestätigung.Termin = DBTools.DBGetDate(reader, fi["TERMIN"]); datumDerAuftragsbestätigung.Kommentar = DBTools.DBGetString(reader, fi["TEXT"]); } else { TerminKommentar tk = new TerminKommentar(); tk.Termin = DBTools.DBGetDate(reader, fi["TERMIN"]); tk.Kommentar = DBTools.DBGetString(reader, fi["TEXT"]); bestätigteLiefertermine.Add(tk); } } } } } public void BestellerÄndern(int userNr) { if (UserSingelton.GetInstance().AlleUser.ContainsKey(userNr)) { String alt = this.besteller; ODALUser ich = UserSingelton.GetInstance().AlleUser[userNr]; this.besteller = ich.Name; using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL())) { con.Open(); String sql = "update ODAL.BESTELLUNGEN set BESTELLER = @p1 where BESTELLUNGSNR = @p2"; SqlCommand cmd = new SqlCommand(sql, con); cmd.Parameters.AddWithValue("@p1", ich.Name); cmd.Parameters.AddWithValue("@p2", this.nummer); cmd.ExecuteNonQuery(); ODALUser alterUser = UserSingelton.GetInstance().GetUserFromFullName(alt); if (alterUser != null && !String.IsNullOrEmpty(alterUser.EMail)) { DialogResult dr = MessageBox.Show("Sie sind nun der Besteller dieser Bestellung!\nWollen Sie den ursprünglichen Besteller \"" + alt + "\" informieren?", "Frage!", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { ODALMailer m = new ODALMailer(this.nummer); String body = ich.Name + " hat die Bestellung " + nummer + " als Besteller übernommen!"; String subject = "Bestellung " + nummer + " wurde von " + ich.Name + " übernommen!"; // m.SendEmail(alterUser.EMail, body, subject, true); } } else { MessageBox.Show("Sie sind nun der Besteller dieser Bestellung!", "Information!", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } } } }