div. kleinere Änderungen

This commit is contained in:
Kilian Wirl 2026-02-11 13:17:17 +01:00
parent ea075830cc
commit 4c5da77b42
19 changed files with 908 additions and 603 deletions

View File

@ -32,6 +32,7 @@
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.checkBox1 = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit();
this.SuspendLayout();
//
@ -39,7 +40,7 @@
//
chartArea1.Name = "ChartArea1";
this.chart1.ChartAreas.Add(chartArea1);
this.chart1.Dock = System.Windows.Forms.DockStyle.Fill;
this.chart1.Dock = System.Windows.Forms.DockStyle.Top;
legend1.Name = "Legend1";
this.chart1.Legends.Add(legend1);
this.chart1.Location = new System.Drawing.Point(0, 0);
@ -48,26 +49,42 @@
series1.Legend = "Legend1";
series1.Name = "Series1";
this.chart1.Series.Add(series1);
this.chart1.Size = new System.Drawing.Size(585, 450);
this.chart1.Size = new System.Drawing.Size(585, 413);
this.chart1.TabIndex = 0;
this.chart1.Text = "chart1";
//
// checkBox1
//
this.checkBox1.AutoSize = true;
this.checkBox1.Checked = true;
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Indeterminate;
this.checkBox1.Location = new System.Drawing.Point(163, 472);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(80, 17);
this.checkBox1.TabIndex = 1;
this.checkBox1.Text = "checkBox1";
this.checkBox1.ThreeState = true;
this.checkBox1.UseVisualStyleBackColor = true;
//
// FehlmengeChart
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(585, 450);
this.ClientSize = new System.Drawing.Size(585, 582);
this.Controls.Add(this.checkBox1);
this.Controls.Add(this.chart1);
this.Name = "FehlmengeChart";
this.Text = "FehlmengeChart";
this.Load += new System.EventHandler(this.FehlmengeChart_Load);
((System.ComponentModel.ISupportInitialize)(this.chart1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.DataVisualization.Charting.Chart chart1;
private System.Windows.Forms.CheckBox checkBox1;
}
}

View File

@ -86,6 +86,16 @@
this.tabPageDrucker = new System.Windows.Forms.TabPage();
this.tabPageTourenplanung = new System.Windows.Forms.TabPage();
this.groupBoxRegeln = new System.Windows.Forms.GroupBox();
this.comboBox5 = new System.Windows.Forms.ComboBox();
this.label23 = new System.Windows.Forms.Label();
this.comboBox3 = new System.Windows.Forms.ComboBox();
this.comboBox4 = new System.Windows.Forms.ComboBox();
this.label22 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.label21 = new System.Windows.Forms.Label();
this.comboBoxLT2 = new System.Windows.Forms.ComboBox();
this.comboBoxLT1 = new System.Windows.Forms.ComboBox();
this.label17 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
@ -95,16 +105,6 @@
this.label15 = new System.Windows.Forms.Label();
this.tabPageAllgemein = new System.Windows.Forms.TabPage();
this.panelButtons = new System.Windows.Forms.Panel();
this.comboBoxLT1 = new System.Windows.Forms.ComboBox();
this.comboBoxLT2 = new System.Windows.Forms.ComboBox();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.label21 = new System.Windows.Forms.Label();
this.comboBox3 = new System.Windows.Forms.ComboBox();
this.comboBox4 = new System.Windows.Forms.ComboBox();
this.label22 = new System.Windows.Forms.Label();
this.comboBox5 = new System.Windows.Forms.ComboBox();
this.label23 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.numUpDownMinWert)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numUpDownMaxWert)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numUpDownAnzahl)).BeginInit();
@ -735,7 +735,7 @@
this.groupBoxFarben.Controls.Add(this.buttonHubband);
this.groupBoxFarben.Controls.Add(this.buttonTrockner);
this.groupBoxFarben.Font = new System.Drawing.Font("Microsoft Sans Serif", 16.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBoxFarben.Location = new System.Drawing.Point(24, 121);
this.groupBoxFarben.Location = new System.Drawing.Point(7, 5);
this.groupBoxFarben.Margin = new System.Windows.Forms.Padding(2);
this.groupBoxFarben.Name = "groupBoxFarben";
this.groupBoxFarben.Padding = new System.Windows.Forms.Padding(2);
@ -971,6 +971,99 @@
this.groupBoxRegeln.TabIndex = 48;
this.groupBoxRegeln.TabStop = false;
//
// comboBox5
//
this.comboBox5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox5.FormattingEnabled = true;
this.comboBox5.Location = new System.Drawing.Point(235, 87);
this.comboBox5.Name = "comboBox5";
this.comboBox5.Size = new System.Drawing.Size(45, 21);
this.comboBox5.TabIndex = 58;
//
// label23
//
this.label23.AutoSize = true;
this.label23.Location = new System.Drawing.Point(205, 90);
this.label23.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(25, 13);
this.label23.TabIndex = 57;
this.label23.Text = "und";
//
// comboBox3
//
this.comboBox3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox3.FormattingEnabled = true;
this.comboBox3.Location = new System.Drawing.Point(155, 87);
this.comboBox3.Name = "comboBox3";
this.comboBox3.Size = new System.Drawing.Size(45, 21);
this.comboBox3.TabIndex = 56;
//
// comboBox4
//
this.comboBox4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox4.FormattingEnabled = true;
this.comboBox4.Location = new System.Drawing.Point(75, 87);
this.comboBox4.Name = "comboBox4";
this.comboBox4.Size = new System.Drawing.Size(45, 21);
this.comboBox4.TabIndex = 55;
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(125, 90);
this.label22.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(25, 13);
this.label22.TabIndex = 54;
this.label22.Text = "und";
//
// comboBox1
//
this.comboBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(155, 43);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(45, 21);
this.comboBox1.TabIndex = 53;
//
// comboBox2
//
this.comboBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Location = new System.Drawing.Point(75, 40);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(45, 21);
this.comboBox2.TabIndex = 52;
//
// label21
//
this.label21.AutoSize = true;
this.label21.Location = new System.Drawing.Point(125, 43);
this.label21.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(25, 13);
this.label21.TabIndex = 51;
this.label21.Text = "und";
//
// comboBoxLT2
//
this.comboBoxLT2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxLT2.FormattingEnabled = true;
this.comboBoxLT2.Location = new System.Drawing.Point(155, 13);
this.comboBoxLT2.Name = "comboBoxLT2";
this.comboBoxLT2.Size = new System.Drawing.Size(45, 21);
this.comboBoxLT2.TabIndex = 50;
//
// comboBoxLT1
//
this.comboBoxLT1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxLT1.FormattingEnabled = true;
this.comboBoxLT1.Location = new System.Drawing.Point(75, 13);
this.comboBoxLT1.Name = "comboBoxLT1";
this.comboBoxLT1.Size = new System.Drawing.Size(45, 21);
this.comboBoxLT1.TabIndex = 49;
//
// label17
//
this.label17.AutoSize = true;
@ -1065,99 +1158,6 @@
this.panelButtons.Size = new System.Drawing.Size(1192, 49);
this.panelButtons.TabIndex = 50;
//
// comboBoxLT1
//
this.comboBoxLT1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxLT1.FormattingEnabled = true;
this.comboBoxLT1.Location = new System.Drawing.Point(75, 13);
this.comboBoxLT1.Name = "comboBoxLT1";
this.comboBoxLT1.Size = new System.Drawing.Size(45, 21);
this.comboBoxLT1.TabIndex = 49;
//
// comboBoxLT2
//
this.comboBoxLT2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxLT2.FormattingEnabled = true;
this.comboBoxLT2.Location = new System.Drawing.Point(155, 13);
this.comboBoxLT2.Name = "comboBoxLT2";
this.comboBoxLT2.Size = new System.Drawing.Size(45, 21);
this.comboBoxLT2.TabIndex = 50;
//
// comboBox1
//
this.comboBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(155, 43);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(45, 21);
this.comboBox1.TabIndex = 53;
//
// comboBox2
//
this.comboBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Location = new System.Drawing.Point(75, 40);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(45, 21);
this.comboBox2.TabIndex = 52;
//
// label21
//
this.label21.AutoSize = true;
this.label21.Location = new System.Drawing.Point(125, 43);
this.label21.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(25, 13);
this.label21.TabIndex = 51;
this.label21.Text = "und";
//
// comboBox3
//
this.comboBox3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox3.FormattingEnabled = true;
this.comboBox3.Location = new System.Drawing.Point(155, 87);
this.comboBox3.Name = "comboBox3";
this.comboBox3.Size = new System.Drawing.Size(45, 21);
this.comboBox3.TabIndex = 56;
//
// comboBox4
//
this.comboBox4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox4.FormattingEnabled = true;
this.comboBox4.Location = new System.Drawing.Point(75, 87);
this.comboBox4.Name = "comboBox4";
this.comboBox4.Size = new System.Drawing.Size(45, 21);
this.comboBox4.TabIndex = 55;
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(125, 90);
this.label22.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(25, 13);
this.label22.TabIndex = 54;
this.label22.Text = "und";
//
// comboBox5
//
this.comboBox5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBox5.FormattingEnabled = true;
this.comboBox5.Location = new System.Drawing.Point(235, 87);
this.comboBox5.Name = "comboBox5";
this.comboBox5.Size = new System.Drawing.Size(45, 21);
this.comboBox5.TabIndex = 58;
//
// label23
//
this.label23.AutoSize = true;
this.label23.Location = new System.Drawing.Point(205, 90);
this.label23.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(25, 13);
this.label23.TabIndex = 57;
this.label23.Text = "und";
//
// FormEinstellung
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

View File

@ -29,10 +29,10 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormExpedit));
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Title title1 = new System.Windows.Forms.DataVisualization.Charting.Title();
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.Title title2 = new System.Windows.Forms.DataVisualization.Charting.Title();
this.label10 = new System.Windows.Forms.Label();
this.buttonDrucken = new System.Windows.Forms.Button();
this.groupBoxEtikett = new System.Windows.Forms.GroupBox();
@ -85,7 +85,7 @@
this.labelZahl1 = new System.Windows.Forms.Label();
this.labelStatistik1 = new System.Windows.Forms.Label();
this.buttonSuchen = new System.Windows.Forms.Button();
this.buttonNW = new System.Windows.Forms.Button();
this.buttonReklamation = new System.Windows.Forms.Button();
this.buttonSWS_Drucken = new System.Windows.Forms.Button();
this.buttonStats = new System.Windows.Forms.Button();
this.buttonEinstellung = new System.Windows.Forms.Button();
@ -161,7 +161,7 @@
this.groupBoxEtikett.Controls.Add(this.label10);
this.groupBoxEtikett.Controls.Add(this.buttonKundeNr);
this.groupBoxEtikett.ForeColor = System.Drawing.Color.White;
this.groupBoxEtikett.Location = new System.Drawing.Point(292, 650);
this.groupBoxEtikett.Location = new System.Drawing.Point(668, 650);
this.groupBoxEtikett.Margin = new System.Windows.Forms.Padding(2);
this.groupBoxEtikett.Name = "groupBoxEtikett";
this.groupBoxEtikett.Padding = new System.Windows.Forms.Padding(2);
@ -540,6 +540,8 @@
//
// objectListViewSonder
//
this.objectListViewSonder.AlternateRowBackColor = System.Drawing.Color.LightBlue;
this.objectListViewSonder.CellEditActivation = BrightIdeasSoftware.ObjectListView.CellEditActivateMode.DoubleClick;
this.objectListViewSonder.CellEditUseWholeCell = false;
this.objectListViewSonder.Cursor = System.Windows.Forms.Cursors.Default;
this.objectListViewSonder.Dock = System.Windows.Forms.DockStyle.Fill;
@ -548,13 +550,18 @@
this.objectListViewSonder.HideSelection = false;
this.objectListViewSonder.Location = new System.Drawing.Point(3, 3);
this.objectListViewSonder.Name = "objectListViewSonder";
this.objectListViewSonder.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.Submenu;
this.objectListViewSonder.Size = new System.Drawing.Size(884, 581);
this.objectListViewSonder.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.objectListViewSonder.TabIndex = 2;
this.objectListViewSonder.TintSortColumn = true;
this.objectListViewSonder.UseAlternatingBackColors = true;
this.objectListViewSonder.UseCompatibleStateImageBehavior = false;
this.objectListViewSonder.UseHotControls = false;
this.objectListViewSonder.View = System.Windows.Forms.View.Details;
this.objectListViewSonder.ButtonClick += new System.EventHandler<BrightIdeasSoftware.CellClickEventArgs>(this.objectListViewAuftrag_ButtonClick);
this.objectListViewSonder.CellClick += new System.EventHandler<BrightIdeasSoftware.CellClickEventArgs>(this.objectListViewAuftrag_CellClick);
this.objectListViewSonder.FormatCell += new System.EventHandler<BrightIdeasSoftware.FormatCellEventArgs>(this.objectListViewAuftrag_FormatCell);
//
// tabPageAll
//
@ -884,7 +891,7 @@
this.buttonSuchen.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonSuchen.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonSuchen.ForeColor = System.Drawing.Color.Black;
this.buttonSuchen.Location = new System.Drawing.Point(67, 649);
this.buttonSuchen.Location = new System.Drawing.Point(209, 649);
this.buttonSuchen.Margin = new System.Windows.Forms.Padding(2);
this.buttonSuchen.Name = "buttonSuchen";
this.buttonSuchen.Size = new System.Drawing.Size(200, 41);
@ -893,21 +900,21 @@
this.buttonSuchen.UseVisualStyleBackColor = false;
this.buttonSuchen.Click += new System.EventHandler(this.buttonSuchen_Click);
//
// buttonNW
// buttonReklamation
//
this.buttonNW.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.buttonNW.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.buttonNW.FlatAppearance.BorderSize = 3;
this.buttonNW.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonNW.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonNW.ForeColor = System.Drawing.Color.White;
this.buttonNW.Location = new System.Drawing.Point(4, 649);
this.buttonNW.Name = "buttonNW";
this.buttonNW.Size = new System.Drawing.Size(58, 41);
this.buttonNW.TabIndex = 64;
this.buttonNW.Text = "NW";
this.buttonNW.UseVisualStyleBackColor = true;
this.buttonNW.Click += new System.EventHandler(this.buttonNW_Click);
this.buttonReklamation.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.buttonReklamation.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.buttonReklamation.FlatAppearance.BorderSize = 3;
this.buttonReklamation.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonReklamation.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonReklamation.ForeColor = System.Drawing.Color.White;
this.buttonReklamation.Location = new System.Drawing.Point(4, 649);
this.buttonReklamation.Name = "buttonReklamation";
this.buttonReklamation.Size = new System.Drawing.Size(200, 41);
this.buttonReklamation.TabIndex = 64;
this.buttonReklamation.Text = "Reklamationen";
this.buttonReklamation.UseVisualStyleBackColor = true;
this.buttonReklamation.Click += new System.EventHandler(this.buttonReklamation_Click);
//
// buttonSWS_Drucken
//
@ -959,26 +966,26 @@
| System.Windows.Forms.AnchorStyles.Right)));
this.chartFehlmenge.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.chartFehlmenge.BorderSkin.PageColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
chartArea1.InnerPlotPosition.Auto = false;
chartArea1.InnerPlotPosition.Height = 92.2266F;
chartArea1.InnerPlotPosition.Width = 76.05405F;
chartArea1.InnerPlotPosition.X = 20.54054F;
chartArea1.Name = "ChartArea1";
this.chartFehlmenge.ChartAreas.Add(chartArea1);
legend1.Name = "Legend1";
this.chartFehlmenge.Legends.Add(legend1);
chartArea2.InnerPlotPosition.Auto = false;
chartArea2.InnerPlotPosition.Height = 92.2266F;
chartArea2.InnerPlotPosition.Width = 76.05405F;
chartArea2.InnerPlotPosition.X = 20.54054F;
chartArea2.Name = "ChartArea1";
this.chartFehlmenge.ChartAreas.Add(chartArea2);
legend2.Name = "Legend1";
this.chartFehlmenge.Legends.Add(legend2);
this.chartFehlmenge.Location = new System.Drawing.Point(908, 12);
this.chartFehlmenge.Name = "chartFehlmenge";
series1.ChartArea = "ChartArea1";
series1.Legend = "Legend1";
series1.Name = "Series1";
this.chartFehlmenge.Series.Add(series1);
series2.ChartArea = "ChartArea1";
series2.Legend = "Legend1";
series2.Name = "Series1";
this.chartFehlmenge.Series.Add(series2);
this.chartFehlmenge.Size = new System.Drawing.Size(301, 434);
this.chartFehlmenge.TabIndex = 2;
this.chartFehlmenge.Text = "chart1";
title1.Name = "Title1";
title1.Text = "Hallo Test";
this.chartFehlmenge.Titles.Add(title1);
title2.Name = "Title1";
title2.Text = "Hallo Test";
this.chartFehlmenge.Titles.Add(title2);
this.chartFehlmenge.Visible = false;
//
// groupBoxKndInfo
@ -1039,7 +1046,7 @@
this.ClientSize = new System.Drawing.Size(1221, 703);
this.Controls.Add(this.groupBoxKndInfo);
this.Controls.Add(this.chartFehlmenge);
this.Controls.Add(this.buttonNW);
this.Controls.Add(this.buttonReklamation);
this.Controls.Add(this.buttonSuchen);
this.Controls.Add(this.buttonStats);
this.Controls.Add(this.buttonEinstellung);
@ -1060,6 +1067,7 @@
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormExpedit_FormClosing);
this.Load += new System.EventHandler(this.FormExpedit_Load);
this.Shown += new System.EventHandler(this.FormExpedit_Shown);
this.Resize += new System.EventHandler(this.FormExpedit_Resize);
this.groupBoxEtikett.ResumeLayout(false);
this.groupBoxEtikett.PerformLayout();
@ -1139,7 +1147,7 @@
private System.Windows.Forms.DataGridViewTextBoxColumn FehlmengeBearbeitet;
private System.Windows.Forms.DataGridViewTextBoxColumn KorrekturBearbeitet;
private System.Windows.Forms.Button buttonSuchen;
private System.Windows.Forms.Button buttonNW;
private System.Windows.Forms.Button buttonReklamation;
private System.Windows.Forms.TabPage tabPageGeschaeft;
private BrightIdeasSoftware.ObjectListView objectListViewGeschaeft;
private System.Windows.Forms.DataVisualization.Charting.Chart chartFehlmenge;

