Merge branch 'Development'

This commit is contained in:
Kilian Wirl 2025-12-16 17:04:48 +01:00
commit 7644bab0e3
25 changed files with 2351 additions and 173 deletions

View File

@ -305,8 +305,8 @@ namespace Deckungsbeitrag
Fach_Laden(); Fach_Laden();
} }
} }
//TODO: Wenn NeuerAuftrag gewählt wie gehts weiter?
} }
} }
//DONE: Bei Transport wir ein Fach mit Aktuellem Auftrag erstellt. Das Alte wird bei Transport gespeichert. //DONE: Bei Transport wir ein Fach mit Aktuellem Auftrag erstellt. Das Alte wird bei Transport gespeichert.
//DONE: Wenn NeuerAuftrag gewählt Fach ändern nicht vergessen. //DONE: Wenn NeuerAuftrag gewählt Fach ändern nicht vergessen.
//DONE: Wenn NeuerAuftrag gewählt wie gehts weiter?

View File

@ -71,7 +71,23 @@
this.tabPageAll = new System.Windows.Forms.TabPage(); this.tabPageAll = new System.Windows.Forms.TabPage();
this.objectListViewAuftrag = new BrightIdeasSoftware.ObjectListView(); this.objectListViewAuftrag = new BrightIdeasSoftware.ObjectListView();
this.tabControlAuftragList = new System.Windows.Forms.TabControl(); this.tabControlAuftragList = new System.Windows.Forms.TabControl();
this.buttonStats = new System.Windows.Forms.Button();
this.buttonEinstellung = new System.Windows.Forms.Button(); this.buttonEinstellung = new System.Windows.Forms.Button();
this.groupBoxStatistik = new System.Windows.Forms.GroupBox();
this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
this.tableLayoutPanelStatistik = new System.Windows.Forms.TableLayoutPanel();
this.labelZahl6 = new System.Windows.Forms.Label();
this.labelStatistik6 = new System.Windows.Forms.Label();
this.labelZahl5 = new System.Windows.Forms.Label();
this.labelStatistik5 = new System.Windows.Forms.Label();
this.labelZahl4 = new System.Windows.Forms.Label();
this.labelStatistik4 = new System.Windows.Forms.Label();
this.labelZahl3 = new System.Windows.Forms.Label();
this.labelStatistik3 = new System.Windows.Forms.Label();
this.labelZahl2 = new System.Windows.Forms.Label();
this.labelStatistik2 = new System.Windows.Forms.Label();
this.labelZahl1 = new System.Windows.Forms.Label();
this.labelStatistik1 = new System.Windows.Forms.Label();
this.groupBoxEtikett.SuspendLayout(); this.groupBoxEtikett.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxMinus)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxMinus)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxPlus)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxPlus)).BeginInit();
@ -82,6 +98,8 @@
this.tabPageAll.SuspendLayout(); this.tabPageAll.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.objectListViewAuftrag)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.objectListViewAuftrag)).BeginInit();
this.tabControlAuftragList.SuspendLayout(); this.tabControlAuftragList.SuspendLayout();
this.groupBoxStatistik.SuspendLayout();
this.tableLayoutPanelStatistik.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// label10 // label10
@ -382,7 +400,7 @@
this.buttonSWS_Drucken.FlatAppearance.BorderSize = 0; this.buttonSWS_Drucken.FlatAppearance.BorderSize = 0;
this.buttonSWS_Drucken.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.buttonSWS_Drucken.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonSWS_Drucken.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonSWS_Drucken.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonSWS_Drucken.Location = new System.Drawing.Point(1226, 727); this.buttonSWS_Drucken.Location = new System.Drawing.Point(1179, 727);
this.buttonSWS_Drucken.Margin = new System.Windows.Forms.Padding(2); this.buttonSWS_Drucken.Margin = new System.Windows.Forms.Padding(2);
this.buttonSWS_Drucken.Name = "buttonSWS_Drucken"; this.buttonSWS_Drucken.Name = "buttonSWS_Drucken";
this.buttonSWS_Drucken.Size = new System.Drawing.Size(200, 41); this.buttonSWS_Drucken.Size = new System.Drawing.Size(200, 41);
@ -461,7 +479,7 @@
this.buttonNeuerAuftrag.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.buttonNeuerAuftrag.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonNeuerAuftrag.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 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.Black; this.buttonNeuerAuftrag.ForeColor = System.Drawing.Color.Black;
this.buttonNeuerAuftrag.Location = new System.Drawing.Point(1022, 727); this.buttonNeuerAuftrag.Location = new System.Drawing.Point(975, 727);
this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(2); this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(2);
this.buttonNeuerAuftrag.Name = "buttonNeuerAuftrag"; this.buttonNeuerAuftrag.Name = "buttonNeuerAuftrag";
this.buttonNeuerAuftrag.Size = new System.Drawing.Size(200, 41); this.buttonNeuerAuftrag.Size = new System.Drawing.Size(200, 41);
@ -667,6 +685,20 @@
this.tabControlAuftragList.SelectedIndexChanged += new System.EventHandler(this.tabControlAuftragList_SelectedIndexChanged); this.tabControlAuftragList.SelectedIndexChanged += new System.EventHandler(this.tabControlAuftragList_SelectedIndexChanged);
this.tabControlAuftragList.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabControlAuftragList_Selected); this.tabControlAuftragList.Selected += new System.Windows.Forms.TabControlEventHandler(this.tabControlAuftragList_Selected);
// //
// buttonStats
//
this.buttonStats.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonStats.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.buttonStats.FlatAppearance.BorderSize = 3;
this.buttonStats.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonStats.Image = global::Deckungsbeitrag.Properties.Resources.StatisticsWarning_16x;
this.buttonStats.Location = new System.Drawing.Point(1384, 727);
this.buttonStats.Name = "buttonStats";
this.buttonStats.Size = new System.Drawing.Size(41, 41);
this.buttonStats.TabIndex = 46;
this.buttonStats.UseVisualStyleBackColor = true;
this.buttonStats.Click += new System.EventHandler(this.buttonStats_Click);
//
// buttonEinstellung // buttonEinstellung
// //
this.buttonEinstellung.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonEinstellung.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
@ -681,12 +713,225 @@
this.buttonEinstellung.UseVisualStyleBackColor = true; this.buttonEinstellung.UseVisualStyleBackColor = true;
this.buttonEinstellung.Click += new System.EventHandler(this.buttonEinstellung_Click); this.buttonEinstellung.Click += new System.EventHandler(this.buttonEinstellung_Click);
// //
// groupBoxStatistik
//
this.groupBoxStatistik.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxStatistik.Controls.Add(this.dateTimePicker1);
this.groupBoxStatistik.Controls.Add(this.tableLayoutPanelStatistik);
this.groupBoxStatistik.ForeColor = System.Drawing.Color.White;
this.groupBoxStatistik.Location = new System.Drawing.Point(1171, 12);
this.groupBoxStatistik.Name = "groupBoxStatistik";
this.groupBoxStatistik.Size = new System.Drawing.Size(301, 197);
this.groupBoxStatistik.TabIndex = 62;
this.groupBoxStatistik.TabStop = false;
this.groupBoxStatistik.Text = "STATISTIK";
this.groupBoxStatistik.Visible = false;
//
// dateTimePicker1
//
this.dateTimePicker1.CustomFormat = "dddd dd.MM.yyyy";
this.dateTimePicker1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dateTimePicker1.Location = new System.Drawing.Point(10, 19);
this.dateTimePicker1.Name = "dateTimePicker1";
this.dateTimePicker1.Size = new System.Drawing.Size(224, 26);
this.dateTimePicker1.TabIndex = 1;
this.dateTimePicker1.CloseUp += new System.EventHandler(this.dateTimePicker1_CloseUp);
//
// tableLayoutPanelStatistik
//
this.tableLayoutPanelStatistik.ColumnCount = 2;
this.tableLayoutPanelStatistik.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanelStatistik.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanelStatistik.Controls.Add(this.labelZahl6, 1, 5);
this.tableLayoutPanelStatistik.Controls.Add(this.labelStatistik6, 0, 5);
this.tableLayoutPanelStatistik.Controls.Add(this.labelZahl5, 1, 4);
this.tableLayoutPanelStatistik.Controls.Add(this.labelStatistik5, 0, 4);
this.tableLayoutPanelStatistik.Controls.Add(this.labelZahl4, 1, 3);
this.tableLayoutPanelStatistik.Controls.Add(this.labelStatistik4, 0, 3);
this.tableLayoutPanelStatistik.Controls.Add(this.labelZahl3, 1, 2);
this.tableLayoutPanelStatistik.Controls.Add(this.labelStatistik3, 0, 2);
this.tableLayoutPanelStatistik.Controls.Add(this.labelZahl2, 1, 1);
this.tableLayoutPanelStatistik.Controls.Add(this.labelStatistik2, 0, 1);
this.tableLayoutPanelStatistik.Controls.Add(this.labelZahl1, 1, 0);
this.tableLayoutPanelStatistik.Controls.Add(this.labelStatistik1, 0, 0);
this.tableLayoutPanelStatistik.Dock = System.Windows.Forms.DockStyle.Bottom;
this.tableLayoutPanelStatistik.Location = new System.Drawing.Point(3, 51);
this.tableLayoutPanelStatistik.Name = "tableLayoutPanelStatistik";
this.tableLayoutPanelStatistik.RowCount = 6;
this.tableLayoutPanelStatistik.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanelStatistik.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanelStatistik.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanelStatistik.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanelStatistik.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanelStatistik.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
this.tableLayoutPanelStatistik.Size = new System.Drawing.Size(295, 143);
this.tableLayoutPanelStatistik.TabIndex = 0;
//
// labelZahl6
//
this.labelZahl6.AutoSize = true;
this.labelZahl6.Dock = System.Windows.Forms.DockStyle.Left;
this.labelZahl6.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelZahl6.ForeColor = System.Drawing.Color.White;
this.labelZahl6.Location = new System.Drawing.Point(99, 115);
this.labelZahl6.Name = "labelZahl6";
this.labelZahl6.Size = new System.Drawing.Size(53, 28);
this.labelZahl6.TabIndex = 11;
this.labelZahl6.Text = "Zahl 6";
this.labelZahl6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelStatistik6
//
this.labelStatistik6.AutoSize = true;
this.labelStatistik6.Dock = System.Windows.Forms.DockStyle.Left;
this.labelStatistik6.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelStatistik6.ForeColor = System.Drawing.Color.White;
this.labelStatistik6.Location = new System.Drawing.Point(3, 115);
this.labelStatistik6.Name = "labelStatistik6";
this.labelStatistik6.Size = new System.Drawing.Size(90, 28);
this.labelStatistik6.TabIndex = 10;
this.labelStatistik6.Text = "Statistik 6";
this.labelStatistik6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelZahl5
//
this.labelZahl5.AutoSize = true;
this.labelZahl5.Dock = System.Windows.Forms.DockStyle.Left;
this.labelZahl5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelZahl5.ForeColor = System.Drawing.Color.White;
this.labelZahl5.Location = new System.Drawing.Point(99, 92);
this.labelZahl5.Name = "labelZahl5";
this.labelZahl5.Size = new System.Drawing.Size(53, 23);
this.labelZahl5.TabIndex = 9;
this.labelZahl5.Text = "Zahl 5";
this.labelZahl5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelStatistik5
//
this.labelStatistik5.AutoSize = true;
this.labelStatistik5.Dock = System.Windows.Forms.DockStyle.Left;
this.labelStatistik5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelStatistik5.ForeColor = System.Drawing.Color.White;
this.labelStatistik5.Location = new System.Drawing.Point(3, 92);
this.labelStatistik5.Name = "labelStatistik5";
this.labelStatistik5.Size = new System.Drawing.Size(90, 23);
this.labelStatistik5.TabIndex = 8;
this.labelStatistik5.Text = "Statistik 5";
this.labelStatistik5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelZahl4
//
this.labelZahl4.AutoSize = true;
this.labelZahl4.Dock = System.Windows.Forms.DockStyle.Left;
this.labelZahl4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelZahl4.ForeColor = System.Drawing.Color.White;
this.labelZahl4.Location = new System.Drawing.Point(99, 69);
this.labelZahl4.Name = "labelZahl4";
this.labelZahl4.Size = new System.Drawing.Size(53, 23);
this.labelZahl4.TabIndex = 7;
this.labelZahl4.Text = "Zahl 4";
this.labelZahl4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelStatistik4
//
this.labelStatistik4.AutoSize = true;
this.labelStatistik4.Dock = System.Windows.Forms.DockStyle.Left;
this.labelStatistik4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelStatistik4.ForeColor = System.Drawing.Color.White;
this.labelStatistik4.Location = new System.Drawing.Point(3, 69);
this.labelStatistik4.Name = "labelStatistik4";
this.labelStatistik4.Size = new System.Drawing.Size(90, 23);
this.labelStatistik4.TabIndex = 6;
this.labelStatistik4.Text = "Statistik 4";
this.labelStatistik4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelZahl3
//
this.labelZahl3.AutoSize = true;
this.labelZahl3.Dock = System.Windows.Forms.DockStyle.Left;
this.labelZahl3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelZahl3.ForeColor = System.Drawing.Color.White;
this.labelZahl3.Location = new System.Drawing.Point(99, 46);
this.labelZahl3.Name = "labelZahl3";
this.labelZahl3.Size = new System.Drawing.Size(53, 23);
this.labelZahl3.TabIndex = 5;
this.labelZahl3.Text = "Zahl 3";
this.labelZahl3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelStatistik3
//
this.labelStatistik3.AutoSize = true;
this.labelStatistik3.Dock = System.Windows.Forms.DockStyle.Left;
this.labelStatistik3.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelStatistik3.ForeColor = System.Drawing.Color.White;
this.labelStatistik3.Location = new System.Drawing.Point(3, 46);
this.labelStatistik3.Name = "labelStatistik3";
this.labelStatistik3.Size = new System.Drawing.Size(90, 23);
this.labelStatistik3.TabIndex = 4;
this.labelStatistik3.Text = "Statistik 3";
this.labelStatistik3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelZahl2
//
this.labelZahl2.AutoSize = true;
this.labelZahl2.Dock = System.Windows.Forms.DockStyle.Left;
this.labelZahl2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelZahl2.ForeColor = System.Drawing.Color.White;
this.labelZahl2.Location = new System.Drawing.Point(99, 23);
this.labelZahl2.Name = "labelZahl2";
this.labelZahl2.Size = new System.Drawing.Size(53, 23);
this.labelZahl2.TabIndex = 3;
this.labelZahl2.Text = "Zahl 2";
this.labelZahl2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelStatistik2
//
this.labelStatistik2.AutoSize = true;
this.labelStatistik2.Dock = System.Windows.Forms.DockStyle.Left;
this.labelStatistik2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelStatistik2.ForeColor = System.Drawing.Color.White;
this.labelStatistik2.Location = new System.Drawing.Point(3, 23);
this.labelStatistik2.Name = "labelStatistik2";
this.labelStatistik2.Size = new System.Drawing.Size(90, 23);
this.labelStatistik2.TabIndex = 2;
this.labelStatistik2.Text = "Statistik 2";
this.labelStatistik2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelZahl1
//
this.labelZahl1.AutoSize = true;
this.labelZahl1.Dock = System.Windows.Forms.DockStyle.Left;
this.labelZahl1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelZahl1.ForeColor = System.Drawing.Color.White;
this.labelZahl1.Location = new System.Drawing.Point(99, 0);
this.labelZahl1.Name = "labelZahl1";
this.labelZahl1.Size = new System.Drawing.Size(53, 23);
this.labelZahl1.TabIndex = 1;
this.labelZahl1.Text = "Zahl 1";
this.labelZahl1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// labelStatistik1
//
this.labelStatistik1.AutoSize = true;
this.labelStatistik1.Dock = System.Windows.Forms.DockStyle.Left;
this.labelStatistik1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelStatistik1.ForeColor = System.Drawing.Color.White;
this.labelStatistik1.Location = new System.Drawing.Point(3, 0);
this.labelStatistik1.Name = "labelStatistik1";
this.labelStatistik1.Size = new System.Drawing.Size(90, 23);
this.labelStatistik1.TabIndex = 0;
this.labelStatistik1.Text = "Statistik 1";
this.labelStatistik1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// FormExpedit // FormExpedit
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101))))); this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.ClientSize = new System.Drawing.Size(1481, 777); this.ClientSize = new System.Drawing.Size(1481, 777);
this.Controls.Add(this.groupBoxStatistik);
this.Controls.Add(this.buttonStats);
this.Controls.Add(this.buttonEinstellung); this.Controls.Add(this.buttonEinstellung);
this.Controls.Add(this.dGArtikel); this.Controls.Add(this.dGArtikel);
this.Controls.Add(this.buttonNeuerAuftrag); this.Controls.Add(this.buttonNeuerAuftrag);
@ -719,6 +964,9 @@
this.tabPageAll.ResumeLayout(false); this.tabPageAll.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.objectListViewAuftrag)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.objectListViewAuftrag)).EndInit();
this.tabControlAuftragList.ResumeLayout(false); this.tabControlAuftragList.ResumeLayout(false);
this.groupBoxStatistik.ResumeLayout(false);
this.tableLayoutPanelStatistik.ResumeLayout(false);
this.tableLayoutPanelStatistik.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -766,5 +1014,21 @@
private BrightIdeasSoftware.ObjectListView objectListViewAuftrag; private BrightIdeasSoftware.ObjectListView objectListViewAuftrag;
private System.Windows.Forms.TabControl tabControlAuftragList; private System.Windows.Forms.TabControl tabControlAuftragList;
private System.Windows.Forms.Button buttonEinstellung; private System.Windows.Forms.Button buttonEinstellung;
private System.Windows.Forms.Button buttonStats;
private System.Windows.Forms.GroupBox groupBoxStatistik;
private System.Windows.Forms.DateTimePicker dateTimePicker1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanelStatistik;
private System.Windows.Forms.Label labelZahl6;
private System.Windows.Forms.Label labelStatistik6;
private System.Windows.Forms.Label labelZahl5;
private System.Windows.Forms.Label labelStatistik5;
private System.Windows.Forms.Label labelZahl4;
private System.Windows.Forms.Label labelStatistik4;
private System.Windows.Forms.Label labelZahl3;
private System.Windows.Forms.Label labelStatistik3;
private System.Windows.Forms.Label labelZahl2;
private System.Windows.Forms.Label labelStatistik2;
private System.Windows.Forms.Label labelZahl1;
private System.Windows.Forms.Label labelStatistik1;
} }
} }

