2238 lines
96 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|