using AForge.Video.DirectShow; using DatenDB; using System; using System.CodeDom; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls.WebParts; using System.Windows.Forms; namespace Deckungsbeitrag { public partial class FormFehlmengeCount : Form { private FilterInfoCollection videoDevices; Kunde kunde; List artikelListe; Meldungen meldung = new Meldungen(); //Benutzer benutzer; string userid; public FormFehlmengeCount() { InitializeComponent(); this.groupBoxArtikel.Visible = false; //this.textBoxScann.Focus(); } public FormFehlmengeCount(Benutzer ben) : this() { //benutzer = ben; } public FormFehlmengeCount(string uid) : this() { this.userid = uid; } private void FormFehlmengeCount_Load(object sender, EventArgs e) { videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); //Kunde wird durch Scan oder Handeingabe Ausgewählt. this.kunde = Funktionen.KundenAuswahl(); ControlLaden(); CloseKeyboard(); } private void CloseKeyboard() { // Alle gestarteten Instanzen von TabTip.exe (Touch Tastatur) schließen foreach (var process in Process.GetProcessesByName("TabTip")) { try { process.Close(); } catch (Exception es) { // Fehlerbehandlung falls Prozess nicht beendet werden kann MessageBox.Show($"Fehler beim Schließen: " + es.Message); } } } private void ControlLaden() { // Nachdem die textboxScann verlassen wird und ein Kunde gefunden wurde wird Form_Load ausgelöst. if (kunde != null) { this.labelSuchtext.Text = kunde.Suchtext; this.labelName.Text = kunde.KundeName; this.labelName.Visible = this.labelSuchtext.Visible = true; this.labelAnmerkung.Visible = this.labelAnmerkungText.Visible = true; if (!string.IsNullOrWhiteSpace(this.kunde.Anmerkung)) { this.labelAnmerkungText.Text = kunde.Anmerkung; this.labelAnmerkungText.BackColor = Color.Yellow; } else { this.labelAnmerkungText.Text = "Derzeit keine Anmerkungen vorhanden."; this.labelAnmerkungText.BackColor = Color.White; } //this.textBoxScann.Clear(); this.artikelListe = KundeArtikel.GetList(kunde.KundeID.ToString()); this.textBoxScann.Text = this.kunde.KundeNummer; this.textBoxScann.Enabled = false; GroupBox_Load(); if(kunde.Aufgabe != null) { string n = kunde.Suchtext == null ? kunde.KundeName : kunde.Suchtext; meldung.GetInfo(this, $"Bei Kunde {n} solltest du folgendes beachten: {Aufgabe.GetAufgabe(null, kunde.Aufgabe).Bezeichnung}", false); } } CloseKeyboard(); } /// /// Die GroupBox mit den Artikel-Buttons wird geladen /// private void GroupBox_Load() { foreach (Button btn in this.tableLayoutPanelArtikel.Controls) btn.Tag = btn.Text = null; this.groupBoxArtikel.Visible = true; //TODO: Nach Test und Rücksprache eventuell wieder umbauen. Benutzer.Rolle etc. // Buttons werden den Artikeln aus der Artikelliste zugewiesen. Unterschied zwischen Frotteewäsche, Spannleintüchern, Großteilen und Kleinteilen foreach (KundeArtikel artikel in artikelListe) { // Unterschied zwischen Maschine oder Person. if(this.userid.StartsWith("ms")) { // Wird bei Frottee verarbeitet if (this.userid.Contains("frottee")) { // Wird bei FROTTEE verarbeitet. switch (artikel.ArtikelNR) { case var nr when nr.ToString().StartsWith("6311"): //HANDTUCH this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().StartsWith("6312") & nr.ToString().EndsWith("0"): //DUSCHTUCH WEISS this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().StartsWith("6314"): //BADEVORLEGER this.buttonArt3.Tag = artikel; break; case var nr when nr.ToString().StartsWith("6313"): //BADETUCH this.buttonArt4.Tag = artikel; break; case var nr when nr.ToString().StartsWith("6316"): //BADEMANTEL this.buttonArt5.Tag = artikel; break; case var nr when nr.ToString().StartsWith("6324"): //SAUNATUCH this.buttonArt6.Tag = artikel; break; case var nr when nr.ToString().StartsWith("6312") & nr.ToString().EndsWith("1"): //DUSCHTUCH BLAU this.buttonArt7.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61115") & (nr.ToString().EndsWith("00") || nr.ToString().EndsWith("30")): //SPANNLEINTUCH SINGLE this.buttonArt8.Tag = artikel; break; default: break; } } // Wird bei Großteile verarbeitet if (this.userid.Contains("großteile")) { // Wird bei Großteilen verarbeitet switch (artikel.ArtikelNR) { case var nr when nr.ToString().StartsWith("6112"): //DECKENBEZUG this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61110"): //LEINTUCH SINGLE this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61112"): //DOPPELLEINTUCH this.buttonArt3.Tag = artikel; break; //case var nr when nr.ToString().StartsWith(""): // this.buttonArt4.Tag = artikel; // break; //case var nr when nr.ToString().StartsWith(""): // this.buttonArt5.Tag = artikel; // break; //case var nr when nr.ToString().StartsWith(""): // this.buttonArt6.Tag = artikel; // break; //case var nr when nr.ToString().StartsWith(""): // this.buttonArt7.Tag = artikel; // break; //case var nr when nr.ToString().StartsWith(""): // this.buttonArt8.Tag = artikel; // break; default: break; } } // Wird bei Kleinteile verarbeitet if (this.userid.Contains("kleinteile")) { // Wird bei Kleinteilen verarbeitet switch (artikel.ArtikelNR) { case var nr when nr.ToString().StartsWith("61210"): //POLSTERBEZUG 60x80 this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61211") & nr.ToString().EndsWith("0"): //POLSTERBEZUG 40x40 this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61211") & nr.ToString().EndsWith("1"): //POLSTERBEZUG 40x50 this.buttonArt3.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61211") & nr.ToString().EndsWith("2"): //POLSTERBEZUG 40x60 this.buttonArt4.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61211") & nr.ToString().EndsWith("3"): //POLSTERBEZUG 40x70 this.buttonArt5.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61221"): //MUNDSERVIETTE this.buttonArt6.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61222"): //DECKSERVIETTE this.buttonArt7.Tag = artikel; break; default: break; } } } else // UserID Contains "ps" für Person { // Wird bei Spannleintuch verarbeitet. if (this.userid.Contains("spannleintuch")) { switch (artikel.ArtikelNR) { case var nr when nr.ToString().StartsWith("61115") & (nr.ToString().EndsWith("00") || nr.ToString().EndsWith("30")): //SPANNLEINTUCH SINGLE this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61115") & nr.ToString().EndsWith("10"): //SPANNLEINTUCH SINGLE GELB this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61115") & nr.ToString().EndsWith("20"): //SPANNLEINTUCH SINGLE WEISS this.buttonArt3.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61115") & (nr.ToString().EndsWith("30") || nr.ToString().EndsWith("40")): //SPANNLEINTUCH QUEEN BLAU GELB this.buttonArt4.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61116") & nr.ToString().EndsWith("00"): //SPANNLEINTUCH DOUBLE this.buttonArt5.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61116") & (nr.ToString().EndsWith("10") || nr.ToString().EndsWith("40")): //SPANNLEINTUCH LILA ITALO this.buttonArt6.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61116") & (nr.ToString().EndsWith("20") || nr.ToString().EndsWith("21")): //SPANNLEINTUCH DOUBLE WEISS GRAU this.buttonArt7.Tag = artikel; break; case var nr when nr.ToString().StartsWith("61116") & nr.ToString().EndsWith("30"): //SPANNLEINTUCH DOUBLE ROT this.buttonArt8.Tag = artikel; break; default: break; } } } } // Button mit Tag bearbeiten. Buttons ohne Tag werden deaktiviert. foreach(Button btn in this.tableLayoutPanelArtikel.Controls) { if (btn.Tag == null) { btn.Enabled = false; btn.BackColor = Color.Gray; btn.Text = ""; } else { KundeArtikel art = (KundeArtikel)btn.Tag; int index = art.ArtikelName.IndexOf(" "); btn.Text = art.ArtikelName; btn.Font = new Font(btn.Font.Name, 18); btn.BackColor = Color.Turquoise; btn.Enabled = true; } } } /// /// Wenn der Kunde Fertig gemacht wurde, werden Controls deaktiviert und ausgeblendet bis neuer Kunde gewählt /// /// /// private void buttonFertig_Click(object sender, EventArgs e) { // Controls werden durchgegangen und ausgeblendet oder der Text entfernt. foreach(Control ctr in this.Controls) { switch (ctr) { case Label lbl: lbl.Text = string.Empty; //lbl.Visible = false; break; case GroupBox gb: gb.Visible = false; break; case TextBox txt: txt.Clear(); txt.Enabled = true; break; default: break; } } //Kunde wird durch Scan oder Handeingabe Ausgewählt. this.kunde = Funktionen.KundenAuswahl(); ControlLaden(); } /// /// TextBox Scann Events /// Beim Verlassen der TextBox wird Kunde aus DB geholt /// Wenn Enter gedrückt wird, wird TextBox verlassen /// /// /// private void textBoxScann_Leave(object sender, EventArgs e) { //TODO: Wenn Nachwäsche oder Müllwäsche alle Artikel anzeigen. // Kundennummer wird ausgelesen und Kunde aus DB geholt. Form_Load wird danach ausgelöst if (this.kunde == null) { this.kunde = Kunde.GetKunde(this.textBoxScann.Text, null, null); ControlLaden(); } } private void textBoxScann_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { // Leave-Ereignis manuell ausführen textBoxScann_Leave(sender, EventArgs.Empty); // Fokus auf das nächste Steuerelement verschieben //this.SelectNextControl((Control)sender, true, true, true, true); // Standardverhalten (Beep) unterdrücken e.SuppressKeyPress = true; } } /// /// FehlmengeCount Button Events /// Mouse Up & Down Event für Button Farbwechsel /// /// /// private void Button_MouseUp(object sender, MouseEventArgs e) { Button btn = sender as Button; if (btn != null) { btn.BackColor = Color.Turquoise; // Gewünschte Farbe beim MouseUp } } private void Button_MouseDown(object sender, MouseEventArgs e) { Button btn = sender as Button; if (btn != null) { btn.BackColor = Color.LightSeaGreen; // Gewünschte Farbe beim MouseDown } } private void Button_Click(object sender, EventArgs e) { // Beim geklickten Artikel wird Fehlmenge erhöht Button btn = (Button)sender; KundeArtikel artstand = (KundeArtikel)btn.Tag; artstand.Fehlmenge++; // Wenn speichern nicht möglich, wird darauf hingewiesen. if (artstand.Save() != 1) meldung.FehlmengeCount(); else { Artikel artikel = Artikel.GetArtikel(artstand.ArtikelNR); artikel.Nachwaesche++; artikel.Save(); } } private void textBoxScann_Enter(object sender, EventArgs e) { //GetKunde(); } } } //DONE: Kunde Anmerkung anzeigen. Spezielle Farbe verwenden. Label oder Textbox? //TODO: Eventuell bei erstem Erscheinen Info anzeigen.