1047 lines
38 KiB
C#
1047 lines
38 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using De.Lambertz.Portal;
|
|
using System.Data.SqlClient;
|
|
using System.Windows.Forms;
|
|
using De.Lambertz.Tools;
|
|
using System.Data;
|
|
namespace De.Lambertz.ODAL
|
|
{
|
|
public class ODALBestellungsRumpf
|
|
{
|
|
protected int nummer = 0;
|
|
protected string besteller = null;
|
|
protected int bereich = 0;
|
|
protected DateTime freiAm1;
|
|
protected DateTime freiAm2;
|
|
protected DateTime freiAm3;
|
|
protected DateTime freiAmTE;
|
|
protected int freiVon1 = 0;
|
|
protected int freiVon2 = 0;
|
|
protected int freiVon3 = 0;
|
|
protected int freiVonTE = 0;
|
|
protected int tE = 0;
|
|
protected string sonderGrund = "";
|
|
protected DateTime finaleFreigabeAm;
|
|
protected int finaleFreigabeVon = 0; //KENNZAHL!!!!
|
|
protected double bestellWert = 0;
|
|
protected int druckVon = 0;
|
|
private String wkz = null;
|
|
private String wdz = "€";
|
|
private Konstanten.Priorität priorität = Konstanten.Priorität.ohneAussage;
|
|
//
|
|
private bool istAnfrage = false;
|
|
private bool gelöscht = false;
|
|
|
|
public ODALBestellungsRumpf()
|
|
{
|
|
|
|
}
|
|
|
|
public ODALBestellungsRumpf(int bestellNr)
|
|
{
|
|
this.nummer = bestellNr;
|
|
}
|
|
|
|
public bool Gelöscht
|
|
{
|
|
get { return gelöscht; }
|
|
set { gelöscht = value; }
|
|
}
|
|
|
|
public String Wkz
|
|
{
|
|
get { return wkz; }
|
|
set
|
|
{
|
|
wkz = value;
|
|
|
|
wdz = WährungsSingelton.GetInstance().DruckZeichenFür(wkz);
|
|
}
|
|
}
|
|
|
|
public bool IstAnfrage
|
|
{
|
|
get { return istAnfrage; }
|
|
set { istAnfrage = value; }
|
|
}
|
|
|
|
public int DruckVon
|
|
{
|
|
get { return druckVon; }
|
|
set { druckVon = value; }
|
|
}
|
|
|
|
public double BestellWert
|
|
{
|
|
get { return bestellWert; }
|
|
set { bestellWert = value; }
|
|
}
|
|
|
|
public int Nummer
|
|
{
|
|
get { return nummer; }
|
|
set { nummer = value; }
|
|
}
|
|
public string Besteller
|
|
{
|
|
get { return besteller; }
|
|
set { besteller = value; }
|
|
}
|
|
public int Bereich
|
|
{
|
|
get { return bereich; }
|
|
set { bereich = value; }
|
|
}
|
|
public DateTime FreiAm1
|
|
{
|
|
get { return freiAm1; }
|
|
set { freiAm1 = value; }
|
|
}
|
|
public DateTime FreiAm2
|
|
{
|
|
get { return freiAm2; }
|
|
set { freiAm2 = value; }
|
|
}
|
|
public DateTime FreiAm3
|
|
{
|
|
get { return freiAm3; }
|
|
set { freiAm3 = value; }
|
|
}
|
|
public int FreiVon3
|
|
{
|
|
get { return freiVon3; }
|
|
set { freiVon3 = value; }
|
|
}
|
|
public int FreiVon2
|
|
{
|
|
get { return freiVon2; }
|
|
set { freiVon2 = value; }
|
|
}
|
|
public int FreiVon1
|
|
{
|
|
get { return freiVon1; }
|
|
set { freiVon1 = value; }
|
|
}
|
|
public DateTime FreiAmTE
|
|
{
|
|
get { return freiAmTE; }
|
|
set { freiAmTE = value; }
|
|
}
|
|
|
|
public int FreiVonTE
|
|
{
|
|
get { return freiVonTE; }
|
|
set { freiVonTE = value; }
|
|
}
|
|
|
|
public string SonderGrund
|
|
{
|
|
get { return sonderGrund; }
|
|
set { sonderGrund = value; }
|
|
}
|
|
|
|
public DateTime FinaleFreigabeAm
|
|
{
|
|
get { return finaleFreigabeAm; }
|
|
set { finaleFreigabeAm = value; }
|
|
}
|
|
|
|
public int FinaleFreigabeVon
|
|
{
|
|
get { return finaleFreigabeVon; }
|
|
set { finaleFreigabeVon = value; }
|
|
}
|
|
|
|
public int FreigabeKennzeichen
|
|
{
|
|
get { return finaleFreigabeVon; }
|
|
set { finaleFreigabeVon = value; }
|
|
}
|
|
|
|
public bool IstInBearbeitung()
|
|
{
|
|
bool result = false;
|
|
SqlConnection con = getConnection();
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("select BESTELLUNGSNR ");
|
|
sql.Append("from ODAL.BESTELLUNGSLOCK ");
|
|
sql.Append("where BESTELLUNGSNR = ");
|
|
sql.Append(this.nummer);
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
SqlDataReader reader = command.ExecuteReader();
|
|
if (reader.Read())
|
|
{
|
|
result = true;
|
|
}
|
|
reader.Close();
|
|
returnConnection(con);
|
|
return result;
|
|
}
|
|
|
|
public void InBearbeitungMarkierungEntfernen()
|
|
{
|
|
SqlConnection con = getConnection();
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("delete from ODAL.BESTELLUNGSLOCK where BESTELLUNGSNR = ");
|
|
sql.Append(this.nummer);
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
try
|
|
{
|
|
command.ExecuteNonQuery();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//Nothing
|
|
}
|
|
returnConnection(con);
|
|
}
|
|
|
|
public bool IstFreigegeben()
|
|
{
|
|
bool result = false;
|
|
|
|
if ((this.finaleFreigabeVon != 0 && bereich <10000) || (bereich>10000 && this.FinaleFreigabeVon == 11))
|
|
{
|
|
result = true;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool InBearbeitungMarkierungSetzten()
|
|
{
|
|
bool result = true;
|
|
result = !IstInBearbeitung();
|
|
if (result)
|
|
{
|
|
|
|
SqlConnection con = getConnection();
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("insert into ODAL.BESTELLUNGSLOCK (BESTELLUNGSNR) values (");
|
|
sql.Append(this.nummer);
|
|
sql.Append(")");
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
try
|
|
{
|
|
command.ExecuteNonQuery();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
result = false;
|
|
}
|
|
returnConnection(con);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public bool Markieren(List<int> userListe)
|
|
{
|
|
bool result = false;
|
|
if (this.nummer != 0)
|
|
{
|
|
//Liste Bereinigen
|
|
//Es wird nur bei Usern (Vertretungen) markiert, die den Bereich dieser Bestellung zugewiesen haben
|
|
List<int> bereinigteUserListe = new List<int>();
|
|
foreach (int u in userListe)
|
|
{
|
|
if (UserSingelton.GetInstance().AlleUser.ContainsKey(u))
|
|
{
|
|
if (UserSingelton.GetInstance().AlleUser[u].userHatBereich(this.bereich))
|
|
{
|
|
bereinigteUserListe.Add(u);
|
|
}
|
|
}
|
|
}
|
|
//Auswahl der User bei denen markiert werden soll FALLS es mehr als einen User gibt bei dem markiert werden könnte
|
|
List<int> ergebnisUserListe = null; ;
|
|
if (bereinigteUserListe.Count > 1)
|
|
{
|
|
FrmSELECTMarkierenBeiVertretungen f = new FrmSELECTMarkierenBeiVertretungen(bereinigteUserListe);
|
|
f.ShowDialog();
|
|
ergebnisUserListe = f.AusgewählteUser;
|
|
f.Dispose();
|
|
}
|
|
else
|
|
{
|
|
ergebnisUserListe = new List<int>();
|
|
foreach (int u in bereinigteUserListe)
|
|
{
|
|
ergebnisUserListe.Add(u);
|
|
}
|
|
}
|
|
|
|
if (ergebnisUserListe != null)
|
|
{
|
|
SqlConnection con = getConnection();
|
|
SqlConnection con2 = getConnection();
|
|
foreach (int userNr in ergebnisUserListe)
|
|
{
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
|
sql.Append("select BESTELLNR ");
|
|
sql.Append("from ODAL.ODALMARKBEST ");
|
|
sql.Append("where BESTELLNR = ");
|
|
sql.Append(this.nummer);
|
|
sql.Append(" and USERNR = ");
|
|
sql.Append(userNr);
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
SqlDataReader reader = command.ExecuteReader();
|
|
if (!reader.Read())
|
|
{
|
|
try
|
|
{
|
|
sql = new StringBuilder();
|
|
sql.Append("insert into ODAL.ODALMARKBEST ");
|
|
sql.Append("(BESTELLNR, USERNR) ");
|
|
sql.Append("VALUES (");
|
|
sql.Append(this.nummer);
|
|
sql.Append(", ");
|
|
sql.Append(userNr);
|
|
sql.Append(")");
|
|
command = new SqlCommand(sql.ToString(), con2);
|
|
command.ExecuteNonQuery();
|
|
result = true;
|
|
}
|
|
catch (Exception )
|
|
{
|
|
result = false;
|
|
}
|
|
}
|
|
reader.Close();
|
|
}
|
|
|
|
returnConnection(con);
|
|
returnConnection(con2);
|
|
}
|
|
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public bool MarkierungEntfernen(List<int> userListe)
|
|
{
|
|
bool result = false;
|
|
if (this.nummer != 0)
|
|
{
|
|
SqlConnection con = getConnection();
|
|
SqlConnection con2 = getConnection();
|
|
//Markierung wird bei allen Usern (Vertretung) die diese Bestellung markiert haben entfernt.
|
|
foreach (int userNr in userListe)
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
|
sql.Append("select BESTELLNR ");
|
|
sql.Append("from ODAL.ODALMARKBEST ");
|
|
sql.Append("where BESTELLNR = ");
|
|
sql.Append(this.nummer);
|
|
sql.Append(" and USERNR = ");
|
|
sql.Append(userNr);
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
SqlDataReader reader = command.ExecuteReader();
|
|
if (reader.Read())
|
|
{
|
|
try
|
|
{
|
|
sql = new StringBuilder();
|
|
sql.Append("delete from ODAL.ODALMARKBEST ");
|
|
sql.Append("where BESTELLNR = ");
|
|
sql.Append(this.nummer);
|
|
sql.Append(" and USERNR = ");
|
|
sql.Append(userNr);
|
|
command = new SqlCommand(sql.ToString(), con2);
|
|
command.ExecuteNonQuery();
|
|
result = true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
result = false;
|
|
}
|
|
}
|
|
reader.Close();
|
|
}
|
|
returnConnection(con);
|
|
returnConnection(con2);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
|
|
public bool FreigebenTE()
|
|
{
|
|
bool result = true;
|
|
|
|
SqlConnection con = getConnection();
|
|
|
|
int userId = UserSingelton.GetInstance().UserID;
|
|
DateTime jetzt = DateTime.Now;
|
|
|
|
try
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set");
|
|
sql.Append(" TEVON = ");
|
|
sql.Append(userId);
|
|
sql.Append(", TEAM = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
sql.Append(", TE = 0");
|
|
sql.Append(" where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
|
|
freiVonTE = userId;
|
|
freiAmTE = jetzt;
|
|
TE = 0;
|
|
|
|
int user = 0;
|
|
if (this.FreiVon1 == 0)
|
|
{
|
|
user = UserSingelton.GetInstance().Bereiche[this.bereich].Freigeber1;
|
|
}
|
|
else if(this.FreiVon2 == 0)
|
|
{
|
|
user = UserSingelton.GetInstance().Bereiche[this.bereich].Freigeber2;
|
|
}
|
|
else if (this.FreiVon3 == 0)
|
|
{
|
|
user = UserSingelton.GetInstance().Bereiche[this.bereich].Freigeber3;
|
|
}
|
|
String par = UserSingelton.GetInstance().Parameter.GetValue("FREIGEBER", "Mail", false);
|
|
|
|
if (par != "1" && par != "2")
|
|
{
|
|
Tools.InfoBox(ML.GetInstance().Txt(ML.MSG_NAECHSTER_FREIGEBER_P1, UserSingelton.GetInstance().AlleUser[user].Name));
|
|
}
|
|
this.MailAnNächstenFreigeber();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
result = false;
|
|
}
|
|
|
|
returnConnection(con);
|
|
|
|
return result;
|
|
}
|
|
|
|
public bool Freigeben(bool finaleFreigabe)
|
|
{
|
|
bool result = true;
|
|
|
|
SqlConnection con = getConnection();
|
|
|
|
int userId = UserSingelton.GetInstance().UserID;
|
|
int teVorFreigabe = UserSingelton.GetInstance().Bereiche[bereich].TeFreigabeVorFreigabe;
|
|
DateTime jetzt = DateTime.Now;
|
|
string token = " ";
|
|
int nextFreigeber = 0;
|
|
|
|
try
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set");
|
|
if (freiVon1 == 0)
|
|
{
|
|
freiVon1 = userId;
|
|
freiAm1 = jetzt;
|
|
sql.Append(token);
|
|
sql.Append("FRVON1 = ");
|
|
sql.Append(userId);
|
|
sql.Append(", FRAM1 = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
if (teVorFreigabe == 2 && !finaleFreigabe)
|
|
{
|
|
sql.Append(", TE = 1");
|
|
tE = 1;
|
|
}
|
|
token = ", ";
|
|
nextFreigeber = UserSingelton.GetInstance().Bereiche[bereich].Freigeber2;
|
|
}
|
|
else if (freiVon2 == 0)
|
|
{
|
|
freiVon2 = userId;
|
|
freiAm2 = jetzt;
|
|
sql.Append(token);
|
|
sql.Append("FRVON2 = ");
|
|
sql.Append(userId);
|
|
sql.Append(", FRAM2 = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
if (teVorFreigabe == 3 && !finaleFreigabe)
|
|
{
|
|
sql.Append(", TE = 1");
|
|
tE = 1;
|
|
}
|
|
token = ", ";
|
|
nextFreigeber = UserSingelton.GetInstance().Bereiche[bereich].Freigeber3;
|
|
}
|
|
else if (freiVon3 == 0)
|
|
{
|
|
freiVon3 = userId;
|
|
freiAm3 = jetzt;
|
|
sql.Append(token);
|
|
sql.Append("FRVON3 = ");
|
|
sql.Append(userId);
|
|
sql.Append(", FRAM3 = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
token = ", ";
|
|
}
|
|
|
|
if (finaleFreigabe)
|
|
{
|
|
finaleFreigabeVon = userId;
|
|
finaleFreigabeAm = jetzt;
|
|
sql.Append(token);
|
|
sql.Append("FREIGABEVON = ");
|
|
sql.Append(userId);
|
|
sql.Append(", FREIGABEAM = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
}
|
|
|
|
sql.Append(" where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
|
|
//InfoBox anzeigen, wer nächster Freigeber ist, nur wenn keine Mail versendet werden soll
|
|
String par = UserSingelton.GetInstance().Parameter.GetValue("FREIGEBER", "Mail", false);
|
|
|
|
if (par != "1" && par != "2" && !finaleFreigabe)
|
|
{
|
|
Tools.InfoBox(ML.GetInstance().Txt(ML.MSG_NAECHSTER_FREIGEBER_P1, UserSingelton.GetInstance().AlleUser[nextFreigeber].Name));
|
|
}
|
|
this.MailAnNächstenFreigeber();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
result = false;
|
|
}
|
|
|
|
returnConnection(con);
|
|
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Sendet eine Mail an den nächsten Freigeber in der Reihe aber nicht an den TE
|
|
/// MACHT NIX MEHR!!!
|
|
/// </summary>
|
|
public void MailAnNächstenFreigeber()
|
|
{
|
|
//UserSingelton us = UserSingelton.GetInstance();
|
|
|
|
//Bestimmen ob Mail versendet werden soll und ob mit Anhang erstellt werden soll.
|
|
//String par = us.Parameter.GetValue("FREIGEBER", "Mail", false);
|
|
|
|
//if (par == "1" || par == "2")
|
|
//{
|
|
// if (us.Bereiche.ContainsKey(this.bereich))
|
|
// {
|
|
// ODALUser ou = null;
|
|
// ODALBereich bereich = us.Bereiche[this.bereich];
|
|
// if (bereich.Freigeber1 != 0 && this.freiVon1 == 0 && this.bestellWert >= bereich.Freigabe1)
|
|
// {
|
|
// if (bereich.TeFreigabeVorFreigabe != 1 || this.freiVonTE != 0)
|
|
// {
|
|
// if (us.AlleUser.ContainsKey(bereich.Freigeber1))
|
|
// {
|
|
// ou = us.AlleUser[bereich.Freigeber1];
|
|
// }
|
|
// }
|
|
// }
|
|
// else if (bereich.Freigeber2 != 0 && this.freiVon2 == 0 && this.bestellWert >= bereich.Freigabe2)
|
|
// {
|
|
// if (bereich.TeFreigabeVorFreigabe != 2 || this.freiVonTE != 0)
|
|
// {
|
|
// if (us.AlleUser.ContainsKey(bereich.Freigeber2))
|
|
// {
|
|
// ou = us.AlleUser[bereich.Freigeber2];
|
|
// }
|
|
// }
|
|
// }
|
|
// else if (bereich.Freigeber3 != 0 && this.freiVon3 == 0 && this.bestellWert >= bereich.Freigabe3)
|
|
// {
|
|
// if (bereich.TeFreigabeVorFreigabe != 3 || this.freiVonTE != 0)
|
|
// {
|
|
// if (us.AlleUser.ContainsKey(bereich.Freigeber3))
|
|
// {
|
|
// ou = us.AlleUser[bereich.Freigeber3];
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// if (ou != null && !String.IsNullOrEmpty(ou.EMail))
|
|
// {
|
|
// if (par == "1")
|
|
// {
|
|
// DialogResult dr = Tools.QuestionBox(ML.GetInstance().Txt(ML.MSG_FRAGE_MAIL_AN_FOLGENDEN_FREIGEBER_P1, ou.Name));
|
|
// if (dr == DialogResult.Yes)
|
|
// {
|
|
// par = "2";
|
|
// }
|
|
// }
|
|
// if (par == "2")
|
|
// {
|
|
// bool mitAttachment = false;
|
|
// if (us.Parameter.GetValue("FREIGEBER", "Anhang", false) == "1")
|
|
// {
|
|
// mitAttachment = true;
|
|
// }
|
|
|
|
// ODALMailer om = new ODALMailer(this.nummer);
|
|
// om.SendEmail(ou.EMail, ML.GetInstance().Txt(ML.XXX_BITTE_UM_FREIGABE_P1, this.nummer.ToString()), ODALMailer.SUBJECT_FREIGABE, mitAttachment);
|
|
// Tools.InfoBox(ML.GetInstance().Txt(ML.MSG_MAIL_GESENDET_P1, ou.Name));
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
|
|
public bool FreigabeKennzeichenSpeichern(int kennzahl)
|
|
{
|
|
bool result = true;
|
|
using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL()))
|
|
{
|
|
con.Open();
|
|
DateTime jetzt = DateTime.Now;
|
|
try
|
|
{
|
|
String sql = "update ODAL.BESTELLUNGEN set FREIGABEVON = @p1, FREIGABEAM = null where BESTELLUNGSNR = @p2";
|
|
|
|
SqlCommand cmd = new SqlCommand(sql, con);
|
|
cmd.Parameters.AddWithValue("@p1", kennzahl);
|
|
cmd.Parameters.AddWithValue("@p2", this.nummer);
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
result = false;
|
|
}
|
|
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public void FreigabenEntfernen()
|
|
{
|
|
SqlConnection con = getConnection();
|
|
|
|
try
|
|
{
|
|
ODALBereich ber = UserSingelton.GetInstance().Bereiche[this.bereich];
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set ");
|
|
sql.Append("FRVON1 = null, ");
|
|
sql.Append("FRAM1 = null, ");
|
|
sql.Append("FRVON2 = null, ");
|
|
sql.Append("FRAM2 = null, ");
|
|
sql.Append("FRVON3 = null, ");
|
|
sql.Append("FRAM3 = null, ");
|
|
sql.Append("FREIGABEVON = null, ");
|
|
sql.Append("FREIGABEAM = null, ");
|
|
sql.Append("TEAM = null, ");
|
|
sql.Append("TEVON = null, ");
|
|
sql.Append("DRUCKVON = null, ");
|
|
sql.Append("DRUCKAM = null, ");
|
|
sql.Append("SONDERGRUND = null, ");
|
|
sql.Append("TE = ");
|
|
sql.Append(ber.TeFreigabeVorFreigabe);
|
|
sql.Append(" where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
|
|
druckVon = 0;
|
|
freiVon1 = 0;
|
|
freiVon2 = 0;
|
|
freiVon3 = 0;
|
|
freiVonTE = 0;
|
|
tE = ber.TeFreigabeVorFreigabe;
|
|
sonderGrund = null;
|
|
finaleFreigabeVon = 0;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//Nothing
|
|
}
|
|
|
|
returnConnection(con);
|
|
}
|
|
|
|
public bool NotfallFreigeben(string text, int userId)
|
|
{
|
|
bool result = true;
|
|
//int userId = UserSingelton.GetInstance().UserID;
|
|
DateTime jetzt = DateTime.Now;
|
|
string token = " ";
|
|
|
|
finaleFreigabeVon = userId;
|
|
finaleFreigabeAm = jetzt;
|
|
sonderGrund = text;
|
|
|
|
if (this.bereich < 10000)
|
|
{
|
|
using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL()))
|
|
{
|
|
con.Open();
|
|
try
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set");
|
|
sql.Append(token);
|
|
sql.Append("FREIGABEVON = ");
|
|
sql.Append(userId);
|
|
sql.Append(", FREIGABEAM = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
sql.Append(", SONDERGRUND = ");
|
|
sql.Append(DBTools.Txt(text));
|
|
sql.Append(" where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
|
|
this.mailAnAlleFreigeber(text);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
result = false;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FreigabenHandler fh = new FreigabenHandler();
|
|
result = fh.NotfallFreigabeErteilen(this, text);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Sendet eine Mail an alle Freigeber
|
|
/// </summary>
|
|
private void mailAnAlleFreigeber(string text)
|
|
{
|
|
UserSingelton us = UserSingelton.GetInstance();
|
|
|
|
if (us.Bereiche.ContainsKey(this.bereich))
|
|
{
|
|
StringBuilder email = new StringBuilder(); ;
|
|
String token = "";
|
|
ODALBereich bereich = us.Bereiche[this.bereich];
|
|
|
|
if (bereich.Freigeber1 != 0 && this.bestellWert >= bereich.Freigabe1)
|
|
{
|
|
if(us.AlleUser.ContainsKey(bereich.Freigeber1))
|
|
{
|
|
ODALUser ou = us.AlleUser[bereich.Freigeber1];
|
|
email.Append(token);
|
|
email.Append(ou.EMail);
|
|
token = "; ";
|
|
}
|
|
}
|
|
if (bereich.Freigeber2 != 0 && this.bestellWert >= bereich.Freigabe2)
|
|
{
|
|
if (us.AlleUser.ContainsKey(bereich.Freigeber2))
|
|
{
|
|
ODALUser ou = us.AlleUser[bereich.Freigeber2];
|
|
email.Append(token);
|
|
email.Append(ou.EMail);
|
|
token = "; ";
|
|
}
|
|
}
|
|
if (bereich.Freigeber3 != 0 && this.bestellWert >= bereich.Freigabe3)
|
|
{
|
|
if (us.AlleUser.ContainsKey(bereich.Freigeber3))
|
|
{
|
|
ODALUser ou = us.AlleUser[bereich.Freigeber3];
|
|
email.Append(token);
|
|
email.Append(ou.EMail);
|
|
token = "; ";
|
|
}
|
|
}
|
|
|
|
if (!String.IsNullOrEmpty(email.ToString()))
|
|
{
|
|
ODALMailer om = new ODALMailer(this.nummer);
|
|
om.SendEmail(email.ToString(), ML.GetInstance().Txt(ML.MSG_BESTELLUNG_NOTFALLFREIGABE_FREIGEGEBEN_P3, this.nummer.ToString(), us.Name, text), ODALMailer.SUBJECT_NOTFALLFREIGABE, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
public int TE
|
|
{
|
|
get { return tE; }
|
|
set { tE = value; }
|
|
}
|
|
|
|
public void BestellungAlsGedrucktMarkieren()
|
|
{
|
|
SqlConnection con = getConnection();
|
|
|
|
int userId = UserSingelton.GetInstance().UserID;
|
|
DateTime jetzt = DateTime.Now;
|
|
|
|
try
|
|
{
|
|
//Aktualiseiren der DRUCK von/am Kennzeichn
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set");
|
|
sql.Append(" DRUCKVON = ");
|
|
sql.Append(userId);
|
|
sql.Append(", DRUCKAM = ");
|
|
sql.Append(DBTools.Dat(jetzt));
|
|
sql.Append(" where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
|
|
//Aktualisieren des Lieferstatus, NUR wenn er noch nicht geändert wurde!
|
|
sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set ");
|
|
sql.Append("STATUS = '0'"); //Ware bestellt, Lieferung offen!
|
|
sql.Append(" where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
sql.Append(" and STATUS is null");
|
|
command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
|
|
druckVon = userId;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//Mööp aber nix!
|
|
Console.WriteLine(ex.Message);
|
|
}
|
|
|
|
returnConnection(con);
|
|
}
|
|
|
|
public void BestellungsStatusSetzen(string status)
|
|
{
|
|
SqlConnection con = getConnection();
|
|
|
|
int userId = UserSingelton.GetInstance().UserID;
|
|
DateTime jetzt = DateTime.Now;
|
|
|
|
try
|
|
{
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("update ODAL.BESTELLUNGEN set");
|
|
sql.Append(" STATUS = '");
|
|
sql.Append(status);
|
|
sql.Append("' where BESTELLUNGSNR = ");
|
|
sql.Append(nummer);
|
|
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
command.ExecuteNonQuery();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//Mööp aber nix!
|
|
}
|
|
|
|
returnConnection(con);
|
|
}
|
|
|
|
public List<string> GetScans()
|
|
{
|
|
List<string> result = new List<string>();
|
|
|
|
SqlConnection con = getConnection();
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("select scan from ODAL.SCANS where BESTELLUNGSNR = ");
|
|
sql.Append(this.nummer);
|
|
|
|
SqlCommand command = new SqlCommand(sql.ToString(), con);
|
|
SqlDataReader reader = command.ExecuteReader();
|
|
|
|
while (reader.Read())
|
|
{
|
|
result.Add(DBTools.DBGetString(reader, 0));
|
|
}
|
|
reader.Close();
|
|
|
|
returnConnection(con);
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
public List<InvestAntragAnhang> GetInvestScans()
|
|
{
|
|
return InvestAntragsAnhangHandler.GetInvestAntragScans(this.nummer);
|
|
}
|
|
|
|
|
|
public void SichernBeiAenderung()
|
|
{
|
|
SqlConnection con = getConnection();
|
|
|
|
//Löschen der Positionen im SAVE
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.Append("delete from ODAL.ODALBPS where BESTELLUNGSNR = ");
|
|
sql.Append(this.nummer);
|
|
SqlCommand 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 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 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();
|
|
|
|
this.gelöscht = true;
|
|
|
|
returnConnection(con);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Holt die Verbindung zum MSSQL Server
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private SqlConnection getConnection()
|
|
{
|
|
SqlConnection result = null;
|
|
try
|
|
{
|
|
result = new SqlConnection();
|
|
result.ConnectionString = DBTools.ConnectionStringODAL();
|
|
result.Open();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
Tools.ErrorBox(ML.GetInstance().Txt(ML.MSG_FEHLER_ANMELDUNG_SQL));
|
|
result = null;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Schliesst die Verbindung zum MSSQL Server
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private void returnConnection(SqlConnection con)
|
|
{
|
|
if (con != null && con.State == ConnectionState.Open)
|
|
{
|
|
con.Close();
|
|
}
|
|
}
|
|
|
|
public void SetVorgangWirdVonMirBearbeitet(int ich)
|
|
{
|
|
vorgangWirdVonMirBearbeitet(ich, true);
|
|
}
|
|
|
|
|
|
private void vorgangWirdVonMirBearbeitet(int ich, bool anlegen)
|
|
{
|
|
using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL()))
|
|
{
|
|
con.Open();
|
|
String sql = "select ANWENDER FROM INBEARBEITUNG where BESTELLUNGSNR = @p1";
|
|
SqlCommand cmd = new SqlCommand(sql, con);
|
|
cmd.Parameters.AddWithValue("@p1", this.nummer);
|
|
bool gefunden = false;
|
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
|
{
|
|
if (reader.Read())
|
|
{
|
|
gefunden = true;
|
|
}
|
|
}
|
|
|
|
if (gefunden)
|
|
{
|
|
sql = "update INBEARBEITUNG set ANWENDER = @p2, INBEARBEITUNGSEIT = @p3 where BESTELLUNGSNR = @p1";
|
|
}
|
|
else
|
|
{
|
|
sql = "insert into INBEARBEITUNG (BESTELLUNGSNR, ANWENDER, INBEARBEITUNGSEIT) values (@p1, @p2, @p3)";
|
|
}
|
|
cmd = new SqlCommand(sql, con);
|
|
cmd.Parameters.AddWithValue("@p1", this.nummer);
|
|
cmd.Parameters.AddWithValue("@p2", ich);
|
|
cmd.Parameters.AddWithValue("@p3", DateTime.Now);
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
public String Wdz
|
|
{
|
|
get { return wdz; }
|
|
}
|
|
|
|
public Konstanten.Priorität Priorität { get => priorität; set => priorität = value; }
|
|
|
|
public void RemoveVorgangWirdVonMirBearbeitet()
|
|
{
|
|
using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL()))
|
|
{
|
|
con.Open();
|
|
String sql = "select ANWENDER FROM INBEARBEITUNG where BESTELLUNGSNR = @p1";
|
|
SqlCommand cmd = new SqlCommand(sql, con);
|
|
cmd.Parameters.AddWithValue("@p1", this.nummer);
|
|
bool gefunden = false;
|
|
using (SqlDataReader reader = cmd.ExecuteReader())
|
|
{
|
|
if (reader.Read())
|
|
{
|
|
gefunden = true;
|
|
}
|
|
}
|
|
|
|
if (gefunden)
|
|
{
|
|
sql = "update INBEARBEITUNG set INBEARBEITUNGSEIT = @p3 where BESTELLUNGSNR = @p1";
|
|
cmd = new SqlCommand(sql, con);
|
|
cmd.Parameters.AddWithValue("@p1", this.nummer);
|
|
cmd.Parameters.AddWithValue("@p3", DBNull.Value);
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|