FormMain - Buttons hinzugefügt für Inventur und Standveraenderung.

This commit is contained in:
Kilian Wirl 2025-12-19 11:24:16 +01:00
parent a8c785fd41
commit e2f0d9b410
8 changed files with 232 additions and 132 deletions

View File

@ -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.

View File

@ -72,7 +72,7 @@ namespace Deckungsbeitrag
}
if(this.type_of_list == (int)Listentyp.Kundenliste)
{
this.Kundenliste = objliste.OfType<Kunde>().GroupBy(k => k.KundeID).Select(g => g.First()).ToList();
if (objliste != null) this.Kundenliste = objliste.OfType<Kunde>().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();
}

View File

@ -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;
}
}

View File

@ -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
/// <param name="e"></param>
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);
/// <summary>
/// Scan QR-Code Test.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
/// <summary>
/// Scan QR-Code Test.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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.
//DONE: 2 neue Buttons für "Neue Inventur" und "Neue Standveränderung"
//DONE: Bei Fahrer neue Deaktivierung von Controls.

View File

@ -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.
//CHANGES: NeuerAuftrag wird jetzt mit Propertie AuftragTyp aufgerufen. Dadurch ist die Auswahl des AuftragTyp konstanter.

View File

@ -24,7 +24,8 @@ namespace DatenDB
} // LEER
public static List<Kunde> 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<Kunde> resultList = new List<Kunde>();
using (NpgsqlCommand command = new NpgsqlCommand())

View File

@ -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));

View File

@ -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
=====================================