View File

@ -85,7 +85,7 @@ namespace Deckungsbeitrag
private void FormExpedit_Load(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
//this.Visible = false;
this.Visible = false;
this.SuspendLayout();
_settings.Load();
@ -110,6 +110,11 @@ namespace Deckungsbeitrag
if (geschaeftlist.Count == 0) { this.tabControlAuftragList.TabPages.Remove(tabPageGeschaeft); }
else { OLV_Load(this.objectListViewGeschaeft, geschaeftlist); if (this.tabControlAuftragList.TabPages.Count < 2) this.tabControlAuftragList.TabPages.Insert(1, tabPageGeschaeft); }
// Controls aktivieren und deaktivieren nach BenutzerRolle
Enable_Controls();
this.Visible = true;
}));
}
catch (Exception ex)
@ -120,8 +125,6 @@ namespace Deckungsbeitrag
}
});
// Controls aktivieren und deaktivieren nach BenutzerRolle
Enable_Controls();
//TODO: Wenn GroupBox nicht notwendig, dann löschen.
//Load_Etikett_GroupBox();
@ -132,12 +135,6 @@ namespace Deckungsbeitrag
if (this.kunde != null) Funktionen.Get_RadioButtons(this.groupBoxEtikett);
this.ResumeLayout();
//this.Visible = true;
this.Cursor = Cursors.Default;
WindowState = FormWindowState.Maximized;
}
@ -173,7 +170,8 @@ namespace Deckungsbeitrag
case BenutzerRolle.Expedit:
break;
case BenutzerRolle.Frottee:
this.buttonDrucken.Enabled = this.buttonNeuerAuftrag.Enabled = this.buttonSWS_Drucken.Enabled = false;
this.buttonDrucken.Visible = this.buttonNeuerAuftrag.Visible = this.buttonSWS_Drucken.Visible = false;
this.buttonStats.Visible = this.buttonEinstellung.Visible = this.buttonReklamation.Visible = false; // buttonReklamation einblenden wenn Frottee-Expedit auch Reklamation bearbeitet.
this.groupBoxEtikett.Enabled = false;
GetUnvisibleButtonColumn();
@ -200,7 +198,14 @@ namespace Deckungsbeitrag
try
{
await conn.OpenAsync();
sonderlist = await Auftrag.GetExpeditListsAsync((int)AuftragTyp.Inventur, conn);
if (this.benutzer.Rolle == BenutzerRolle.Frottee)
{
sonderlist = await Auftrag.GetExpeditListsAsync((int)AuftragTyp.Inventur, conn, (int)AbteilungsStatus.FrotteeBegonnen);
}
else
{
sonderlist = await Auftrag.GetExpeditListsAsync((int)AuftragTyp.Inventur, conn, null);
}
}
finally
{
@ -215,8 +220,16 @@ namespace Deckungsbeitrag
try
{
await conn.OpenAsync();
auftraglist = await Auftrag.GetAuftragListTodayAsync(DateTime.Today, conn, AuftragTyp.Standart);
geschaeftlist = await Auftrag.GetAuftragListTodayAsync(DateTime.Today, conn, AuftragTyp.Geschäft);
if (this.benutzer.Rolle == BenutzerRolle.Frottee)
{
auftraglist = await Auftrag.GetAuftragListTodayAsync(DateTime.Today, conn, AuftragTyp.Standart, (int)AbteilungsStatus.FrotteeBegonnen);
geschaeftlist = await Auftrag.GetAuftragListTodayAsync(DateTime.Today, conn, AuftragTyp.Geschäft, (int)AbteilungsStatus.FrotteeBegonnen);
}
else
{
auftraglist = await Auftrag.GetAuftragListTodayAsync(DateTime.Today, conn, AuftragTyp.Standart, null);
geschaeftlist = await Auftrag.GetAuftragListTodayAsync(DateTime.Today, conn, AuftragTyp.Geschäft, null);
}
}
finally
{
@ -493,15 +506,230 @@ namespace Deckungsbeitrag
}
}
private void buttonNW_Click(object sender, EventArgs e)
private void buttonReklamation_Click(object sender, EventArgs e)
{
if (dGArtikel.Visible) dGArtikel.Visible = false;
else dGArtikel.Visible = true;
FormFehlmengeCount reklamation = new FormFehlmengeCount(this.benutzer);
reklamation.ShowDialog();
}
#endregion
#region ObjectListView-Events
private void OLV_Load(ObjectListView olv, List<Auftrag> auftraglist)
{
// Cursor auf Warte-Status setzen, um Benutzerfeedback zu geben
this.Cursor = Cursors.WaitCursor;
// Layout- und Update-Änderungen pausieren, um Flackern zu verhindern
olv.SuspendLayout(); // Stoppt Layout-Berechnungen (Anchor/Dock)
// SpaltenHeader-Design anpassen
//this.objectListViewAuftrag.HeaderFormatStyle = Funktionen.GetHeader();
// Automatisch alle Properties von Auftrag als Spalten generieren
Generator.GenerateColumns(olv, typeof(Auftrag), true);
// ========== CHECKBOX COLUMNS FÜR ABTEILUNGEN ===========
// Spalten-Setup
var colFrottee = new OLVColumn("Frottee", "Frottee");
colFrottee.Text = "FR";
colFrottee.DisplayIndex = 6;
colFrottee.TextAlign = HorizontalAlignment.Center;
colFrottee.Width = 50;
colFrottee.AspectGetter = row => {
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.FrotteeBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.FrotteeBeendet) != 0;
if (beendet) return "☑"; // Status 1 ✓
if (begonnen) return "☐"; // Status 2 ✓
return "☒"; // Status 0 ✓
};
var colKleinteile = new OLVColumn("Kleinteile", "Kleinteile");
colKleinteile.Text = "KT";
colKleinteile.DisplayIndex = 7;
colKleinteile.TextAlign = HorizontalAlignment.Center;
colKleinteile.Width = 50;
colKleinteile.AspectGetter = row => {
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.KleinteileBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.KleinteileBeendet) != 0;
if (beendet) return "☑"; // Status 1 ✓
if (begonnen) return "☐"; // Status 2 ✓
return "☒"; // Status 0 ✓
};
var colGrosseTeile = new OLVColumn("Großteile", "Großteile");
colGrosseTeile.Text = "GT";
colGrosseTeile.DisplayIndex = 8;
colGrosseTeile.TextAlign = HorizontalAlignment.Center;
colGrosseTeile.Width = 50;
colGrosseTeile.AspectGetter = row => {
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.GrossteileBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.GrossteileBeendet) != 0;
if (beendet) return "☑"; // Status 1 ✓
if (begonnen) return "☐"; // Status 2 ✓
return "☒"; // Status 0 ✓
};
olv.AllColumns.Add(colFrottee);
olv.AllColumns.Add(colKleinteile);
olv.AllColumns.Add(colGrosseTeile);
// ========== COLUMNS DURCHLAUFEN ===========
foreach (OLVColumn col in olv.AllColumns)
{
switch (col.Text)
{
case "Abschließen": // Abschließen Spalte als Button-Spalte konfigurieren
OLVColumn fertigColumn = col;
fertigColumn.DisplayIndex = 11;
fertigColumn.IsButton = true; // Als Button rendern
fertigColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds; // Button füllt gesamte Zelle
fertigColumn.HeaderImageKey = "abschließen";
fertigColumn.ShowTextInHeader = false;
fertigColumn.MinimumWidth = fertigColumn.MaximumWidth = 80;
break;
case "Etikett": // Etikett Spalte als Button-Spalte konfigurieren
OLVColumn etikettColumn = col;
etikettColumn.DisplayIndex = 10;
etikettColumn.IsButton = true; // Als Button rendern
etikettColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds; // Button füllt gesamte Zelle
etikettColumn.HeaderImageKey = "print";
etikettColumn.ShowTextInHeader = false;
etikettColumn.MinimumWidth = etikettColumn.MaximumWidth = 80;
break;
case "Aufgabe": // Aufgabe Spalte als Icon-Spalte: zeigt Icon wenn AufgabeID vorhanden
OLVColumn iconColumn = col;
iconColumn.DisplayIndex = 9;
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
};
break;
case "Kunde": // Kunde Spalte als Icon-Spalte: zeigt Icon und Kundename wenn Anmerkung vorhanden
OLVColumn iColumn = col;
iColumn.DisplayIndex = 0;
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
};
break;
case "Liefertag": // Liefertag Spalte Zeigt Liefertag als String an.
OLVColumn dateColumn = col;
dateColumn.DisplayIndex = 1;
dateColumn.AspectToStringFormat = "{0:ddd dd.MM.}";
// DateTime-Filter für Spalte 2
dateColumn.ClusteringStrategy = new DateTimeClusteringStrategy(DateTimePortion.Day, "ddd dd.MM."); // DateTimeClustering damit Datum gefiltert werden kann
olv.SecondarySortColumn = dateColumn; // Primary Sortiert nach Spalte 5 (Status) Secundary Sortiert nach Spalte 2 (Liefertag)
break;
case "Status": // Spalte 5 als primäre Sortier-Spalte festlegen (nach Datenbindung!)
OLVColumn sortcolumn = col;
sortcolumn.DisplayIndex = 4;
olv.PrimarySortColumn = sortcolumn; // Primary Sortiert nach Spalte 5 (Status) Secundary Sortiert nach Spalte 2 (Liefertag)
break;
case "Auswählen":
col.IsVisible = false;
break;
case "Erstellt":
col.IsVisible = false;
break;
case "Gedruckt":
col.IsVisible = false;
break;
case "Erledigt":
col.IsVisible = false;
break;
case "schmutzig":
col.HeaderImageKey = "dirt";
col.ShowTextInHeader = false;
col.MinimumWidth = col.MaximumWidth = 80;
col.DisplayIndex = 2;
break;
case "sauber":
col.HeaderImageKey = "clean";
col.ShowTextInHeader = false;
col.MinimumWidth = col.MaximumWidth = 80;
col.DisplayIndex = 3;
break;
default:
break;
}
}
//TODO: Reihenfolge Spalten richtig stellen.
//TODO: OLV State speichern.
olv.RebuildColumns();
if (_settings.OLV_State != null) olv.RestoreState(_settings.OLV_State);
// ========== IMAGE-LIST ZUWEISEN ==========
// SmallImageList für Icons in Detail-View (24x24 Pixel standard)
Program.imagelist.ImageSize = new Size(24, 24);
olv.SmallImageList = Program.imagelist; // Voraussetzung: imagelist mit Icon Index 0 gefüllt
// ========== TOOLTIP FÜR ICON-SPALTEN ==========
// Automatischer Cell-Tooltip bei Mouse-Hover über Spalte 10 und 1
olv.CellToolTipShowing += (s, e) =>
{
// Nur für Icon-Spalte (Index 10) und gültiges Model
if (e.Column.Text == "Aufgabe" && 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.Column.Text == "Kunde" && 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??
if (e.Column.Text == "Fahrer" && e.Model is Auftrag auftrag1)
{
e.Text = auftrag1.ZusatzInfo;
}
};
// ========== DATEN LADEN ==========
// WICHTIG: SetObjects NACH Column-Konfiguration aufrufen!
OLV_SetObjects(olv, auftraglist);
olv.RefreshObjects(auftraglist);
// ========== SORTIERUNG ==========
olv.Sort();
// ========== SPALTEN ANPASSEN ==========
Funktionen.Columns_Resize(olv); // Externe Funktion für responsive Spaltenbreiten
olv.FilterMenuBuildStrategy = new MeinFilterMenu();
// ========== AUFRÄUMEN & AKTIVIEREN ==========
olv.ResumeLayout(); // Layout-Pause beenden, Positionen neu berechnen
olv.Focus(); // OLV fokussieren (Tastaturbedienung aktivieren)
// Cursor zurücksetzen
this.Cursor = Cursors.Default;
}
private void objectListViewAuftrag_FormatCell(object sender, FormatCellEventArgs e)
{
@ -520,6 +748,27 @@ namespace Deckungsbeitrag
}
}
if (e.Column.Text == "FR" || e.Column.Text == "KT" || e.Column.Text == "GT")
{
if (e.CellValue.ToString() == "☑")
{
e.SubItem.Font = new Font("Segoe UI Symbol", 14F, FontStyle.Bold);
e.SubItem.ForeColor = Color.YellowGreen;
}
if (e.CellValue.ToString() == "☐")
{
e.SubItem.Font = new Font("Segoe UI Symbol", 14F, FontStyle.Bold);
e.SubItem.ForeColor = Color.Yellow;
}
if (e.CellValue.ToString() == "☒")
{
e.SubItem.Font = new Font("Segoe UI Symbol", 14F, FontStyle.Bold);
e.SubItem.ForeColor = Color.Red;
}
}
}
private async void objectListViewAuftrag_CellClick(object sender, CellClickEventArgs e)
{
@ -621,7 +870,7 @@ namespace Deckungsbeitrag
break;
}
}
private async void objectListViewAuftrag_ButtonClick(object sender, BrightIdeasSoftware.CellClickEventArgs e)
private void objectListViewAuftrag_ButtonClick(object sender, BrightIdeasSoftware.CellClickEventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
@ -634,6 +883,7 @@ namespace Deckungsbeitrag
this.auftrag = _auftrag;
//Load_Etikett_GroupBox();
if (this.benutzer.Rolle == BenutzerRolle.Frottee) { Auftrag_Fertig(); Neuladen_OLV(olv); return; }
if (this.auftrag.ContainerClean == 0)
{
switch (this.auftrag.Typ)
@ -768,11 +1018,7 @@ namespace Deckungsbeitrag
}
}
// Neu-Laden der ObjectListView
await GetAuftraege();
if (olv.Name.Contains("Sonder")) OLV_SetObjects(olv, sonderlist);
if (olv.Name.Contains("Geschaeft")) OLV_SetObjects(olv, geschaeftlist);
if (olv.Name.Contains("Auftrag")) OLV_SetObjects(olv, auftraglist);
Neuladen_OLV(olv);
// DataGridView ausblenden.
this.dGArtikel.DataSource = null;
@ -781,203 +1027,35 @@ namespace Deckungsbeitrag
this.Cursor = Cursors.Default;
}
private void OLV_Load(ObjectListView olv, List<Auftrag> auftraglist)
{
// Cursor auf Warte-Status setzen, um Benutzerfeedback zu geben
this.Cursor = Cursors.WaitCursor;
// Layout- und Update-Änderungen pausieren, um Flackern zu verhindern
olv.SuspendLayout(); // Stoppt Layout-Berechnungen (Anchor/Dock)
// SpaltenHeader-Design anpassen
//this.objectListViewAuftrag.HeaderFormatStyle = Funktionen.GetHeader();
// Automatisch alle Properties von Auftrag als Spalten generieren
Generator.GenerateColumns(olv, typeof(Auftrag), true);
// ========== CHECKBOX COLUMNS FÜR ABTEILUNGEN ===========
// Spalten-Setup
var colFrottee = new OLVColumn("Frottee", "Frottee");
colFrottee.Text = "FR";
colFrottee.DisplayIndex = 6;
colFrottee.TextAlign = HorizontalAlignment.Center;
colFrottee.CheckBoxes = true;
colFrottee.Width = 50;
colFrottee.AspectGetter = row => ((Auftrag)row).Abteilungen.HasFlag(AbteilungsStatus.Frottee);
var colKleinteile = new OLVColumn("Kleinteile", "Kleinteile");
colKleinteile.Text = "KT";
colKleinteile.DisplayIndex = 7;
colKleinteile.TextAlign = HorizontalAlignment.Center;
colKleinteile.CheckBoxes = true;
colKleinteile.Width = 50;
colKleinteile.AspectGetter = row => ((Auftrag)row).Abteilungen.HasFlag(AbteilungsStatus.Kleinteile);
var colGrosseTeile = new OLVColumn("Großteile", "Großteile");
colGrosseTeile.Text = "GT";
colGrosseTeile.DisplayIndex = 8;
colGrosseTeile.TextAlign = HorizontalAlignment.Center;
colGrosseTeile.CheckBoxes = true;
colGrosseTeile.Width = 50;
colGrosseTeile.AspectGetter = row => ((Auftrag)row).Abteilungen.HasFlag(AbteilungsStatus.Großteile);
olv.AllColumns.Add(colFrottee);
olv.AllColumns.Add(colKleinteile);
olv.AllColumns.Add(colGrosseTeile);
// ========== COLUMNS DURCHLAUFEN ===========
foreach (OLVColumn col in olv.AllColumns)
{
switch (col.Text)
{
case "Abschließen": // Abschließen Spalte als Button-Spalte konfigurieren
OLVColumn fertigColumn = col;
fertigColumn.DisplayIndex = 11;
fertigColumn.IsButton = true; // Als Button rendern
fertigColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds; // Button füllt gesamte Zelle
fertigColumn.HeaderImageKey = "abschließen";
fertigColumn.ShowTextInHeader = false;
fertigColumn.MinimumWidth = fertigColumn.MaximumWidth = 80;
break;
case "Etikett": // Etikett Spalte als Button-Spalte konfigurieren
OLVColumn etikettColumn = col;
etikettColumn.DisplayIndex = 10;
etikettColumn.IsButton = true; // Als Button rendern
etikettColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds; // Button füllt gesamte Zelle
etikettColumn.HeaderImageKey = "print";
etikettColumn.ShowTextInHeader = false;
etikettColumn.MinimumWidth = etikettColumn.MaximumWidth = 80;
break;
case "Aufgabe": // Aufgabe Spalte als Icon-Spalte: zeigt Icon wenn AufgabeID vorhanden
OLVColumn iconColumn = col;
iconColumn.DisplayIndex = 9;
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
};
break;
case "Kunde": // Kunde Spalte als Icon-Spalte: zeigt Icon und Kundename wenn Anmerkung vorhanden
OLVColumn iColumn = col;
iColumn.DisplayIndex = 0;
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
};
break;
case "Liefertag": // Liefertag Spalte Zeigt Liefertag als String an.
OLVColumn dateColumn = col;
dateColumn.DisplayIndex = 1;
dateColumn.AspectToStringFormat = "{0:ddd dd.MM.}";
// DateTime-Filter für Spalte 2
dateColumn.ClusteringStrategy = new DateTimeClusteringStrategy(DateTimePortion.Day, "ddd dd.MM."); // DateTimeClustering damit Datum gefiltert werden kann
olv.SecondarySortColumn = dateColumn; // Primary Sortiert nach Spalte 5 (Status) Secundary Sortiert nach Spalte 2 (Liefertag)
break;
case "Status": // Spalte 5 als primäre Sortier-Spalte festlegen (nach Datenbindung!)
OLVColumn sortcolumn = col;
sortcolumn.DisplayIndex = 4;
olv.PrimarySortColumn = sortcolumn; // Primary Sortiert nach Spalte 5 (Status) Secundary Sortiert nach Spalte 2 (Liefertag)
break;
case "Auswählen":
col.IsVisible = false;
break;
case "Erstellt":
col.IsVisible = false;
break;
case "Gedruckt":
col.IsVisible = false;
break;
case "Erledigt":
col.IsVisible = false;
break;
case "schmutzig":
col.HeaderImageKey = "dirt";
col.ShowTextInHeader = false;
col.MinimumWidth = col.MaximumWidth = 80;
col.DisplayIndex = 2;
break;
case "sauber":
col.HeaderImageKey = "clean";
col.ShowTextInHeader = false;
col.MinimumWidth = col.MaximumWidth = 80;
col.DisplayIndex = 3;
break;
default:
break;
}
}
//TODO: Reihenfolge Spalten richtig stellen.
//TODO: OLV State speichern.
olv.RebuildColumns();
if (_settings.OLV_State != null) olv.RestoreState(_settings.OLV_State);
// ========== IMAGE-LIST ZUWEISEN ==========
// SmallImageList für Icons in Detail-View (24x24 Pixel standard)
Program.imagelist.ImageSize = new Size(24, 24);
olv.SmallImageList = Program.imagelist; // Voraussetzung: imagelist mit Icon Index 0 gefüllt
// ========== TOOLTIP FÜR ICON-SPALTEN ==========
// Automatischer Cell-Tooltip bei Mouse-Hover über Spalte 10 und 1
olv.CellToolTipShowing += (s, e) =>
{
// Nur für Icon-Spalte (Index 10) und gültiges Model
if (e.Column.Text == "Aufgabe" && 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.Column.Text == "Kunde" && 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??
if (e.Column.Text == "Fahrer" && e.Model is Auftrag auftrag1)
{
e.Text = auftrag1.ZusatzInfo;
}
};
// ========== DATEN LADEN ==========
// WICHTIG: SetObjects NACH Column-Konfiguration aufrufen!
OLV_SetObjects(olv, auftraglist);
// ========== SORTIERUNG ==========
olv.Sort();
// ========== SPALTEN ANPASSEN ==========
Funktionen.Columns_Resize(olv); // Externe Funktion für responsive Spaltenbreiten
olv.FilterMenuBuildStrategy = new MeinFilterMenu();
// ========== AUFRÄUMEN & AKTIVIEREN ==========
olv.ResumeLayout(); // Layout-Pause beenden, Positionen neu berechnen
olv.Focus(); // OLV fokussieren (Tastaturbedienung aktivieren)
// Cursor zurücksetzen
this.Cursor = Cursors.Default;
}
private void OLV_SetObjects(ObjectListView olv, List<Auftrag> auftraglist)
{
olv.BeginUpdate(); // Stoppt Datenaktualisierungen/Redraws
olv.SetObjects(auftraglist); // Bindet die Auftragsliste an die View
olv.EndUpdate(); // Update-Pause beenden, Daten neu zeichnen
}
private async void Neuladen_OLV(ObjectListView olv)
{
// Neu-Laden der ObjectListView
await GetAuftraege();
if (olv.Name.Contains("Sonder")) OLV_SetObjects(olv, sonderlist);
if (olv.Name.Contains("Geschaeft")) OLV_SetObjects(olv, geschaeftlist);
if (olv.Name.Contains("Auftrag")) OLV_SetObjects(olv, auftraglist);
}
/// <summary>
/// Blendet die Button Spalten aus wenn der User dazu nicht berechtigt ist.
/// </summary>
private void GetUnvisibleButtonColumn()
{
foreach (OLVColumn col in this.objectListViewAuftrag.Columns) if (col.IsButton) col.IsVisible = false;
foreach (OLVColumn col in this.objectListViewAuftrag.Columns)
{
if (this.benutzer.Rolle == BenutzerRolle.Frottee)
{
if (col.Text == "Etikett" & col.IsButton) col.IsVisible = false;
}
else if (col.IsButton) col.IsVisible = false;
}
}
private void objectListViewAuftrag_CellEditFinished(object sender, CellEditEventArgs e)
{
@ -1046,7 +1124,8 @@ namespace Deckungsbeitrag
/// </summary>
private void Auftrag_Fertig()
{
this.auftrag.Status = AuftragStatus.Fertig;
if (this.benutzer.Rolle == BenutzerRolle.Frottee) this.auftrag.Abteilungen |= AbteilungsStatus.FrotteeBeendet;
else this.auftrag.Status = AuftragStatus.Fertig;
this.auftrag.Save();
this.auftrag = null;
this.dGArtikel.Visible = false;
@ -1318,9 +1397,18 @@ namespace Deckungsbeitrag
Funktionen.GetGroupBoxBoarder(groupBoxKndInfo, e);
}
private void FormExpedit_Shown(object sender, EventArgs e)
{
this.ResumeLayout();
this.Cursor = Cursors.Default;
WindowState = FormWindowState.Maximized;
}
}
}
//INSTALL-REMINDER: Spalte Abteilungen in Auftrag muss in Wirl_DB_17012023 eingefügt werden.
//CHANGES: Expedit hat Button für Reklamation statt Nachwäsche. Dadurch kann Mirka die Reklamation bearbeiten und eingeben. (AKTUELL NUR MIRKA)
//CHANGES: Frottee Expedit zeigt Aufträge die bei Frottee nicht Beendet wurden.
//CHANGES: Frottee Expedit alle Buttons werden ausgeblendet.
//CHANGES: Chart statt GridView für Fehlmengen.
//CHANGES: Bei DoppelClick auf Kundename wird KundenVW geöffnet.
//CHANGES: Es wird der zuständige Fahrer angezeigt. ToolTip zeigt den Grund falls vorhanden(Bei Sonderzuteilung).