View File

@ -1,10 +1,13 @@
using BrightIdeasSoftware; using BrightIdeasSoftware;
using DatenDB; using DatenDB;
using Deckungsbeitrag.Properties; using Deckungsbeitrag.Properties;
using Npgsql;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Net.Sockets;
using System.Windows.Forms; using System.Windows.Forms;
using System.Xml.Resolvers; using System.Xml.Resolvers;
@ -34,7 +37,9 @@ namespace Deckungsbeitrag
private Screen[] screens; private Screen[] screens;
private Point itemlocation; private Point itemlocation;
private ImageList imagelist = new ImageList(); private ImageList imagelist = new ImageList();
private volatile bool _isProcessing = false; // Thread-sicherer Flag gegen Überlappung
private int _consecutiveFailures = 0;
private const int MAX_FAILURES = 3;
public FormExpedit(Benutzer benutzer) public FormExpedit(Benutzer benutzer)
{ {
@ -164,15 +169,62 @@ namespace Deckungsbeitrag
/// <param name="e"></param> /// <param name="e"></param>
private void Timer1_Tick(object sender, EventArgs e) private void Timer1_Tick(object sender, EventArgs e)
{ {
// Vermeide Überlappung (wenn vorheriger Tick noch läuft)
if (_isProcessing) return;
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
_isProcessing = true;
if(auftrag != null) try
{ {
Auftrag _auftrag = Auftrag.GetAuftrag(auftrag.AuftragID); if (auftrag != null)
if(dGArtikel.Visible) Load_Gridview(_auftrag); {
} const int maxRetries = 3;
Auftrag _auftrag = null;
Cursor.Current = Cursors.Default; for (int retry = 0; retry < maxRetries; retry++)
{
try
{
_auftrag = Auftrag.GetAuftrag(auftrag.AuftragID);
if (dGArtikel.Visible) Load_Gridview(_auftrag);
_consecutiveFailures = 0; // Erfolg -> Zähler reset
break;
}
catch (NpgsqlException ex) when ((ex.InnerException is SocketException || ex.InnerException is System.IO.IOException) && retry < maxRetries - 1)
{
_consecutiveFailures++;
Debug.WriteLine($"Retry {retry + 1}/{maxRetries}: {ex.Message}"); // Logging
System.Threading.Thread.Sleep(1000 * (int)Math.Pow(2, retry)); // Backoff: 1s, 2s, 4s
}
catch (Exception ex)
{
Debug.WriteLine($"Unexpected error: {ex.Message}"); // Logging
break;
}
}
// Timer stoppen bei zu vielen aufeinanderfolgenden Fehlern
if (_consecutiveFailures >= MAX_FAILURES)
{
timer1.Enabled = false;
Debug.WriteLine("Timer gestoppt nach " + MAX_FAILURES + " Fehlern. Bitte manuell neu starten.");
// Optional: Status-Label setzen oder MessageBox
}
}
}
catch (Exception ex)
{
Debug.WriteLine($"Timer1_Tick globaler Fehler: {ex}");
_consecutiveFailures++;
}
finally
{
_isProcessing = false;
Cursor.Current = Cursors.Default;
}
} }
/// <summary> /// <summary>
@ -379,9 +431,7 @@ namespace Deckungsbeitrag
if(knd != null) Funktionen.SWS_Drucken(null, knd, this); if(knd != null) Funktionen.SWS_Drucken(null, knd, this);
} }
/// <summary> #region ObjectListView-Events
/// ObjectListView Funktionen
/// </summary>
private void objectListViewAuftrag_CellClick(object sender, CellClickEventArgs e) private void objectListViewAuftrag_CellClick(object sender, CellClickEventArgs e)
{ {
itemlocation = new Point(e.Location.X, e.Location.Y); itemlocation = new Point(e.Location.X, e.Location.Y);
@ -682,7 +732,9 @@ namespace Deckungsbeitrag
// Cursor zurücksetzen // Cursor zurücksetzen
Cursor.Current = Cursors.Default; Cursor.Current = Cursors.Default;
} }
#endregion
/// <summary> /// <summary>
/// Liefertag wird ermittelt und in Day of Week umgerechnet. RadioButtons werden Checked oder Unchecked und Click wird registriert. /// Liefertag wird ermittelt und in Day of Week umgerechnet. RadioButtons werden Checked oder Unchecked und Click wird registriert.
/// </summary> /// </summary>
@ -808,8 +860,71 @@ namespace Deckungsbeitrag
einstellung.ShowDialog(); einstellung.ShowDialog();
} }
#region Statistik
private void buttonStats_Click(object sender, EventArgs e)
{
if (this.groupBoxStatistik.Visible) this.groupBoxStatistik.Visible = false;
else this.groupBoxStatistik.Visible = true;
}
private void GetStatistik()
{
string[] statistik = { "Container gewaschen:", "Container hergerichtet:", "Container fertig:", "Kunden gewaschen:", "Kunden hergerichtet:", "Kunden abgeschlossen:" };
List<Auftrag> auftraglist = Auftrag.GetAuftragStatsListToday(this.dateTimePicker1.Value.Date);
for (int i = 1; i <= statistik.Length; i++)
{
foreach (Control ctr in this.tableLayoutPanelStatistik.Controls)
{
Label lbl;
if (ctr.GetType() == typeof(Label))
{
lbl = (Label)ctr;
if (lbl.Text.Contains("Statistik") && lbl.Text.Contains($"{i.ToString()}")) lbl.Text = statistik[i - 1].ToString();
if (lbl.Name.Contains("Zahl"))
{
int j = 0;
switch (lbl.Name)
{
case var s when s.Contains($"1"):
foreach (Auftrag a in auftraglist) if (a.Status == AuftragStatus.Aufgelegt) j += a.Container;
lbl.Text = j.ToString();
break;
case var s when s.Contains($"2"):
foreach (Auftrag a in auftraglist) if (a.Status == AuftragStatus.Vorbereitet) j += a.ContainerClean;
lbl.Text = j.ToString();
break;
case var s when s.Contains($"3"):
foreach (Auftrag a in auftraglist) if (a.Status == AuftragStatus.Fertig) j += a.ContainerClean;
lbl.Text = j.ToString();
break;
case var s when s.Contains($"4"):
foreach (Auftrag a in auftraglist) if (a.Status == AuftragStatus.Aufgelegt) j++;
lbl.Text = j.ToString();
break;
case var s when s.Contains($"5"):
foreach (Auftrag a in auftraglist) if (a.Status == AuftragStatus.Vorbereitet) j++;
lbl.Text = j.ToString();
break;
case var s when s.Contains($"{i}"):
foreach (Auftrag a in auftraglist) if (a.Status == AuftragStatus.Fertig) j++;
lbl.Text = j.ToString();
break;
default:
break;
}
}
}
}
}
//this.groupBoxStatistik.Width = this.tableLayoutPanelStatistik.Right;
}
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
GetStatistik();
}
#endregion
} }
} }
//DONE: Breite der GridView festlegen. //CHANGES: Statistik für Expedit. (Same as in Main)
//DONE: OLV-Item refresh. Neuer Liefertag speichern.
//DONE: Testen ob ausblenden der Button Column funktioniert. Benutzer-Verwaltung oder Frottee oder Flach notwendig.

