using AForge.Video.DirectShow; using DatenDB; using Deckungsbeitrag.AA_Klassen; using System; using System.CodeDom; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls.WebParts; using System.Windows.Forms; using ZXing; namespace Deckungsbeitrag { public partial class FormFehlmengeCount : Form { private FilterInfoCollection videoDevices; Kunde kunde; Auftrag auftrag; List artikelListe; Meldungen meldung = new Meldungen(); private Benutzer benutzer; private List auftragsliste; private ArtikelKategorie kategorie; string userid; #region Form-Konstruktor public FormFehlmengeCount() { InitializeComponent(); this.groupBoxArtikel.Visible = false; //this.textBoxScann.Focus(); } public FormFehlmengeCount(Benutzer ben) : this() { this.benutzer = ben; } public FormFehlmengeCount(string uid) : this() { this.userid = uid; } #endregion private void FormFehlmengeCount_Load(object sender, EventArgs e) { videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); this.Text = " Version: " + Assembly.GetExecutingAssembly().GetName().Version.ToString(); if (userid != null) { if (userid.Contains("kleinteile")) { kategorie = ArtikelKategorie.Kleinteile; } if (userid.Contains("grossteile")) { kategorie = ArtikelKategorie.Grossteile; } if (userid.Contains("frottee") || userid.Contains("spannleintuch")) { kategorie = ArtikelKategorie.Frottee; } } //Kunde wird durch Scan oder Handeingabe Ausgewählt. //this.kunde = Funktionen.KundenAuswahl(); Open_Liste(); 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(); if (this.kunde.HatNachwaesche) this.artikelListe = KundeArtikel.GetFehlmengeList(kunde.KundeID.ToString(), null); this.textBoxScann.Text = this.kunde.KundeNummer; this.textBoxScann.Enabled = false; if ((userid != null && userid.Contains("reklamation")) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Frottee)) Reklamation_GroupBox(); else 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); } } if (auftrag != null) { if (this.benutzer == null | (userid != null && !userid.Contains("reklamation"))) { // AbteilungsStatus Begonnen wird hier gesetzt. if (userid.Contains("kleinteile")) { auftrag.Abteilungen |= AbteilungsStatus.KleinteileBegonnen; auftrag.Save(); } if (userid.Contains("grossteile")) { auftrag.Abteilungen |= AbteilungsStatus.GrossteileBegonnen; auftrag.Save(); } if (userid.Contains("frottee") || userid.Contains("spannleintuch")) { auftrag.Abteilungen |= AbteilungsStatus.FrotteeBegonnen; auftrag.Save(); } } } } /// /// Die GroupBox mit den Artikel-Buttons wird geladen wenn BenutzerRolle ist nicht Expedit oder Frottee. /// private void GroupBox_Load() { if (!this.kunde.HatNachwaesche) { this.tableLayoutPanelArtikel.Visible = false; Label label = new Label() { Name = "labelNoNW", Text = "DIESER KUNDE HAT EIGENWÄSCHE.\n\nKEINE NACHWÄSCHE ZU ERFASSEN.\n\nSCHMUTZIGE TEILE SEPARAT AN KUNDE SCHICKEN.", Font = new Font(labelSuchtext.Font.FontFamily, 40, FontStyle.Bold), ForeColor = Color.White, AutoSize = false, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleCenter }; this.groupBoxArtikel.Controls.Add(label); this.groupBoxArtikel.Visible = true; return; } foreach (Button btn in this.tableLayoutPanelArtikel.Controls) btn.Tag = btn.Text = null; this.groupBoxArtikel.Visible = true; this.tableLayoutPanelArtikel.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().Substring(1).StartsWith("311"): //HANDTUCH this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("312") & nr.ToString().EndsWith("0"): //DUSCHTUCH WEISS this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("314"): //BADEVORLEGER this.buttonArt3.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("313"): //BADETUCH this.buttonArt4.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("316"): //BADEMANTEL this.buttonArt5.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("324"): //SAUNATUCH this.buttonArt6.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("312") & nr.ToString().EndsWith("1"): //DUSCHTUCH BLAU this.buttonArt7.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1115") & (nr.ToString().EndsWith("00") || nr.ToString().EndsWith("10")): //SPANNLEINTUCH SINGLE this.buttonArt8.Tag = artikel; break; default: break; } } // Wird bei Großteile verarbeitet if (this.userid.Contains("grossteile")) { // Wird bei Großteilen verarbeitet switch (artikel.ArtikelNR) { case var nr when nr.ToString().Substring(1).StartsWith("112"): //DECKENBEZUG this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1110"): //LEINTUCH SINGLE this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1112"): //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().Substring(1).StartsWith("1210"): //POLSTERBEZUG 60x80 this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1211") & nr.ToString().EndsWith("0"): //POLSTERBEZUG 40x40 this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1211") & nr.ToString().EndsWith("1"): //POLSTERBEZUG 40x50 this.buttonArt3.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1211") & nr.ToString().EndsWith("2"): //POLSTERBEZUG 40x60 this.buttonArt4.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1211") & nr.ToString().EndsWith("3"): //POLSTERBEZUG 40x70 this.buttonArt5.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1221"): //MUNDSERVIETTE this.buttonArt6.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1222"): //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().Substring(1).StartsWith("1115") & (nr.ToString().EndsWith("00") || nr.ToString().EndsWith("30")): //SPANNLEINTUCH SINGLE this.buttonArt1.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1115") & nr.ToString().EndsWith("10"): //SPANNLEINTUCH SINGLE GELB this.buttonArt2.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1115") & nr.ToString().EndsWith("20"): //SPANNLEINTUCH SINGLE WEISS this.buttonArt3.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1115") & (nr.ToString().EndsWith("30") || nr.ToString().EndsWith("40")): //SPANNLEINTUCH QUEEN BLAU GELB this.buttonArt4.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1116") & nr.ToString().EndsWith("00"): //SPANNLEINTUCH DOUBLE this.buttonArt5.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1116") & (nr.ToString().EndsWith("10") || nr.ToString().EndsWith("40")): //SPANNLEINTUCH LILA ITALO this.buttonArt6.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1116") & (nr.ToString().EndsWith("20") || nr.ToString().EndsWith("21")): //SPANNLEINTUCH DOUBLE WEISS GRAU this.buttonArt7.Tag = artikel; break; case var nr when nr.ToString().Substring(1).StartsWith("1116") & 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; } } } /// /// GroupBox wird für Reklamationen geladen. Passiert nur wenn BenutzerRolle ist Expedit oder Frottee. /// private void Reklamation_GroupBox() { this.groupBoxArtikel.Controls.Clear(); FlowLayoutPanel flowPanel = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, WrapContents = true, AutoSize = true }; this.groupBoxArtikel.Controls.Add(flowPanel); foreach (KundeArtikel artikel in artikelListe) { int index = artikel.ArtikelName.IndexOf(" "); string name = string.Empty; if (index > 0) name = artikel.ArtikelName.Substring(0, index) + "\n" + artikel.ArtikelName.Substring(index); else name = artikel.ArtikelName; Button btn = new Button { Text = name, Tag = artikel, Name = $"btn_{artikel.ArtikelNR}", AutoSize = true, Margin = new Padding(0), BackColor = Color.Turquoise, ForeColor = Color.Black, }; btn.Click += Button_Click; btn.MouseUp += Button_MouseUp; btn.MouseDown += Button_MouseDown; flowPanel.Controls.Add(btn); } int buttons = flowPanel.Controls.OfType