View File

@ -162,6 +162,36 @@
<metadata name="KorrekturBearbeitet.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="KundeArtikelID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="KundeID.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArtikelNR.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ArtikelName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Stand.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Fehlmenge.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Korrektur.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="StandBearbeitet.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="FehlmengeBearbeitet.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="KorrekturBearbeitet.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAAAAAAAEAIAC5FQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFv

View File

@ -12,6 +12,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls.WebParts;
using System.Windows.Forms;
using ZXing;
namespace Deckungsbeitrag
{
@ -22,6 +23,7 @@ namespace Deckungsbeitrag
Auftrag auftrag;
List<KundeArtikel> artikelListe;
Meldungen meldung = new Meldungen();
private Benutzer benutzer;
private List<object> auftragsliste;
string userid;
@ -37,7 +39,7 @@ namespace Deckungsbeitrag
}
public FormFehlmengeCount(Benutzer ben) : this()
{
//benutzer = ben;
this.benutzer = ben;
}
public FormFehlmengeCount(string uid) : this()
{
@ -98,15 +100,25 @@ namespace Deckungsbeitrag
this.artikelListe = KundeArtikel.GetList(kunde.KundeID.ToString());
this.textBoxScann.Text = this.kunde.KundeNummer;
this.textBoxScann.Enabled = false;
GroupBox_Load();
if (userid.Contains("reklamation") || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit)) Reklamation_GroupBox();
else GroupBox_Load();
if(kunde.Aufgabe != null)
if (kunde.Aufgabe != null)
{
string n = kunde.Suchtext == null ? kunde.KundeName : kunde.Suchtext;
meldung.GetInfo(this, $"Bei Kunde {n} solltest du folgendes beachten: {Aufgabe.GetAufgabe(null, kunde.Aufgabe).Bezeichnung}", false);
}
}
if(this.benutzer == null || !userid.Contains("reklamation"))
{
// AbteilungsStatus Begonnen wird hier gesetzt.
if (userid.Contains("kleinteile")) { auftrag.Abteilungen |= AbteilungsStatus.KleinteileBegonnen; auftrag.Save(); }
if (userid.Contains("grossteile")) { auftrag.Abteilungen |= AbteilungsStatus.GrossteileBegonnen; auftrag.Save(); }
if (userid.Contains("frottee")) { auftrag.Abteilungen |= AbteilungsStatus.FrotteeBegonnen; auftrag.Save(); }
}
CloseKeyboard();
}
@ -284,6 +296,51 @@ namespace Deckungsbeitrag
}
}
private void Reklamation_GroupBox()
{
this.groupBoxArtikel.Controls.Clear();
FlowLayoutPanel flowPanel = new FlowLayoutPanel
{
Dock = DockStyle.Fill,
FlowDirection = FlowDirection.LeftToRight,
WrapContents = true,
AutoSize = true
};
this.groupBoxArtikel.Controls.Add(flowPanel);
foreach (KundeArtikel artikel in artikelListe)
{
int index = artikel.ArtikelName.IndexOf(" ");
string name = string.Empty;
if (index > 0) name = artikel.ArtikelName.Substring(0, index) + "\n" + artikel.ArtikelName.Substring(index);
else name = artikel.ArtikelName;
Button btn = new Button
{
Text = name,
Tag = artikel,
Name = $"btn_{artikel.ArtikelNR}",
AutoSize = true,
Margin = new Padding(5),
BackColor = Color.Turquoise,
ForeColor = Color.Black,
};
btn.Click += Button_Click;
btn.MouseUp += Button_MouseUp;
btn.MouseDown += Button_MouseDown;
flowPanel.Controls.Add(btn);
}
int buttons = flowPanel.Controls.OfType<Button>().Count();
Size btnsize = new Size(flowPanel.Width / (buttons / 2), (flowPanel.Height / 2) - (flowPanel.Margin.All * 3));
foreach (Button btn in flowPanel.Controls)
{
btn.MaximumSize = btnsize;
btn.MinimumSize = btnsize;
}
groupBoxArtikel.ResumeLayout();
groupBoxArtikel.Visible = true;
}
/// <summary>
/// Wenn der Kunde Fertig gemacht wurde, werden Controls deaktiviert und ausgeblendet bis neuer Kunde gewählt
/// </summary>
@ -291,6 +348,7 @@ namespace Deckungsbeitrag
/// <param name="e"></param>
private void buttonFertig_Click(object sender, EventArgs e)
{
// Controls werden durchgegangen und ausgeblendet oder der Text entfernt.
foreach (Control ctr in this.Controls)
{
@ -312,13 +370,29 @@ namespace Deckungsbeitrag
}
}
if (userid.Contains("reklamation") || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit))
{
DialogResult result = meldung.GetFrage(this, "Möchtest du eine weitere Reklamation eingeben?", false);
switch (result)
{
case DialogResult.Yes:
break;
case DialogResult.No:
this.Close();
return;
default:
break;
}
}
else
{
// AbteilungsStatus für Kleinteile und Großteile wird hier gesetzt.
if (!userid.Contains("frottee"))
{
if (userid.Contains("kleinteile")) { auftrag.Abteilungen |= AbteilungsStatus.Kleinteile; auftrag.Save(); }
if (userid.Contains("grossteile")) { auftrag.Abteilungen |= AbteilungsStatus.Großteile; auftrag.Save(); }
if (userid.Contains("kleinteile")) { auftrag.Abteilungen |= AbteilungsStatus.KleinteileBeendet; auftrag.Save(); }
if (userid.Contains("grossteile")) { auftrag.Abteilungen |= AbteilungsStatus.GrossteileBeendet; auftrag.Save(); }
}
}
//Kunde wird durch Scan oder Handeingabe Ausgewählt.
Open_Liste();
ControlLaden();
@ -329,21 +403,22 @@ namespace Deckungsbeitrag
/// <param name="extra">Wenn Extrakunde dann true</param>
private void Open_Liste()
{
auftragsliste = new List<object>(Auftrag.GetFinishingList());
//List<object> kundenliste = new List<object>();
//foreach(Auftrag auf in auftragsliste)
//{
// object kunde = Kunde.GetKunde(null, auf.KundeID, null);
// kundenliste.Add(kunde);
//}
if (userid.Contains("reklamation") || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit)) auftragsliste = null;
else auftragsliste = new List<object>(Auftrag.GetFinishingList());
FormListe liste = new FormListe(auftragsliste, 0);
if (liste.ShowDialog() == DialogResult.OK)
{
if (liste.auftrag != null)
{
this.auftrag = liste.auftrag;
this.kunde = Kunde.GetKunde(null, auftrag.KundeID, null);
}
else this.kunde = liste.kunde;
}
}
/// <summary>
@ -405,7 +480,8 @@ namespace Deckungsbeitrag
// Beim geklickten Artikel wird Fehlmenge erhöht
Button btn = (Button)sender;
KundeArtikel artstand = (KundeArtikel)btn.Tag;
artstand.Fehlmenge++;
if (userid.Contains("reklamation") || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit)) artstand.Reklamation++;
else { artstand.Fehlmenge++; artstand.Save(); return; }
// Wenn speichern nicht möglich, wird darauf hingewiesen.
if (artstand.Save() != 1) meldung.FehlmengeCount();
@ -413,6 +489,7 @@ namespace Deckungsbeitrag
{
Artikel artikel = Artikel.GetArtikel(artstand.ArtikelNR);
artikel.Nachwaesche++;
artikel.Save();
}
@ -425,6 +502,9 @@ namespace Deckungsbeitrag
}
}
//CHANGES: Wenn BenutzerRolle ist Expedit wird abgefragt ob weitere Reklamation eingegeben wird.
//CHANGES: Wenn BenutzerRolle ist Expedit wird statt Fehlmenge Reklamation erhöht.
//TODO: Wenn Frottee-Expedit auch Relamation bearbeitet, muss BenutzerRolle abgefragt werden. siehe CHANGES.
//DONE: Auftrag über FormListe holen und daraus den Kunden für Fehlmenge holen.
//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