View File

@ -21,7 +21,8 @@ namespace Deckungsbeitrag
Kunde kunde; Kunde kunde;
List<KundeArtikel> artikelListe; List<KundeArtikel> artikelListe;
Meldungen meldung = new Meldungen(); Meldungen meldung = new Meldungen();
//Benutzer benutzer; private List<Auftrag> auftragsliste;
string userid; string userid;
public FormFehlmengeCount() public FormFehlmengeCount()
{ {
@ -45,7 +46,8 @@ namespace Deckungsbeitrag
//Kunde wird durch Scan oder Handeingabe Ausgewählt. //Kunde wird durch Scan oder Handeingabe Ausgewählt.
this.kunde = Funktionen.KundenAuswahl(); //this.kunde = Funktionen.KundenAuswahl();
Open_Liste();
ControlLaden(); ControlLaden();
CloseKeyboard(); CloseKeyboard();
@ -305,9 +307,30 @@ namespace Deckungsbeitrag
} }
//Kunde wird durch Scan oder Handeingabe Ausgewählt. //Kunde wird durch Scan oder Handeingabe Ausgewählt.
this.kunde = Funktionen.KundenAuswahl(); Open_Liste();
ControlLaden(); ControlLaden();
} }
/// <summary>
/// Auftragliste aufrufen.
/// </summary>
/// <param name="extra">Wenn Extrakunde dann true</param>
private void Open_Liste()
{
auftragsliste = Auftrag.GetFinishingList();
List<object> kundenliste = new List<object>();
foreach(Auftrag auf in auftragsliste)
{
object kunde = Kunde.GetKunde(null, auf.KundeID, null);
kundenliste.Add(kunde);
}
FormListe liste = new FormListe(kundenliste, 0);
if (liste.ShowDialog() == DialogResult.OK)
{
this.kunde = liste.kunde;
}
}
/// <summary> /// <summary>
/// TextBox Scann Events /// TextBox Scann Events
@ -388,5 +411,6 @@ namespace Deckungsbeitrag
} }
} }
//DONE: Kunde Anmerkung anzeigen. Spezielle Farbe verwenden. Label oder Textbox? //DONE: Auftrag über FormListe holen und daraus den Kunden für Fehlmenge holen.
//TODO: Eventuell bei erstem Erscheinen Info anzeigen. //DONE: Logik überlegen wie ein bearbeiteter Auftrag nicht doppelt gewählt werden kann. (Abteilungen zu Auftrag hinzufügen und bei Ausschlager Druck definieren?)
//DONE: 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.

View File

@ -538,5 +538,3 @@ namespace Deckungsbeitrag
} }
} }
} }
//DONE: TextBox Anmerkung ausprogrammieren. (Immer Enabled, Speichern bei Leave oder Button)
//DONE: Zeichenanzahl aktuell/maximal anzeigen.

View File

@ -38,7 +38,7 @@ namespace Deckungsbeitrag
this.textBoxKunde = new System.Windows.Forms.TextBox(); this.textBoxKunde = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.buttonOK = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button();
this.buttonNeuerBenutzer = new System.Windows.Forms.Button(); this.buttonNeuerAuftrag = new System.Windows.Forms.Button();
this.SuspendLayout(); this.SuspendLayout();
// //
// listViewKunde // listViewKunde
@ -63,7 +63,7 @@ namespace Deckungsbeitrag
this.listViewKunde.Margin = new System.Windows.Forms.Padding(2); this.listViewKunde.Margin = new System.Windows.Forms.Padding(2);
this.listViewKunde.MultiSelect = false; this.listViewKunde.MultiSelect = false;
this.listViewKunde.Name = "listViewKunde"; this.listViewKunde.Name = "listViewKunde";
this.listViewKunde.Size = new System.Drawing.Size(396, 303); this.listViewKunde.Size = new System.Drawing.Size(396, 466);
this.listViewKunde.TabIndex = 1; this.listViewKunde.TabIndex = 1;
this.listViewKunde.UseCompatibleStateImageBehavior = false; this.listViewKunde.UseCompatibleStateImageBehavior = false;
this.listViewKunde.View = System.Windows.Forms.View.Details; this.listViewKunde.View = System.Windows.Forms.View.Details;
@ -129,31 +129,30 @@ namespace Deckungsbeitrag
this.buttonOK.UseVisualStyleBackColor = false; this.buttonOK.UseVisualStyleBackColor = false;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
// //
// buttonNeuerBenutzer // buttonNeuerAuftrag
// //
this.buttonNeuerBenutzer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) this.buttonNeuerAuftrag.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.buttonNeuerBenutzer.BackColor = System.Drawing.Color.Yellow; this.buttonNeuerAuftrag.BackColor = System.Drawing.Color.Turquoise;
this.buttonNeuerBenutzer.FlatAppearance.BorderSize = 0; this.buttonNeuerAuftrag.FlatAppearance.BorderSize = 0;
this.buttonNeuerBenutzer.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.buttonNeuerAuftrag.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonNeuerBenutzer.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.buttonNeuerAuftrag.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonNeuerBenutzer.Location = new System.Drawing.Point(115, 114); this.buttonNeuerAuftrag.Location = new System.Drawing.Point(120, 467);
this.buttonNeuerBenutzer.Margin = new System.Windows.Forms.Padding(2); this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(2);
this.buttonNeuerBenutzer.Name = "buttonNeuerBenutzer"; this.buttonNeuerAuftrag.Name = "buttonNeuerAuftrag";
this.buttonNeuerBenutzer.Size = new System.Drawing.Size(167, 34); this.buttonNeuerAuftrag.Size = new System.Drawing.Size(167, 34);
this.buttonNeuerBenutzer.TabIndex = 16; this.buttonNeuerAuftrag.TabIndex = 16;
this.buttonNeuerBenutzer.Text = "Neuer Benutzer"; this.buttonNeuerAuftrag.Text = "Neuer Auftrag";
this.buttonNeuerBenutzer.UseVisualStyleBackColor = false; this.buttonNeuerAuftrag.UseVisualStyleBackColor = false;
this.buttonNeuerBenutzer.Visible = false; this.buttonNeuerAuftrag.Click += new System.EventHandler(this.buttonNeuerAuftrag_Click);
this.buttonNeuerBenutzer.Click += new System.EventHandler(this.buttonNeuerBenutzer_Click);
// //
// FormListe // FormListe
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101))))); this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.ClientSize = new System.Drawing.Size(413, 358); this.ClientSize = new System.Drawing.Size(413, 521);
this.Controls.Add(this.buttonNeuerBenutzer); this.Controls.Add(this.buttonNeuerAuftrag);
this.Controls.Add(this.buttonOK); this.Controls.Add(this.buttonOK);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.textBoxKunde); this.Controls.Add(this.textBoxKunde);
@ -170,6 +169,7 @@ namespace Deckungsbeitrag
this.Text = "LISTE"; this.Text = "LISTE";
this.TopMost = true; this.TopMost = true;
this.Load += new System.EventHandler(this.FormListe_Load); this.Load += new System.EventHandler(this.FormListe_Load);
this.Shown += new System.EventHandler(this.FormListe_Shown);
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -185,6 +185,6 @@ namespace Deckungsbeitrag
private System.Windows.Forms.TextBox textBoxKunde; private System.Windows.Forms.TextBox textBoxKunde;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonNeuerBenutzer; private System.Windows.Forms.Button buttonNeuerAuftrag;
} }
} }

View File

