Entwicklung_BLAZOR/InterneDLLs/LambertzPortalODAL/ODALBestellung.cs
2025-08-23 19:30:21 +02:00

2238 lines
96 KiB
C#

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
{
/// <summary>
/// Erweiterte Bestellungsklasse (erbt von BestellungsRumpf)
/// </summary>
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<int, String> zusätzlicheFreigeber = null;
//
private List<ODALBestellungsPosition> positionen = null;
private bool positionenSindGeladen = true;
//
private LamList<Korrekturbuchung> 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<TerminKommentar> bestätigteLiefertermine = null;
public ODALBestellung() : base()
{
this.positionen = new List<ODALBestellungsPosition>();
}
//
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<int, String> ZusätzlicheFreigeber
{
get
{
if (zusätzlicheFreigeber == null && this.nummer != 0)
{
zusätzlicheFreigeber = new SortedList<int, string>();
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<int, string>();
}
return zusätzlicheFreigeber;
}
}
public void ClearZusätzlicheFreigeber()
{
this.zusätzlicheFreigeber = new SortedList<int, string>();
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<int, String> 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<FreigabeOption> 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<FreigabeOption> 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<ODALBestellungsPosition>();
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;
}
/// <summary>
/// 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
/// </summary>
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<ODALBestellungsPosition> 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; }
}
/// <summary>
/// Gibt den "ersten" Buchstaben des Projektes zurück
/// </summary>
/// <returns></returns>
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<Korrekturbuchung> Korrekturbuchungen
{
get
{
if (korrekturbuchungen == null)
{
korrekturbuchungen = new LamList<Korrekturbuchung>();
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();
}
/// <summary>
/// Prüft ob alle verwendeten Kostenstellen gültige, bebuchbare Kostenstellen für die ausgewählte Firma sind
/// </summary>
/// <returns></returns>
public bool KostenstellenCheck()
{
bool result = true;
if (this.Positionen != null)
{
List<KostenstelleStrukturEintrag> 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<TerminKommentar> 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<TerminKommentar>();
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<string,int > 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);
}
}
}
}
}
}