@ -78,9 +78,9 @@ namespace Deckungsbeitrag
ComboBox_Laden();
if (this.kunde != null) DatenLesen();
else this.kunde = Funktionen.KundenAuswahl();
if (this.kunde == null) this.kunde = Funktionen.KundenAuswahl();
DatenLesen();
formloading = false;
}

View File

@ -63,7 +63,6 @@ namespace Deckungsbeitrag
this.tabControlKunde = new System.Windows.Forms.TabControl();
this.tabPageVorschau = new System.Windows.Forms.TabPage();
this.buttonSWS_Drucken = new System.Windows.Forms.Button();
this.pictureBoxEntwurf = new System.Windows.Forms.PictureBox();
this.tabPageUmsatz = new System.Windows.Forms.TabPage();
this.labelMonatsumsatz = new System.Windows.Forms.Label();
this.chartMonatsumsatz = new System.Windows.Forms.DataVisualization.Charting.Chart();
@ -77,22 +76,9 @@ namespace Deckungsbeitrag
this.tabPageArtikel = new System.Windows.Forms.TabPage();
this.buttonSpeichern = new System.Windows.Forms.Button();
this.dGArtikel = new System.Windows.Forms.DataGridView();
this.KundeArtikelID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.KundeID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ArtikelNR = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ArtikelName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Stand = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Fehlmenge = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Korrektur = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.StandBearbeitet = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.FehlmengeBearbeitet = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.KorrekturBearbeitet = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.buttonNextKunde = new System.Windows.Forms.Button();
this.label3 = new System.Windows.Forms.Label();
this.comboBoxService = new System.Windows.Forms.ComboBox();
this.buttonServiceBearbeiten = new System.Windows.Forms.Button();
this.buttonAufgEnt = new System.Windows.Forms.Button();
this.pictureBoxQRCode = new System.Windows.Forms.PictureBox();
this.textBoxAnmerkung = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.labelAnzahlChars = new System.Windows.Forms.Label();
@ -102,10 +88,24 @@ namespace Deckungsbeitrag
this.comboBoxLRWinter = new System.Windows.Forms.ComboBox();
this.label6 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.buttonServiceBearbeiten = new System.Windows.Forms.Button();
this.pictureBoxEntwurf = new System.Windows.Forms.PictureBox();
this.buttonAufgEnt = new System.Windows.Forms.Button();
this.pictureBoxQRCode = new System.Windows.Forms.PictureBox();
this.KundeArtikelID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.KundeID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ArtikelNR = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ArtikelName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Stand = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Fehlmenge = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Reklamation = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Korrektur = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.StandBearbeitet = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.FehlmengeBearbeitet = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.KorrekturBearbeitet = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.contextMenuStrip1.SuspendLayout();
this.tabControlKunde.SuspendLayout();
this.tabPageVorschau.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxEntwurf)).BeginInit();
this.tabPageUmsatz.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.chartMonatsumsatz)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.olvMonatsumsatz)).BeginInit();
@ -115,8 +115,9 @@ namespace Deckungsbeitrag
((System.ComponentModel.ISupportInitialize)(this.olvJahresumsatz)).BeginInit();
this.tabPageArtikel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dGArtikel)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxQRCode)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numericUpDownAufgabeCount)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxEntwurf)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxQRCode)).BeginInit();
this.SuspendLayout();
//
// textBoxKndNr
@ -368,20 +369,6 @@ namespace Deckungsbeitrag
this.buttonSWS_Drucken.UseVisualStyleBackColor = false;
this.buttonSWS_Drucken.Click += new System.EventHandler(this.ButtonDrucken_Click);
//
// pictureBoxEntwurf
//
this.pictureBoxEntwurf.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pictureBoxEntwurf.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.pictureBoxEntwurf.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBoxEntwurf.Location = new System.Drawing.Point(0, 0);
this.pictureBoxEntwurf.Name = "pictureBoxEntwurf";
this.pictureBoxEntwurf.Size = new System.Drawing.Size(925, 647);
this.pictureBoxEntwurf.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBoxEntwurf.TabIndex = 16;
this.pictureBoxEntwurf.TabStop = false;
//
// tabPageUmsatz
//
this.tabPageUmsatz.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
@ -612,6 +599,7 @@ namespace Deckungsbeitrag
this.ArtikelName,
this.Stand,
this.Fehlmenge,
this.Reklamation,
this.Korrektur,
this.StandBearbeitet,
this.FehlmengeBearbeitet,
@ -624,58 +612,6 @@ namespace Deckungsbeitrag
this.dGArtikel.CellBeginEdit += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.dGArtikel_CellBeginEdit);
this.dGArtikel.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dGArtikel_CellValueChanged);
//
// KundeArtikelID
//
this.KundeArtikelID.HeaderText = "KundeArtikelID";
this.KundeArtikelID.Name = "KundeArtikelID";
this.KundeArtikelID.Visible = false;
//
// KundeID
//
this.KundeID.HeaderText = "KundeID";
this.KundeID.Name = "KundeID";
this.KundeID.Visible = false;
//
// ArtikelNR
//
this.ArtikelNR.HeaderText = "Art. Nr.";
this.ArtikelNR.Name = "ArtikelNR";
//
// ArtikelName
//
this.ArtikelName.HeaderText = "Art. Name";
this.ArtikelName.Name = "ArtikelName";
//
// Stand
//
this.Stand.HeaderText = "Stand";
this.Stand.Name = "Stand";
//
// Fehlmenge
//
this.Fehlmenge.HeaderText = "Fehlmenge";
this.Fehlmenge.Name = "Fehlmenge";
//
// Korrektur
//
this.Korrektur.HeaderText = "Korrektur";
this.Korrektur.Name = "Korrektur";
//
// StandBearbeitet
//
this.StandBearbeitet.HeaderText = "Stand Bearbeitet";
this.StandBearbeitet.Name = "StandBearbeitet";
//
// FehlmengeBearbeitet
//
this.FehlmengeBearbeitet.HeaderText = "Fehlmenge Bearbeitet";
this.FehlmengeBearbeitet.Name = "FehlmengeBearbeitet";
//
// KorrekturBearbeitet
//
this.KorrekturBearbeitet.HeaderText = "Korrektur Bearbeitet";
this.KorrekturBearbeitet.Name = "KorrekturBearbeitet";
//
// buttonNextKunde
//
this.buttonNextKunde.BackColor = System.Drawing.Color.Turquoise;
@ -713,36 +649,6 @@ namespace Deckungsbeitrag
this.comboBoxService.TabIndex = 48;
this.comboBoxService.SelectedValueChanged += new System.EventHandler(this.comboBoxService_SelectedValueChanged);
//
// buttonServiceBearbeiten
//
this.buttonServiceBearbeiten.Image = global::Deckungsbeitrag.Properties.Resources.PenOne_16x;
this.buttonServiceBearbeiten.Location = new System.Drawing.Point(337, 361);
this.buttonServiceBearbeiten.Name = "buttonServiceBearbeiten";
this.buttonServiceBearbeiten.Size = new System.Drawing.Size(28, 28);
this.buttonServiceBearbeiten.TabIndex = 49;
this.buttonServiceBearbeiten.UseVisualStyleBackColor = true;
this.buttonServiceBearbeiten.Click += new System.EventHandler(this.buttonServiceBearbeiten_Click);
//
// buttonAufgEnt
//
this.buttonAufgEnt.Image = global::Deckungsbeitrag.Properties.Resources.Close_red_16x;
this.buttonAufgEnt.Location = new System.Drawing.Point(337, 498);
this.buttonAufgEnt.Name = "buttonAufgEnt";
this.buttonAufgEnt.Size = new System.Drawing.Size(28, 28);
this.buttonAufgEnt.TabIndex = 43;
this.buttonAufgEnt.UseVisualStyleBackColor = true;
this.buttonAufgEnt.Click += new System.EventHandler(this.buttonAufgEnt_Click);
//
// pictureBoxQRCode
//
this.pictureBoxQRCode.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxQRCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBoxQRCode.Location = new System.Drawing.Point(284, 76);
this.pictureBoxQRCode.Name = "pictureBoxQRCode";
this.pictureBoxQRCode.Size = new System.Drawing.Size(81, 101);
this.pictureBoxQRCode.TabIndex = 27;
this.pictureBoxQRCode.TabStop = false;
//
// textBoxAnmerkung
//
this.textBoxAnmerkung.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -848,6 +754,107 @@ namespace Deckungsbeitrag
this.label7.TabIndex = 58;
this.label7.Text = "Winter";
//
// buttonServiceBearbeiten
//
this.buttonServiceBearbeiten.Image = global::Deckungsbeitrag.Properties.Resources.PenOne_16x;
this.buttonServiceBearbeiten.Location = new System.Drawing.Point(337, 361);
this.buttonServiceBearbeiten.Name = "buttonServiceBearbeiten";
this.buttonServiceBearbeiten.Size = new System.Drawing.Size(28, 28);
this.buttonServiceBearbeiten.TabIndex = 49;
this.buttonServiceBearbeiten.UseVisualStyleBackColor = true;
this.buttonServiceBearbeiten.Click += new System.EventHandler(this.buttonServiceBearbeiten_Click);
//
// pictureBoxEntwurf
//
this.pictureBoxEntwurf.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pictureBoxEntwurf.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.pictureBoxEntwurf.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBoxEntwurf.Location = new System.Drawing.Point(0, 0);
this.pictureBoxEntwurf.Name = "pictureBoxEntwurf";
this.pictureBoxEntwurf.Size = new System.Drawing.Size(925, 647);
this.pictureBoxEntwurf.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBoxEntwurf.TabIndex = 16;
this.pictureBoxEntwurf.TabStop = false;
//
// buttonAufgEnt
//
this.buttonAufgEnt.Image = global::Deckungsbeitrag.Properties.Resources.Close_red_16x;
this.buttonAufgEnt.Location = new System.Drawing.Point(337, 498);
this.buttonAufgEnt.Name = "buttonAufgEnt";
this.buttonAufgEnt.Size = new System.Drawing.Size(28, 28);
this.buttonAufgEnt.TabIndex = 43;
this.buttonAufgEnt.UseVisualStyleBackColor = true;
this.buttonAufgEnt.Click += new System.EventHandler(this.buttonAufgEnt_Click);
//
// pictureBoxQRCode
//
this.pictureBoxQRCode.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxQRCode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBoxQRCode.Location = new System.Drawing.Point(284, 76);
this.pictureBoxQRCode.Name = "pictureBoxQRCode";
this.pictureBoxQRCode.Size = new System.Drawing.Size(81, 101);
this.pictureBoxQRCode.TabIndex = 27;
this.pictureBoxQRCode.TabStop = false;
//
// KundeArtikelID
//
this.KundeArtikelID.HeaderText = "KundeArtikelID";
this.KundeArtikelID.Name = "KundeArtikelID";
this.KundeArtikelID.Visible = false;
//
// KundeID
//
this.KundeID.HeaderText = "KundeID";
this.KundeID.Name = "KundeID";
this.KundeID.Visible = false;
//
// ArtikelNR
//
this.ArtikelNR.HeaderText = "Art. Nr.";
this.ArtikelNR.Name = "ArtikelNR";
//
// ArtikelName
//
this.ArtikelName.HeaderText = "Art. Name";
this.ArtikelName.Name = "ArtikelName";
//
// Stand
//
this.Stand.HeaderText = "Stand";
this.Stand.Name = "Stand";
//
// Fehlmenge
//
this.Fehlmenge.HeaderText = "Fehlmenge";
this.Fehlmenge.Name = "Fehlmenge";
//
// Reklamation
//
this.Reklamation.HeaderText = "Reklamation";
this.Reklamation.Name = "Reklamation";
//
// Korrektur
//
this.Korrektur.HeaderText = "Korrektur";
this.Korrektur.Name = "Korrektur";
//
// StandBearbeitet
//
this.StandBearbeitet.HeaderText = "Stand Bearbeitet";
this.StandBearbeitet.Name = "StandBearbeitet";
//
// FehlmengeBearbeitet
//
this.FehlmengeBearbeitet.HeaderText = "Fehlmenge Bearbeitet";
this.FehlmengeBearbeitet.Name = "FehlmengeBearbeitet";
//
// KorrekturBearbeitet
//
this.KorrekturBearbeitet.HeaderText = "Korrektur Bearbeitet";
this.KorrekturBearbeitet.Name = "KorrekturBearbeitet";
//
// FormKundeVW
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@ -900,7 +907,6 @@ namespace Deckungsbeitrag
this.contextMenuStrip1.ResumeLayout(false);
this.tabControlKunde.ResumeLayout(false);
this.tabPageVorschau.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxEntwurf)).EndInit();
this.tabPageUmsatz.ResumeLayout(false);
this.tabPageUmsatz.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.chartMonatsumsatz)).EndInit();
@ -911,8 +917,9 @@ namespace Deckungsbeitrag
((System.ComponentModel.ISupportInitialize)(this.olvJahresumsatz)).EndInit();
this.tabPageArtikel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dGArtikel)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxQRCode)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numericUpDownAufgabeCount)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxEntwurf)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxQRCode)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -947,16 +954,6 @@ namespace Deckungsbeitrag
private System.Windows.Forms.DataVisualization.Charting.Chart chartMonatsumsatz;
private System.Windows.Forms.TabPage tabPageArtikel;
private System.Windows.Forms.DataGridView dGArtikel;
private System.Windows.Forms.DataGridViewTextBoxColumn KundeArtikelID;
private System.Windows.Forms.DataGridViewTextBoxColumn KundeID;
private System.Windows.Forms.DataGridViewTextBoxColumn ArtikelNR;
private System.Windows.Forms.DataGridViewTextBoxColumn ArtikelName;
private System.Windows.Forms.DataGridViewTextBoxColumn Stand;
private System.Windows.Forms.DataGridViewTextBoxColumn Fehlmenge;
private System.Windows.Forms.DataGridViewTextBoxColumn Korrektur;
private System.Windows.Forms.DataGridViewTextBoxColumn StandBearbeitet;
private System.Windows.Forms.DataGridViewTextBoxColumn FehlmengeBearbeitet;
private System.Windows.Forms.DataGridViewTextBoxColumn KorrekturBearbeitet;
private System.Windows.Forms.TabPage tabPageVorschau;
private System.Windows.Forms.Button buttonSWS_Drucken;
private System.Windows.Forms.Button buttonSpeichern;
@ -981,6 +978,17 @@ namespace Deckungsbeitrag
private System.Windows.Forms.ComboBox comboBoxLRWinter;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.DataGridViewTextBoxColumn KundeArtikelID;
private System.Windows.Forms.DataGridViewTextBoxColumn KundeID;
private System.Windows.Forms.DataGridViewTextBoxColumn ArtikelNR;
private System.Windows.Forms.DataGridViewTextBoxColumn ArtikelName;
private System.Windows.Forms.DataGridViewTextBoxColumn Stand;
private System.Windows.Forms.DataGridViewTextBoxColumn Fehlmenge;
private System.Windows.Forms.DataGridViewTextBoxColumn Reklamation;
private System.Windows.Forms.DataGridViewTextBoxColumn Korrektur;
private System.Windows.Forms.DataGridViewTextBoxColumn StandBearbeitet;
private System.Windows.Forms.DataGridViewTextBoxColumn FehlmengeBearbeitet;
private System.Windows.Forms.DataGridViewTextBoxColumn KorrekturBearbeitet;
}
}