@ -20,29 +20,34 @@ namespace Deckungsbeitrag
{ {
Kundenliste = 0, Kundenliste = 0,
Aufgabenliste = 1, Aufgabenliste = 1,
Benutzerliste = 2 Benutzerliste = 2,
Auftragliste = 3
} }
public partial class FormListe : Form public partial class FormListe : Form
{ {
public Kunde kunde; public Kunde kunde;
public Benutzer benutzer; public Benutzer benutzer;
public List<Kunde> Kundenliste; public Auftrag auftrag;
public List<Aufgabe> Aufgabenliste; private List<Kunde> Kundenliste;
public List<Benutzer> Benutzerliste; private List<Aufgabe> Aufgabenliste;
private List<Benutzer> Benutzerliste;
private List<Auftrag> Auftragliste;
private Meldungen meldung = new Meldungen();
bool isKundenliste = false; bool isKundenliste = false;
bool isAufgabenliste = false; bool isAufgabenliste = false;
bool isBenutzerliste = false; bool isBenutzerliste = false;
int type_of_list; int type_of_list;
string path = "C:\\Windows\\WinSxS\\amd64_microsoft-windows-osk_31bf3856ad364e35_10.0.22621.3672_none_8a93c823d58f9d77\\osk.exe"; string path = "C:\\Windows\\WinSxS\\amd64_microsoft-windows-osk_31bf3856ad364e35_10.0.22621.3672_none_8a93c823d58f9d77\\osk.exe";
string ben_col = "Vorname,Nachname,Benutzername,Rolle,Schein,Gueltig bis,Aktiv"; string ben_col = "Vorname,Nachname,Benutzername,Rolle,Schein,Gueltig bis,Aktiv";
string knd_col = "KundenNr,KundenName,PLZ,Ort"; string knd_col = "KundenNr,Suchtext,KundenName,Ort";
string auf_col = "Aufgabe,Beschreibung"; string auf_col = "Aufgabe,Beschreibung";
string auftrag_col = "Kunde,Liefertag,Container";
string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
string keyboardPath; string keyboardPath;
private Timer timer; private Timer timer;
//QR-Code Scan mit integrierter Kamera
#region Form-Konstruktor
public FormListe() public FormListe()
{ {
InitializeComponent(); InitializeComponent();
@ -59,9 +64,20 @@ namespace Deckungsbeitrag
} }
public FormListe(List<object> objliste, int listentyp) : this() public FormListe(List<object> objliste, int listentyp) : this()
{ {
this.type_of_list = listentyp; // Welcher Listentyp angezeigt wird muss beim Öffnen mitgegeben werden.
this.type_of_list = listentyp;
if(this.type_of_list == (int)Listentyp.Auftragliste)
{
this.Auftragliste = objliste.Cast<Auftrag>().ToList();
}
if(this.type_of_list == (int)Listentyp.Kundenliste)
{
this.Kundenliste = objliste.OfType<Kunde>().GroupBy(k => k.KundeID).Select(g => g.First()).ToList();
}
} }
private void FormListe_Load(object sender, EventArgs e) #endregion
private void FormListe_Load(object sender, EventArgs e)
{ {
// Timer für Wartezeit bis TextChanged eintritt. // Timer für Wartezeit bis TextChanged eintritt.
timer = new Timer(); timer = new Timer();
@ -71,12 +87,16 @@ namespace Deckungsbeitrag
this.buttonOK.Visible = this.buttonOK.Enabled = false; this.buttonOK.Visible = this.buttonOK.Enabled = false;
listViewKunde_Load(); listViewKunde_Load();
this.textBoxKunde.Focus(); this.textBoxKunde.Focus();
StartPosition = FormStartPosition.CenterScreen; this.CenterToScreen();
} }
private void listViewKunde_Load() private void FormListe_Shown(object sender, EventArgs e)
{
this.CenterToScreen();
}
private void listViewKunde_Load()
{ {
//LISTE LEEREN //LISTE LEEREN
this.listViewKunde.Items.Clear(); this.listViewKunde.Items.Clear();
@ -98,19 +118,20 @@ namespace Deckungsbeitrag
} }
//KUNDEN LADEN //KUNDEN LADEN
this.Text = "KUNDE WÄHLEN"; this.Text = "KUNDE WÄHLEN";
foreach (Kunde kunde in Kunde.GetTmpList(textBoxKunde.Text)) if (this.Kundenliste == null) this.Kundenliste = Kunde.GetTmpList(textBoxKunde.Text);
foreach (Kunde kunde in this.Kundenliste)
{ {
ListViewItem item = new ListViewItem(); ListViewItem item = new ListViewItem();
item.Tag = kunde; item.Tag = kunde;
item.Text = kunde.KundeNummer; item.Text = kunde.KundeNummer;
item.SubItems.Add(kunde.Suchtext);
item.SubItems.Add(kunde.KundeName); item.SubItems.Add(kunde.KundeName);
item.SubItems.Add(kunde.PLZ.ToString());
item.SubItems.Add(kunde.Ort); item.SubItems.Add(kunde.Ort);
this.listViewKunde.Items.Add(item); this.listViewKunde.Items.Add(item);
} }
if (listViewKunde.Items.Count == 1) kunde = (Kunde)listViewKunde.Items[0].Tag; if (listViewKunde.Items.Count == 1) kunde = (Kunde)listViewKunde.Items[0].Tag;
this.buttonNeuerAuftrag.Visible = this.buttonNeuerAuftrag.Enabled = false;
} }
break; break;
case var aufliste when type_of_list == (int)Listentyp.Aufgabenliste: case var aufliste when type_of_list == (int)Listentyp.Aufgabenliste:
@ -128,7 +149,7 @@ namespace Deckungsbeitrag
case var benliste when type_of_list == (int)Listentyp.Benutzerliste: case var benliste when type_of_list == (int)Listentyp.Benutzerliste:
{ {
this.textBoxKunde.Visible = this.label1.Visible = false; this.textBoxKunde.Visible = this.label1.Visible = false;
this.buttonNeuerBenutzer.Visible = true; this.buttonNeuerAuftrag.Visible = true;
string[] colname = ben_col.Split(','); string[] colname = ben_col.Split(',');
foreach (string s in colname) foreach (string s in colname)
{ {
@ -155,6 +176,27 @@ namespace Deckungsbeitrag
} }
} }
break; break;
case var auftragliste when type_of_list == (int)Listentyp.Auftragliste:
string[] col = auftrag_col.Split(',');
foreach(string s in col)
{
ColumnHeader ch = new ColumnHeader();
ch.Text = s;
this.listViewKunde.Columns.Add(ch);
}
this.Text = "AUFTRAG WÄHLEN";
foreach(Auftrag auftrag in this.Auftragliste)
{
ListViewItem item = new ListViewItem();
item.Tag = auftrag;
item.Text = auftrag.Kundename;
item.SubItems.Add(auftrag.Liefertag.ToString("ddd dd.MM"));
item.SubItems.Add(auftrag.Container.ToString());
this.listViewKunde.Items.Add(item);
}
this.textBoxKunde.Enabled = false;
break;
default: default:
break; break;
} }
@ -180,15 +222,6 @@ namespace Deckungsbeitrag
this.Size = new Size(lvwWidth + 50, this.Height); this.Size = new Size(lvwWidth + 50, this.Height);
} }
private void FormListe_Shown(object sender, EventArgs e)
{
if (isAufgabenliste)
{
//FormNeueAufgabe aufgabe = new FormNeueAufgabe();
//aufgabe.ShowDialog();
}
FormListe_Load(this, null);
}
private void TextBoxKunde_Enter(object sender, EventArgs e) private void TextBoxKunde_Enter(object sender, EventArgs e)
{ {
this.textBoxKunde.ForeColor = Color.Black; this.textBoxKunde.ForeColor = Color.Black;
@ -208,7 +241,7 @@ namespace Deckungsbeitrag
// Wenn kein Fragezeichen am Anfang wird Kundenliste erstellt. // Wenn kein Fragezeichen am Anfang wird Kundenliste erstellt.
if (!textBoxKunde.Text.StartsWith("?")) if (!textBoxKunde.Text.StartsWith("?"))
{ {
Kundenliste = Kunde.GetTmpList(this.textBoxKunde.Text); if(this.Kundenliste == null) this.Kundenliste = Kunde.GetTmpList(this.textBoxKunde.Text);
listViewKunde_Load(); listViewKunde_Load();
} }
@ -234,6 +267,11 @@ namespace Deckungsbeitrag
this.Close(); this.Close();
} }
break; break;
case var _ when type_of_list == (int)Listentyp.Auftragliste:
auftrag = (Auftrag)item.Tag;
this.DialogResult = DialogResult.OK;
this.Close();
break;
default: default:
break; break;
} }
@ -277,12 +315,6 @@ namespace Deckungsbeitrag
this.DialogResult = DialogResult.OK; this.DialogResult = DialogResult.OK;
this.Close(); this.Close();
} }
private void buttonNeuerBenutzer_Click(object sender, EventArgs e)
{
//FormBenutzerDetail benutzerdetail = new FormBenutzerDetail();
//benutzerdetail.ShowDialog();
this.Close();
}
private void textBoxKunde_Leave(object sender, EventArgs e) private void textBoxKunde_Leave(object sender, EventArgs e)
{ {
@ -300,5 +332,16 @@ namespace Deckungsbeitrag
} }
} }
} }
private void buttonNeuerAuftrag_Click(object sender, EventArgs e)
{
if (meldung.GetFrage(this, "Konntest du den gewünschten Auftrag nicht finden und möchtest diesen neu erstellen?", false) == DialogResult.Yes)
{
this.DialogResult = DialogResult.Yes;
this.Close();
}
}
} }
} }
//CHANGES: Die Liste zeigt jetzt auch die Aufträge und die Kunden der möglich Aufträge an. (Erleichtert die Kundenauswahl bei Fehlmengecount)
//DONE: Listentyp.Auftragliste implementiert um über FormWSVerfolgung die Auftragliste abrufen zu können.
//DONE: Kunde anzeigen Reihenfolge der Spalten zuerst Suchtext danach Name.

View File

