From e2f0d9b410add197cc3cdefcc34501b93a10f2cb Mon Sep 17 00:00:00 2001 From: Kilian Wirl Date: Fri, 19 Dec 2025 11:24:16 +0100 Subject: [PATCH] =?UTF-8?q?FormMain=20-=20Buttons=20hinzugef=C3=BCgt=20f?= =?UTF-8?q?=C3=BCr=20Inventur=20und=20Standveraenderung.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AA-Forms/FormExpedit.cs | 3 +- AA-Forms/FormListe.cs | 8 +- AA-Forms/FormMain.Designer.cs | 116 ++++++++++++++++++++--------- AA-Forms/FormMain.cs | 73 +++++++++++++----- AA-Forms/FormNeuerAuftrag.cs | 134 +++++++++++++++++++--------------- AA-Klassen/Kunde.cs | 3 +- Program.cs | 2 +- Verwaltung_ReadMe.txt | 25 ++++--- 8 files changed, 232 insertions(+), 132 deletions(-) diff --git a/AA-Forms/FormExpedit.cs b/AA-Forms/FormExpedit.cs index 95afef9..7ceff18 100644 --- a/AA-Forms/FormExpedit.cs +++ b/AA-Forms/FormExpedit.cs @@ -414,7 +414,7 @@ namespace Deckungsbeitrag } private void buttonNeuerAuftrag_Click(object sender, EventArgs e) { - FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(benutzer, this.letzterLiefertag); + FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(benutzer, this.letzterLiefertag, AuftragTyp.Standart); if (neuerAuftrag.ShowDialog() == DialogResult.OK) { this.letzterLiefertag = neuerAuftrag.letzterLiefertag; @@ -953,6 +953,7 @@ namespace Deckungsbeitrag } //CHANGES: Wenn Auftrag als Vorbereitet markiert wird, wird nachgefragt ob die Aufgabe erledigt wurde. //CHANGES: Wenn saubere Container sind 0 kann Auftrag nicht als Vorbereitet markiert werden. (Damit die Statistik stimmt) +//CHANGES: Es werden jetzt Meldungen gezeigt damit Aufgaben erledigt und Containeranzahl zuverlässig stimmt. //DONE: Spalten besser erkennbar gestalten damit Mirka die Spalte trifft wenn RechtsClick. //DONE: Aufgabe wird bei "Vorbereiten ohne Etikett" verarbeitet. //DONE: Auftrag als Vorbereitet markieren geht nur wenn saubere Container nicht 0 sind. diff --git a/AA-Forms/FormListe.cs b/AA-Forms/FormListe.cs index 901d8ab..b81b9aa 100644 --- a/AA-Forms/FormListe.cs +++ b/AA-Forms/FormListe.cs @@ -72,7 +72,7 @@ namespace Deckungsbeitrag } if(this.type_of_list == (int)Listentyp.Kundenliste) { - this.Kundenliste = objliste.OfType().GroupBy(k => k.KundeID).Select(g => g.First()).ToList(); + if (objliste != null) this.Kundenliste = objliste.OfType().GroupBy(k => k.KundeID).Select(g => g.First()).ToList(); } } #endregion @@ -118,7 +118,7 @@ namespace Deckungsbeitrag } //KUNDEN LADEN this.Text = "KUNDE WÄHLEN"; - if (this.Kundenliste == null) this.Kundenliste = Kunde.GetTmpList(textBoxKunde.Text); + if (this.Kundenliste == null) this.Kundenliste = Kunde.GetTmpList(string.Empty); foreach (Kunde kunde in this.Kundenliste) { ListViewItem item = new ListViewItem(); @@ -225,7 +225,7 @@ namespace Deckungsbeitrag private void TextBoxKunde_Enter(object sender, EventArgs e) { this.textBoxKunde.ForeColor = Color.Black; - + this.textBoxKunde.Clear(); //GetKeyboard(); } private void textBoxKunde_TextChanged(object sender, EventArgs e) @@ -241,7 +241,7 @@ namespace Deckungsbeitrag // Wenn kein Fragezeichen am Anfang wird Kundenliste erstellt. if (!textBoxKunde.Text.StartsWith("?")) { - if(this.Kundenliste == null) this.Kundenliste = Kunde.GetTmpList(this.textBoxKunde.Text); + this.Kundenliste = Kunde.GetTmpList(this.textBoxKunde.Text); listViewKunde_Load(); } diff --git a/AA-Forms/FormMain.Designer.cs b/AA-Forms/FormMain.Designer.cs index 1e56766..05558d8 100644 --- a/AA-Forms/FormMain.Designer.cs +++ b/AA-Forms/FormMain.Designer.cs @@ -46,6 +46,7 @@ namespace Deckungsbeitrag this.tSBEinstellung = new System.Windows.Forms.ToolStripButton(); this.toolStripBeenden = new System.Windows.Forms.ToolStripButton(); this.panelMain = new System.Windows.Forms.Panel(); + this.buttonNeueAufgabe = new System.Windows.Forms.Button(); this.buttonNeuerUser = new System.Windows.Forms.Button(); this.groupBoxStatistik = new System.Windows.Forms.GroupBox(); this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker(); @@ -84,7 +85,8 @@ namespace Deckungsbeitrag this.textBoxScannTest = new System.Windows.Forms.TextBox(); this.buttonScannTest = new System.Windows.Forms.Button(); this.labelScannTest = new System.Windows.Forms.Label(); - this.buttonNeueAufgabe = new System.Windows.Forms.Button(); + this.buttonNeueInventur = new System.Windows.Forms.Button(); + this.buttonNeuerStand = new System.Windows.Forms.Button(); this.toolStripMenu.SuspendLayout(); this.panelMain.SuspendLayout(); this.groupBoxStatistik.SuspendLayout(); @@ -400,16 +402,18 @@ namespace Deckungsbeitrag // this.panelMain.AllowDrop = true; this.panelMain.BackColor = System.Drawing.Color.White; + this.panelMain.Controls.Add(this.buttonNeuerStand); + this.panelMain.Controls.Add(this.buttonNeueInventur); this.panelMain.Controls.Add(this.buttonNeueAufgabe); + this.panelMain.Controls.Add(this.buttonNeuerAuftrag); this.panelMain.Controls.Add(this.buttonNeuerUser); this.panelMain.Controls.Add(this.groupBoxStatistik); this.panelMain.Controls.Add(this.groupBoxUpdate); - this.panelMain.Controls.Add(this.buttonNeuerAuftrag); this.panelMain.Controls.Add(this.groupBoxAuftrag); this.panelMain.Controls.Add(this.groupBoxScannTest); this.panelMain.Dock = System.Windows.Forms.DockStyle.Right; this.panelMain.Location = new System.Drawing.Point(218, 0); - this.panelMain.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.panelMain.Margin = new System.Windows.Forms.Padding(2); this.panelMain.Name = "panelMain"; this.panelMain.Size = new System.Drawing.Size(938, 689); this.panelMain.TabIndex = 5; @@ -417,6 +421,27 @@ namespace Deckungsbeitrag this.panelMain.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelMain_DragEnter); this.panelMain.Paint += new System.Windows.Forms.PaintEventHandler(this.panelMain_Paint); // + // buttonNeueAufgabe + // + this.buttonNeueAufgabe.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); + this.buttonNeueAufgabe.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.buttonNeueAufgabe.FlatAppearance.BorderSize = 0; + this.buttonNeueAufgabe.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonNeueAufgabe.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.buttonNeueAufgabe.ForeColor = System.Drawing.Color.Black; + this.buttonNeueAufgabe.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + this.buttonNeueAufgabe.Location = new System.Drawing.Point(8, 107); + this.buttonNeueAufgabe.Margin = new System.Windows.Forms.Padding(5); + this.buttonNeueAufgabe.Name = "buttonNeueAufgabe"; + this.buttonNeueAufgabe.Size = new System.Drawing.Size(250, 41); + this.buttonNeueAufgabe.TabIndex = 63; + this.buttonNeueAufgabe.Text = "Neue Aufgabe"; + this.buttonNeueAufgabe.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.buttonNeueAufgabe.UseVisualStyleBackColor = false; + this.buttonNeueAufgabe.Click += new System.EventHandler(this.buttonNeueAufgabe_Click); + this.buttonNeueAufgabe.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Button_MouseDown); + this.buttonNeueAufgabe.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Button_MouseMove); + // // buttonNeuerUser // this.buttonNeuerUser.BackColor = System.Drawing.Color.Yellow; @@ -426,10 +451,10 @@ namespace Deckungsbeitrag this.buttonNeuerUser.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonNeuerUser.ForeColor = System.Drawing.Color.Black; this.buttonNeuerUser.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; - this.buttonNeuerUser.Location = new System.Drawing.Point(8, 65); - this.buttonNeuerUser.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonNeuerUser.Location = new System.Drawing.Point(8, 56); + this.buttonNeuerUser.Margin = new System.Windows.Forms.Padding(5); this.buttonNeuerUser.Name = "buttonNeuerUser"; - this.buttonNeuerUser.Size = new System.Drawing.Size(200, 41); + this.buttonNeuerUser.Size = new System.Drawing.Size(250, 41); this.buttonNeuerUser.TabIndex = 62; this.buttonNeuerUser.Text = "Neuer User"; this.buttonNeuerUser.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; @@ -696,7 +721,7 @@ namespace Deckungsbeitrag this.buttonSortimentUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonSortimentUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; this.buttonSortimentUpdate.Location = new System.Drawing.Point(2, 32); - this.buttonSortimentUpdate.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonSortimentUpdate.Margin = new System.Windows.Forms.Padding(2); this.buttonSortimentUpdate.Name = "buttonSortimentUpdate"; this.buttonSortimentUpdate.Size = new System.Drawing.Size(137, 24); this.buttonSortimentUpdate.TabIndex = 61; @@ -711,7 +736,7 @@ namespace Deckungsbeitrag this.buttonArtikelUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonArtikelUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; this.buttonArtikelUpdate.Location = new System.Drawing.Point(2, 2); - this.buttonArtikelUpdate.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonArtikelUpdate.Margin = new System.Windows.Forms.Padding(2); this.buttonArtikelUpdate.Name = "buttonArtikelUpdate"; this.buttonArtikelUpdate.Size = new System.Drawing.Size(137, 24); this.buttonArtikelUpdate.TabIndex = 59; @@ -734,7 +759,7 @@ namespace Deckungsbeitrag this.buttonAllUpdate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonAllUpdate.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; this.buttonAllUpdate.Location = new System.Drawing.Point(2, 62); - this.buttonAllUpdate.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonAllUpdate.Margin = new System.Windows.Forms.Padding(2); this.buttonAllUpdate.Name = "buttonAllUpdate"; this.buttonAllUpdate.Size = new System.Drawing.Size(137, 25); this.buttonAllUpdate.TabIndex = 60; @@ -752,10 +777,10 @@ namespace Deckungsbeitrag this.buttonNeuerAuftrag.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonNeuerAuftrag.ForeColor = System.Drawing.Color.White; this.buttonNeuerAuftrag.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; - this.buttonNeuerAuftrag.Location = new System.Drawing.Point(8, 9); - this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonNeuerAuftrag.Location = new System.Drawing.Point(8, 5); + this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(5); this.buttonNeuerAuftrag.Name = "buttonNeuerAuftrag"; - this.buttonNeuerAuftrag.Size = new System.Drawing.Size(200, 41); + this.buttonNeuerAuftrag.Size = new System.Drawing.Size(250, 41); this.buttonNeuerAuftrag.TabIndex = 56; this.buttonNeuerAuftrag.Text = "Neuer Auftrag"; this.buttonNeuerAuftrag.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; @@ -891,7 +916,7 @@ namespace Deckungsbeitrag this.buttonAufAbruf.ForeColor = System.Drawing.Color.White; this.buttonAufAbruf.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; this.buttonAufAbruf.Location = new System.Drawing.Point(10, 215); - this.buttonAufAbruf.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonAufAbruf.Margin = new System.Windows.Forms.Padding(2); this.buttonAufAbruf.Name = "buttonAufAbruf"; this.buttonAufAbruf.Size = new System.Drawing.Size(150, 41); this.buttonAufAbruf.TabIndex = 56; @@ -911,7 +936,7 @@ namespace Deckungsbeitrag this.buttonAusgeliefert.ForeColor = System.Drawing.Color.White; this.buttonAusgeliefert.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; this.buttonAusgeliefert.Location = new System.Drawing.Point(10, 170); - this.buttonAusgeliefert.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.buttonAusgeliefert.Margin = new System.Windows.Forms.Padding(2); this.buttonAusgeliefert.Name = "buttonAusgeliefert"; this.buttonAusgeliefert.Size = new System.Drawing.Size(150, 41); this.buttonAusgeliefert.TabIndex = 55; @@ -978,26 +1003,47 @@ namespace Deckungsbeitrag this.labelScannTest.Text = "label1"; this.labelScannTest.Visible = false; // - // buttonNeueAufgabe + // buttonNeueInventur // - this.buttonNeueAufgabe.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); - this.buttonNeueAufgabe.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); - this.buttonNeueAufgabe.FlatAppearance.BorderSize = 0; - this.buttonNeueAufgabe.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.buttonNeueAufgabe.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.buttonNeueAufgabe.ForeColor = System.Drawing.Color.Black; - this.buttonNeueAufgabe.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; - this.buttonNeueAufgabe.Location = new System.Drawing.Point(8, 124); - this.buttonNeueAufgabe.Margin = new System.Windows.Forms.Padding(2); - this.buttonNeueAufgabe.Name = "buttonNeueAufgabe"; - this.buttonNeueAufgabe.Size = new System.Drawing.Size(200, 41); - this.buttonNeueAufgabe.TabIndex = 63; - this.buttonNeueAufgabe.Text = "Neue Aufgabe"; - this.buttonNeueAufgabe.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - this.buttonNeueAufgabe.UseVisualStyleBackColor = false; - this.buttonNeueAufgabe.Click += new System.EventHandler(this.buttonNeueAufgabe_Click); - this.buttonNeueAufgabe.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Button_MouseDown); - this.buttonNeueAufgabe.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Button_MouseMove); + this.buttonNeueInventur.BackColor = System.Drawing.Color.Green; + this.buttonNeueInventur.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.buttonNeueInventur.FlatAppearance.BorderSize = 0; + this.buttonNeueInventur.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonNeueInventur.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.buttonNeueInventur.ForeColor = System.Drawing.Color.White; + this.buttonNeueInventur.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + this.buttonNeueInventur.Location = new System.Drawing.Point(268, 5); + this.buttonNeueInventur.Margin = new System.Windows.Forms.Padding(5); + this.buttonNeueInventur.Name = "buttonNeueInventur"; + this.buttonNeueInventur.Size = new System.Drawing.Size(250, 41); + this.buttonNeueInventur.TabIndex = 64; + this.buttonNeueInventur.Text = "Neue Inventur"; + this.buttonNeueInventur.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.buttonNeueInventur.UseVisualStyleBackColor = false; + this.buttonNeueInventur.Click += new System.EventHandler(this.buttonNeueInventur_Click); + this.buttonNeueInventur.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Button_MouseDown); + this.buttonNeueInventur.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Button_MouseMove); + // + // buttonNeuerStand + // + this.buttonNeuerStand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0))))); + this.buttonNeuerStand.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0))))); + this.buttonNeuerStand.FlatAppearance.BorderSize = 0; + this.buttonNeuerStand.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.buttonNeuerStand.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.buttonNeuerStand.ForeColor = System.Drawing.Color.White; + this.buttonNeuerStand.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + this.buttonNeuerStand.Location = new System.Drawing.Point(528, 5); + this.buttonNeuerStand.Margin = new System.Windows.Forms.Padding(5); + this.buttonNeuerStand.Name = "buttonNeuerStand"; + this.buttonNeuerStand.Size = new System.Drawing.Size(250, 41); + this.buttonNeuerStand.TabIndex = 65; + this.buttonNeuerStand.Text = "Neue Standveränderung"; + this.buttonNeuerStand.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.buttonNeuerStand.UseVisualStyleBackColor = false; + this.buttonNeuerStand.Click += new System.EventHandler(this.buttonNeuerStand_Click); + this.buttonNeuerStand.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Button_MouseDown); + this.buttonNeuerStand.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Button_MouseMove); // // FormMain // @@ -1009,7 +1055,7 @@ namespace Deckungsbeitrag this.Controls.Add(this.panelMain); this.HelpButton = true; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.Margin = new System.Windows.Forms.Padding(2); this.Name = "FormMain"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Wolfgang Wirl GmbH - GRUNDPROGRAMM"; @@ -1094,6 +1140,8 @@ namespace Deckungsbeitrag private System.Windows.Forms.DateTimePicker dateTimePicker1; private System.Windows.Forms.Button buttonNeuerUser; private System.Windows.Forms.Button buttonNeueAufgabe; + private System.Windows.Forms.Button buttonNeueInventur; + private System.Windows.Forms.Button buttonNeuerStand; } } diff --git a/AA-Forms/FormMain.cs b/AA-Forms/FormMain.cs index 696de75..53578b0 100644 --- a/AA-Forms/FormMain.cs +++ b/AA-Forms/FormMain.cs @@ -47,7 +47,8 @@ namespace Deckungsbeitrag public FormMain(Benutzer benutzer) : this() { this.benutzer = benutzer; - //AKTIVE ELEMENTE JE BENUTZER ROLLE + + // AKTIVE ELEMENTE JE BENUTZER ROLLE switch (benutzer.Rolle) { case BenutzerRolle.Verwaltung: @@ -55,12 +56,21 @@ namespace Deckungsbeitrag this.groupBoxUpdate.Visible = this.toolStripDB.Visible = this.toolStripButtonImport.Visible = this.tSBExpedit.Enabled = false; break; case BenutzerRolle.Fahrer: + + // ToolStripButtons werden deaktiviert. foreach(ToolStripButton tsb in this.toolStripMenu.Items) { + // Ausgewählter ToolStripButton bleibt aktiv. if(!tsb.Name.Contains("Auftrag")) tsb.Enabled = false; } - this.groupBoxStatistik.Enabled = this.buttonNeueAufgabe.Enabled = this.buttonNeuerUser.Enabled = false; - this.groupBoxStatistik.Visible = this.buttonNeueAufgabe.Visible = this.buttonNeuerUser.Visible = this.groupBoxUpdate.Visible = false; + + // Controls im PanelMain werden deaktiviert. + foreach(Control ctr in this.panelMain.Controls) + { + // Ausgewählte Buttons bleiben aktiv. + if (ctr.Text == "Neuer Auftrag") ctr.Enabled = ctr.Visible = true; + else ctr.Enabled = ctr.Visible = false; + } break; case BenutzerRolle.Admin: this.groupBoxUpdate.Visible = false; @@ -94,7 +104,7 @@ namespace Deckungsbeitrag if (ctr.GetType() == typeof(GroupBox)) { GroupBox gb = (GroupBox)ctr; - if(!gb.Name.Contains("Update") & !gb.Name.Contains("Statistik")) + if(!gb.Name.Contains("Update") & !gb.Name.Contains("Statistik") & !gb.Name.Contains("Neuer")) { gb.Visible = false; gb.Location = new Point(0, 0); @@ -263,7 +273,7 @@ namespace Deckungsbeitrag /// private void buttonNeuerAuftrag_Click(object sender, EventArgs e) { - FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.benutzer); neuerAuftrag.ShowDialog(); + FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.benutzer, AuftragTyp.Standart); neuerAuftrag.ShowDialog(); } private void buttonScannTest_Click(object sender, EventArgs e) { @@ -271,13 +281,43 @@ namespace Deckungsbeitrag int pos = s.IndexOf('#'); this.textBoxScannTest.Text = this.labelScannTest.Text = s.Substring(pos + 1); } + private void buttonNeueAufgabe_Click(object sender, EventArgs e) + { + FormNeueAufgabe neueAufgabe = new FormNeueAufgabe(); + neueAufgabe.ShowDialog(); + } + private void buttonNeuerStand_Click(object sender, EventArgs e) + { + FormNeuerAuftrag neuerAuftrag; + DialogResult result = meldung.GetFrage(this, "Möchtest du eine Standverminderung oder Standerhöhung erstellen? \n\n [JA = Standverminerung | NEIN = Standerhöhung]", true); - /// - /// Scan QR-Code Test. - /// - /// - /// - private void textBoxScannTest_TextChanged(object sender, EventArgs e) + switch (result) + { + case DialogResult.Cancel: + return; + case DialogResult.Yes: + neuerAuftrag = new FormNeuerAuftrag(this.benutzer, AuftragTyp.Standverminderung); neuerAuftrag.ShowDialog(); + break; + case DialogResult.No: + neuerAuftrag = new FormNeuerAuftrag(this.benutzer, AuftragTyp.Standerhöhung); neuerAuftrag.ShowDialog(); + break; + default: + break; + } + } + + private void buttonNeueInventur_Click(object sender, EventArgs e) + { + FormNeuerAuftrag neuerAuftrag = new FormNeuerAuftrag(this.benutzer, AuftragTyp.Inventur); neuerAuftrag.ShowDialog(); + } + + + /// + /// Scan QR-Code Test. + /// + /// + /// + private void textBoxScannTest_TextChanged(object sender, EventArgs e) { TextBox textBox1 = (TextBox)sender; using (Graphics g = textBox1.CreateGraphics()) @@ -982,14 +1022,9 @@ namespace Deckungsbeitrag } } - private void buttonNeueAufgabe_Click(object sender, EventArgs e) - { - FormNeueAufgabe neueAufgabe = new FormNeueAufgabe(); - neueAufgabe.ShowDialog(); - } } } -//DONE: Wenn Fahrer registriert kann nur NeuerAuftrag aufgerufen werden. Dort kann er Aufträge erstellen mit dem Status "Abgeholt" (Wichtig für Auftragauswahl bei Waschstraße) -//DONE: Wenn Fahrer Auftragverwaltung öffnet werden Aufträge mit AuftragStatus "Fertig" angezeigt. Fahrer können dann als "Ausgeliefert" markieren. //CHANGES: Fahrer können abgeholte Aufträge erstellen und ausgelieferte Aufträge markieren. -//CHANGES: Auftragverwaltung Spalten wurden aktualisiert. Mit Icons, Buttons und Sortierung auf Liefertag. \ No newline at end of file +//CHANGES: Auftragverwaltung Spalten wurden aktualisiert. Mit Icons, Buttons und Sortierung auf Liefertag. +//DONE: 2 neue Buttons für "Neue Inventur" und "Neue Standveränderung" +//DONE: Bei Fahrer neue Deaktivierung von Controls. \ No newline at end of file diff --git a/AA-Forms/FormNeuerAuftrag.cs b/AA-Forms/FormNeuerAuftrag.cs index 18729b7..34d31ee 100644 --- a/AA-Forms/FormNeuerAuftrag.cs +++ b/AA-Forms/FormNeuerAuftrag.cs @@ -20,7 +20,8 @@ namespace Deckungsbeitrag { public partial class FormNeuerAuftrag : Form { - public Meldungen meldung = new Meldungen(); + #region Properties + public Meldungen meldung = new Meldungen(); public Kunde kunde; public Auftrag Auftrag; public Auftrag extraAuftrag; @@ -34,7 +35,10 @@ namespace Deckungsbeitrag private Kunde knd; public DataGridViewCell aktivCell; private string userid; + private AuftragTyp auftragtyp = AuftragTyp.Standart; + #endregion + #region Form-Konstruktor public FormNeuerAuftrag() { InitializeComponent(); @@ -44,7 +48,11 @@ namespace Deckungsbeitrag this.benutzer = benutzer; } - public FormNeuerAuftrag(Benutzer benutzer, DateTime? letzterLiefertag) : this(benutzer) + public FormNeuerAuftrag(Benutzer benutzer, AuftragTyp auftragTyp) : this(benutzer) + { + this.auftragtyp = auftragTyp; + } + public FormNeuerAuftrag(Benutzer benutzer, DateTime? letzterLiefertag, AuftragTyp auftragTyp) : this(benutzer, auftragTyp) { this.letzterLiefertag = letzterLiefertag; } @@ -54,7 +62,7 @@ namespace Deckungsbeitrag if (userid.Contains("wstrasse01")) this.benutzer = Benutzer.GetBenutzer("ws1", null); if (userid.Contains("wstrasse02")) this.benutzer = Benutzer.GetBenutzer("ws2", null); } - + #endregion private void FormNeuerAuftrag_Load(object sender, EventArgs e) { // SortimentListe holen @@ -63,7 +71,7 @@ namespace Deckungsbeitrag // Kunde holen this.kunde = Funktionen.KundenAuswahl(); - // ComboBox Laden unbeding vor Daten Laden. + // ComboBox AuftragTyp wird geladen und richtiges Item selected. comboBox_Load(); // Falls KundenAuswahl null liefert wird Form geschlossen oder wenn Waschstrasse neu geladen. @@ -85,34 +93,6 @@ namespace Deckungsbeitrag // RadioButtons und ComboBoxen laden. if(this.kunde != null) Funktionen.Get_RadioButtons(this); - //Unterscheidung zwischen BenutzerRollen. Verschiedene Controls werden gesperrt, angezeigt oder verändert - if (this.benutzer != null) - { - if (this.benutzer.Rolle == BenutzerRolle.Verwaltung || this.benutzer.Rolle == BenutzerRolle.Admin || this.benutzer.Rolle == BenutzerRolle.Master) - { - if((AuftragTyp)comboBoxTyp.SelectedItem != AuftragTyp.Geschäft) - { - this.comboBoxTyp.Enabled = true; - this.comboBoxTyp.SelectedIndex = 1; - } - } - else - { - this.comboBoxTyp.Enabled = false; - this.dGArtikel.Enabled = this.dGArtikel.Visible = false; - this.Width = textBoxKundeName.Right + 10; - this.Height = 405; - this.comboBoxTyp.SelectedIndex = 1; - } - } - else - { - this.comboBoxTyp.Enabled = false; - this.dGArtikel.Enabled = this.dGArtikel.Visible = false; - this.Width = textBoxKundeName.Right + 10; - this.Height = 405; - this.comboBoxTyp.SelectedIndex = 1; - } } @@ -126,19 +106,21 @@ namespace Deckungsbeitrag else this.textBoxKundeName.Text = kunde.Suchtext; if (letzterLiefertag.HasValue) this.dTPLiefertag.Value = letzterLiefertag.Value; else this.dTPLiefertag.Value = DateTime.Today.AddDays(1); - if (kunde.Service == "Geschäft") - { - this.comboBoxTyp.SelectedItem = AuftragTyp.Geschäft; - this.comboBoxTyp.Enabled = false; - } - - + dTPLiefertag_Leave(this.dTPLiefertag, EventArgs.Empty); textBoxCont_TextChanged(this.textBoxCont, EventArgs.Empty); } private void comboBox_Load() { + // Items werden von AuftragTyp geladen. this.comboBoxTyp.DataSource = Enum.GetValues(typeof(AuftragTyp)); + + //TODO: Wenn kunde null dann return. + // Wenn der Kunde ein Geschäftskunde ist, wird AuftragTyp.Geschäft ausgewählt. Andernfalls wird der AuftragTyp aus dem Konstruktor gewählt. + if (kunde.Service == "Geschäft") this.comboBoxTyp.SelectedItem = AuftragTyp.Geschäft; + else this.comboBoxTyp.SelectedItem = auftragtyp; + + this.comboBoxTyp.Enabled = false; } private void Load_Gridview(string kundeid, AuftragTyp auftragTyp) { @@ -486,29 +468,61 @@ namespace Deckungsbeitrag private void comboBoxTyp_SelectedValueChanged(object sender, EventArgs e) { - if((AuftragTyp)comboBoxTyp.SelectedValue == AuftragTyp.Inventur) + switch ((AuftragTyp)comboBoxTyp.SelectedValue) { - if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); - this.dGArtikel.Enabled = this.dGArtikel.Visible = true; - this.Width = this.dGArtikel.Right + 25; - this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; - } - if ((AuftragTyp)comboBoxTyp.SelectedValue >= AuftragTyp.Standerhöhung) - { - if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); - this.dGArtikel.Enabled = this.dGArtikel.Visible = true; - this.Width = this.dGArtikel.Right + 25; - this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; - } - if ((AuftragTyp)comboBoxTyp.SelectedValue == AuftragTyp.Standart) - { - this.dGArtikel.Enabled = this.dGArtikel.Visible = false; - this.Width = textBoxKundeName.Right + 30; - this.Height = 405; + case AuftragTyp.Geschäft: // Wird derzeit wenig verwendet da die Auswahl in DatenLaden nach KundenService erfolgt. + this.dGArtikel.Enabled = this.dGArtikel.Visible = false; + this.Width = textBoxKundeName.Right + 30; + this.Height = 405; + break; + case AuftragTyp.Standart: + this.dGArtikel.Enabled = this.dGArtikel.Visible = false; + this.Width = textBoxKundeName.Right + 30; + this.Height = 405; + break; + case AuftragTyp.Inventur: + if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); + this.dGArtikel.Enabled = this.dGArtikel.Visible = true; + this.Width = this.dGArtikel.Right + 25; + this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; + break; + case AuftragTyp.Standerhöhung: + if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); + this.dGArtikel.Enabled = this.dGArtikel.Visible = true; + this.Width = this.dGArtikel.Right + 25; + this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; + break; + case AuftragTyp.Standverminderung: + if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); + this.dGArtikel.Enabled = this.dGArtikel.Visible = true; + this.Width = this.dGArtikel.Right + 25; + this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; + break; + default: + break; } + + //if ((AuftragTyp)comboBoxTyp.SelectedValue == AuftragTyp.Inventur) + //{ + // if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); + // this.dGArtikel.Enabled = this.dGArtikel.Visible = true; + // this.Width = this.dGArtikel.Right + 25; + // this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; + //} + //if ((AuftragTyp)comboBoxTyp.SelectedValue >= AuftragTyp.Standerhöhung) + //{ + // if (this.kunde != null) Load_Gridview(this.kunde.KundeID.ToString(), (AuftragTyp)comboBoxTyp.SelectedValue); + // this.dGArtikel.Enabled = this.dGArtikel.Visible = true; + // this.Width = this.dGArtikel.Right + 25; + // this.Height = this.dGArtikel.Bottom + this.buttonSpeichern.Height + 60; + //} + //if ((AuftragTyp)comboBoxTyp.SelectedValue == AuftragTyp.Standart) + //{ + // this.dGArtikel.Enabled = this.dGArtikel.Visible = false; + // this.Width = textBoxKundeName.Right + 30; + // this.Height = 405; + //} } } } -//DONE: AuftragStatus mit Switch nach BenutzerRolle ermöglichen. -//DONE: FahrerAufträge erhalten Status "Abgeholt". -//DONE: Wenn der Auftrag nicht gefunden wird, wird neuer Auftrag erstellt und mit Status "Aufgelegt" versehen. \ No newline at end of file +//CHANGES: NeuerAuftrag wird jetzt mit Propertie AuftragTyp aufgerufen. Dadurch ist die Auswahl des AuftragTyp konstanter. \ No newline at end of file diff --git a/AA-Klassen/Kunde.cs b/AA-Klassen/Kunde.cs index 65f6807..752e991 100644 --- a/AA-Klassen/Kunde.cs +++ b/AA-Klassen/Kunde.cs @@ -24,7 +24,8 @@ namespace DatenDB } // LEER public static List GetTmpList(string text) { - bool endsWithSpecial = !char.IsLetterOrDigit(text[text.Length-1]); + bool endsWithSpecial = false; + if(!string.IsNullOrWhiteSpace(text)) endsWithSpecial = !char.IsLetterOrDigit(text[text.Length-1]); DatenbankConnection.GetConnection().Open(); List resultList = new List(); using (NpgsqlCommand command = new NpgsqlCommand()) diff --git a/Program.cs b/Program.cs index 46d0127..09402db 100644 --- a/Program.cs +++ b/Program.cs @@ -99,7 +99,7 @@ namespace Deckungsbeitrag Application.Run(new FormMain(loginForm.Person)); break; case BenutzerRolle.Waschstrasse: //Bediener einer Waschstraße - Application.Run(new FormNeuerAuftrag(loginForm.Person)); + Application.Run(new FormNeuerAuftrag(loginForm.Person, AuftragTyp.Standart)); break; case BenutzerRolle.Master: //Entwickler oder Claudia und Kevin Application.Run(new FormMain(loginForm.Person)); diff --git a/Verwaltung_ReadMe.txt b/Verwaltung_ReadMe.txt index 5c96b4b..191bfd2 100644 --- a/Verwaltung_ReadMe.txt +++ b/Verwaltung_ReadMe.txt @@ -6,33 +6,34 @@ Build-Info: - Build-Typ: Release Build - Erledigte TODOs: 19 - Offene TODOs: 21 -- Install-Reminders: 5 -- Changes: 7 +- Install-Reminders: 3 +- Changes: 10 -=== ⚙️ INSTALL-REMINDER (5) === +=== ⚙️ INSTALL-REMINDER (3) === - ⚙️ AufgabeErledigt als Spalte in DB hinzufügen. [Auftrag.cs] - ⚙️ AufgabeID als Spalte in DB hinzufügen. [Auftrag.cs] - ⚙️ Spalte Aktiv in DB einfügen. [Aufgabe.cs] -- ⚙️ Spalte Anmerkung in DB hinzufügen. [Kunde.cs] -- ⚙️ Spalte Aufgabe Count in DB hinzufügen. [Kunde.cs] -=== ✨ CHANGES (7) === +=== ✨ CHANGES (10) === - ✨ Aufleger muss keine Aufträge mehr erstellen da Fahrer das machen können. [FormWSVerfolgung.cs] - ✨ Auftragsliste zeigt hier nur AuftragStatus "Abgeholt" Aufträge. [FormWSVerfolgung.cs] - ✨ Auftragverwaltung Spalten wurden aktualisiert. Mit Icons, Buttons und Sortierung auf Liefertag. [FormMain.cs] - ✨ Die Liste zeigt jetzt auch die Aufträge und die Kunden der möglich Aufträge an. (Erleichtert die Kundenauswahl bei Fehlmengecount) [FormListe.cs] +- ✨ Es werden jetzt Meldungen gezeigt damit Aufgaben erledigt und Containeranzahl zuverlässig stimmt. [FormExpedit.cs] - ✨ Fahrer können abgeholte Aufträge erstellen und ausgelieferte Aufträge markieren. [FormMain.cs] -- ✨ Statistik für Expedit. (Same as in Main) [FormExpedit.cs] +- ✨ NeuerAuftrag wird jetzt mit Propertie AuftragTyp aufgerufen. Dadurch ist die Auswahl des AuftragTyp konstanter. [FormNeuerAuftrag.cs] +- ✨ Wenn Auftrag als Vorbereitet markiert wird, wird nachgefragt ob die Aufgabe erledigt wurde. [FormExpedit.cs] - ✨ Wenn Auftrag nicht gefunden kann er trotzdem einen neuen Erstellen. [FormWSVerfolgung.cs] +- ✨ Wenn saubere Container sind 0 kann Auftrag nicht als Vorbereitet markiert werden. (Damit die Statistik stimmt) [FormExpedit.cs] === ✅ ERLEDIGTE TODOs (19) === - ✅ : Auch wenn Extra Auftrag benötigt wird funktioniert es über die Auftragsliste. [FormWSVerfolgung.cs] +- ✅ : Aufgabe wird bei "Vorbereiten ohne Etikett" verarbeitet. [FormExpedit.cs] +- ✅ : Auftrag als Vorbereitet markieren geht nur wenn saubere Container nicht 0 sind. [FormExpedit.cs] - ✅ : Auftrag über FormListe holen und daraus den Kunden für Fehlmenge holen. [FormFehlmengeCount.cs] -- ✅ : AuftragStatus mit Switch nach BenutzerRolle ermöglichen. [FormNeuerAuftrag.cs] - ✅ : Bei Transport wir ein Fach mit Aktuellem Auftrag erstellt. Das Alte wird bei Transport gespeichert. [FormAusschlager.cs] -- ✅ : FahrerAufträge erhalten Status "Abgeholt". [FormNeuerAuftrag.cs] - ✅ : Kunde anzeigen Reihenfolge der Spalten zuerst Suchtext danach Name. [FormListe.cs] - ✅ : Listentyp.Auftragliste implementiert um über FormWSVerfolgung die Auftragliste abrufen zu können. [FormListe.cs] - ✅ : Logik überlegen wie ein bearbeiteter Auftrag nicht doppelt gewählt werden kann. (Abteilungen zu Auftrag hinzufügen und bei Ausschlager Druck definieren?) [FormFehlmengeCount.cs] @@ -40,8 +41,8 @@ Build-Info: - ✅ : Neuer Konstruktor für Auftragliste "Finishing" oder "Aufgelegt". (aufgelegte Aufträge die noch nicht [Auftrag.cs] - ✅ : Neuer Konstruktor für Auftragliste "Rampe". (abgeholte Aufträge die noch nicht aufgelegt sind) [Auftrag.cs] - ✅ : Nur die Kunden der Aufträge als Liste anzeigen wäre möglich. Macht die Auswahl für das Personal einfacher weil 90% bereits weg fallen. [FormFehlmengeCount.cs] +- ✅ : Spalten besser erkennbar gestalten damit Mirka die Spalte trifft wenn RechtsClick. [FormExpedit.cs] - ✅ : Statt Neuen Auftrag wird Auftragsliste mit Status "abgeholt" angezeigt. Dadurch muss Aufleger weder scannen noch Namen eintippen und suchen. [FormWSVerfolgung.cs] -- ✅ : Wenn der Auftrag nicht gefunden wird, wird neuer Auftrag erstellt und mit Status "Aufgelegt" versehen. [FormNeuerAuftrag.cs] - ✅ : Wenn Fahrer Auftragverwaltung öffnet werden Aufträge mit AuftragStatus "Fertig" angezeigt. Fahrer können dann als "Ausgeliefert" markieren. [FormMain.cs] - ✅ : Wenn Fahrer registriert kann nur NeuerAuftrag aufgerufen werden. Dort kann er Aufträge erstellen mit dem Status "Abgeholt" (Wichtig für Auftragauswahl bei Waschstraße) [FormMain.cs] - ✅ : Wenn kein Auftrag gefunden wird, kann ein neuer erstellt werden. [FormWSVerfolgung.cs] @@ -63,14 +64,14 @@ Build-Info: - 🔄 LadenScreen anzeigen etc. [FormMain.cs] - 🔄 Nach Test und Rücksprache eventuell wieder umbauen. Benutzer.Rolle etc. [FormFehlmengeCount.cs] - 🔄 Settings hier ändern auf UserSettingsManager Klasse. [FormEinstellung.cs] -- 🔄 Spalten besser erkennbar gestalten damit Mirka die Spalte trifft wenn RechtsClick. [FormExpedit.cs] - 🔄 Testen ob Get_ArtikelKurzliste funktioniert. [FormMain.cs] - 🔄 Testen ob SWS-QRCodes gelesen werden können. Nur notwendig bis alle SWS-QRCodes richtig gedruckt und gelesen werden. [Kunde.cs] - 🔄 Überlegen ob das der richtige Weg ist. Eventuell in Expedit sowohl KundeAufgabe wie auch AuftragAufgabe anzeigen? NOTWENDIG? [FormNeuerAuftrag.cs] - 🔄 Umbau in Switch. [FormWSVerfolgung.cs] - 🔄 UserSetting Properties eintragen und in EinstellungsScreen abrufen. [UserSettingsManager.cs] - 🔄 Weitere Properties von oben hier zuweisen [UserSettingsManager.cs] +- 🔄 Wenn kunde null dann return. [FormNeuerAuftrag.cs] - 🔄 Wenn Nachwäsche oder Müllwäsche alle Artikel anzeigen. [FormFehlmengeCount.cs] -Installation: 18.12.2025 17:03 +Installation: 19.12.2025 11:14 =====================================