View File

@ -138,6 +138,9 @@
<metadata name="Fehlmenge.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Reklamation.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Korrektur.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>

View File

@ -47,6 +47,8 @@ namespace Deckungsbeitrag
this.tSBTourenplanung = new System.Windows.Forms.ToolStripButton();
this.toolStripBeenden = new System.Windows.Forms.ToolStripButton();
this.panelMain = new System.Windows.Forms.Panel();
this.groupBoxSaison = new System.Windows.Forms.GroupBox();
this.comboBoxSaison = new System.Windows.Forms.ComboBox();
this.buttonNeuerStand = new System.Windows.Forms.Button();
this.buttonNeueInventur = new System.Windows.Forms.Button();
this.buttonNeueAufgabe = new System.Windows.Forms.Button();
@ -88,11 +90,9 @@ namespace Deckungsbeitrag
this.textBoxScannTest = new System.Windows.Forms.TextBox();
this.buttonScannTest = new System.Windows.Forms.Button();
this.labelScannTest = new System.Windows.Forms.Label();
this.comboBoxSaison = new System.Windows.Forms.ComboBox();
this.groupBoxSaison = new System.Windows.Forms.GroupBox();
this.buttonTestChart = new System.Windows.Forms.Button();
this.toolStripMenu.SuspendLayout();
this.panelMain.SuspendLayout();
this.groupBoxSaison.SuspendLayout();
this.groupBoxStatistik.SuspendLayout();
this.tableLayoutPanelStatistik.SuspendLayout();
this.groupBoxUpdate.SuspendLayout();
@ -101,7 +101,6 @@ namespace Deckungsbeitrag
((System.ComponentModel.ISupportInitialize)(this.objectListViewAuftrag)).BeginInit();
this.groupBoxScannTest.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxScannTest)).BeginInit();
this.groupBoxSaison.SuspendLayout();
this.SuspendLayout();
//
// toolStripMenu
@ -428,7 +427,6 @@ namespace Deckungsbeitrag
//
this.panelMain.AllowDrop = true;
this.panelMain.BackColor = System.Drawing.Color.White;
this.panelMain.Controls.Add(this.buttonTestChart);
this.panelMain.Controls.Add(this.groupBoxSaison);
this.panelMain.Controls.Add(this.buttonNeuerStand);
this.panelMain.Controls.Add(this.buttonNeueInventur);
@ -449,6 +447,29 @@ namespace Deckungsbeitrag
this.panelMain.DragEnter += new System.Windows.Forms.DragEventHandler(this.panelMain_DragEnter);
this.panelMain.Paint += new System.Windows.Forms.PaintEventHandler(this.panelMain_Paint);
//
// groupBoxSaison
//
this.groupBoxSaison.Controls.Add(this.comboBoxSaison);
this.groupBoxSaison.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.groupBoxSaison.Location = new System.Drawing.Point(8, 251);
this.groupBoxSaison.Name = "groupBoxSaison";
this.groupBoxSaison.Size = new System.Drawing.Size(279, 59);
this.groupBoxSaison.TabIndex = 62;
this.groupBoxSaison.TabStop = false;
this.groupBoxSaison.Text = "AKTIVE SAISON";
this.groupBoxSaison.Paint += new System.Windows.Forms.PaintEventHandler(this.groupBox_Paint);
//
// comboBoxSaison
//
this.comboBoxSaison.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxSaison.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxSaison.FormattingEnabled = true;
this.comboBoxSaison.Location = new System.Drawing.Point(8, 19);
this.comboBoxSaison.Name = "comboBoxSaison";
this.comboBoxSaison.Size = new System.Drawing.Size(265, 28);
this.comboBoxSaison.TabIndex = 66;
this.comboBoxSaison.SelectedIndexChanged += new System.EventHandler(this.comboBoxSaison_SelectedIndexChanged);
//
// buttonNeuerStand
//
this.buttonNeuerStand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
@ -1069,39 +1090,6 @@ namespace Deckungsbeitrag
this.labelScannTest.Text = "label1";
this.labelScannTest.Visible = false;
//
// comboBoxSaison
//
this.comboBoxSaison.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxSaison.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.comboBoxSaison.FormattingEnabled = true;
this.comboBoxSaison.Location = new System.Drawing.Point(8, 19);
this.comboBoxSaison.Name = "comboBoxSaison";
this.comboBoxSaison.Size = new System.Drawing.Size(265, 28);
this.comboBoxSaison.TabIndex = 66;
this.comboBoxSaison.SelectedIndexChanged += new System.EventHandler(this.comboBoxSaison_SelectedIndexChanged);
//
// groupBoxSaison
//
this.groupBoxSaison.Controls.Add(this.comboBoxSaison);
this.groupBoxSaison.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.groupBoxSaison.Location = new System.Drawing.Point(8, 251);
this.groupBoxSaison.Name = "groupBoxSaison";
this.groupBoxSaison.Size = new System.Drawing.Size(279, 59);
this.groupBoxSaison.TabIndex = 62;
this.groupBoxSaison.TabStop = false;
this.groupBoxSaison.Text = "AKTIVE SAISON";
this.groupBoxSaison.Paint += new System.Windows.Forms.PaintEventHandler(this.groupBox_Paint);
//
// buttonTestChart
//
this.buttonTestChart.Location = new System.Drawing.Point(8, 168);
this.buttonTestChart.Name = "buttonTestChart";
this.buttonTestChart.Size = new System.Drawing.Size(75, 23);
this.buttonTestChart.TabIndex = 66;
this.buttonTestChart.Text = "TestChart";
this.buttonTestChart.UseVisualStyleBackColor = true;
this.buttonTestChart.Click += new System.EventHandler(this.buttonTestChart_Click);
//
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1125,6 +1113,7 @@ namespace Deckungsbeitrag
this.toolStripMenu.ResumeLayout(false);
this.toolStripMenu.PerformLayout();
this.panelMain.ResumeLayout(false);
this.groupBoxSaison.ResumeLayout(false);
this.groupBoxStatistik.ResumeLayout(false);
this.tableLayoutPanelStatistik.ResumeLayout(false);
this.tableLayoutPanelStatistik.PerformLayout();
@ -1136,7 +1125,6 @@ namespace Deckungsbeitrag
this.groupBoxScannTest.ResumeLayout(false);
this.groupBoxScannTest.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxScannTest)).EndInit();
this.groupBoxSaison.ResumeLayout(false);
this.ResumeLayout(false);
}
@ -1203,7 +1191,6 @@ namespace Deckungsbeitrag
private System.Windows.Forms.ToolStripButton tSBTourenplanung;
private System.Windows.Forms.ComboBox comboBoxSaison;
private System.Windows.Forms.GroupBox groupBoxSaison;
private System.Windows.Forms.Button buttonTestChart;
}
}