@ -1,6 +1,7 @@
using BrightIdeasSoftware; using BrightIdeasSoftware;
using DatenDB; using DatenDB;
using Deckungsbeitrag.AA_Forms; using Deckungsbeitrag.AA_Forms;
using Deckungsbeitrag.Properties;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@ -28,6 +29,8 @@ namespace Deckungsbeitrag
private Point newLocation; private Point newLocation;
private Size _fixedSize; private Size _fixedSize;
private bool _handlingResize; private bool _handlingResize;
private ImageList imagelist = new ImageList();
public FormMain() public FormMain()
{ {
@ -52,11 +55,14 @@ namespace Deckungsbeitrag
this.groupBoxUpdate.Visible = this.toolStripDB.Visible = this.toolStripButtonImport.Visible = this.tSBExpedit.Enabled = false; this.groupBoxUpdate.Visible = this.toolStripDB.Visible = this.toolStripButtonImport.Visible = this.tSBExpedit.Enabled = false;
break; break;
case BenutzerRolle.Fahrer: case BenutzerRolle.Fahrer:
this.toolStripDB.Enabled = this.toolStripButtonImport.Enabled = this.tSBBenutzerVW.Enabled = this.tSBAufgabeVW.Enabled = this.tSBExpedit.Enabled = false; foreach(ToolStripButton tsb in this.toolStripMenu.Items)
this.groupBoxUpdate.Visible = this.toolStripDB.Visible = this.toolStripButtonImport.Visible = this.tSBBenutzerVW.Enabled = this.tSBAufgabeVW.Enabled = this.tSBExpedit.Enabled = false; {
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;
break; break;
case BenutzerRolle.Admin: case BenutzerRolle.Admin:
this.groupBoxUpdate.Visible = false; this.groupBoxUpdate.Visible = false;
break; break;
case BenutzerRolle.Waschstrasse: case BenutzerRolle.Waschstrasse:
@ -73,7 +79,11 @@ namespace Deckungsbeitrag
private void FormMain_Load(object sender, EventArgs e) private void FormMain_Load(object sender, EventArgs e)
{ {
this.WindowState = FormWindowState.Maximized; imagelist.Images.Add(Resources.Exclamation_Red);
imagelist.Images.Add(Resources.InformationSymbol_16x);
imagelist.ImageSize = new Size(16, 16);
this.WindowState = FormWindowState.Maximized;
this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea; this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;
this.panelMain.Width = this.Width - this.toolStripMenu.Right - 20; this.panelMain.Width = this.Width - this.toolStripMenu.Right - 20;
this.panelMain.Location = new Point(this.toolStripMenu.Right, 0); this.panelMain.Location = new Point(this.toolStripMenu.Right, 0);
@ -109,12 +119,7 @@ namespace Deckungsbeitrag
} }
#region ToolStripButton_Click-Events
/// <summary>
/// ToolStrip Buttons Click Events
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tSBBenutzerVW_Click(object sender, EventArgs e) private void tSBBenutzerVW_Click(object sender, EventArgs e)
{ {
FormBenutzerVW benutzerVW = new FormBenutzerVW(); FormBenutzerVW benutzerVW = new FormBenutzerVW();
@ -178,16 +183,17 @@ namespace Deckungsbeitrag
{ {
if (!this.objectListViewAuftrag.Visible) if (!this.objectListViewAuftrag.Visible)
{ {
this.rBAlle.Checked = true; if (benutzer.Rolle == BenutzerRolle.Fahrer) this.rBFertig.Checked = true;
else this.rBAlle.Checked = true;
this.rBAlle.Visible = this.rBAusgeliefert.Visible = this.rBFertig.Visible = this.rBVorbereitet.Visible = this.rBAufAbruf.Visible = true; this.rBAlle.Visible = this.rBAusgeliefert.Visible = this.rBFertig.Visible = this.rBVorbereitet.Visible = this.rBAufAbruf.Visible = true;
this.groupBoxAuftrag.Visible = true; this.groupBoxAuftrag.Visible = true;
this.groupBoxStatistik.Visible = this.groupBoxUpdate.Visible = this.buttonNeuerAuftrag.Visible = this.buttonNeuerAuftrag.Enabled = this.buttonNeuerUser.Visible = this.buttonNeuerUser.Enabled = false; this.groupBoxStatistik.Visible = this.groupBoxUpdate.Visible = this.buttonNeueAufgabe.Visible = this.buttonNeueAufgabe.Enabled = this.buttonNeuerAuftrag.Visible = this.buttonNeuerAuftrag.Enabled = this.buttonNeuerUser.Visible = this.buttonNeuerUser.Enabled = false;
this.objectListViewAuftrag.Enabled = this.objectListViewAuftrag.Visible = true; this.objectListViewAuftrag.Enabled = this.objectListViewAuftrag.Visible = true;
} }
else else
{ {
this.groupBoxAuftrag.Visible = this.buttonAufAbruf.Visible = this.buttonAusgeliefert.Visible = this.rBAlle.Visible = this.rBAusgeliefert.Visible = this.rBFertig.Visible = this.rBVorbereitet.Visible = this.rBAufAbruf.Visible = this.objectListViewAuftrag.Enabled = this.objectListViewAuftrag.Visible = false; this.groupBoxAuftrag.Visible = this.buttonAufAbruf.Visible = this.buttonAusgeliefert.Visible = this.rBAlle.Visible = this.rBAusgeliefert.Visible = this.rBFertig.Visible = this.rBVorbereitet.Visible = this.rBAufAbruf.Visible = this.objectListViewAuftrag.Enabled = this.objectListViewAuftrag.Visible = false;
this.groupBoxStatistik.Visible = this.buttonNeuerAuftrag.Visible = this.buttonNeuerAuftrag.Enabled = this.buttonNeuerUser.Enabled = this.buttonNeuerUser.Visible = true; this.groupBoxStatistik.Visible = this.buttonNeuerAuftrag.Visible = this.buttonNeueAufgabe.Visible = this.buttonNeueAufgabe.Enabled = this.buttonNeuerAuftrag.Enabled = this.buttonNeuerUser.Enabled = this.buttonNeuerUser.Visible = true;
} }
} }
private void tSBScannTest_Click(object sender, EventArgs e) private void tSBScannTest_Click(object sender, EventArgs e)
@ -212,12 +218,12 @@ namespace Deckungsbeitrag
FormArtikelVW artikelVW = new FormArtikelVW(); FormArtikelVW artikelVW = new FormArtikelVW();
artikelVW.ShowDialog(); artikelVW.ShowDialog();
} }
#endregion
/// <summary> /// <summary>
/// TOOLSTRIP BUTTON DESIGN /// TOOLSTRIP BUTTON DESIGN
/// </summary> /// </summary>
private void get_Border_Paint(object sender, PaintEventArgs e) private void get_Border_Paint(object sender, PaintEventArgs e)
{ {
ToolStripItem item = (ToolStripItem)sender; ToolStripItem item = (ToolStripItem)sender;
ControlPaint.DrawBorder(e.Graphics, new Rectangle(0, 0, item.Width, item.Height), Color.White, ButtonBorderStyle.Solid); ControlPaint.DrawBorder(e.Graphics, new Rectangle(0, 0, item.Width, item.Height), Color.White, ButtonBorderStyle.Solid);
@ -505,7 +511,6 @@ namespace Deckungsbeitrag
tSBArtikelVW.Enabled = true; tSBArtikelVW.Enabled = true;
progressBarArtikel.Value = 0; progressBarArtikel.Value = 0;
} }
private void buttonAllUpdate_Click(object sender, EventArgs e) private void buttonAllUpdate_Click(object sender, EventArgs e)
{ {
//Update_Artikel(); //Update_Artikel();
@ -637,14 +642,68 @@ namespace Deckungsbeitrag
{ {
this.objectListViewAuftrag.HeaderFormatStyle = Funktionen.GetHeader(); this.objectListViewAuftrag.HeaderFormatStyle = Funktionen.GetHeader();
Generator.GenerateColumns(this.objectListViewAuftrag, typeof(Auftrag), true); Generator.GenerateColumns(this.objectListViewAuftrag, typeof(Auftrag), true);
this.objectListViewAuftrag.SetObjects(alist);
OLVColumn sortcolumn = (OLVColumn)this.objectListViewAuftrag.Columns[1]; // ========== SPALTE 11: BUTTON-COLUMNE ==========
this.objectListViewAuftrag.Sort(sortcolumn); // Spalte 11 (Index 11) als Button-Spalte konfigurieren
OLVColumn buttonColumn = new OLVColumn(); OLVColumn buttonColumn = new OLVColumn();
buttonColumn = (OLVColumn)this.objectListViewAuftrag.Columns[10]; buttonColumn = (OLVColumn)this.objectListViewAuftrag.Columns[11];
buttonColumn.IsButton = true; buttonColumn.IsButton = true;
buttonColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds; buttonColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds;
// ========== IMAGE-LIST ZUWEISEN ==========
// SmallImageList für Icons in Detail-View (16x16 Pixel standard)
this.objectListViewAuftrag.SmallImageList = imagelist; // Voraussetzung: imagelist mit Icon Index 0 gefüllt
// ========== SPALTE 10 & 1: ICON-KOLUMNE ==========
// Spalte 10 als Icon-Spalte: zeigt Icon wenn AufgabeID vorhanden
OLVColumn iconColumn = (OLVColumn)this.objectListViewAuftrag.Columns[10];
iconColumn.ImageGetter = rowObject =>
{
var auftrag = rowObject as Auftrag;
if (auftrag.AufgabeID == null) return null; // null = kein Icon anzeigen
else return 0; // Index 0 aus SmallImageList
};
OLVColumn iColumn = (OLVColumn)this.objectListViewAuftrag.Columns[1];
iColumn.ImageGetter = rowObject =>
{
var _auftrag = rowObject as Auftrag;
if (string.IsNullOrWhiteSpace(Kunde.GetKunde(null, _auftrag.KundeID, null).Anmerkung)) return null; // null = kein Icon anzeigen
else return 1; // Index 0 aus SmallImageList
};
// ========== TOOLTIP FÜR ICON-SPALTE ==========
// Automatischer Cell-Tooltip bei Mouse-Hover über Spalte 10 und 1
this.objectListViewAuftrag.CellToolTipShowing += (s, e) =>
{
// Nur für Icon-Spalte (Index 10) und gültiges Model
if (e.ColumnIndex == 10 && e.Model is Auftrag auftrag)
{
// Lade Bezeichnung der Aufgabe als Tooltip-Text
e.Text = Aufgabe.GetAufgabe(null, auftrag.AufgabeID).Bezeichnung;
}
// Nur für Icon-Spalte (Index 1) und gültiges Model
if (e.ColumnIndex == 1 && e.Model is Auftrag _auftrag)
{
if (!string.IsNullOrWhiteSpace(Kunde.GetKunde(null, _auftrag.KundeID, null).Anmerkung))
{
// Lade Anmerkung als Tooltip-Text
e.Text = Kunde.GetKunde(null, _auftrag.KundeID, null).Anmerkung;
}
}
//TODO: Alle Icons in einer Spalte anzeigen? I für Anmerkung und ! für Aufgabe??
};
// ========== DATEN LADEN ==========
// WICHTIG: SetObjects NACH Column-Konfiguration aufrufen!
this.objectListViewAuftrag.SetObjects(alist);
// ========== SORTIERUNG ==========
// Spalte 2 als primäre Sortier-Spalte festlegen (nach Datenbindung!)
OLVColumn sortcolumn = (OLVColumn)this.objectListViewAuftrag.Columns[2];
this.objectListViewAuftrag.Sort(sortcolumn);
// ========== CHECKBOX-FUNKTIONALITÄT ==========
// Aktiviert Checkboxen basierend auf "IsChecked" Property des Auftrag-Modells
this.objectListViewAuftrag.CheckedAspectName = "IsChecked"; this.objectListViewAuftrag.CheckedAspectName = "IsChecked";
Funktionen.Columns_Resize(this.objectListViewAuftrag); Funktionen.Columns_Resize(this.objectListViewAuftrag);
@ -930,7 +989,7 @@ namespace Deckungsbeitrag
} }
} }
} }
//DONE: DragDrop verbessern //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: GroupBox Realtime verschieben testen. Sonst Endposition nehmen. gb.Location hier entfernen und unten einkommentieren. //DONE: Wenn Fahrer Auftragverwaltung öffnet werden Aufträge mit AuftragStatus "Fertig" angezeigt. Fahrer können dann als "Ausgeliefert" markieren.
//DONE: GroupBox wird an Endposition verschoben. //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.

View File

@ -81,4 +81,4 @@ namespace Deckungsbeitrag
} }
} }
} }
//TODO: Neue Aufgabe Screen erstellen. //DONE: Neue Aufgabe Screen erstellen.

