diff --git a/AA-Forms/FormAuftragAuswahl.Designer.cs b/AA-Forms/FormAuftragAuswahl.Designer.cs new file mode 100644 index 0000000..684c95f --- /dev/null +++ b/AA-Forms/FormAuftragAuswahl.Designer.cs @@ -0,0 +1,103 @@ +namespace Deckungsbeitrag.AA_Forms +{ + partial class FormAuftragAuswahl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAuftragAuswahl)); + this.panelAuswahl = new System.Windows.Forms.FlowLayoutPanel(); + this.panelSuchen = new System.Windows.Forms.Panel(); + this.textBoxKunde = new System.Windows.Forms.TextBox(); + this.panelSuchen.SuspendLayout(); + this.SuspendLayout(); + // + // panelAuswahl + // + this.panelAuswahl.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.panelAuswahl.AutoScroll = true; + this.panelAuswahl.AutoScrollMargin = new System.Drawing.Size(20, 20); + this.panelAuswahl.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.panelAuswahl.Location = new System.Drawing.Point(0, 70); + this.panelAuswahl.Margin = new System.Windows.Forms.Padding(0); + this.panelAuswahl.Name = "panelAuswahl"; + this.panelAuswahl.Padding = new System.Windows.Forms.Padding(20); + this.panelAuswahl.Size = new System.Drawing.Size(1674, 928); + this.panelAuswahl.TabIndex = 0; + // + // panelSuchen + // + this.panelSuchen.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101))))); + this.panelSuchen.Controls.Add(this.textBoxKunde); + this.panelSuchen.Dock = System.Windows.Forms.DockStyle.Top; + this.panelSuchen.Location = new System.Drawing.Point(0, 0); + this.panelSuchen.Margin = new System.Windows.Forms.Padding(5); + this.panelSuchen.Name = "panelSuchen"; + this.panelSuchen.Padding = new System.Windows.Forms.Padding(15); + this.panelSuchen.Size = new System.Drawing.Size(1674, 65); + this.panelSuchen.TabIndex = 1; + // + // textBoxKunde + // + this.textBoxKunde.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textBoxKunde.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.textBoxKunde.ForeColor = System.Drawing.Color.Silver; + this.textBoxKunde.Location = new System.Drawing.Point(10, 10); + this.textBoxKunde.Margin = new System.Windows.Forms.Padding(10); + this.textBoxKunde.Name = "textBoxKunde"; + this.textBoxKunde.Size = new System.Drawing.Size(1654, 45); + this.textBoxKunde.TabIndex = 1; + this.textBoxKunde.Text = "Kunde suchen"; + this.textBoxKunde.Click += new System.EventHandler(this.TextBoxKunde_Click); + this.textBoxKunde.TextChanged += new System.EventHandler(this.TextBoxKunde_TextChanged); + // + // FormAuftragAuswahl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1674, 998); + this.Controls.Add(this.panelSuchen); + this.Controls.Add(this.panelAuswahl); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FormAuftragAuswahl"; + this.Text = "Auftrag wählen"; + this.Load += new System.EventHandler(this.FormAuftragAuswahl_Load); + this.panelSuchen.ResumeLayout(false); + this.panelSuchen.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.FlowLayoutPanel panelAuswahl; + private System.Windows.Forms.Panel panelSuchen; + private System.Windows.Forms.TextBox textBoxKunde; + } +} \ No newline at end of file diff --git a/AA-Forms/FormAuftragAuswahl.cs b/AA-Forms/FormAuftragAuswahl.cs new file mode 100644 index 0000000..8d18341 --- /dev/null +++ b/AA-Forms/FormAuftragAuswahl.cs @@ -0,0 +1,113 @@ +using DatenDB; +using Deckungsbeitrag.AA_Klassen; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Drawing.Printing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using VirtualKeyboard; +using static System.Net.Mime.MediaTypeNames; + +namespace Deckungsbeitrag.AA_Forms +{ + public partial class FormAuftragAuswahl : Form + { + private ArtikelKategorie Abteilung; + private List Auftragliste; + private QwertzKeyboard keyboard; + + public FormAuftragAuswahl() + { + InitializeComponent(); + + switch (ConfigurationManager.AppSettings["ConnectionString"].Split(';')[0].Split('=')[1]) + { + case var t when t.Contains("frottee"): Abteilung = ArtikelKategorie.Frottee; break; + case var t when t.Contains("kleinteile"): Abteilung = ArtikelKategorie.Kleinteile; break; + case var t when t.Contains("grossteile"): Abteilung = ArtikelKategorie.Grossteile; break; + case var t when t.Contains("spannleintuch"): Abteilung = ArtikelKategorie.Spannleintuch; break; + default: Abteilung = ArtikelKategorie.Kleinteile; break; //TODO: Default Zuweisung löschen bevor in Echtbetrieb. + } + } + + private async void FormAuftragAuswahl_Load(object sender, EventArgs e) + { + new TouchScroll(panelAuswahl); + await GetAuftragliste(); + Load_PanelAuswahl(this.Auftragliste); + } + private async Task GetAuftragliste() + { + this.Auftragliste = await View_Auftrag_Expedit.GetAuftragExpeditAsync(statusFilter: AuftragStatus.Gewaschen, kategorie: Abteilung); + } + + private async void Load_PanelAuswahl(List _liste) + { + this.panelAuswahl.Controls.Clear(); + _liste = _liste.OrderBy(x => x.KundeName).ToList(); + + foreach (View_Auftrag_Expedit item in _liste) + { + string name = string.Empty; + if (item.KundeName.Length > 15) name = item.KundeName.Substring(0, 15) + "..."; + else name = item.KundeName; + Label lbl = new Label() + { + Text = name, + BackColor = Color.Silver, + BorderStyle = BorderStyle.FixedSingle, + Font = new Font("Microsoft Sans Serif", 20, FontStyle.Bold), + Size = new Size(400, 70), + TextAlign = ContentAlignment.MiddleCenter, + Margin = new Padding(5, 5, 5, 5), + Padding = new Padding(15, 15, 15, 15), + + }; + + panelAuswahl.Controls.Add(lbl); + } + + } + + private void TextBoxKunde_TextChanged(object sender, EventArgs e) + { + TextBox textbox = sender as TextBox; + string text = textbox.Text.Trim().ToLower(); + if (!string.IsNullOrWhiteSpace(text)) + { + var filtered = string.IsNullOrWhiteSpace(text) ? this.Auftragliste : this.Auftragliste.Where(x => x.KundeName != null && x.KundeName.ToLower().Contains(text)).ToList(); + Load_PanelAuswahl(filtered); + } + else Load_PanelAuswahl(this.Auftragliste); + + } + + private void TextBoxKunde_Click(object sender, EventArgs e) + { + TextBox textbox = sender as TextBox; + textbox.Clear(); + + if (Program.istTouch & Screen.PrimaryScreen.WorkingArea.Width > 0 & Screen.PrimaryScreen.WorkingArea.Width < 2000) + { + if (keyboard == null || keyboard.IsDisposed) + { + keyboard = new QwertzKeyboard(textBoxKunde, "isAlpha"); + if (keyboard.ShowDialog() == DialogResult.OK) this.ActiveControl.Focus(); + } + else + { + keyboard.Close(); + keyboard = new QwertzKeyboard(textBoxKunde, "isAlpha"); + if (keyboard.ShowDialog() == DialogResult.OK) this.ActiveControl.Focus(); + } + } + } + } +} diff --git a/AA-Forms/FormAuftragAuswahl.resx b/AA-Forms/FormAuftragAuswahl.resx new file mode 100644 index 0000000..4b0fe78 --- /dev/null +++ b/AA-Forms/FormAuftragAuswahl.resx @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + QmCC + + + \ No newline at end of file diff --git a/AA-Forms/FormAuftragDetail.cs b/AA-Forms/FormAuftragDetail.cs index b1a49b7..94b8980 100644 --- a/AA-Forms/FormAuftragDetail.cs +++ b/AA-Forms/FormAuftragDetail.cs @@ -38,7 +38,6 @@ namespace Deckungsbeitrag private Saison saison = Saison.GetAktivSaison(); - //WENN AUFTRAG SPEICHERN private bool _tosave = false; public bool Tosave @@ -146,10 +145,13 @@ namespace Deckungsbeitrag break; } - this.ClientSize = new Size(this.oLVArtikel.Right + 10, this.ClientSize.Height); if (this.oLVArtikel.Visible) + { if (this.oLVArtikel.Items.Count == this.oLVArtikel.CheckedItems.Count) Toclose = true; + this.ClientSize = new Size(this.oLVArtikel.Right + 10, this.ClientSize.Height); + } + else this.ClientSize = new Size(this.textBoxZusatz.Right + 10, this.ClientSize.Height); } private void Load_NWAusgleich() @@ -245,7 +247,6 @@ namespace Deckungsbeitrag auftrag.TourID = this.comboBoxFahrer.SelectedIndex == -1 ? null : (int?)this.comboBoxFahrer.SelectedValue; auftrag.Priority = this.comboBoxPriority.SelectedIndex == -1 ? Priority.None : ((Priority)this.comboBoxPriority.SelectedItem); auftrag.ZusatzInfo = this.textBoxZusatz.Text; - auftrag.Save(); if (auftrag.Status == AuftragStatus.Herrichten) { @@ -341,8 +342,10 @@ namespace Deckungsbeitrag } break; } + if (this.oLVArtikel.CheckedItems.Count == this.oLVArtikel.Items.Count) { auftrag.Erledigt = DateTime.Now; auftrag.ErledigtVon = this.benutzer.BenutzerID; } } + auftrag.Save(); Tosave = false; } //SCHMUTZWÄSCHESCHEIN DRUCKEN @@ -357,7 +360,6 @@ namespace Deckungsbeitrag } } - #region ToSave //BEI CLICK AUF CONTAINER +/- SPEICHERN WIRD AKITV @@ -681,7 +683,7 @@ namespace Deckungsbeitrag { this.Width--; } - if (oLVArtikel != null) this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25); + //if (oLVArtikel != null) this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25); } private void ChangeAnzahl(int newValue, int oldvalue, object _artikel) { diff --git a/AA-Forms/FormExpedit.Designer.cs b/AA-Forms/FormExpedit.Designer.cs index 683b565..2824bd4 100644 --- a/AA-Forms/FormExpedit.Designer.cs +++ b/AA-Forms/FormExpedit.Designer.cs @@ -56,6 +56,10 @@ this.containerSauberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.containerSchmutzigToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tourToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.abteilungStatusToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.kleinteileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.frotteeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.großteileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.auftraginfoAnsehenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aufgabeErledigtToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.auftragVerschiebenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -352,12 +356,13 @@ this.statusToolStripMenuItem, this.containerSauberToolStripMenuItem, this.containerSchmutzigToolStripMenuItem, - this.tourToolStripMenuItem}); + this.tourToolStripMenuItem, + this.abteilungStatusToolStripMenuItem}); this.bearbeitenToolStripMenuItem.Image = global::Deckungsbeitrag.Properties.Resources.PenOne_16x; this.bearbeitenToolStripMenuItem.Name = "bearbeitenToolStripMenuItem"; this.bearbeitenToolStripMenuItem.Size = new System.Drawing.Size(239, 26); this.bearbeitenToolStripMenuItem.Text = "Bearbeiten"; - this.bearbeitenToolStripMenuItem.DropDownOpening += new System.EventHandler(this.ContextMenuStripBearbeiten_DropDownOpening); + this.bearbeitenToolStripMenuItem.DropDownOpening += new System.EventHandler(this.ContextMenuStrip_DropDownOpening); // // liefertagToolStripMenuItem // @@ -399,6 +404,40 @@ this.tourToolStripMenuItem.Text = "Tour"; this.tourToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripBearbeiten_Click); // + // abteilungStatusToolStripMenuItem + // + this.abteilungStatusToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.kleinteileToolStripMenuItem, + this.frotteeToolStripMenuItem, + this.großteileToolStripMenuItem}); + this.abteilungStatusToolStripMenuItem.Name = "abteilungStatusToolStripMenuItem"; + this.abteilungStatusToolStripMenuItem.Size = new System.Drawing.Size(227, 26); + this.abteilungStatusToolStripMenuItem.Text = "Abteilung Status"; + // + // kleinteileToolStripMenuItem + // + this.kleinteileToolStripMenuItem.AccessibleName = "Kleinteile"; + this.kleinteileToolStripMenuItem.Name = "kleinteileToolStripMenuItem"; + this.kleinteileToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.kleinteileToolStripMenuItem.Text = "Kleinteile beendet"; + this.kleinteileToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click); + // + // frotteeToolStripMenuItem + // + this.frotteeToolStripMenuItem.AccessibleName = "Frottee"; + this.frotteeToolStripMenuItem.Name = "frotteeToolStripMenuItem"; + this.frotteeToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.frotteeToolStripMenuItem.Text = "Frottee beendet"; + this.frotteeToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click); + // + // großteileToolStripMenuItem + // + this.großteileToolStripMenuItem.AccessibleName = "Grossteile"; + this.großteileToolStripMenuItem.Name = "großteileToolStripMenuItem"; + this.großteileToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.großteileToolStripMenuItem.Text = "Großteile beendet"; + this.großteileToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click); + // // auftraginfoAnsehenToolStripMenuItem // this.auftraginfoAnsehenToolStripMenuItem.Image = global::Deckungsbeitrag.Properties.Resources.InformationSymbol_16x; @@ -561,6 +600,7 @@ this.objectListViewAuftrag.CellEditStarting += new BrightIdeasSoftware.CellEditEventHandler(this.ObjectListViewAuftrag_CellEditStarting); this.objectListViewAuftrag.CellClick += new System.EventHandler(this.ObjectListViewAuftrag_CellClick); this.objectListViewAuftrag.FormatCell += new System.EventHandler(this.ObjectListViewAuftrag_FormatCell); + this.objectListViewAuftrag.FormatRow += new System.EventHandler(this.ObjectListViewAuftrag_FormatRow); this.objectListViewAuftrag.DoubleClick += new System.EventHandler(this.ObjectListView_DoubleClick); // // tabControlAuftragList @@ -748,5 +788,9 @@ private System.Windows.Forms.ToolStripMenuItem aufgabeErledigtToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem auftragLöschenToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem auftraginfoAnsehenToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem abteilungStatusToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem frotteeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem kleinteileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem großteileToolStripMenuItem; } } \ No newline at end of file diff --git a/AA-Forms/FormExpedit.cs b/AA-Forms/FormExpedit.cs index 206f023..0a19ca4 100644 --- a/AA-Forms/FormExpedit.cs +++ b/AA-Forms/FormExpedit.cs @@ -5,6 +5,7 @@ using Deckungsbeitrag.AA_Klassen; using Deckungsbeitrag.Properties; using Deckungsbeitrag.UserControls; using Microsoft.VisualBasic; +using Microsoft.VisualBasic.ApplicationServices; using Npgsql; using System; using System.Collections.Generic; @@ -17,6 +18,7 @@ using System.IO; using System.Linq; using System.Net.Sockets; using System.Reflection; +using System.Runtime.InteropServices.ComTypes; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -68,6 +70,26 @@ namespace Deckungsbeitrag private List listRampe; public TrelloCardClient _trelloClient; private bool TrelloKarte = true; + private bool _toPrint = true; + public bool ToPrint + { + get { return _toPrint; } + set + { + _toPrint = value; + if (_toPrint) + { + buttonEtikettenDrucken.Enabled = true; + buttonEtikettenDrucken.BackColor = Color.FromArgb(0, 192, 0); + } + else + { + buttonEtikettenDrucken.Enabled = false; + buttonEtikettenDrucken.BackColor = Color.Gray; + } + } + } + #endregion public FormExpedit(Benutzer benutzer) { @@ -114,23 +136,38 @@ namespace Deckungsbeitrag { try { - await Task.WhenAll( - GetAuftraegeAsync(null)); + await GetAuftraegeAsync(null); // UI-Update NACH Daten (Invoke!) - this.Invoke(new Action(() => + if (this.IsHandleCreated && !this.IsDisposed) + { + this.BeginInvoke(new Action(() => + { + // OLVs füllen + if (listAuftragToday.Count > 0) Load_OLV(this.objectListViewAuftrag, listAuftragToday); + if (listAuftragGeschaeft != null && listAuftragGeschaeft.Count > 0) Load_OLV(this.objectListViewGeschaeft, listAuftragGeschaeft); + if (listSonderAuftrag.Count > 0) Load_OLV(this.objectListViewSonder, listSonderAuftrag); + if (listVorbereitet != null && listVorbereitet.Count > 0) Load_OLV(this.objectListViewVorbereitet, listVorbereitet); + if (listRampe != null && listRampe.Count > 0) Load_OLV(this.objectListViewRampe, listRampe); + + // Controls aktivieren und deaktivieren nach BenutzerRolle + Enable_Controls(); + + })); + } + else { // OLVs füllen if (listAuftragToday.Count > 0) Load_OLV(this.objectListViewAuftrag, listAuftragToday); if (listAuftragGeschaeft != null && listAuftragGeschaeft.Count > 0) Load_OLV(this.objectListViewGeschaeft, listAuftragGeschaeft); if (listSonderAuftrag.Count > 0) Load_OLV(this.objectListViewSonder, listSonderAuftrag); if (listVorbereitet != null && listVorbereitet.Count > 0) Load_OLV(this.objectListViewVorbereitet, listVorbereitet); - if (listRampe!= null && listRampe.Count > 0) Load_OLV(this.objectListViewRampe, listRampe); + if (listRampe != null && listRampe.Count > 0) Load_OLV(this.objectListViewRampe, listRampe); // Controls aktivieren und deaktivieren nach BenutzerRolle Enable_Controls(); - })); + } } catch (Exception ex) { @@ -349,19 +386,43 @@ namespace Deckungsbeitrag showUserControl.Show(); } + private void ContextMenuStripAbteilungStatus_Click(object sender, EventArgs e) + { + ObjectListView olv = (ObjectListView)this.tabControlAuftragList.SelectedTab.Controls[0]; + ToolStripItem item = (ToolStripItem)sender; + // Überprüfung ob Click auf einem Item war. + if (olv.SelectedObject == null) return; + Auftrag _auftrag = Auftrag.GetAuftrag(((View_Auftrag_Expedit)olv.SelectedObject).AuftragID); + + if (_auftrag == null) return; + if (item.AccessibleName == "Kleinteile") { _auftrag.Abteilungen |= AbteilungsStatus.KleinteileBeendet; _auftrag.Save(); } + if (item.AccessibleName == "Grossteile") { _auftrag.Abteilungen |= AbteilungsStatus.GrossteileBeendet; _auftrag.Save(); } + if (item.AccessibleName == "Frottee") { _auftrag.Abteilungen |= AbteilungsStatus.FrotteeBeendet; _auftrag.Save(); } + + Neuladen_OLV(olv); + } + #endregion - private void ContextMenuStripBearbeiten_DropDownOpening(object sender, EventArgs e) + private void ContextMenuStrip_DropDownOpening(object sender, EventArgs e) { ObjectListView olv = (ObjectListView)this.tabControlAuftragList.SelectedTab.Controls[0]; ToolStripMenuItem tsi = (ToolStripMenuItem)sender; foreach (ToolStripDropDownItem item in tsi.DropDownItems) { + if (item.AccessibleName == null) continue; string aspect = item.AccessibleName; var col = olv.AllColumns.OfType().First(x => x.AspectName == aspect); if (col.IsEditable) item.Enabled = true; else item.Enabled = false; } + + // MenuItem Abteilungen Status Enablen oder Disablen + ToolStripMenuItem menuitem = (ToolStripMenuItem)tsi.DropDownItems[5]; + var varcol = olv.AllColumns.OfType().First(x => x.AspectName == "KleinteileAnzeige"); + if (varcol.IsEditable) menuitem.Enabled = true; + else menuitem.Enabled = false; + } private void ContextMenuStripExpedit_Opening(object sender, System.ComponentModel.CancelEventArgs e) { @@ -381,6 +442,7 @@ namespace Deckungsbeitrag else this.auftragLöschenToolStripMenuItem.Enabled = true; } + #region ObjectListView-Events private void Load_OLV(ObjectListView olv, List auftragliste) @@ -454,6 +516,19 @@ namespace Deckungsbeitrag OLVColumn Find(string header) => columns.FirstOrDefault(c => String.Equals(c.Text, header, StringComparison.OrdinalIgnoreCase)); + // --- Typ-String --- + var typColumn = Find("Typ"); + typColumn.AspectToStringConverter = delegate (object x) + { + if (x == null) return string.Empty; + + var typ = (AuftragTyp)x; + if (typ == AuftragTyp.Standart) + return string.Empty; + + return typ.ToString(); + }; + // --- Aufgabe-Icon --- var aufgabeCol = Find("Aufgabe"); if (aufgabeCol != null) @@ -477,15 +552,13 @@ namespace Deckungsbeitrag } - // --- Kunde-Icon --- + // ---Tour-AspectName --- var tourCol = Find("TourID"); if (tourCol != null) { tourCol.AspectName = "Tour"; - } - // --- Schmutzig / Sauber --- var dirtCol = Find("Schmutzig"); if (dirtCol != null) @@ -499,7 +572,7 @@ namespace Deckungsbeitrag { cleanCol.HeaderImageKey = "clean"; cleanCol.ShowTextInHeader = false; - cleanCol.MinimumWidth = cleanCol.MaximumWidth = 80; // Bugfix: nicht dirtCol.MaximumWidth + cleanCol.MinimumWidth = cleanCol.MaximumWidth = 80; } // --- Abschließen-Button --- @@ -522,7 +595,7 @@ namespace Deckungsbeitrag break; case BenutzerRolle.Fahrer: break; - case BenutzerRolle.Admin: if (col.AspectName is "ContainerDirt" || col.AspectName is "Liefertag" || col.AspectName is "ContainerClean" || col.AspectName is "Status" || col.AspectName is "Tour") col.IsEditable = true; + case BenutzerRolle.Admin: if (col.AspectName is "ContainerDirt" || col.AspectName is "Liefertag" || col.AspectName is "ContainerClean" || col.AspectName is "Status" || col.AspectName is "Tour" || col.AspectName is "FrotteeAnzeige" || col.AspectName is "KleinteileAnzeige" || col.AspectName is "GrossteileAnzeige") col.IsEditable = true; break; case BenutzerRolle.Waschstrasse: break; @@ -581,6 +654,9 @@ namespace Deckungsbeitrag } private void ObjectListViewAuftrag_FormatCell(object sender, FormatCellEventArgs e) { + ObjectListView olv = sender as ObjectListView; + + // Button Spalte immer mit Hintergrund damit besser sichtbar. if (e.Column.IsButton) { if(e.SubItem.BackColor != Color.LightBlue) @@ -595,17 +671,32 @@ namespace Deckungsbeitrag } } + + // Abteilungstatus wird farblich gekennzeichnet 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.SubItem.BackColor == Color.YellowGreen) e.SubItem.ForeColor = Color.Black; + else 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; + + // Wenn FrotteeExpedit und FrotteeAbteilung ist in Bearbeitung dann Zeile Gelb hinterlegen. + if (this.benutzer.Rolle == BenutzerRolle.Frottee && e.Column.Text == "FR") + { + foreach (OLVListSubItem sitem in e.Item.SubItems) + { + sitem.BackColor = Color.Yellow; + } + e.SubItem.ForeColor = Color.Black; + e.Item.BackColor = Color.Yellow; + } + } if (e.CellValue.ToString() == "☒") { @@ -617,12 +708,35 @@ namespace Deckungsbeitrag } + private void ObjectListViewAuftrag_FormatRow(object sender, FormatRowEventArgs e) + { + bool isFertig = false; + ObjectListView olv = sender as ObjectListView; + View_Auftrag_Expedit vwAuftrag = e.Model as View_Auftrag_Expedit; + + if (vwAuftrag.FrotteeStatus > 1 & vwAuftrag.KleinteileStatus > 1 & vwAuftrag.GrossteileStatus > 1) isFertig = true; + if (vwAuftrag.FrotteeStatus > 2 & vwAuftrag.KleinteileStatus > 2 & vwAuftrag.GrossteileStatus > 2) isFertig = false; + + if (this.benutzer.Rolle != BenutzerRolle.Frottee & isFertig) + { + foreach (OLVListSubItem subitem in e.Item.SubItems) + { + subitem.BackColor = Color.YellowGreen; + } + } + } + private async void ObjectListViewAuftrag_CellClick(object sender, CellClickEventArgs e) { itemlocation = new Point(e.Location.X, e.Location.Y); ObjectListView olv = (ObjectListView)sender; + View_Auftrag_Expedit expAuftrag; if (e.Model == null) { chartFehlmenge.Visible = false; groupBoxKndInfo.Visible = false; return; } - Auftrag _auftrag = Auftrag.GetAuftrag(((View_Auftrag_Expedit)e.Model).AuftragID); + else expAuftrag = (View_Auftrag_Expedit)e.Model; + Auftrag _auftrag = Auftrag.GetAuftrag(expAuftrag.AuftragID); + + if (expAuftrag.FrotteeStatus == 1 || expAuftrag.KleinteileStatus == 1 || expAuftrag.GrossteileStatus == 1) ToPrint = false; + else ToPrint = true; if (_auftrag.Status != AuftragStatus.Fertig) { @@ -1513,7 +1627,7 @@ namespace Deckungsbeitrag Typ = AuftragTyp.IST_Erhoehung, Erstellt = DateTime.Now, ErstelltVon = (int)this.benutzer.BenutzerID, - Status = AuftragStatus.Vorbereitet, + Status = AuftragStatus.Herrichten, }; @@ -1526,6 +1640,7 @@ namespace Deckungsbeitrag private void FormExpedit_MouseMove(object sender, MouseEventArgs e) { } + } } //DONE: Lösung zum Löschen von Aufträgen überlegen. (Kevin fragen) diff --git a/AA-Forms/FormExpedit.resx b/AA-Forms/FormExpedit.resx index 6e1d9fe..8694111 100644 --- a/AA-Forms/FormExpedit.resx +++ b/AA-Forms/FormExpedit.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 12, 17 + 7, 21 diff --git a/AA-Forms/FormFehlmengeCount.cs b/AA-Forms/FormFehlmengeCount.cs index b8148b1..707a27b 100644 --- a/AA-Forms/FormFehlmengeCount.cs +++ b/AA-Forms/FormFehlmengeCount.cs @@ -402,6 +402,10 @@ namespace Deckungsbeitrag /// private async void ButtonFertig_Click(object sender, EventArgs e) { + // Neuladen des AbteilungStatus bevor gespeichert wird. + Auftrag _auftrag = Auftrag.GetAuftrag(auftrag.AuftragID); + auftrag = _auftrag; + foreach (Button btn in this.tableLayoutPanelArtikel.Controls.OfType