View File

@ -230,10 +230,10 @@ namespace Deckungsbeitrag
}
else
{
// Groupbox einblenden wenn OLV noch nicht sichtbar ist.
// Groupbox ausblenden wenn OLV sichtbar ist.
foreach (GroupBox gb in this.panelMain.Controls.OfType<GroupBox>()) gb.Visible = gb.Name.Contains("Auftrag") ? false : true;
// PanelMain Buttons ausblenden.
// PanelMain Buttons einblenden.
foreach (Button btn in this.panelMain.Controls.OfType<Button>()) btn.Visible = true;
}
@ -733,25 +733,60 @@ namespace Deckungsbeitrag
colFrottee.Text = "FR";
colFrottee.DisplayIndex = 6;
colFrottee.TextAlign = HorizontalAlignment.Center;
colFrottee.CheckBoxes = true;
colFrottee.CheckBoxes = false;
colFrottee.TriStateCheckBoxes = false;
colFrottee.Width = 50;
colFrottee.AspectGetter = row => ((Auftrag)row).Abteilungen.HasFlag(AbteilungsStatus.Frottee);
colFrottee.AspectGetter = row => {
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.FrotteeBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.FrotteeBeendet) != 0;
if (beendet) return "✅"; // Status 1 ✓
if (begonnen) return "⭕"; // Status 2 ✓
return "❌"; // Status 0 ✓
};
var colKleinteile = new OLVColumn("Kleinteile", "Kleinteile");
colKleinteile.Text = "KT";
colKleinteile.DisplayIndex = 7;
colKleinteile.TextAlign = HorizontalAlignment.Center;
colKleinteile.CheckBoxes = true;
colKleinteile.CheckBoxes = false;
colKleinteile.TriStateCheckBoxes = false;
colKleinteile.Width = 50;
colKleinteile.AspectGetter = row => ((Auftrag)row).Abteilungen.HasFlag(AbteilungsStatus.Kleinteile);
colKleinteile.AspectGetter = row => {
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.KleinteileBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.KleinteileBeendet) != 0;
if (beendet) return "✅"; // Status 1 ✓
if (begonnen) return "⭕"; // Status 2 ✓
return "❌"; // Status 0 ✓
};
var colGrosseTeile = new OLVColumn("Großteile", "Großteile");
colGrosseTeile.Text = "GT";
colGrosseTeile.DisplayIndex = 8;
colGrosseTeile.TextAlign = HorizontalAlignment.Center;
colGrosseTeile.CheckBoxes = true;
colGrosseTeile.CheckBoxes = false;
colGrosseTeile.TriStateCheckBoxes = false;
colGrosseTeile.Width = 50;
colGrosseTeile.AspectGetter = row => ((Auftrag)row).Abteilungen.HasFlag(AbteilungsStatus.Großteile);
colGrosseTeile.AspectGetter = row => {
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.GrossteileBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.GrossteileBeendet) != 0;
if (beendet) return "✅"; // Status 1 ✓
if (begonnen) return "⭕"; // Status 2 ✓
return "❌"; // Status 0 ✓
};
this.objectListViewAuftrag.AllColumns.Add(colFrottee);
this.objectListViewAuftrag.AllColumns.Add(colKleinteile);
@ -1212,5 +1247,6 @@ namespace Deckungsbeitrag
}
//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.
//CHANGES: Saisonauswahl DropDown eingefügt. Wenn Zwischensaison gewählt wir Warnung wegen falschen Liefertagen gezeigt. Sonst wird Saisonrhythmus als Liefertag beachtet.
//TODO: JSON nach angemeldeten Fahrer durchsuchen und Kundenliste des aktuellen Wochentag anzeigen.
//TODO: Auftrag Schnellerfassung erstellen. Kundenliste aus JSON in OLV einfügen wenn schmutzig > 0 dann Auftrag erstellen. Spalten: "Kunde, schmutzig, liefertag, zustellfahrer" evnetuell in AuftragVW?

View File