View File

@ -48,7 +48,6 @@ namespace Deckungsbeitrag
{ {
this.letzterLiefertag = letzterLiefertag; this.letzterLiefertag = letzterLiefertag;
} }
public FormNeuerAuftrag(string userid) : this() public FormNeuerAuftrag(string userid) : this()
{ {
this.userid = userid; this.userid = userid;
@ -289,9 +288,32 @@ namespace Deckungsbeitrag
} }
else else
{ {
switch (benutzer.Rolle)
if (benutzer.Rolle == BenutzerRolle.Verwaltung || benutzer.Rolle == BenutzerRolle.Admin) Auftrag.Status = AuftragStatus.Herrichten; {
else Auftrag.Status = AuftragStatus.Aufgelegt; case BenutzerRolle.Verwaltung:
Auftrag.Status = AuftragStatus.Herrichten;
break;
case BenutzerRolle.Fahrer:
Auftrag.Status = AuftragStatus.Abgeholt;
break;
case BenutzerRolle.Admin:
Auftrag.Status = AuftragStatus.Herrichten;
break;
case BenutzerRolle.Waschstrasse:
Auftrag.Status = AuftragStatus.Aufgelegt;
break;
case BenutzerRolle.Master:
break;
case BenutzerRolle.Expedit:
Auftrag.Status = AuftragStatus.Herrichten;
break;
case BenutzerRolle.Frottee:
break;
case BenutzerRolle.Flach:
break;
default:
break;
}
//Wenn SONDERAUFTRAG(STH,STV,STA) dann ARTIKEL speichern. //Wenn SONDERAUFTRAG(STH,STV,STA) dann ARTIKEL speichern.
if (Auftrag.Typ >= AuftragTyp.Inventur) if (Auftrag.Typ >= AuftragTyp.Inventur)
@ -487,3 +509,6 @@ namespace Deckungsbeitrag
} }
} }
} }
//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.

View File

@ -25,6 +25,7 @@ namespace Deckungsbeitrag.AA_Forms
private Aufgabe aufgabe; private Aufgabe aufgabe;
private WSFach fach; private WSFach fach;
private Auftrag extraAuftrag; private Auftrag extraAuftrag;
private List<object> auftragsliste;
public bool ws1transport = false; public bool ws1transport = false;
public bool ws2transport = false; public bool ws2transport = false;
@ -82,8 +83,6 @@ namespace Deckungsbeitrag.AA_Forms
item.Click += AufgabeAuswaehlen_Click; item.Click += AufgabeAuswaehlen_Click;
toolStripDropDownButtonInfo.DropDownItems.Add(item); toolStripDropDownButtonInfo.DropDownItems.Add(item);
} }
} }
/// <summary> /// <summary>
@ -150,8 +149,8 @@ namespace Deckungsbeitrag.AA_Forms
this.aufgabe = null; this.aufgabe = null;
// Neuen Auftrag eingeben. Wenn kein ExtraKunde wird false als extra weitergegeben. // Neuen Auftrag eingeben. Wenn kein ExtraKunde wird false als extra weitergegeben.
Open_NeuerAuftrag(false); //Open_NeuerAuftrag(false); //TODO: Auftragauswahl aufrufen statt NeuerAuftrag. (Wenn Fahrer Aufträge erstellen)
Open_Liste(false);
// Fachliste neu laden damit neuer Auftrag in erstes Fach geladen werden kann. // Fachliste neu laden damit neuer Auftrag in erstes Fach geladen werden kann.
fachliste = WSFach.GetFachliste(maschine); fachliste = WSFach.GetFachliste(maschine);
} }
@ -233,6 +232,7 @@ namespace Deckungsbeitrag.AA_Forms
} }
/// <summary> /// <summary>
/// Wenn eine Info von der Statusleiste gewählt wurde. /// Wenn eine Info von der Statusleiste gewählt wurde.
/// </summary> /// </summary>
@ -249,7 +249,8 @@ namespace Deckungsbeitrag.AA_Forms
if (((Aufgabe)item.Tag).Bezeichnung == "Extra Kunde") if (((Aufgabe)item.Tag).Bezeichnung == "Extra Kunde")
{ {
// Wenn ExtraKunde wird true als extra weitergegeben. // Wenn ExtraKunde wird true als extra weitergegeben.
Open_NeuerAuftrag(true); //Open_NeuerAuftrag(true);
Open_Liste(true);
} }
Fach_speichern(); // Gleiches Fach mit neuem Auftrag = Update. Fach_speichern(); // Gleiches Fach mit neuem Auftrag = Update.
} }
@ -269,6 +270,53 @@ namespace Deckungsbeitrag.AA_Forms
} }
} }
/// <summary>
/// Auftragliste aufrufen.
/// </summary>
/// <param name="extra">Wenn Extrakunde dann true</param>
private void Open_Liste(bool extra)
{
auftragsliste = new List<object>(Auftrag.GetRampeAuftragList());
FormListe liste = new FormListe(auftragsliste, 3);
switch (liste.ShowDialog())
{
case DialogResult.None:
break;
case DialogResult.OK:
if (extra)
{
this.extraAuftrag = liste.auftrag;
this.extraAuftrag.Status = AuftragStatus.Aufgelegt;
if (this.extraAuftrag.Save()[0] != 1) meldung.Speicherfehler();
}
else
{
this.auftrag = liste.auftrag;
this.auftrag.Status = AuftragStatus.Aufgelegt;
if (this.auftrag.Save()[0] != 1) meldung.Speicherfehler();
}
Fach_speichern();
break;
case DialogResult.Cancel:
break;
case DialogResult.Abort:
break;
case DialogResult.Retry:
break;
case DialogResult.Ignore:
break;
case DialogResult.Yes:
Open_NeuerAuftrag(extra);
break;
case DialogResult.No:
break;
default:
break;
}
}
/// <summary> /// <summary>
/// Fach wird gespeichert. Bei Änderungen wird Fach überschrieben. Wenn FachID = 0 oder null wird neues Fach erstellt, sonst überschrieben. /// Fach wird gespeichert. Bei Änderungen wird Fach überschrieben. Wenn FachID = 0 oder null wird neues Fach erstellt, sonst überschrieben.
/// </summary> /// </summary>
@ -283,6 +331,7 @@ namespace Deckungsbeitrag.AA_Forms
else this.fach.AufgabeID = null; else this.fach.AufgabeID = null;
if (this.extraAuftrag != null) this.fach.ExtraAuftragID = this.extraAuftrag.AuftragID; if (this.extraAuftrag != null) this.fach.ExtraAuftragID = this.extraAuftrag.AuftragID;
else this.fach.ExtraAuftragID = null; else this.fach.ExtraAuftragID = null;
if (this.fach.Save() == 1) Panel_Laden(false); if (this.fach.Save() == 1) Panel_Laden(false);
} }
@ -345,7 +394,8 @@ namespace Deckungsbeitrag.AA_Forms
if (Form.ModifierKeys == Keys.None && keyData == Keys.Insert) if (Form.ModifierKeys == Keys.None && keyData == Keys.Insert)
{ {
// Neuer Auftrag wird geöffnet. Wenn nicht ExtraKunde wird false weitergegeben, sonst true. // Neuer Auftrag wird geöffnet. Wenn nicht ExtraKunde wird false weitergegeben, sonst true.
Open_NeuerAuftrag(false); //Open_NeuerAuftrag(false);
Open_Liste(false);
return true; return true;
} }
@ -386,6 +436,11 @@ namespace Deckungsbeitrag.AA_Forms
toolStripDropDownButtonInfo.DropDown.Show(); toolStripDropDownButtonInfo.DropDown.Show();
} }
} }
} }
} }
//DONE: Statt Neuen Auftrag wird Auftragsliste mit Status "abgeholt" angezeigt. Dadurch muss Aufleger weder scannen noch Namen eintippen und suchen.
//DONE: Auch wenn Extra Auftrag benötigt wird funktioniert es über die Auftragsliste.
//DONE: Wenn kein Auftrag gefunden wird, kann ein neuer erstellt werden.
//CHANGES: Aufleger muss keine Aufträge mehr erstellen da Fahrer das machen können.
//CHANGES: Wenn Auftrag nicht gefunden kann er trotzdem einen neuen Erstellen.
//CHANGES: Auftragsliste zeigt hier nur AuftragStatus "Abgeholt" Aufträge.

View File

@ -135,5 +135,4 @@ namespace DatenDB
} }
} }
} }
//TODO: Aktive Property einfügen.
//INSTALL-REMINDER: Spalte Aktiv in DB einfügen. //INSTALL-REMINDER: Spalte Aktiv in DB einfügen.

View File

@ -43,6 +43,38 @@ namespace DatenDB
{ {
} }
public static List<Auftrag> GetFinishingList()
{
DatenbankConnection.GetConnection().Open();
List<Auftrag> resultList = new List<Auftrag>();
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = DatenbankConnection.GetConnection();
cmd.CommandText = $"select {COLUMNS} from {TABLE} where status = 1 order by liefertag asc";
NpgsqlDataReader reader = cmd.ExecuteReader();
while (reader.Read()) resultList.Add(new Auftrag(reader));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<Auftrag> GetRampeAuftragList()
{
DatenbankConnection.GetConnection().Open();
List<Auftrag> resultList = new List<Auftrag>();
NpgsqlCommand cmd = new NpgsqlCommand();
cmd.Connection = DatenbankConnection.GetConnection();
cmd.CommandText = $"select {COLUMNS} from {TABLE} where status = 0 order by liefertag asc";
NpgsqlDataReader reader = cmd.ExecuteReader();
while (reader.Read()) resultList.Add(new Auftrag(reader));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<Auftrag> GetAuftragList(string s, Auftrag auftrag) public static List<Auftrag> GetAuftragList(string s, Auftrag auftrag)
{ {
int? aID = null; int? aID = null;
@ -205,11 +237,11 @@ namespace DatenDB
} }
#region Properties
/// <summary> /// <summary>
/// CheckBoxen zur Auftragsauswahl als erste Spalte. /// CheckBoxen zur Auftragsauswahl als erste Spalte.
/// </summary> /// </summary>
[OLVColumn("Auswählen", CheckBoxes = true, DisplayIndex = 0)] [OLVColumn("Auswählen", CheckBoxes = true, DisplayIndex = 0)]
public bool IsChecked { get; set; } public bool IsChecked { get; set; }
/// <summary> /// <summary>
@ -373,12 +405,9 @@ namespace DatenDB
public int? AufgabeID { get; set; } public int? AufgabeID { get; set; }
[OLVIgnore] [OLVIgnore]
public bool AufgabeErledigt { get; set; } = false; public bool AufgabeErledigt { get; set; } = false;
#endregion
public int[] Save()
public int[] Save()
{ {
DatenbankConnection.GetConnection().Open(); DatenbankConnection.GetConnection().Open();
int[] result = new int[2]; int[] result = new int[2];
@ -424,4 +453,6 @@ namespace DatenDB
} }
} }
//INSTALL-REMINDER: AufgabeID als Spalte in DB hinzufügen. //INSTALL-REMINDER: AufgabeID als Spalte in DB hinzufügen.
//INSTALL-REMINDER: AufgabeErledigt als Spalte in DB hinzufügen. //INSTALL-REMINDER: AufgabeErledigt als Spalte in DB hinzufügen.
//DONE: Neuer Konstruktor für Auftragliste "Rampe". (abgeholte Aufträge die noch nicht aufgelegt sind)
//DONE: Neuer Konstruktor für Auftragliste "Finishing" oder "Aufgelegt". (aufgelegte Aufträge die noch nicht