@ -129,7 +129,13 @@ namespace Deckungsbeitrag.AA_Forms
string altText = tabControlLKW.TabPages[i].Text;
string neuText = PromptForText("Tab-Namen ändern", "Neuer Name:", altText);
if (!string.IsNullOrWhiteSpace(neuText))
{
string fahrername = neuText.ToLower();
fahrername = fahrername.Replace(" ", "");
Benutzer fahrer = Benutzer.GetBenutzer(fahrername, null);
tabControlLKW.TabPages[i].Text = neuText;
if (fahrer != null) tabControlLKW.TabPages[i].Tag = fahrer;
}
break;
}
}
@ -196,7 +202,7 @@ namespace Deckungsbeitrag.AA_Forms
foreach (var tabData in tabDaten)
{
// Neuer TabPage
TabPage tabPage = new TabPage(tabData.FahrzeugName);
TabPage tabPage = new TabPage(tabData.TourName);
// UserControl erstellen
UCTabPageLKW uc = new UCTabPageLKW();
@ -225,13 +231,13 @@ namespace Deckungsbeitrag.AA_Forms
{
foreach (RadioButton rb in this.Controls.OfType<RadioButton>()) if (rb.Checked) SpeichereAlleTabs(rb);
}
private void FormTourenplanung_Shown(object sender, EventArgs e)
{
this.tabControlLKW.Width = this.Width - flowLayoutPanelKunden.Right - 20;
this.Cursor = Cursors.Default;
}
/// <summary>
/// Hier werden die KundenControl-Clone gezählt und kontrolliert ob die maximale Cloneanzahl bereits existiert.
/// Max. Cloneanzahl ist abhängig vom hinterlegten Lieferrhythmus.
@ -363,9 +369,10 @@ namespace Deckungsbeitrag.AA_Forms
//CHANGES: Es kann nach der Kontrolle der Lieferrhythmus geändert werden. Dazu muss auch die Anzahl der Liefertage gewählt werden.
//CHANGES: ComboBox kann zum Filtern der Kunden verwendet werden.
//CHANGES: Es können nur so viele Clone erstellt werden wie Liefertag im Lieferrhythmus hinterlegt sind.
//CHANGES: TabText wird mit Benutzerliste verglichen. Wenn ein passender gefunden wird Tag hinterlegt.
//DONE: Testen ob umbenennen funktioniert.
//DONE: Max Clones von PanelKunde zu PanelTourenplanung. (Lieferrythmus eingeben?)
//DONE: Speichern der Touren ermöglichen. Eventuell über .json oder .xml Datei?
//TODO: Filter für Regionen ermöglichen.
//DONE: Filter für Regionen ermöglichen.
//TODO: Funktioniert mehrere KundenControls auf einmal DragDrop?
//TODO: Wenn der Lieferrhythmus geändert wurde müssen alle Clone von falschen Tagen gelöscht werden.
//DONE: Wenn der Lieferrhythmus geändert wurde müssen alle Clone von falschen Tagen gelöscht werden.

View File

@ -38,14 +38,25 @@ namespace DatenDB
Standverminderung = 4
}
[Flags]
public enum AbteilungsStatus
{
Keine = 0,
Frottee = 1,
Kleinteile = 2,
Großteile = 4
// Bit 0-1: Frottee (Status)
FrotteeBegonnen = 1 << 0, // 1 = begonnen
FrotteeBeendet = 1 << 1, // 2 = beendet (Zwischenstatus)
// Bit 2-3: Kleinteile (Status)
KleinteileBegonnen = 1 << 2, // 4 = begonnen
KleinteileBeendet = 1 << 3, // 8 = beendet
// Bit 4-5: Großteile (Status)
GrossteileBegonnen = 1 << 4, // 16 = begonnen
GrossteileBeendet = 1 << 5, // 32 = beendet
}
#endregion
public class Auftrag
@ -60,14 +71,15 @@ namespace DatenDB
{
}
#region async Tasks
public static async Task<List<Auftrag>> GetAuftragListTodayAsync(DateTime produktion, NpgsqlConnection conn, AuftragTyp typ)
public static async Task<List<Auftrag>> GetAuftragListTodayAsync(DateTime produktion, NpgsqlConnection conn, AuftragTyp typ, int? abtstatus)
{
List<Auftrag> resultList = new List<Auftrag>();
isExpedit = true;
using (var command = new NpgsqlCommand())
{
command.Connection = conn;
command.CommandText = $"SELECT {ACOLUMNS}, k.name1 as kunde_name, k.suchtext as suchtext, u.benutzer_name as fahrer FROM {TABLE} a left join kundenverwaltung.kunde k on a.kunde_id = k.kunde_id left join kundenverwaltung.benutzer u on a.benutzer_id = u.benutzer_id WHERE typ = {(int)typ} AND erstellt::date = @produktion OR typ = {(int)typ} AND status < 7 ORDER BY liefertag ASC";
if (abtstatus != null) command.CommandText = $"SELECT {ACOLUMNS}, k.name1 as kunde_name, k.suchtext as suchtext, u.benutzer_name as fahrer FROM {TABLE} a left join kundenverwaltung.kunde k on a.kunde_id = k.kunde_id left join kundenverwaltung.benutzer u on a.benutzer_id = u.benutzer_id WHERE typ = {(int)typ} AND erstellt::date = @produktion AND (a.abteilungen_status & 2) = 0 OR typ = {(int)typ} AND status < 7 AND (a.abteilungen_status & 2) = 0 ORDER BY liefertag ASC";
else command.CommandText = $"SELECT {ACOLUMNS}, k.name1 as kunde_name, k.suchtext as suchtext, u.benutzer_name as fahrer FROM {TABLE} a left join kundenverwaltung.kunde k on a.kunde_id = k.kunde_id left join kundenverwaltung.benutzer u on a.benutzer_id = u.benutzer_id WHERE typ = {(int)typ} AND erstellt::date = @produktion OR typ = {(int)typ} AND status < 7 ORDER BY liefertag ASC";
command.Parameters.AddWithValue("@produktion", produktion.Date);
using (var reader = await command.ExecuteReaderAsync())
@ -79,14 +91,15 @@ namespace DatenDB
return resultList;
}
public static async Task<List<Auftrag>> GetExpeditListsAsync(int? typ, NpgsqlConnection conn)
public static async Task<List<Auftrag>> GetExpeditListsAsync(int? typ, NpgsqlConnection conn, int? abtstatus)
{
List<Auftrag> resultList = new List<Auftrag>();
isExpedit = true;
using (var command = new NpgsqlCommand())
{
command.Connection = conn;
command.CommandText = $"SELECT {ACOLUMNS}, k.name1 as kunde_name, k.suchtext as suchtext, u.benutzer_name as fahrer FROM {TABLE} a left join Kundenverwaltung.kunde k on a.kunde_id = k.kunde_id left join kundenverwaltung.benutzer u on a.benutzer_id = u.benutzer_id WHERE typ >= @typ AND status < 7 ORDER BY status DESC, liefertag ASC";
if (abtstatus != null) command.CommandText = $"SELECT {ACOLUMNS}, k.name1 as kunde_name, k.suchtext as suchtext, u.benutzer_name as fahrer FROM {TABLE} a left join Kundenverwaltung.kunde k on a.kunde_id = k.kunde_id left join kundenverwaltung.benutzer u on a.benutzer_id = u.benutzer_id WHERE typ >= @typ AND status < 7 AND a.abteilungen_status <= {abtstatus} ORDER BY status DESC, liefertag ASC";
else command.CommandText = $"SELECT {ACOLUMNS}, k.name1 as kunde_name, k.suchtext as suchtext, u.benutzer_name as fahrer FROM {TABLE} a left join Kundenverwaltung.kunde k on a.kunde_id = k.kunde_id left join kundenverwaltung.benutzer u on a.benutzer_id = u.benutzer_id WHERE typ >= @typ AND status < 7 ORDER BY status DESC, liefertag ASC";
command.Parameters.AddWithValue("@typ", typ ?? 0); // Parameterized + Null-Handling
using (var reader = await command.ExecuteReaderAsync())
@ -483,10 +496,10 @@ namespace DatenDB
}
else
{
if (Status == AuftragStatus.Vorbereitet) return _fertig = "✅";
if (Status == AuftragStatus.Vorbereitet || Status == AuftragStatus.Herrichten || Status == AuftragStatus.Gewaschen) return _fertig = "✅";
else
{
return _fertig = string.Empty; ;
return _fertig = string.Empty;
}
}
}

View File

@ -9,9 +9,14 @@ namespace Deckungsbeitrag.AA_Klassen
public class TourenDaten
{
public string FahrzeugName { get; set; }
public List<KundeData> KundenProTag { get; set; } = new List<KundeData>(); // [(Tag, Kunden[]), ...]
public Dictionary<string, int[]> Counter { get; set; } = new Dictionary<string, int[]>();
public string TourName { get; set; }
public int FahrerId { get; set; }
// pro Tag = string → eigene Kundenliste
public Dictionary<string, List<KundeData>> KundenProTag { get; set; }
= new Dictionary<string, List<KundeData>>();
public Dictionary<string, int[]> Counter { get; set; }
= new Dictionary<string, int[]>();
}
public class KundeData

View File

@ -20,13 +20,14 @@ namespace Deckungsbeitrag
static class Program
{
public static ImageList imagelist = new ImageList();
public static string userid;
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
string userid = ConfigurationManager.AppSettings["ConnectionString"].Split(';')[0];
userid = ConfigurationManager.AppSettings["ConnectionString"].Split(';')[0];
userid = userid.Split('=')[1];
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

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,
// indem Sie "*" wie unten gezeigt eingeben:
[assembly: AssemblyVersion("1.0.4.7")]
[assembly: AssemblyFileVersion("1.0.4.7")]
[assembly: AssemblyVersion("1.0.5.0")]
[assembly: AssemblyFileVersion("1.0.5.0")]

View File

@ -1661,15 +1661,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:SetupVerwaltung"
"ProductCode" = "8:{9E33B269-74F0-4D08-8166-8E0EFD990DD8}"
"PackageCode" = "8:{85BC06AD-B1CE-4846-87BE-3D7EFFCBB51D}"
"ProductCode" = "8:{6B3C669E-C722-4D03-89A0-20A0A08DB496}"
"PackageCode" = "8:{782FEDD4-F1E8-46A9-8434-AE7679248C4E}"
"UpgradeCode" = "8:{2DC7CE56-8D1C-42EB-B326-2E887EBB7F5A}"
"AspNetVersion" = "8:"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE"
"ProductVersion" = "8:1.0.33"
"ProductVersion" = "8:1.0.34"
"Manufacturer" = "8:Kilian Wirl GmbH"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"

View File

@ -290,25 +290,32 @@ namespace Deckungsbeitrag.UserControls
{
var data = new TourenDaten
{
FahrzeugName = this.Parent?.Text ?? "Unbekannt",
KundenProTag = new List<KundeData>()
TourName = this.Parent?.Text ?? "Unbekannt",
FahrerId = ((Benutzer)this.Parent?.Tag).BenutzerID ?? 0
};
// Alle FlowLayoutPanels durchgehen
foreach (Control ctrl in tableLayoutPanelTage.Controls)
{
if (ctrl is FlowLayoutPanel flp && flp.Tag is string tag) // ← TAG!
if (ctrl is FlowLayoutPanel flp && flp.Tag is string tag) // ← TAG = Wochentag
{
// Falls für diesen Tag noch keine Liste existiert, anlegen
if (!data.KundenProTag.TryGetValue(tag, out var kundenListe))
{
kundenListe = new List<KundeData>();
data.KundenProTag[tag] = kundenListe;
}
// Kunden sammeln
foreach (Control kundeCtrl in flp.Controls)
{
if (kundeCtrl is KundenControl kc)
{
data.KundenProTag.Add(new KundeData
kundenListe.Add(new KundeData
{
Name = kc.KundenName,
Region = kc.KundenRegion,
Tag = tag, // ← Wochentag mit speichern!
Tag = tag, // optional, kannst du auch weglassen, da im Dictionary-Key enthalten
KundeID = (int)((Kunde)kundeCtrl.Tag).KundeID,
ContAnzahl = kc.ContAnzahl
});
@ -318,13 +325,14 @@ namespace Deckungsbeitrag.UserControls
// Counter finden (labelContMO -> MO, etc.)
if (data.Counter.TryGetValue(tag, out int[] counts))
{
// Bestehende Werte laden
string baseName = $"labelCont{tag}";
for (int i = 0; i < 3; i++)
{
string lblName = $"{baseName}{i}"; // labelContMO0, labelContMO1, labelContMO2
var lbl = tableLayoutPanelTage.Controls.Find(lblName, true).FirstOrDefault() as Label;
var lbl = tableLayoutPanelTage.Controls
.Find(lblName, true)
.FirstOrDefault() as Label;
if (lbl != null && int.TryParse(lbl.Text, out int value))
{
@ -348,19 +356,19 @@ namespace Deckungsbeitrag.UserControls
flp.Controls.Clear();
}
// Kunden nach TAG verteilen
var kundenGruppiert = data.KundenProTag.GroupBy(k => k.Tag);
foreach (var gruppe in kundenGruppiert)
// Kunden nach TAG verteilen (angepasst für Dictionary)
foreach (var kvp in data.KundenProTag) // Dictionary: Key = tag, Value = Kundenliste
{
string tag = gruppe.Key;
string tag = kvp.Key;
var kundenListe = kvp.Value; // List<KundeData> für diesen Tag
FlowLayoutPanel zielFlp = tableLayoutPanelTage.Controls
.OfType<FlowLayoutPanel>()
.FirstOrDefault(flp => flp.Tag?.ToString() == tag);
if (zielFlp != null)
{
foreach (var kundeData in gruppe)
foreach (var kundeData in kundenListe) // nur die Kunden dieses Tags
{
Kunde kunde = Kunde.GetKunde(null, kundeData.KundeID, null);
KundenControl kundectrl = new KundenControl(kunde);
@ -376,13 +384,10 @@ namespace Deckungsbeitrag.UserControls
var counterLabel = tableLayoutPanelTage.Controls
.Find(counterName, true)
.FirstOrDefault() as Label;
if (counterLabel != null)
{
// Beispiel: nur ersten Wert anzeigen
counterLabel.Text = $"{counts[0]}/{counts[1]}/{counts[2]}";
// oder alle drei, z.B. "max / avg / min"
// counterLabel.Text = $"{counts[0]} / {counts[1]} / {counts[2]}";
}
}
@ -393,3 +398,6 @@ namespace Deckungsbeitrag.UserControls
}
//CHANGES: Innerhalb eines Tages kann die Reihenfolge angepasst werden.
//CHANGES: Wenn der Lieferrhythmus geändert wird, werden KundenControls an falschen Tagen gelöscht.
//CHANGES: Lieferrhythmen können angepasst und übernommen werden.
//CHANGES: Speichern und Laden wurde angepasst, JSON enthält jetzt pro Tag eine Kundenliste.
//CHANGES: Winter und Sommer wird getrennt geändert und gespeichert.

View File

@ -1,24 +1,27 @@
=====================================
NEUIGKEITEN - Version 1.0.4.7
NEUIGKEITEN - Version 1.0.5.0
=====================================
Build-Info:
- Build-Typ: Release Build
- Erledigte TODOs: 18
- Offene TODOs: 31
- Install-Reminders: 1
- Changes: 29
- Offene TODOs: 32
- Install-Reminders: 2
- Changes: 41
=== ⚙️ INSTALL-REMINDER (1) ===
=== ⚙️ INSTALL-REMINDER (2) ===
- ⚙️ Spalte Abteilungen in Auftrag muss in Wirl_DB_17012023 eingefügt werden. [FormExpedit.cs]
- ⚙️ Spalte Reklamation in Wirl_DB_17012023 einfügen [KundeArtikel.cs]
=== ✨ CHANGES (29) ===
=== ✨ CHANGES (41) ===
- ✨ AbteilungsStatus ist implementiert. [FormExpedit.cs]
- ✨ Als zweite Sortierung wird immer der Liefertag gewählt. [FormExpedit.cs]
- ✨ Auftragverwaltung Spalten wurden aktualisiert. Mit Icons, Buttons und Sortierung auf Liefertag. [FormMain.cs]
- ✨ Aus und Einblenden der Nachwäsche möglich. [FormExpedit.cs]
- ✨ Bearbeiten in ObjectListView möglich. (Kundename wird aber zurückgesetzt) [FormExpedit.cs]
- ✨ Bei DoppelClick auf Kundename wird KundenVW geöffnet. [FormExpedit.cs]
- ✨ Chart statt GridView für Fehlmengen. [FormExpedit.cs]
- ✨ ComboBox kann zum Filtern der Kunden verwendet werden. [FormTourenplanung.cs]
- ✨ CSV Datei wird erstellt oder bei jeder Inventur erweitert. (Einfach in Excel importieren und auswerten.) [FormNeuerAuftrag.cs]
- ✨ Datumfilter funktioniert. [FormExpedit.cs]
@ -26,34 +29,43 @@ Build-Info:
- ✨ Es können nur so viele Clone erstellt werden wie Liefertag im Lieferrhythmus hinterlegt sind. [FormTourenplanung.cs]
- ✨ Es wir kontrolliert ob der gewählte Liefertag zum hinterlegten Lieferrhythmus passt. [FormTourenplanung.cs]
- ✨ Es wird der zuständige Fahrer angezeigt. ToolTip zeigt den Grund falls vorhanden(Bei Sonderzuteilung). [FormExpedit.cs]
- ✨ Expedit hat Button für Reklamation statt Nachwäsche. Dadurch kann Mirka die Reklamation bearbeiten und eingeben. (AKTUELL NUR MIRKA) [FormExpedit.cs]
- ✨ Fahrer können abgeholte Aufträge erstellen und ausgelieferte Aufträge markieren. [FormMain.cs]
- ✨ Frottee Expedit alle Buttons werden ausgeblendet. [FormExpedit.cs]
- ✨ Frottee Expedit zeigt Aufträge die bei Frottee nicht Beendet wurden. [FormExpedit.cs]
- ✨ Geschäftaufträge werden in neuem Tab angezeigt. [FormExpedit.cs]
- ✨ GroupBox nicht mehr notwendig. Etikette Druck über ObjectListView. [FormExpedit.cs]
- ✨ Highlightfarbe bleibt auch wenn unfocused. (Farbe ändern?) [FormExpedit.cs]
- ✨ Innerhalb eines Tages kann die Reihenfolge angepasst werden. [UCTabPageLKW.cs]
- ✨ Keine Timer da Probleme mit DB-Connection. DataGridView wird neu geladen wenn Auftrag neu gewählt wird. [FormExpedit.cs]
- ✨ Kundeneingabe mit ? fügt einmaligen Kundenname als ZusatzInfo hinzu und wählt Kunde BAR DIVERSE 2320000 [FormExpedit.cs]
- ✨ Lieferrhythmen können angepasst und übernommen werden. [UCTabPageLKW.cs]
- ✨ Liefertag errechnet sich jetzt aus dem Lieferrhythmus. Funktion wählt nächstmöglichen Liefertermin im Rhythmus. Bei Klick auf Tag bleibt alles gleich. (Auch mit Heute liefern?) [FormNeuerAuftrag.cs]
- ✨ NeuerAuftrag wird jetzt mit Propertie AuftragTyp aufgerufen. Dadurch ist die Auswahl des AuftragTyp konstanter. [FormNeuerAuftrag.cs]
- ✨ ObjectListView speichert Status automatisch beim schließen des Fensters und läd wieder wenn neu gestartet wird. [FormExpedit.cs]
- ✨ Rechtsklick auf Spaltenheader ermöglicht Filtern. [FormExpedit.cs]
- ✨ Saisonauswahl DropDown eingefügt. Wenn Zwischensaison gewählt wir Warnung wegen falschen Liefertagen gezeigt. Sonst wird Saisonrhythmus als Liefertag beachtet. [FormMain.cs]
- ✨ Sortierte Spalte hat leicht andere Farbe. (Besser zu erkennen wonach sortiert wird) [FormExpedit.cs]
- ✨ Speichern und Laden wurde angepasst, JSON enthält jetzt pro Tag eine Kundenliste. [UCTabPageLKW.cs]
- ✨ Suchen eines Auftrags mit Scan möglich. [FormExpedit.cs]
- ✨ TabText wird mit Benutzerliste verglichen. Wenn ein passender gefunden wird Tag hinterlegt. [FormTourenplanung.cs]
- ✨ Wenn BenutzerRolle ist Expedit wird abgefragt ob weitere Reklamation eingegeben wird. [FormFehlmengeCount.cs]
- ✨ Wenn BenutzerRolle ist Expedit wird statt Fehlmenge Reklamation erhöht. [FormFehlmengeCount.cs]
- ✨ Wenn der Lieferrhythmus geändert wird, werden KundenControls an falschen Tagen gelöscht. [UCTabPageLKW.cs]
- ✨ Wenn Doppelklick auf Zelle, wird gefragt ob bearbeiten wirklich gewollt. Sonst wird blockiert. [FormExpedit.cs]
- ✨ Wenn Fahrer Auftrag erstellt wird beim Speichern standardmäßig seine ID als ArbeiterID gespeichert. Bedeutet ausführender = Fahrer selber. [FormNeuerAuftrag.cs]
- ✨ Wenn HEUTE als Liefertag gewählt, kommt Frage ob heute oder in einer Woche. Wenn JA dann HEUTE. [FormExpedit.cs]
- ✨ Winter und Sommer wird getrennt geändert und gespeichert. [UCTabPageLKW.cs]
=== ✅ ERLEDIGTE TODOs (18) ===
- ✅ : 2 neue Buttons für "Neue Inventur" und "Neue Standveränderung" [FormMain.cs]
- ✅ : Auftrag über FormListe holen und daraus den Kunden für Fehlmenge holen. [FormFehlmengeCount.cs]
- ✅ : Bei Fahrer neue Deaktivierung von Controls. [FormMain.cs]
- ✅ : Bei Transport wir ein Fach mit Aktuellem Auftrag erstellt. Das Alte wird bei Transport gespeichert. [FormAusschlager.cs]
- ✅ : Einmalige Kunden für Geschäft ermöglichen [FormExpedit.cs]
- ✅ : Etikett Drucken als Button in Row. Dann Vorschau anzeigen und Drucken. [FormExpedit.cs]
- ✅ : Etikett GroupBox entfernen. Änderungen direkt in ObjectListView vornehmen PrintPreview für Etikett. [FormExpedit.cs]
- ✅ : Fehler wenn FormListe mit X geschlossen wird und Kunde null ist wurde behoben. [FormNeuerAuftrag.cs]
- ✅ : Filter für Regionen ermöglichen. [FormTourenplanung.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]
- ✅ : Max Clones von PanelKunde zu PanelTourenplanung. (Lieferrythmus eingeben?) [FormTourenplanung.cs]
- ✅ : Neue Aufgabe Screen erstellen. [FormNeueAufgabe.cs]
@ -61,26 +73,28 @@ Build-Info:
- ✅ : Speichern der Touren ermöglichen. Eventuell über .json oder .xml Datei? [FormTourenplanung.cs]
- ✅ : StartUp von Expedit verfeinern. [FormExpedit.cs]
- ✅ : Testen ob umbenennen funktioniert. [FormTourenplanung.cs]
- ✅ : Wenn der Lieferrhythmus geändert wurde müssen alle Clone von falschen Tagen gelöscht werden. [FormTourenplanung.cs]
- ✅ : Wenn Fahrer einen Auftrag an Kollege übergibt? [FormNeuerAuftrag.cs]
- ✅ : Wenn NeuerAuftrag gewählt Fach ändern nicht vergessen. [FormAusschlager.cs]
- ✅ : Wenn NeuerAuftrag gewählt wie gehts weiter? [FormAusschlager.cs]
=== 🔄 OFFENE TODOs (31) ===
=== 🔄 OFFENE TODOs (32) ===
- 🔄 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]
- 🔄 Auftrag Schnellerfassung erstellen. Kundenliste aus JSON in OLV einfügen wenn schmutzig > 0 dann Auftrag erstellen. Spalten: "Kunde, schmutzig, liefertag, zustellfahrer" evnetuell in AuftragVW? [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]
- 🔄 Deaktivieren wenn SPS funktioniert. Transport wird simuliert. [FormWSVerfolgung.cs]
- 🔄 Design des Controls anpassen. Eventuell im Designer erstellen. [KundenControl.cs]
- 🔄 Einkommentieren wenn ArtikelUpdate auf ArtikelKurzliste umgestellt werden kann. [FormMain.cs]
- 🔄 Eventuell auch andere ListViews einbinden? [Funktionen.cs]
- 🔄 Filter für Regionen ermöglichen. [FormTourenplanung.cs]
- 🔄 Funktioniert mehrere KundenControls auf einmal DragDrop? [FormTourenplanung.cs]
- 🔄 für Ladescreen den Progressbar programieren. (perplexity fragen wie der Status an einen anderen Screen übergeben werden kann) [FormMain.cs]
- 🔄 Grund immer abfragen oder nur wenn Fahrer die Zuteilung ändert? [FormNeuerAuftrag.cs]
- 🔄 Hier Settings speichern mit UserSettingsManager Klasse. [FormEinstellung.cs]
- 🔄 JSON nach angemeldeten Fahrer durchsuchen und Kundenliste des aktuellen Wochentag anzeigen. [FormMain.cs]
- 🔄 LadenScreen anzeigen etc. [FormMain.cs]
- 🔄 Nach Test und Rücksprache eventuell wieder umbauen. Benutzer.Rolle etc. [FormFehlmengeCount.cs]
- 🔄 OLV State speichern. [FormExpedit.cs]
@ -94,10 +108,10 @@ Build-Info:
- 🔄 Umbau in Switch. [FormWSVerfolgung.cs]
- 🔄 UserSetting Properties eintragen und in EinstellungsScreen abrufen. [UserSettingsManager.cs]
- 🔄 Weitere Properties von oben hier zuweisen [UserSettingsManager.cs]
- 🔄 Wenn der Lieferrhythmus geändert wurde müssen alle Clone von falschen Tagen gelöscht werden. [FormTourenplanung.cs]
- 🔄 Wenn Frottee-Expedit auch Relamation bearbeitet, muss BenutzerRolle abgefragt werden. siehe CHANGES. [FormFehlmengeCount.cs]
- 🔄 Wenn GroupBox nicht notwendig, dann löschen. [FormExpedit.cs]
- 🔄 Wenn kunde null dann return. [FormNeuerAuftrag.cs]
- 🔄 Wenn Nachwäsche oder Müllwäsche alle Artikel anzeigen. [FormFehlmengeCount.cs]
Installation: 06.02.2026 13:29
Installation: 11.02.2026 13:09
=====================================