View File

@ -1097,6 +1097,4 @@ namespace Deckungsbeitrag
return g; return g;
} }
} }
} }
//DONE: Funktionalität klären. MessageBox vor Screenauswahl? oder mit Button im Screen Kamera?

View File

@ -290,7 +290,7 @@ namespace DatenDB
} }
} }
#region Properties
[OLVIgnore] [OLVIgnore]
public int? KundeID { get; set; } public int? KundeID { get; set; }
@ -372,6 +372,7 @@ namespace DatenDB
[OLVIgnore] [OLVIgnore]
public string Anmerkung { get; set; } public string Anmerkung { get; set; }
#endregion
} }
} }
//INSTALL-REMINDER: Spalte Anmerkung in DB hinzufügen. //INSTALL-REMINDER: Spalte Anmerkung in DB hinzufügen.

View File

@ -6,7 +6,7 @@
</sectionGroup> </sectionGroup>
</configSections> </configSections>
<appSettings> <appSettings>
<add key="ConnectionString" value="user id=postgres;password=Ki985941Wi;host=10.10.10.1;port=5432;database=Test_Wirl;Timeout=5" /> <add key="ConnectionString" value="user id=msfrottee01;password=5KsA4BSf4P;host=10.10.10.1;port=5432;database=Test_Wirl;Timeout=30" />
<add key="SortimentPfad" value="N:\\BÜRO\\SOCOM\\Zaehlscheine\\Kundensortiment.txt" /> <add key="SortimentPfad" value="N:\\BÜRO\\SOCOM\\Zaehlscheine\\Kundensortiment.txt" />
<add key="BildPfad" value="C:\\Users\\KilianWirl\\OneDrive - gehgassi GmbH\\Wäscherei Wirl\\Programme\\Deckungsbeitrag\\Deckungsbeitrag\\Star.png" /> <add key="BildPfad" value="C:\\Users\\KilianWirl\\OneDrive - gehgassi GmbH\\Wäscherei Wirl\\Programme\\Deckungsbeitrag\\Deckungsbeitrag\\Star.png" />
<add key="QrPfad" value="N:\\BÜRO\\SOCOM\\Zaehlscheine\\qrweb.png" /> <add key="QrPfad" value="N:\\BÜRO\\SOCOM\\Zaehlscheine\\qrweb.png" />

View File

@ -1,8 +1,11 @@
using DatenDB; using DatenDB;
using Deckungsbeitrag.AA_Forms; using Deckungsbeitrag.AA_Forms;
using Microsoft.Win32;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Configuration; using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Linq; using System.Linq;
using System.Management; using System.Management;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
@ -27,7 +30,53 @@ namespace Deckungsbeitrag
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Screen[] screens = Screen.AllScreens; Screen[] screens = Screen.AllScreens;
if (userid.StartsWith("ms") | userid.StartsWith("ps")) string readmePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Verwaltung_ReadMe.txt");
// Prüfe, ob ReadMe schon einmal geöffnet wurde
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\KilianWirlGmbH\Verwaltung"))
{
if (key == null || key.GetValue("ReadMeShown") == null)
{
// Erstes Mal nach Installation
if (File.Exists(readmePath))
{
Process.Start(new ProcessStartInfo
{
FileName = readmePath,
UseShellExecute = true
});
// WICHTIG: Warte 2 Sekunden (ReadMe öffnen)
System.Threading.Thread.Sleep(2000);
// Abbruch-Dialog
DialogResult result = MessageBox.Show(
"ReadMe wurde geöffnet.\n\n" +
"Falls INSTALL-REMINDER noch Änderungen enthält,\n" +
"soll die Anwendung jetzt ABGEBROCHEN werden?\n\n" +
"[JA = Abbruch | NEIN = Fortfahren]",
"Nach Installation - Update prüfen",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button1 // Standard: Abbruch
);
if (result == DialogResult.Yes)
{
MessageBox.Show("Installation wurde abgebrochen.\nBitte Änderungen vornehmen und neu installieren.",
"Abbruch", MessageBoxButtons.OK, MessageBoxIcon.Information);
return; // App beenden
}
// Markiere als gezeigt
Registry.CurrentUser.CreateSubKey(@"Software\KilianWirlGmbH\Verwaltung")
.SetValue("ReadMeShown", 1);
}
}
}
if (userid.StartsWith("ms") | userid.StartsWith("ps"))
{ {
if (userid.Contains("wstrasse")) Application.Run(new FormWSVerfolgung(userid)); if (userid.Contains("wstrasse")) Application.Run(new FormWSVerfolgung(userid));
else Application.Run(new FormFehlmengeCount(userid)); else Application.Run(new FormFehlmengeCount(userid));
@ -74,5 +123,4 @@ namespace Deckungsbeitrag
} }
} }
} }
} }
//DONE: Für Maschinen keine Anmeldung notwendig.

View File

@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// //
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben: // indem Sie "*" wie unten gezeigt eingeben:
[assembly: AssemblyVersion("1.0.3.0")] [assembly: AssemblyVersion("1.0.4.2")]
[assembly: AssemblyFileVersion("1.0.3.0")] [assembly: AssemblyFileVersion("1.0.4.2")]

View File

@ -140,6 +140,16 @@ namespace Deckungsbeitrag.Properties {
} }
} }
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap StatisticsWarning_16x {
get {
object obj = ResourceManager.GetObject("StatisticsWarning_16x", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary> /// </summary>

View File

@ -121,11 +121,17 @@
<data name="Checkmark_blue_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Checkmark_blue_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Checkmark_blue_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\Checkmark_blue_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="PenOne_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PenOne_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="InformationSymbol_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="InformationSymbol_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\InformationSymbol_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\InformationSymbol_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="WarningRule_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Monaco_Settings_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\WarningRule_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\Monaco_Settings_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Exclamation_Red" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\weather_warning_signal_alert_exclamation_icon_124159.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="UpdatedScript_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="UpdatedScript_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdatedScript_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\UpdatedScript_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -136,16 +142,13 @@
<data name="Close_red_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Close_red_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Close_red_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\Close_red_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Monaco_Settings_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="WarningRule_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Monaco_Settings_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\WarningRule_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Exclamation_Red" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\weather_warning_signal_alert_exclamation_icon_124159.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Close_WhiteNoHalo_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Close_WhiteNoHalo_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Close_WhiteNoHalo_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\Close_WhiteNoHalo_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="PenOne_16x" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="StatisticsWarning_16x" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\PenOne_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\StatisticsWarning_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
</root> </root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
# ===================================== # =====================================
# Skript: UpdateVerwaltungReadMe.ps1 - mit INSTALL-REMINDER # Skript: UpdateVerwaltungReadMe.ps1 - mit INSTALL-REMINDER + CHANGES
# ===================================== # =====================================
$ProjectDir = Split-Path $MyInvocation.MyCommand.Path -Parent $ProjectDir = Split-Path $MyInvocation.MyCommand.Path -Parent
@ -19,13 +19,16 @@ Build-Info:
- Erledigte TODOs: ##DONE_COUNT## - Erledigte TODOs: ##DONE_COUNT##
- Offene TODOs: ##OPEN_COUNT## - Offene TODOs: ##OPEN_COUNT##
- Install-Reminders: ##REMINDER_COUNT## - Install-Reminders: ##REMINDER_COUNT##
- Changes: ##CHANGE_COUNT##
##INSTALL_REMINDERS##
##CHANGES##
##DONE_TODOS## ##DONE_TODOS##
##OPEN_TODOS## ##OPEN_TODOS##
##INSTALL_REMINDERS##
Installation: ##BUILD_DATE## Installation: ##BUILD_DATE##
===================================== =====================================
"@ | Out-File $readmePath -Encoding UTF8 "@ | Out-File $readmePath -Encoding UTF8
@ -47,6 +50,7 @@ if (Test-Path $assemblyInfoPath) {
$openTodos = @() $openTodos = @()
$doneTodos = @() $doneTodos = @()
$installReminders = @() $installReminders = @()
$changes = @()
$csFiles = Get-ChildItem -Path $ProjectDir -Recurse -Filter "*.cs" -ErrorAction SilentlyContinue $csFiles = Get-ChildItem -Path $ProjectDir -Recurse -Filter "*.cs" -ErrorAction SilentlyContinue
foreach ($file in $csFiles) { foreach ($file in $csFiles) {
@ -72,12 +76,20 @@ foreach ($file in $csFiles) {
$txt = $match.Groups[1].Value.Trim() $txt = $match.Groups[1].Value.Trim()
if ($txt) { $installReminders += "⚙️ $txt [$($file.Name)]" } if ($txt) { $installReminders += "⚙️ $txt [$($file.Name)]" }
} }
# CHANGES erkennen
$changeMatches = [regex]::Matches($content, '//\s*CHANGES\s*:?\s*(.+?)(?=\r?\n|//|$)', 'IgnoreCase')
foreach ($match in $changeMatches) {
$txt = $match.Groups[1].Value.Trim()
if ($txt) { $changes += "$txt [$($file.Name)]" }
}
} }
# Duplikate entfernen # Duplikate entfernen
$openTodos = $openTodos | Sort-Object | Get-Unique $openTodos = $openTodos | Sort-Object | Get-Unique
$doneTodos = $doneTodos | Sort-Object | Get-Unique $doneTodos = $doneTodos | Sort-Object | Get-Unique
$installReminders = $installReminders | Sort-Object | Get-Unique $installReminders = $installReminders | Sort-Object | Get-Unique
$changes = $changes | Sort-Object | Get-Unique
# Formatierte Abschnitte # Formatierte Abschnitte
$doneSection = if ($doneTodos.Count -gt 0) { $doneSection = if ($doneTodos.Count -gt 0) {
@ -101,15 +113,23 @@ $installSection = if ($installReminders.Count -gt 0) {
@("Keine Install-Reminder vorhanden ✅") @("Keine Install-Reminder vorhanden ✅")
} }
$changesSection = if ($changes.Count -gt 0) {
@("=== ✨ CHANGES ($($changes.Count)) ===") +
($changes | ForEach-Object { "- $_" })
} else {
@("Keine Changes vorhanden")
}
# Textaufbereitung # Textaufbereitung
$doneText = $doneSection -join "`r`n" $doneText = $doneSection -join "`r`n"
$openText = $openSection -join "`r`n" $openText = $openSection -join "`r`n"
$installText = $installSection -join "`r`n" $installText = $installSection -join "`r`n"
$changesText = $changesSection -join "`r`n"
$custom = "Release Build" $custom = "Release Build"
$buildDate = Get-Date -Format "dd.MM.yyyy HH:mm" $buildDate = Get-Date -Format "dd.MM.yyyy HH:mm"
# ReadMe aufbauen # ReadMe aufbauen (CHANGES nach INSTALL-REMINDER)
$readmeContent = @" $readmeContent = @"
===================================== =====================================
NEUIGKEITEN - Version $version NEUIGKEITEN - Version $version
@ -120,10 +140,13 @@ Build-Info:
- Erledigte TODOs: $($doneTodos.Count) - Erledigte TODOs: $($doneTodos.Count)
- Offene TODOs: $($openTodos.Count) - Offene TODOs: $($openTodos.Count)
- Install-Reminders: $($installReminders.Count) - Install-Reminders: $($installReminders.Count)
- Changes: $($changes.Count)
$installText $installText
$changesText
`r`n$doneText `r`n$doneText
`r`n$openText `r`n$openText
@ -136,3 +159,4 @@ Installation: $buildDate
$readmeContent | Out-File $readmePath -Encoding UTF8 $readmeContent | Out-File $readmePath -Encoding UTF8
Write-Host "✅ Verwaltung_ReadMe.txt erfolgreich aktualisiert!" Write-Host "✅ Verwaltung_ReadMe.txt erfolgreich aktualisiert!"
Write-Host "📊 Stats: $($doneTodos.Count) DONE, $($openTodos.Count) TODO, $($installReminders.Count) REMINDER, $($changes.Count) CHANGES"

View File

@ -494,6 +494,8 @@
<Content Include="ILLink\ILLink.Descriptors.LibraryBuild.xml" /> <Content Include="ILLink\ILLink.Descriptors.LibraryBuild.xml" />
<None Include="Resources\InformationSymbol_16x.png" /> <None Include="Resources\InformationSymbol_16x.png" />
<None Include="Resources\PenOne_16x.png" /> <None Include="Resources\PenOne_16x.png" />
<None Include="Resources\StatisticsWarning_16x.png" />
<Content Include="Verwaltung_ReadMe.txt" />
<Content Include="wirlneu_transparent %281%29.ico" /> <Content Include="wirlneu_transparent %281%29.ico" />
<None Include="Resources\Close_WhiteNoHalo_16x.png" /> <None Include="Resources\Close_WhiteNoHalo_16x.png" />
<None Include="Resources\Monaco_Settings_16x.png" /> <None Include="Resources\Monaco_Settings_16x.png" />

View File

@ -1,12 +1,13 @@
===================================== =====================================
NEUIGKEITEN - Version 1.0.3.0 NEUIGKEITEN - Version 1.0.4.2
===================================== =====================================
Build-Info: Build-Info:
- Build-Typ: Release Build - Build-Typ: Release Build
- Erledigte TODOs: 13 - Erledigte TODOs: 19
- Offene TODOs: 22 - Offene TODOs: 20
- Install-Reminders: 5 - Install-Reminders: 5
- Changes: 7
=== ⚙️ INSTALL-REMINDER (5) === === ⚙️ INSTALL-REMINDER (5) ===
@ -16,37 +17,51 @@ Build-Info:
- ⚙️ Spalte Anmerkung in DB hinzufügen. [Kunde.cs] - ⚙️ Spalte Anmerkung in DB hinzufügen. [Kunde.cs]
- ⚙️ Spalte Aufgabe Count in DB hinzufügen. [Kunde.cs] - ⚙️ Spalte Aufgabe Count in DB hinzufügen. [Kunde.cs]
=== ✨ CHANGES (7) ===
- ✨ 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]
- ✨ Fahrer können abgeholte Aufträge erstellen und ausgelieferte Aufträge markieren. [FormMain.cs]
- ✨ Statistik für Expedit. (Same as in Main) [FormExpedit.cs]
- ✨ Wenn Auftrag nicht gefunden kann er trotzdem einen neuen Erstellen. [FormWSVerfolgung.cs]
=== ✅ ERLEDIGTE TODOs (13) ===
=== ✅ ERLEDIGTE TODOs (19) ===
- ✅ : Auch wenn Extra Auftrag benötigt wird funktioniert es über die Auftragsliste. [FormWSVerfolgung.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] - ✅ : Bei Transport wir ein Fach mit Aktuellem Auftrag erstellt. Das Alte wird bei Transport gespeichert. [FormAusschlager.cs]
- ✅ : Breite der GridView festlegen. [FormExpedit.cs] - ✅ : FahrerAufträge erhalten Status "Abgeholt". [FormNeuerAuftrag.cs]
- ✅ : DragDrop verbessern [FormMain.cs] - ✅ : Kunde anzeigen Reihenfolge der Spalten zuerst Suchtext danach Name. [FormListe.cs]
- ✅ : Funktionalität klären. MessageBox vor Screenauswahl? oder mit Button im Screen Kamera? [Funktionen.cs] - ✅ : Listentyp.Auftragliste implementiert um über FormWSVerfolgung die Auftragliste abrufen zu können. [FormListe.cs]
- ✅ : Für Maschinen keine Anmeldung notwendig. [Program.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]
- ✅ : GroupBox Realtime verschieben testen. Sonst Endposition nehmen. gb.Location hier entfernen und unten einkommentieren. [FormMain.cs] - ✅ : Neue Aufgabe Screen erstellen. [FormNeueAufgabe.cs]
- ✅ : GroupBox wird an Endposition verschoben. [FormMain.cs] - ✅ : Neuer Konstruktor für Auftragliste "Finishing" oder "Aufgelegt". (aufgelegte Aufträge die noch nicht [Auftrag.cs]
- ✅ : Kunde Anmerkung anzeigen. Spezielle Farbe verwenden. Label oder Textbox? [FormFehlmengeCount.cs] - ✅ : Neuer Konstruktor für Auftragliste "Rampe". (abgeholte Aufträge die noch nicht aufgelegt sind) [Auftrag.cs]
- ✅ : OLV-Item refresh. Neuer Liefertag speichern. [FormExpedit.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]
- ✅ : Testen ob ausblenden der Button Column funktioniert. Benutzer-Verwaltung oder Frottee oder Flach notwendig. [FormExpedit.cs] - ✅ : Statt Neuen Auftrag wird Auftragsliste mit Status "abgeholt" angezeigt. Dadurch muss Aufleger weder scannen noch Namen eintippen und suchen. [FormWSVerfolgung.cs]
- ✅ : TextBox Anmerkung ausprogrammieren. (Immer Enabled, Speichern bei Leave oder Button) [FormKundeVW.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]
- ✅ : Wenn NeuerAuftrag gewählt Fach ändern nicht vergessen. [FormAusschlager.cs] - ✅ : Wenn NeuerAuftrag gewählt Fach ändern nicht vergessen. [FormAusschlager.cs]
- ✅ : Zeichenanzahl aktuell/maximal anzeigen. [FormKundeVW.cs] - ✅ : Wenn NeuerAuftrag gewählt wie gehts weiter? [FormAusschlager.cs]
=== 🔄 OFFENE TODOs (22) === === 🔄 OFFENE TODOs (20) ===
- 🔄 Aktive Property einfügen. [Aufgabe.cs]
- 🔄 Alle Icons in einer Spalte anzeigen? I für Anmerkung und ! für Aufgabe?? [FormExpedit.cs] - 🔄 Alle Icons in einer Spalte anzeigen? I für Anmerkung und ! für Aufgabe?? [FormExpedit.cs]
- 🔄 Alle Icons in einer Spalte anzeigen? I für Anmerkung und ! für Aufgabe?? [FormMain.cs]
- 🔄 Artikel Update weiter testen und programmieren. Für ArtikelKurzliste ausprogrammieren. [FormMain.cs] - 🔄 Artikel Update weiter testen und programmieren. Für ArtikelKurzliste ausprogrammieren. [FormMain.cs]
- 🔄 Auftragauswahl aufrufen statt NeuerAuftrag. (Wenn Fahrer Aufträge erstellen) [FormWSVerfolgung.cs]
- 🔄 Ausprobieren ob die Ausrichtung jetzt richtig ist. Sowohl beim ersten wie auch zweiten Mal. [Funktionen.cs] - 🔄 Ausprobieren ob die Ausrichtung jetzt richtig ist. Sowohl beim ersten wie auch zweiten Mal. [Funktionen.cs]
- 🔄 Deaktivieren wenn SPS funktioniert. Transport wird simuliert. [FormWSVerfolgung.cs] - 🔄 Deaktivieren wenn SPS funktioniert. Transport wird simuliert. [FormWSVerfolgung.cs]
- 🔄 Einkommentieren wenn ArtikelUpdate auf ArtikelKurzliste umgestellt werden kann. [FormMain.cs] - 🔄 Einkommentieren wenn ArtikelUpdate auf ArtikelKurzliste umgestellt werden kann. [FormMain.cs]
- 🔄 Eventuell auch andere ListViews einbinden? [Funktionen.cs] - 🔄 Eventuell auch andere ListViews einbinden? [Funktionen.cs]
- 🔄 Eventuell bei erstem Erscheinen Info anzeigen. [FormFehlmengeCount.cs]
- 🔄 für Ladescreen den Progressbar programieren. (perplexity fragen wie der Status an einen anderen Screen übergeben werden kann) [FormMain.cs] - 🔄 für Ladescreen den Progressbar programieren. (perplexity fragen wie der Status an einen anderen Screen übergeben werden kann) [FormMain.cs]
- 🔄 Hier Settings speichern mit UserSettingsManager Klasse. [FormEinstellung.cs] - 🔄 Hier Settings speichern mit UserSettingsManager Klasse. [FormEinstellung.cs]
- 🔄 LadenScreen anzeigen etc. [FormMain.cs] - 🔄 LadenScreen anzeigen etc. [FormMain.cs]
- 🔄 Nach Test und Rücksprache eventuell wieder umbauen. Benutzer.Rolle etc. [FormFehlmengeCount.cs] - 🔄 Nach Test und Rücksprache eventuell wieder umbauen. Benutzer.Rolle etc. [FormFehlmengeCount.cs]
- 🔄 Neue Aufgabe Screen erstellen. [FormNeueAufgabe.cs]
- 🔄 Settings hier ändern auf UserSettingsManager Klasse. [FormEinstellung.cs] - 🔄 Settings hier ändern auf UserSettingsManager Klasse. [FormEinstellung.cs]
- 🔄 Testen ob Get_ArtikelKurzliste funktioniert. [FormMain.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] - 🔄 Testen ob SWS-QRCodes gelesen werden können. Nur notwendig bis alle SWS-QRCodes richtig gedruckt und gelesen werden. [Kunde.cs]
@ -55,7 +70,6 @@ Build-Info:
- 🔄 UserSetting Properties eintragen und in EinstellungsScreen abrufen. [UserSettingsManager.cs] - 🔄 UserSetting Properties eintragen und in EinstellungsScreen abrufen. [UserSettingsManager.cs]
- 🔄 Weitere Properties von oben hier zuweisen [UserSettingsManager.cs] - 🔄 Weitere Properties von oben hier zuweisen [UserSettingsManager.cs]
- 🔄 Wenn Nachwäsche oder Müllwäsche alle Artikel anzeigen. [FormFehlmengeCount.cs] - 🔄 Wenn Nachwäsche oder Müllwäsche alle Artikel anzeigen. [FormFehlmengeCount.cs]
- 🔄 Wenn NeuerAuftrag gewählt wie gehts weiter? [FormAusschlager.cs]
Installation: 15.12.2025 18:26 Installation: 16.12.2025 16:57
===================================== =====================================