Div.Änderungen. Commit und Push damit Trennung der Projekte entwickelt werden kann.

This commit is contained in:
Kilian Wirl 2026-06-23 11:34:32 +02:00
parent 95bdecedf5
commit 00ffcbbfc1
65 changed files with 5045 additions and 895 deletions

View File

@ -25,8 +25,9 @@ namespace Deckungsbeitrag.AA_Forms
}
public CustomInputBox(string Frage, string Title, string Eingabe, string numeric) : this()
{
if (numeric == "isNumeric") this.isNumeric = true;
if (numeric == "isAlpha") this.isNumeric = false;
if (numeric == "isNumeric") { this.textBoxText.AccessibleName = "isNumeric"; this.isNumeric = true; }
if (numeric == "isAlpha") { this.textBoxText.AccessibleName = "isAlpha"; this.isNumeric = false; }
if (numeric == "isCalc") { this.textBoxText.AccessibleName = "isClac"; this.isNumeric = true; }
this.labelFrage.Text = Frage;
this.labelEingabe.Text = Eingabe + ":";
this.Text = Title;
@ -36,26 +37,23 @@ namespace Deckungsbeitrag.AA_Forms
private void TextBoxText_Click(object sender, EventArgs e)
{
this.textBoxText.Clear();
if (Program.istTouch & Screen.PrimaryScreen.WorkingArea.Width > 0 & Screen.PrimaryScreen.WorkingArea.Width < 2000)
{
if (keyboard == null || keyboard.IsDisposed)
{
keyboard = new QwertzKeyboard(textBoxText, "isNumeric");
keyboard.Show();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(textBoxText, "isNumeric");
keyboard.Show();
}
}
TextBox tb = (TextBox)sender;
tb.Clear();
keyboard = Funktionen.OpenVirtualKeyboard(sender);
}
private void TextBoxText_Enter(object sender, EventArgs e)
{
this.textBoxText.Clear();
this.textBoxText.SelectAll();
TextBox tb = (TextBox)sender;
keyboard = Funktionen.OpenVirtualKeyboard(sender);
this.BeginInvoke(new Action(() =>
{
if (!tb.IsDisposed && tb.CanFocus)
{
tb.Focus();
tb.SelectAll();
}
}));
}
private void ButtonAbbrechen_Click(object sender, EventArgs e)

View File

@ -325,6 +325,8 @@
this.textBoxScan.Size = new System.Drawing.Size(268, 46);
this.textBoxScan.TabIndex = 25;
this.textBoxScan.TextChanged += new System.EventHandler(this.TextBoxScan_TextChanged);
this.textBoxScan.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBoxScan_KeyDown);
this.textBoxScan.Leave += new System.EventHandler(this.TextBoxScan_Leave);
//
// buttonCloseForm
//

View File

@ -16,6 +16,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Net.Mime.MediaTypeNames;
namespace Deckungsbeitrag
{
@ -55,8 +56,6 @@ namespace Deckungsbeitrag
{
await GetAuftraege();
this.Invoke(new Action(() =>
{
LoadPanel();
@ -243,48 +242,10 @@ namespace Deckungsbeitrag
{
this.Cursor = Cursors.WaitCursor;
timer.Stop(); // Timer stoppen
Kunde kunde;
string zusatz = string.Empty;
if (string.IsNullOrEmpty(textBoxScan.Text)) { this.Cursor = Cursors.Default; return; }
if (int.TryParse(textBoxScan.Text, out _)) kunde = Kunde.GetKunde(textBoxScan.Text, null, null);
else
{
if (textBoxScan.Text.Contains(","))
{
kunde = Kunde.GetKunde(textBoxScan.Text.Substring(0, textBoxScan.Text.IndexOf(',')), null, null);
zusatz = textBoxScan.Text.Substring(textBoxScan.Text.IndexOf(',') + 1);
}
else kunde = Kunde.GetKunde(null, null, textBoxScan.Text);
}
// Wenn kein Auftrag gefunden muss der Zettel zum Expedit gebracht werden. ÜBERGANGSZEIT FALLS AUFTRAG NICHT VON FAHRER ERFASST.
if (kunde == null) { MessageBox.Show("Der Auftrag konnte nicht gefunden werden. Bring die Karte zur Mirka.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
List<Auftrag> auftList = Auftrag.FindeAuftragVonKunde(kunde, zusatz, null, (DateTime?)null);
if (auftList.Count == 0) { meldung.GetFehler(this, "Es konnte kein Auftrag zum eingescannten Kunden gefunden werden.\nBitte Informiere deinen Vorgesetzten."); return; }
// Alten Auftrag Speichern (Status Gewaschen) wenn neuer Auftrag gefunden wurde.
if(auftrag != null)
{
if (AuftragSpeichern() == false) return;
iswechsel = true;
}
if (auftList.Count == 1) auftrag = auftList[0];
if (auftList.Count > 1)
{
if (meldung.GetFrage(this, $"Es konnten mehrere Aufträge für den gescannten Kunden gefunden werden.\nIst auf der Containerkarte Auftrag 2 vermerkt?", false) == DialogResult.Yes)
{
auftrag = auftList.Find(a => a.ZusatzInfo.Contains("Auftrag 2"));
}
else
{
auftrag = auftList.Find(a => !a.ZusatzInfo.Contains("Auftrag 2"));
}
}
SucheAuftrag();
this.Cursor = Cursors.Default;
TextBoxScan_Leave(this.textBoxScan, null);
}
private void SucheAuftrag()
{
@ -313,6 +274,7 @@ namespace Deckungsbeitrag
private bool AuftragSpeichern()
{
auftrag.Status = AuftragStatus.Gewaschen;
auftrag.MaschineID = null;
if (auftrag.Save()[0] == 1) auftrag = null;
else { meldung.Speicherfehler(); return false; }
@ -320,8 +282,13 @@ namespace Deckungsbeitrag
}
private void FormAufleger_FormClosing(object sender, FormClosingEventArgs e)
{
//if (auftrag == null) return;
//if (AuftragSpeichern() == false) e.Cancel = true;
if (this.auftrag != null)
{
if (this.auftrag.Status == AuftragStatus.Aufgelegt)
{
AuftragSpeichern();
}
}
}
private void ButtonCloseForm_Click(object sender, EventArgs e)
{
@ -349,5 +316,76 @@ namespace Deckungsbeitrag
meldung.GetInfo(this, $"Die Waschzeiten für den gewünschten Tag lauten:\n\n[Eine Waschstraße] => {zeit[0]:F1} Stunden\n[Zwei Waschstraßen] => {zeit[1]:F1} Stunden", false);
}
private void TextBoxScan_KeyDown(object sender, KeyEventArgs e)
{
TextBox txtScan = (TextBox)sender;
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true;
string code = txtScan.Text.Trim();
//txtScan.Clear();
if (!string.IsNullOrEmpty(code))
TextBoxScan_Leave(txtScan, null);
}
}
private void TextBoxScan_Leave(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
Kunde _kunde;
string zusatz = string.Empty;
string text = string.Empty;
if (string.IsNullOrWhiteSpace(textBox.Text)) { this.Cursor = Cursors.Default; return; }
if (textBox.Text.ToLower().StartsWith("scanhttps"))
{
int index = 1;
index += textBox.Text.IndexOf("=", index);
int i = textBox.Text.IndexOf("%", index);
text = textBox.Text.Substring(index, i - index);
textBox.Text = text;
}
else text = textBox.Text;
if (int.TryParse(text, out int j)) _kunde = Kunde.GetKunde(text, null, null);
else _kunde = Kunde.GetKunde(null, null, text.ToLower());
// Wenn kein Auftrag gefunden muss der Zettel zum Expedit gebracht werden. ÜBERGANGSZEIT FALLS AUFTRAG NICHT VON FAHRER ERFASST.
if (_kunde == null) { MessageBox.Show("Der Auftrag konnte nicht gefunden werden. Bring die Karte zur Mirka.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
List<Auftrag> auftList = Auftrag.FindeAuftragVonKunde(_kunde, zusatz, null, (DateTime?)null);
if (auftList.Count == 0) { meldung.GetFehler(this, "Es konnte kein Auftrag zugewünschten Kunden gefunden werden.\nBitte Informiere deinen Vorgesetzten."); return; }
// Alten Auftrag Speichern (Status Gewaschen) wenn neuer Auftrag gefunden wurde.
if (auftrag != null)
{
if (!AuftragSpeichern()) return;
iswechsel = true;
}
if (auftList.Count == 1) auftrag = auftList[0];
if (auftList.Count > 1)
{
if (meldung.GetFrage(this, $"Es konnten mehrere Aufträge für den gescannten Kunden gefunden werden.\nIst auf der Containerkarte Auftrag 2 vermerkt?", false) == DialogResult.Yes)
{
auftrag = auftList.Find(a => a.ZusatzInfo.Contains("Auftrag 2"));
}
else
{
auftrag = auftList.Find(a => !a.ZusatzInfo.Contains("Auftrag 2"));
}
}
FormMSAuswahl auswahl = new FormMSAuswahl();
if (auswahl.ShowDialog() == DialogResult.OK)
{
auftrag.MaschineID = auswahl.id;
}
SucheAuftrag();
this.Cursor = Cursors.Default;
}
}
}

View File

@ -31,6 +31,7 @@
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.buttonAbbrechen = new System.Windows.Forms.Button();
this.textBoxKunde = new System.Windows.Forms.TextBox();
this.panelSuchen.SuspendLayout();
this.SuspendLayout();
@ -41,37 +42,56 @@
| 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.AutoScrollMargin = new System.Drawing.Size(100, 100);
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.Padding = new System.Windows.Forms.Padding(20, 20, 133, 20);
this.panelAuswahl.Size = new System.Drawing.Size(1675, 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.buttonAbbrechen);
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.Size = new System.Drawing.Size(1675, 65);
this.panelSuchen.TabIndex = 1;
//
// buttonAbbrechen
//
this.buttonAbbrechen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonAbbrechen.BackColor = System.Drawing.Color.Red;
this.buttonAbbrechen.FlatAppearance.BorderSize = 0;
this.buttonAbbrechen.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAbbrechen.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonAbbrechen.ForeColor = System.Drawing.Color.Black;
this.buttonAbbrechen.Location = new System.Drawing.Point(1360, 10);
this.buttonAbbrechen.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonAbbrechen.Name = "buttonAbbrechen";
this.buttonAbbrechen.Size = new System.Drawing.Size(300, 46);
this.buttonAbbrechen.TabIndex = 2;
this.buttonAbbrechen.Text = "Eingabe Abbrechen";
this.buttonAbbrechen.UseVisualStyleBackColor = false;
this.buttonAbbrechen.Click += new System.EventHandler(this.buttonAbbrechen_Click);
//
// textBoxKunde
//
this.textBoxKunde.AccessibleName = "isAlpha";
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.Location = new System.Drawing.Point(11, 10);
this.textBoxKunde.Margin = new System.Windows.Forms.Padding(11, 10, 11, 10);
this.textBoxKunde.Name = "textBoxKunde";
this.textBoxKunde.Size = new System.Drawing.Size(1654, 45);
this.textBoxKunde.Size = new System.Drawing.Size(1333, 45);
this.textBoxKunde.TabIndex = 1;
this.textBoxKunde.Text = "Kunde suchen";
this.textBoxKunde.Click += new System.EventHandler(this.TextBoxKunde_Click);
@ -81,13 +101,15 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1674, 998);
this.ClientSize = new System.Drawing.Size(1675, 998);
this.Controls.Add(this.panelSuchen);
this.Controls.Add(this.panelAuswahl);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "FormAuftragAuswahl";
this.Text = "Auftrag wählen";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormAuftragAuswahl_FormClosing);
this.Load += new System.EventHandler(this.FormAuftragAuswahl_Load);
this.Shown += new System.EventHandler(this.FormAuftragAuswahl_Shown);
this.panelSuchen.ResumeLayout(false);
@ -101,5 +123,6 @@
private System.Windows.Forms.FlowLayoutPanel panelAuswahl;
private System.Windows.Forms.Panel panelSuchen;
private System.Windows.Forms.TextBox textBoxKunde;
private System.Windows.Forms.Button buttonAbbrechen;
}
}

View File

@ -25,6 +25,33 @@ namespace Deckungsbeitrag.AA_Forms
public Kunde kunde;
public Auftrag auftrag;
private Screen screen = Screen.PrimaryScreen;
private bool _keyboardVisible;
public bool KeyBoardVisible
{
get { return _keyboardVisible; }
set
{
_keyboardVisible = value;
if (KeyBoardVisible)
{
this.Width = screen.WorkingArea.Width;
this.Height = (int)(screen.WorkingArea.Height * 0.55);
this.Location = new Point(0, 0);
this.panelAuswahl.Height = this.Bottom - this.panelSuchen.Bottom - 20;
}
else
{
this.Width = screen.WorkingArea.Width;
this.Height = screen.WorkingArea.Height;
this.Location = new Point(0, 0);
this.panelAuswahl.Height = this.Bottom - this.panelSuchen.Bottom - 20;
}
}
}
public FormAuftragAuswahl()
{
@ -51,7 +78,6 @@ namespace Deckungsbeitrag.AA_Forms
{
this.Auftragliste = await View_Auftrag_Expedit.GetAuftragExpeditAsync(statusFilter: AuftragStatus.Gewaschen, kategorie: Abteilung);
}
private async void Load_PanelAuswahl(List<View_Auftrag_Expedit> _liste)
{
this.panelAuswahl.Controls.Clear();
@ -110,10 +136,12 @@ namespace Deckungsbeitrag.AA_Forms
this.DialogResult = DialogResult.OK;
this.Close();
}
private void TextBoxKunde_TextChanged(object sender, EventArgs e)
private async void TextBoxKunde_TextChanged(object sender, EventArgs e)
{
TextBox textbox = sender as TextBox;
string text = textbox.Text.Trim().ToLower();
this.Auftragliste = await View_Auftrag_Expedit.GetAuftragExpeditAsync(statusFilter: AuftragStatus.Gewaschen, kategorie: Abteilung, undFertig: true);
if (!string.IsNullOrWhiteSpace(text))
{
var filtered = string.IsNullOrWhiteSpace(text) ? this.Auftragliste : this.Auftragliste.Where(x => x.KundeName != null && x.KundeName.ToLower().Contains(text)).ToList();
@ -125,34 +153,56 @@ namespace Deckungsbeitrag.AA_Forms
private void TextBoxKunde_Click(object sender, EventArgs e)
{
TextBox textbox = sender as TextBox;
textbox.Clear();
textbox.ForeColor = Color.Black;
TextBox tb = sender as TextBox;
tb.Clear();
tb.ForeColor = Color.Black;
if (Program.istTouch & Screen.PrimaryScreen.WorkingArea.Width > 0 & Screen.PrimaryScreen.WorkingArea.Width < 2000)
keyboard = Funktionen.OpenVirtualKeyboard(sender);
keyboard.KeyBoardShown += KeyBoardShown;
keyboard.KeyBoardClosed += KeyBoardClosed;
this.BeginInvoke(new Action(() =>
{
if (keyboard == null || keyboard.IsDisposed)
if (!tb.IsDisposed && tb.CanFocus)
{
keyboard = new QwertzKeyboard(textBoxKunde, "isAlpha");
keyboard.Show();
tb.Focus();
tb.SelectAll();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(textBoxKunde, "isAlpha");
if (keyboard.ShowDialog() == DialogResult.OK) this.ActiveControl.Focus();
}
}
}));
}
private void KeyBoardClosed(object sender, EventArgs e)
{
KeyBoardVisible = false;
}
private void KeyBoardShown(object sender, EventArgs e)
{
KeyBoardVisible = true;
}
private void FormAuftragAuswahl_Shown(object sender, EventArgs e)
{
this.Width = screen.WorkingArea.Width;
this.Height = (int)(screen.WorkingArea.Height * 0.60);
this.Height = screen.WorkingArea.Height;
this.Location = new Point(0, 0);
this.panelAuswahl.Height = this.Bottom - this.panelSuchen.Bottom - 20;
}
private async void buttonAbbrechen_Click(object sender, EventArgs e)
{
this.textBoxKunde.Clear();
this.textBoxKunde.ForeColor = Color.Silver;
this.textBoxKunde.Text = "Kunde suchen";
await GetAuftragliste();
Load_PanelAuswahl(this.Auftragliste);
}
private void FormAuftragAuswahl_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.kunde == null & this.auftrag == null) this.DialogResult = DialogResult.Cancel;
}
}
}

View File

@ -269,7 +269,19 @@ namespace Deckungsbeitrag
}
kndart.Save();
}
goto default;
if (auftragDictionary.Count > 0)
{
foreach (var kvp in auftragDictionary)
{
AuftragArtikel aufart = AuftragArtikel.GetArtikel(kvp.Key);
aufart.Gesamt -= (int)kvp.Value;
if (aufart.Gesamt == 0) aufart.Erledigt = true;
else { aufart.Erledigt = false; Toclose = false; }
aufart.Save();
}
}
break;
}
case AuftragTyp.SOLL_Verminderung:
{
@ -353,7 +365,7 @@ namespace Deckungsbeitrag
{
if (MessageBox.Show("Möchtest du JETZT Etiketten für die erfolgten Änderung drucken?", "FRAGE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
if (Funktionen.SonderEtikett_Drucken(this.auftrag.KundeID, dictionary) == DialogResult.OK)
if (Funktionen.SonderEtikett_Drucken(this.auftrag.KundeID, dictionary, this.auftrag) == DialogResult.OK)
{
etikettgedruckt = true;
}
@ -566,8 +578,15 @@ namespace Deckungsbeitrag
if (item.Checked)
{
auftragArtikel.Erledigt = true;
int oldValue = auftragArtikel.Anzahl;
int oldValue = auftragArtikel.Gesamt;
int newValue = 0;
if (this.auftrag.Typ == AuftragTyp.Inventur)
{
newValue = auftragArtikel.Gesamt;
oldValue = auftragArtikel.Anzahl;
}
ChangeAnzahl(newValue, oldValue, auftragArtikel);
}
else auftragArtikel.Erledigt = false;
@ -689,7 +708,8 @@ namespace Deckungsbeitrag
{
KundeArtikel kndart;
if (this.auftrag.Typ == AuftragTyp.SOLL_Verminderung) if (newValue > 0) newValue *= -1;
diff = oldvalue - (newValue);
if (this.auftrag.Typ != AuftragTyp.Inventur || (this.auftrag.Typ == AuftragTyp.Inventur && newValue == 0)) diff = oldvalue - (newValue);
else diff = newValue;
if (diff != 0) Tosave = true;
if (_artikel is AuftragArtikel auftragArtikel)
@ -746,34 +766,6 @@ namespace Deckungsbeitrag
ChangeAnzahl(newValue, oldValue, auftragArtikel);
//if (this.auftrag.Typ == AuftragTyp.SOLL_Verminderung) if (newValue > 0) newValue = newValue * -1;
//if (e.Column.Text == "Anzahl") diff = (int)e.Value - (newValue);
//if (diff != 0) Tosave = true;
//if (auftragDictionary.TryGetValue((int)auftragArtikel.AuftragArtikelID, out int val))
//{
// val = newValue;
// if (newValue == 0) e.ListViewItem.Checked = true;
//}
//else auftragDictionary.Add((int)auftragArtikel.AuftragArtikelID, newValue);
//KundeArtikel kndart = KundeArtikel.GetKundeArtikelVonArtikelID(this.kunde.KundeID, auftragArtikel.ArtikelID);
//int reklamation = kndart.Reklamation;
//int fehlmenge = kndart.Fehlmenge;
//int stand = kndart.Stand;
//int korrektur = kndart.Korrektur;
//KorrigiereBestand(diff, ref reklamation, ref fehlmenge, ref stand, ref korrektur);
//if (dictionary.TryGetValue((int)kndart.KundeArtikelID, out int[] value))
//{
// for (int i = 0; i < value.Length; i++)
// {
// value[i] += bestand[i];
// }
//}
//else dictionary.Add((int)kndart.KundeArtikelID, bestand);
////WriteToCSV(kndart);
this.ResumeLayout();
this.Cursor = Cursors.Default;

View File

@ -41,12 +41,38 @@ namespace Deckungsbeitrag
if (x.GetType() == typeof(Benutzer))
{
this.benutzer = (Benutzer)x;
if (benutzer.Rolle == BenutzerRolle.Expedit)
switch (this.benutzer.Rolle)
{
foreach (TabPage tP in this.tabControlEinstellung.TabPages)
{
if (!tP.Name.Contains("Drucker")) this.tabControlEinstellung.Controls.Remove(tP);
}
case BenutzerRolle.Verwaltung:
break;
case BenutzerRolle.Fahrer:
goto default;
case BenutzerRolle.Admin:
break;
case BenutzerRolle.Waschstrasse:
goto default;
case BenutzerRolle.Master:
break;
case BenutzerRolle.Expedit:
foreach (TabPage tP in this.tabControlEinstellung.TabPages)
{
if (!tP.Name.Contains("Drucker") & !tP.Name.Contains("Allgemein")) this.tabControlEinstellung.Controls.Remove(tP);
}
break;
case BenutzerRolle.Frottee:
foreach (TabPage tP in this.tabControlEinstellung.TabPages)
{
if (!tP.Name.Contains("Drucker") & !tP.Name.Contains("Allgemein")) this.tabControlEinstellung.Controls.Remove(tP);
}
break;
case BenutzerRolle.Flach:
goto default;
default:
foreach (TabPage tP in this.tabControlEinstellung.TabPages)
{
this.tabControlEinstellung.Controls.Remove(tP);
}
break;
}
}
}
@ -80,9 +106,9 @@ namespace Deckungsbeitrag
this.textBoxRatingbild.Text = ConfigurationManager.AppSettings["BildPfad"];
// Ab hier wurde bereits auf UserSettingsManager umgebaut.
this.comboBoxEtikettDrucker.SelectedText = _settings.DruckerEtikett;
this.comboBoxTourenlisteDrucker.SelectedText = _settings.DruckerTourenListe;
this.comboBoxSWSDrucker.SelectedText = _settings.DruckerSWS;
this.comboBoxEtikettDrucker.Text = _settings.DruckerEtikett;
this.comboBoxTourenlisteDrucker.Text = _settings.DruckerTourenListe;
this.comboBoxSWSDrucker.Text = _settings.DruckerSWS;
this.numericUpDownSWSKopien.Value = _settings.CopiesSWS;

View File

@ -60,6 +60,7 @@
this.kleinteileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.frotteeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.großteileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.spannleintuchBeendetToolStripMenuItem = 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();
@ -213,9 +214,9 @@
this.flowLayoutPanel1.Controls.Add(this.labelZusatz);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 26);
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 22);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(287, 154);
this.flowLayoutPanel1.Size = new System.Drawing.Size(287, 158);
this.flowLayoutPanel1.TabIndex = 0;
//
// labelAnmerkung
@ -225,7 +226,7 @@
this.labelAnmerkung.ForeColor = System.Drawing.Color.Red;
this.labelAnmerkung.Location = new System.Drawing.Point(3, 0);
this.labelAnmerkung.Name = "labelAnmerkung";
this.labelAnmerkung.Size = new System.Drawing.Size(70, 25);
this.labelAnmerkung.Size = new System.Drawing.Size(57, 20);
this.labelAnmerkung.TabIndex = 2;
this.labelAnmerkung.Text = "label2";
//
@ -233,9 +234,9 @@
//
this.labelAufgabe.AutoSize = true;
this.labelAufgabe.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelAufgabe.Location = new System.Drawing.Point(3, 25);
this.labelAufgabe.Location = new System.Drawing.Point(3, 20);
this.labelAufgabe.Name = "labelAufgabe";
this.labelAufgabe.Size = new System.Drawing.Size(70, 25);
this.labelAufgabe.Size = new System.Drawing.Size(57, 20);
this.labelAufgabe.TabIndex = 3;
this.labelAufgabe.Text = "label3";
//
@ -243,9 +244,9 @@
//
this.labelZusatz.AutoSize = true;
this.labelZusatz.Dock = System.Windows.Forms.DockStyle.Fill;
this.labelZusatz.Location = new System.Drawing.Point(3, 50);
this.labelZusatz.Location = new System.Drawing.Point(3, 40);
this.labelZusatz.Name = "labelZusatz";
this.labelZusatz.Size = new System.Drawing.Size(70, 25);
this.labelZusatz.Size = new System.Drawing.Size(57, 20);
this.labelZusatz.TabIndex = 4;
this.labelZusatz.Text = "label4";
//
@ -299,9 +300,9 @@
// tabPageRampe
//
this.tabPageRampe.Controls.Add(this.objectListViewRampe);
this.tabPageRampe.Location = new System.Drawing.Point(4, 39);
this.tabPageRampe.Location = new System.Drawing.Point(4, 34);
this.tabPageRampe.Name = "tabPageRampe";
this.tabPageRampe.Size = new System.Drawing.Size(1170, 579);
this.tabPageRampe.Size = new System.Drawing.Size(1170, 584);
this.tabPageRampe.TabIndex = 3;
this.tabPageRampe.Text = "Rampe";
this.tabPageRampe.UseVisualStyleBackColor = true;
@ -320,7 +321,7 @@
this.objectListViewRampe.Location = new System.Drawing.Point(0, 0);
this.objectListViewRampe.Name = "objectListViewRampe";
this.objectListViewRampe.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.Submenu;
this.objectListViewRampe.Size = new System.Drawing.Size(1170, 579);
this.objectListViewRampe.Size = new System.Drawing.Size(1170, 584);
this.objectListViewRampe.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.objectListViewRampe.TabIndex = 2;
this.objectListViewRampe.TintSortColumn = true;
@ -346,7 +347,7 @@
this.auftragVerschiebenToolStripMenuItem,
this.auftragLöschenToolStripMenuItem});
this.contextMenuStripExpedit.Name = "contextMenuStripExpedit";
this.contextMenuStripExpedit.Size = new System.Drawing.Size(240, 134);
this.contextMenuStripExpedit.Size = new System.Drawing.Size(204, 134);
this.contextMenuStripExpedit.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripExpedit_Opening);
//
// bearbeitenToolStripMenuItem
@ -360,7 +361,7 @@
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.Size = new System.Drawing.Size(203, 26);
this.bearbeitenToolStripMenuItem.Text = "Bearbeiten";
this.bearbeitenToolStripMenuItem.DropDownOpening += new System.EventHandler(this.ContextMenuStrip_DropDownOpening);
//
@ -368,7 +369,7 @@
//
this.liefertagToolStripMenuItem.AccessibleName = "Liefertag";
this.liefertagToolStripMenuItem.Name = "liefertagToolStripMenuItem";
this.liefertagToolStripMenuItem.Size = new System.Drawing.Size(227, 26);
this.liefertagToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.liefertagToolStripMenuItem.Text = "Liefertag";
this.liefertagToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripBearbeiten_Click);
//
@ -376,7 +377,7 @@
//
this.statusToolStripMenuItem.AccessibleName = "Status";
this.statusToolStripMenuItem.Name = "statusToolStripMenuItem";
this.statusToolStripMenuItem.Size = new System.Drawing.Size(227, 26);
this.statusToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.statusToolStripMenuItem.Text = "Status";
this.statusToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripBearbeiten_Click);
//
@ -384,7 +385,7 @@
//
this.containerSauberToolStripMenuItem.AccessibleName = "ContainerClean";
this.containerSauberToolStripMenuItem.Name = "containerSauberToolStripMenuItem";
this.containerSauberToolStripMenuItem.Size = new System.Drawing.Size(227, 26);
this.containerSauberToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.containerSauberToolStripMenuItem.Text = "Container Sauber";
this.containerSauberToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripBearbeiten_Click);
//
@ -392,7 +393,7 @@
//
this.containerSchmutzigToolStripMenuItem.AccessibleName = "ContainerDirt";
this.containerSchmutzigToolStripMenuItem.Name = "containerSchmutzigToolStripMenuItem";
this.containerSchmutzigToolStripMenuItem.Size = new System.Drawing.Size(227, 26);
this.containerSchmutzigToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.containerSchmutzigToolStripMenuItem.Text = "Container schmutzig";
this.containerSchmutzigToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripBearbeiten_Click);
//
@ -400,7 +401,7 @@
//
this.tourToolStripMenuItem.AccessibleName = "Tour";
this.tourToolStripMenuItem.Name = "tourToolStripMenuItem";
this.tourToolStripMenuItem.Size = new System.Drawing.Size(227, 26);
this.tourToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.tourToolStripMenuItem.Text = "Tour";
this.tourToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripBearbeiten_Click);
//
@ -409,16 +410,17 @@
this.abteilungStatusToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.kleinteileToolStripMenuItem,
this.frotteeToolStripMenuItem,
this.großteileToolStripMenuItem});
this.großteileToolStripMenuItem,
this.spannleintuchBeendetToolStripMenuItem});
this.abteilungStatusToolStripMenuItem.Name = "abteilungStatusToolStripMenuItem";
this.abteilungStatusToolStripMenuItem.Size = new System.Drawing.Size(227, 26);
this.abteilungStatusToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
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.Size = new System.Drawing.Size(196, 22);
this.kleinteileToolStripMenuItem.Text = "Kleinteile beendet";
this.kleinteileToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click);
//
@ -426,7 +428,7 @@
//
this.frotteeToolStripMenuItem.AccessibleName = "Frottee";
this.frotteeToolStripMenuItem.Name = "frotteeToolStripMenuItem";
this.frotteeToolStripMenuItem.Size = new System.Drawing.Size(224, 26);
this.frotteeToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.frotteeToolStripMenuItem.Text = "Frottee beendet";
this.frotteeToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click);
//
@ -434,15 +436,23 @@
//
this.großteileToolStripMenuItem.AccessibleName = "Grossteile";
this.großteileToolStripMenuItem.Name = "großteileToolStripMenuItem";
this.großteileToolStripMenuItem.Size = new System.Drawing.Size(224, 26);
this.großteileToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.großteileToolStripMenuItem.Text = "Großteile beendet";
this.großteileToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click);
//
// spannleintuchBeendetToolStripMenuItem
//
this.spannleintuchBeendetToolStripMenuItem.AccessibleName = "Spannleintuch";
this.spannleintuchBeendetToolStripMenuItem.Name = "spannleintuchBeendetToolStripMenuItem";
this.spannleintuchBeendetToolStripMenuItem.Size = new System.Drawing.Size(196, 22);
this.spannleintuchBeendetToolStripMenuItem.Text = "Spannleintuch beendet";
this.spannleintuchBeendetToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAbteilungStatus_Click);
//
// auftraginfoAnsehenToolStripMenuItem
//
this.auftraginfoAnsehenToolStripMenuItem.Image = global::Deckungsbeitrag.Properties.Resources.InformationSymbol_16x;
this.auftraginfoAnsehenToolStripMenuItem.Name = "auftraginfoAnsehenToolStripMenuItem";
this.auftraginfoAnsehenToolStripMenuItem.Size = new System.Drawing.Size(239, 26);
this.auftraginfoAnsehenToolStripMenuItem.Size = new System.Drawing.Size(203, 26);
this.auftraginfoAnsehenToolStripMenuItem.Text = "Auftraginfo ansehen";
this.auftraginfoAnsehenToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAuftragInfo_Click);
//
@ -450,7 +460,7 @@
//
this.aufgabeErledigtToolStripMenuItem.Image = global::Deckungsbeitrag.Properties.Resources.Checkmark_blue_16x;
this.aufgabeErledigtToolStripMenuItem.Name = "aufgabeErledigtToolStripMenuItem";
this.aufgabeErledigtToolStripMenuItem.Size = new System.Drawing.Size(239, 26);
this.aufgabeErledigtToolStripMenuItem.Size = new System.Drawing.Size(203, 26);
this.aufgabeErledigtToolStripMenuItem.Text = "Aufgabe erledigt";
this.aufgabeErledigtToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAufgabeErledigt_Click);
//
@ -458,7 +468,7 @@
//
this.auftragVerschiebenToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("auftragVerschiebenToolStripMenuItem.Image")));
this.auftragVerschiebenToolStripMenuItem.Name = "auftragVerschiebenToolStripMenuItem";
this.auftragVerschiebenToolStripMenuItem.Size = new System.Drawing.Size(239, 26);
this.auftragVerschiebenToolStripMenuItem.Size = new System.Drawing.Size(203, 26);
this.auftragVerschiebenToolStripMenuItem.Text = "In Aufträge Verschieben";
this.auftragVerschiebenToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAuftragVerschieben_Click);
//
@ -466,17 +476,17 @@
//
this.auftragLöschenToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("auftragLöschenToolStripMenuItem.Image")));
this.auftragLöschenToolStripMenuItem.Name = "auftragLöschenToolStripMenuItem";
this.auftragLöschenToolStripMenuItem.Size = new System.Drawing.Size(239, 26);
this.auftragLöschenToolStripMenuItem.Size = new System.Drawing.Size(203, 26);
this.auftragLöschenToolStripMenuItem.Text = "Auftrag Löschen";
this.auftragLöschenToolStripMenuItem.Click += new System.EventHandler(this.ContextMenuStripAuftragDelete_Click);
//
// tabPageSonder
//
this.tabPageSonder.Controls.Add(this.objectListViewSonder);
this.tabPageSonder.Location = new System.Drawing.Point(4, 39);
this.tabPageSonder.Location = new System.Drawing.Point(4, 34);
this.tabPageSonder.Name = "tabPageSonder";
this.tabPageSonder.Padding = new System.Windows.Forms.Padding(3);
this.tabPageSonder.Size = new System.Drawing.Size(1170, 579);
this.tabPageSonder.Size = new System.Drawing.Size(1170, 584);
this.tabPageSonder.TabIndex = 1;
this.tabPageSonder.Text = "Sonderaufträge";
this.tabPageSonder.UseVisualStyleBackColor = true;
@ -496,7 +506,7 @@
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(1164, 573);
this.objectListViewSonder.Size = new System.Drawing.Size(1164, 578);
this.objectListViewSonder.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.objectListViewSonder.TabIndex = 2;
this.objectListViewSonder.TintSortColumn = true;
@ -515,10 +525,10 @@
// tabPageGeschaeft
//
this.tabPageGeschaeft.Controls.Add(this.objectListViewGeschaeft);
this.tabPageGeschaeft.Location = new System.Drawing.Point(4, 39);
this.tabPageGeschaeft.Location = new System.Drawing.Point(4, 34);
this.tabPageGeschaeft.Name = "tabPageGeschaeft";
this.tabPageGeschaeft.Padding = new System.Windows.Forms.Padding(3);
this.tabPageGeschaeft.Size = new System.Drawing.Size(1170, 579);
this.tabPageGeschaeft.Size = new System.Drawing.Size(1170, 584);
this.tabPageGeschaeft.TabIndex = 2;
this.tabPageGeschaeft.Text = "Geschäft";
this.tabPageGeschaeft.UseVisualStyleBackColor = true;
@ -537,7 +547,7 @@
this.objectListViewGeschaeft.Location = new System.Drawing.Point(3, 3);
this.objectListViewGeschaeft.Name = "objectListViewGeschaeft";
this.objectListViewGeschaeft.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.Submenu;
this.objectListViewGeschaeft.Size = new System.Drawing.Size(1164, 573);
this.objectListViewGeschaeft.Size = new System.Drawing.Size(1164, 578);
this.objectListViewGeschaeft.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.objectListViewGeschaeft.TabIndex = 2;
this.objectListViewGeschaeft.TintSortColumn = true;
@ -560,10 +570,10 @@
// tabPageAll
//
this.tabPageAll.Controls.Add(this.objectListViewAuftrag);
this.tabPageAll.Location = new System.Drawing.Point(4, 39);
this.tabPageAll.Location = new System.Drawing.Point(4, 34);
this.tabPageAll.Name = "tabPageAll";
this.tabPageAll.Padding = new System.Windows.Forms.Padding(3);
this.tabPageAll.Size = new System.Drawing.Size(1170, 579);
this.tabPageAll.Size = new System.Drawing.Size(1170, 584);
this.tabPageAll.TabIndex = 0;
this.tabPageAll.Text = "Aufträge heute";
this.tabPageAll.UseVisualStyleBackColor = true;
@ -582,7 +592,8 @@
this.objectListViewAuftrag.Location = new System.Drawing.Point(3, 3);
this.objectListViewAuftrag.Name = "objectListViewAuftrag";
this.objectListViewAuftrag.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.Submenu;
this.objectListViewAuftrag.Size = new System.Drawing.Size(1164, 573);
this.objectListViewAuftrag.ShowItemCountOnGroups = true;
this.objectListViewAuftrag.Size = new System.Drawing.Size(1164, 578);
this.objectListViewAuftrag.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.objectListViewAuftrag.TabIndex = 1;
this.objectListViewAuftrag.TintSortColumn = true;
@ -626,9 +637,9 @@
// tabPageVorbereitet
//
this.tabPageVorbereitet.Controls.Add(this.objectListViewVorbereitet);
this.tabPageVorbereitet.Location = new System.Drawing.Point(4, 39);
this.tabPageVorbereitet.Location = new System.Drawing.Point(4, 34);
this.tabPageVorbereitet.Name = "tabPageVorbereitet";
this.tabPageVorbereitet.Size = new System.Drawing.Size(1170, 579);
this.tabPageVorbereitet.Size = new System.Drawing.Size(1170, 584);
this.tabPageVorbereitet.TabIndex = 4;
this.tabPageVorbereitet.Text = "Vorbereitet";
this.tabPageVorbereitet.UseVisualStyleBackColor = true;
@ -648,7 +659,7 @@
this.objectListViewVorbereitet.Location = new System.Drawing.Point(0, 0);
this.objectListViewVorbereitet.Name = "objectListViewVorbereitet";
this.objectListViewVorbereitet.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.Submenu;
this.objectListViewVorbereitet.Size = new System.Drawing.Size(1170, 579);
this.objectListViewVorbereitet.Size = new System.Drawing.Size(1170, 584);
this.objectListViewVorbereitet.Sorting = System.Windows.Forms.SortOrder.Ascending;
this.objectListViewVorbereitet.TabIndex = 2;
this.objectListViewVorbereitet.TintSortColumn = true;
@ -792,5 +803,6 @@
private System.Windows.Forms.ToolStripMenuItem frotteeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem kleinteileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem großteileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem spannleintuchBeendetToolStripMenuItem;
}
}

View File

@ -181,6 +181,7 @@ namespace Deckungsbeitrag
}
private void FormExpedit_FormClosing(object sender, FormClosingEventArgs e)
{
_settings.Load();
// === SPEICHERN DES OLV-STATUS ===
_settings.OLV_State = this.objectListViewAuftrag.SaveState();
@ -398,6 +399,7 @@ namespace Deckungsbeitrag
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(); }
if (item.AccessibleName == "Spannleintuch") { _auftrag.Abteilungen |= AbteilungsStatus.SpannleintuchBeendet; _auftrag.Save(); }
Neuladen_OLV(olv);
}
@ -489,11 +491,11 @@ namespace Deckungsbeitrag
GetUnvisibleColumns(olv);
// === RESTORE OLV-STATUS ===
if (olv.Name.Contains("Auftrag")) this.objectListViewAuftrag.RestoreState(_settings.OLV_State);
if (olv.Name.Contains("Rampe")) this.objectListViewRampe.RestoreState(_settings.OLV_Rampe_State);
if (olv.Name.Contains("Vorbereitet")) this.objectListViewVorbereitet.RestoreState(_settings.OLV_Vorbereitet_State);
if (olv.Name.Contains("Sonder")) this.objectListViewSonder.RestoreState(_settings.OLV_Sonder_State);
if (olv.Name.Contains("Geschaeft")) this.objectListViewGeschaeft.RestoreState(_settings.OLV_Geschaeft_State);
if (olv.Name.Contains("Auftrag") && _settings.OLV_State != null && _settings.OLV_State.Length > 0) this.objectListViewAuftrag.RestoreState(_settings.OLV_State);
if (olv.Name.Contains("Rampe") && _settings.OLV_Rampe_State != null && _settings.OLV_Rampe_State.Length > 0) this.objectListViewRampe.RestoreState(_settings.OLV_Rampe_State);
if (olv.Name.Contains("Vorbereitet") && _settings.OLV_Vorbereitet_State != null && _settings.OLV_Vorbereitet_State.Length > 0) this.objectListViewVorbereitet.RestoreState(_settings.OLV_Vorbereitet_State);
if (olv.Name.Contains("Sonder") && _settings.OLV_Sonder_State != null && _settings.OLV_Sonder_State.Length > 0) this.objectListViewSonder.RestoreState(_settings.OLV_Sonder_State);
if (olv.Name.Contains("Geschaeft") && _settings.OLV_Geschaeft_State != null && _settings.OLV_Geschaeft_State.Length > 0) this.objectListViewGeschaeft.RestoreState(_settings.OLV_Geschaeft_State);
// === SPALTENBREITE ANPASSEN ===
olv = Funktionen.Columns_Resize(null, olv).olv;
@ -673,7 +675,7 @@ namespace Deckungsbeitrag
}
// Abteilungstatus wird farblich gekennzeichnet
if (e.Column.Text == "FR" || e.Column.Text == "KT" || e.Column.Text == "GT")
if (e.Column.Text == "FR" || e.Column.Text == "KT" || e.Column.Text == "GT" || e.Column.Text == "SL")
{
if (e.CellValue.ToString() == "☑")
{
@ -706,6 +708,13 @@ namespace Deckungsbeitrag
}
if (e.Column.Text == "Liefertag")
{
if (DateTime.TryParse(e.CellValue.ToString(), out DateTime dt))
{
if (dt < DateTime.Today) e.SubItem.ForeColor = Color.Red;
}
}
}
private void ObjectListViewAuftrag_FormatRow(object sender, FormatRowEventArgs e)
@ -714,8 +723,8 @@ namespace Deckungsbeitrag
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 (vwAuftrag.FrotteeStatus > 1 & vwAuftrag.KleinteileStatus > 1 & vwAuftrag.GrossteileStatus > 1 & vwAuftrag.SpannleintuchStatus > 1) isFertig = true;
if (vwAuftrag.FrotteeStatus > 2 & vwAuftrag.KleinteileStatus > 2 & vwAuftrag.GrossteileStatus > 2 & vwAuftrag.SpannleintuchStatus > 2) isFertig = false;
if (this.benutzer.Rolle != BenutzerRolle.Frottee & isFertig)
{
@ -735,7 +744,7 @@ namespace Deckungsbeitrag
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;
if (expAuftrag.FrotteeStatus == 1 || expAuftrag.KleinteileStatus == 1 || expAuftrag.GrossteileStatus == 1 || expAuftrag.SpannleintuchStatus == 1) ToPrint = false;
else ToPrint = true;
if (_auftrag.Status != AuftragStatus.Fertig)
@ -912,16 +921,8 @@ namespace Deckungsbeitrag
this.auftrag = auftrag;
if (this.auftrag.ContainerClean == 0 & this.auftrag.Typ < AuftragTyp.Inventur)
{
if (meldung.NoCleanContainer() == DialogResult.OK)
return;
}
else
{
if (!HandleContainerCleanChange())
return;
}
if (!HandleContainerCleanChange())
return;
Auftrag_Fertig();
}
@ -1347,7 +1348,7 @@ namespace Deckungsbeitrag
break;
case BenutzerRolle.Frottee:
this.buttonEtikettenDrucken.Visible = this.buttonNeuerAuftrag.Visible = this.buttonSWS_Drucken.Visible = false;
this.buttonStats.Visible = this.buttonEinstellung.Visible = false; // buttonReklamation einblenden wenn Frottee-Expedit auch Reklamation bearbeitet.
this.buttonStats.Visible = false; // buttonReklamation einblenden wenn Frottee-Expedit auch Reklamation bearbeitet.
foreach(TabPage tab in this.tabControlAuftragList.TabPages)
{
if (tab.Text == "Vorbereitet" || tab.Text == "Rampe") tabControlAuftragList.TabPages.Remove(tab);
@ -1637,8 +1638,36 @@ namespace Deckungsbeitrag
//TODO: Wie soll es weiter gehen?
}
private void FormExpedit_MouseMove(object sender, MouseEventArgs e)
private void objectListViewAuftrag_ColumnClick(object sender, ColumnClickEventArgs e)
{
var olv = (ObjectListView)sender;
var olvStatus = olv.AllColumns.Cast<OLVColumn>().FirstOrDefault(c => c.Text == "Status");
var olvLiefertag = olv.AllColumns.Cast<OLVColumn>().FirstOrDefault(c => c.Text == "Liefertag");
// Wenn auf Status geklickt: nach Status gruppieren
if (e.Column == olvStatus.Index)
{
// Gruppierung nach Status ändern
olv.AlwaysGroupByColumn = olvStatus; // Fixierung entfernen
olv.AlwaysGroupBySortOrder = SortOrder.None; // Nach Status gruppieren
// Innerhalb der Gruppen nach Liefertag ASC sortieren
olv.SecondarySortColumn = olvLiefertag;
olv.SecondarySortOrder = SortOrder.Ascending;
// Sorting erzwingen
olv.BeginUpdate();
olv.BuildGroups();
olv.Sort();
olv.EndUpdate();
}
else
{
// Für andere Spalten: normale Sortierung, aber Liefertag als Tie-Breaker
olv.SecondarySortColumn = olvLiefertag;
olv.SecondarySortOrder = SortOrder.Ascending;
olv.Sort(e.Column);
}
}
}

View File

@ -65,7 +65,8 @@ namespace Deckungsbeitrag
{
if (userid.Contains("kleinteile")) { kategorie = ArtikelKategorie.Kleinteile; }
if (userid.Contains("grossteile")) { kategorie = ArtikelKategorie.Grossteile; }
if (userid.Contains("frottee") || userid.Contains("spannleintuch")) { kategorie = ArtikelKategorie.Frottee; }
if (userid.Contains("frottee")) { kategorie = ArtikelKategorie.Frottee; }
if (userid.Contains("spannleintuch")) { kategorie = ArtikelKategorie.Spannleintuch; }
}
//Kunde wird durch Scan oder Handeingabe Ausgewählt.
@ -79,7 +80,12 @@ namespace Deckungsbeitrag
this.kunde = auswahl.kunde;
this.auftrag = auswahl.auftrag;
}
else this.Close();
else
{
this.kunde = null;
this.auftrag = null;
this.Close();
}
}
@ -141,9 +147,13 @@ namespace Deckungsbeitrag
if (this.benutzer == null | (userid != 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") || userid.Contains("spannleintuch")) { auftrag.Abteilungen |= AbteilungsStatus.FrotteeBegonnen; auftrag.Save(); }
if (userid.Contains("kleinteile")) { auftrag.Abteilungen |= AbteilungsStatus.KleinteileBegonnen; }
if (userid.Contains("grossteile")) { auftrag.Abteilungen |= AbteilungsStatus.GrossteileBegonnen; }
if (userid.Contains("frottee")) { auftrag.Abteilungen |= AbteilungsStatus.FrotteeBegonnen; }
if (userid.Contains("spannleintuch")) { auftrag.Abteilungen |= AbteilungsStatus.SpannleintuchBegonnen; }
auftrag.MaschineID = Maschine.GetMaschine(null, userid).MaschineID;
auftrag.Save();
}
}
}
@ -172,7 +182,16 @@ namespace Deckungsbeitrag
return;
}
foreach (Button btn in this.tableLayoutPanelArtikel.Controls) btn.Tag = btn.Text = null;
for (int j = 0; j < artZahl.Length; j++)
{
artZahl[j] = 0;
}
foreach (Button btn in this.tableLayoutPanelArtikel.Controls)
{
btn.Tag = null;
if (int.TryParse(btn.Name.Substring(9, 1), out int x)) artZahl[x - 1]++;
btn.Text = AktualisiereButtonText(btn.Text, artZahl[x - 1]);
}
this.groupBoxArtikel.Visible = true;
this.tableLayoutPanelArtikel.Visible = true;
// Buttons werden den Artikeln aus der Artikelliste zugewiesen. Unterschied zwischen Frotteewäsche, Spannleintüchern, Großteilen und Kleinteilen
@ -418,16 +437,20 @@ namespace Deckungsbeitrag
Auftrag _auftrag = Auftrag.GetAuftrag(auftrag.AuftragID);
auftrag = _auftrag;
foreach (Button btn in this.tableLayoutPanelArtikel.Controls.OfType<Button>())
if (tableLayoutPanelArtikel.Visible)
{
KundeArtikel kndart = null;
if (btn.Enabled)
foreach (Button btn in this.tableLayoutPanelArtikel.Controls.OfType<Button>())
{
kndart = (KundeArtikel)btn.Tag;
kndart.Save();
KundeArtikel kndart = null;
if (btn.Enabled)
{
kndart = (KundeArtikel)btn.Tag;
kndart.Save();
}
}
}
if (auftrag != null)
{
// Controls werden durchgegangen und ausgeblendet oder der Text entfernt.
@ -473,24 +496,43 @@ namespace Deckungsbeitrag
else
{
// AbteilungsStatus für Kleinteile und Großteile wird hier gesetzt.
if (!userid.Contains("frottee") & !userid.Contains("spannleintuch"))
if (!userid.Contains("frottee"))
{
if (userid.Contains("kleinteile")) { auftrag.Abteilungen |= AbteilungsStatus.KleinteileBeendet; auftrag.Save(); }
if (userid.Contains("grossteile")) { auftrag.Abteilungen |= AbteilungsStatus.GrossteileBeendet; auftrag.Save(); }
if (userid.Contains("spannleintuch")) { auftrag.Abteilungen |= AbteilungsStatus.SpannleintuchBeendet; auftrag.Save(); }
}
else { auftrag.Save(); }
}
}
//Kunde wird durch Scan oder Handeingabe Ausgewählt.
await Open_Liste();
if ((userid != null && userid.Contains("reklamation")) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Frottee)) await Open_Liste();
else
{
FormAuftragAuswahl auswahl = new FormAuftragAuswahl();
if (auswahl.ShowDialog() == DialogResult.OK)
{
this.kunde = auswahl.kunde;
this.auftrag = auswahl.auftrag;
}
else
{
this.kunde = null;
this.auftrag = null;
this.Close();
}
}
ControlLaden();
}
private void EtikettDrucken()
{
if (MessageBox.Show("Möchtest du JETZT Etiketten für die erfolgten Änderung drucken?", "FRAGE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
if (Funktionen.SonderEtikett_Drucken((int)this.kunde.KundeID, auftragDictionary) == DialogResult.OK)
if (Funktionen.SonderEtikett_Drucken((int)this.kunde.KundeID, auftragDictionary, auftrag) == DialogResult.OK)
{
etikettgedruckt = true;
}

View File

@ -0,0 +1,118 @@
namespace Deckungsbeitrag.AA_Forms
{
partial class FormGeschaeftKndAuswahl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormGeschaeftKndAuswahl));
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.rBAltKunde = new System.Windows.Forms.RadioButton();
this.rBNeuKunde = new System.Windows.Forms.RadioButton();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.rBAltKunde, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.rBNeuKunde, 1, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(800, 450);
this.tableLayoutPanel1.TabIndex = 2;
//
// rBAltKunde
//
this.rBAltKunde.AccessibleName = "Bestandskunde";
this.rBAltKunde.Appearance = System.Windows.Forms.Appearance.Button;
this.rBAltKunde.Dock = System.Windows.Forms.DockStyle.Fill;
this.rBAltKunde.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.rBAltKunde.FlatAppearance.CheckedBackColor = System.Drawing.Color.White;
this.rBAltKunde.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ActiveCaption;
this.rBAltKunde.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.rBAltKunde.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rBAltKunde.ForeColor = System.Drawing.Color.White;
this.rBAltKunde.Location = new System.Drawing.Point(8, 8);
this.rBAltKunde.Margin = new System.Windows.Forms.Padding(8);
this.rBAltKunde.Name = "rBAltKunde";
this.rBAltKunde.Size = new System.Drawing.Size(384, 434);
this.rBAltKunde.TabIndex = 1;
this.rBAltKunde.Text = "Bestandskunde";
this.rBAltKunde.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.rBAltKunde.UseVisualStyleBackColor = true;
this.rBAltKunde.CheckedChanged += new System.EventHandler(this.RadioButtons_CheckedChanged);
//
// rBNeuKunde
//
this.rBNeuKunde.AccessibleName = "Neukunde";
this.rBNeuKunde.Appearance = System.Windows.Forms.Appearance.Button;
this.rBNeuKunde.Dock = System.Windows.Forms.DockStyle.Fill;
this.rBNeuKunde.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.rBNeuKunde.FlatAppearance.CheckedBackColor = System.Drawing.Color.White;
this.rBNeuKunde.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ActiveCaption;
this.rBNeuKunde.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.rBNeuKunde.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rBNeuKunde.ForeColor = System.Drawing.Color.White;
this.rBNeuKunde.Location = new System.Drawing.Point(408, 8);
this.rBNeuKunde.Margin = new System.Windows.Forms.Padding(8);
this.rBNeuKunde.Name = "rBNeuKunde";
this.rBNeuKunde.Size = new System.Drawing.Size(384, 434);
this.rBNeuKunde.TabIndex = 0;
this.rBNeuKunde.Text = "Neukunde";
this.rBNeuKunde.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.rBNeuKunde.UseVisualStyleBackColor = true;
this.rBNeuKunde.CheckedChanged += new System.EventHandler(this.RadioButtons_CheckedChanged);
//
// FormGeschaeftKndAuswahl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.tableLayoutPanel1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormGeschaeftKndAuswahl";
this.Text = "Kundenauswahl";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.RadioButton rBAltKunde;
private System.Windows.Forms.RadioButton rBNeuKunde;
}
}

View File

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Deckungsbeitrag.AA_Forms
{
public partial class FormGeschaeftKndAuswahl : Form
{
public string kundetyp = "Bestandskunde";
public FormGeschaeftKndAuswahl()
{
InitializeComponent();
}
private void RadioButtons_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
rb.ForeColor = rb.Checked ? Program.Wirlblau : Color.White;
// RadioButtons für Kundenauswahl.
if (rb.AccessibleName.Contains("kunde"))
{
kundetyp = rb.AccessibleName;
this.DialogResult = DialogResult.OK;
this.Close();
}
}
}
}

View File

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
QmCC
</value>
</data>
</root>

823
AA-Forms/FormGeschaeftMain.Designer.cs generated Normal file
View File

@ -0,0 +1,823 @@
namespace Deckungsbeitrag
{
partial class FormGeschaeftMain
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormGeschaeftMain));
this.tLPGeschaeft = new System.Windows.Forms.TableLayoutPanel();
this.tLPKundeAuswahl = new System.Windows.Forms.TableLayoutPanel();
this.tLPKundeNr = new System.Windows.Forms.TableLayoutPanel();
this.textBoxKundeNr = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.tLPKundeName = new System.Windows.Forms.TableLayoutPanel();
this.textBoxKundeName = new System.Windows.Forms.TextBox();
this.label13 = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.rBAltKunde = new System.Windows.Forms.RadioButton();
this.rBNeuKunde = new System.Windows.Forms.RadioButton();
this.tLPKundeDetails = new System.Windows.Forms.TableLayoutPanel();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.tLPKontakt = new System.Windows.Forms.TableLayoutPanel();
this.textBoxAnderes = new System.Windows.Forms.TextBox();
this.textBoxMail = new System.Windows.Forms.TextBox();
this.textBoxTel = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.tLPAdresse = new System.Windows.Forms.TableLayoutPanel();
this.textBoxOrt = new System.Windows.Forms.TextBox();
this.textBoxPLZ = new System.Windows.Forms.TextBox();
this.textBoxStrasse = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.buttonEdit = new System.Windows.Forms.Button();
this.tLPAuftrag = new System.Windows.Forms.TableLayoutPanel();
this.pictureBoxPlus = new System.Windows.Forms.PictureBox();
this.label3 = new System.Windows.Forms.Label();
this.tLPAuftragDetails = new System.Windows.Forms.TableLayoutPanel();
this.textBoxNetzanzahl = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.dTPAbholtag = new System.Windows.Forms.DateTimePicker();
this.rBEigenNetze = new System.Windows.Forms.RadioButton();
this.rBFremdNetze = new System.Windows.Forms.RadioButton();
this.fLPNetzeScan = new System.Windows.Forms.FlowLayoutPanel();
this.tLPButtons = new System.Windows.Forms.TableLayoutPanel();
this.buttonAbbrechen = new System.Windows.Forms.Button();
this.buttonSpeichern = new System.Windows.Forms.Button();
this.tLPGeschaeft.SuspendLayout();
this.tLPKundeAuswahl.SuspendLayout();
this.tLPKundeNr.SuspendLayout();
this.tLPKundeName.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
this.tLPKundeDetails.SuspendLayout();
this.tLPKontakt.SuspendLayout();
this.tLPAdresse.SuspendLayout();
this.tLPAuftrag.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxPlus)).BeginInit();
this.tLPAuftragDetails.SuspendLayout();
this.tLPButtons.SuspendLayout();
this.SuspendLayout();
//
// tLPGeschaeft
//
this.tLPGeschaeft.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.tLPGeschaeft.ColumnCount = 1;
this.tLPGeschaeft.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPGeschaeft.Controls.Add(this.tLPKundeAuswahl, 0, 1);
this.tLPGeschaeft.Controls.Add(this.tableLayoutPanel1, 0, 0);
this.tLPGeschaeft.Controls.Add(this.tLPKundeDetails, 0, 2);
this.tLPGeschaeft.Controls.Add(this.tLPAuftrag, 0, 3);
this.tLPGeschaeft.Controls.Add(this.tLPButtons, 0, 4);
this.tLPGeschaeft.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPGeschaeft.Location = new System.Drawing.Point(0, 0);
this.tLPGeschaeft.Name = "tLPGeschaeft";
this.tLPGeschaeft.RowCount = 5;
this.tLPGeschaeft.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100F));
this.tLPGeschaeft.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPGeschaeft.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPGeschaeft.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPGeschaeft.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 100F));
this.tLPGeschaeft.Size = new System.Drawing.Size(1419, 833);
this.tLPGeschaeft.TabIndex = 0;
//
// tLPKundeAuswahl
//
this.tLPKundeAuswahl.AutoSize = true;
this.tLPKundeAuswahl.ColumnCount = 2;
this.tLPKundeAuswahl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tLPKundeAuswahl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tLPKundeAuswahl.Controls.Add(this.tLPKundeNr, 1, 0);
this.tLPKundeAuswahl.Controls.Add(this.tLPKundeName, 0, 0);
this.tLPKundeAuswahl.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPKundeAuswahl.Location = new System.Drawing.Point(3, 103);
this.tLPKundeAuswahl.Name = "tLPKundeAuswahl";
this.tLPKundeAuswahl.RowCount = 1;
this.tLPKundeAuswahl.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKundeAuswahl.Size = new System.Drawing.Size(1413, 57);
this.tLPKundeAuswahl.TabIndex = 7;
//
// tLPKundeNr
//
this.tLPKundeNr.AutoSize = true;
this.tLPKundeNr.ColumnCount = 2;
this.tLPKundeNr.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200F));
this.tLPKundeNr.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPKundeNr.Controls.Add(this.textBoxKundeNr, 1, 0);
this.tLPKundeNr.Controls.Add(this.label14, 0, 0);
this.tLPKundeNr.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPKundeNr.Location = new System.Drawing.Point(709, 3);
this.tLPKundeNr.Name = "tLPKundeNr";
this.tLPKundeNr.RowCount = 1;
this.tLPKundeNr.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKundeNr.Size = new System.Drawing.Size(701, 51);
this.tLPKundeNr.TabIndex = 1;
//
// textBoxKundeNr
//
this.textBoxKundeNr.AccessibleName = "isNumeric";
this.textBoxKundeNr.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxKundeNr.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxKundeNr.Location = new System.Drawing.Point(203, 3);
this.textBoxKundeNr.Name = "textBoxKundeNr";
this.textBoxKundeNr.Size = new System.Drawing.Size(495, 45);
this.textBoxKundeNr.TabIndex = 6;
this.textBoxKundeNr.Enter += new System.EventHandler(this.TextBox_Enter);
//
// label14
//
this.label14.AutoSize = true;
this.label14.Dock = System.Windows.Forms.DockStyle.Fill;
this.label14.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label14.ForeColor = System.Drawing.Color.White;
this.label14.Location = new System.Drawing.Point(3, 0);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(194, 51);
this.label14.TabIndex = 5;
this.label14.Text = "KundeNr:";
this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tLPKundeName
//
this.tLPKundeName.AutoSize = true;
this.tLPKundeName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.tLPKundeName.ColumnCount = 2;
this.tLPKundeName.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tLPKundeName.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPKundeName.Controls.Add(this.textBoxKundeName, 1, 0);
this.tLPKundeName.Controls.Add(this.label13, 0, 0);
this.tLPKundeName.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPKundeName.Location = new System.Drawing.Point(3, 3);
this.tLPKundeName.Name = "tLPKundeName";
this.tLPKundeName.RowCount = 1;
this.tLPKundeName.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKundeName.Size = new System.Drawing.Size(700, 51);
this.tLPKundeName.TabIndex = 0;
//
// textBoxKundeName
//
this.textBoxKundeName.AccessibleName = "isAlpha";
this.textBoxKundeName.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxKundeName.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxKundeName.Location = new System.Drawing.Point(210, 3);
this.textBoxKundeName.Name = "textBoxKundeName";
this.textBoxKundeName.Size = new System.Drawing.Size(487, 45);
this.textBoxKundeName.TabIndex = 5;
this.textBoxKundeName.Enter += new System.EventHandler(this.TextBox_Enter);
this.textBoxKundeName.Leave += new System.EventHandler(this.TextBoxKunde_Leave);
this.textBoxKundeName.Validating += new System.ComponentModel.CancelEventHandler(this.Pflichtfelder_Validating);
//
// label13
//
this.label13.AutoSize = true;
this.label13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.label13.Dock = System.Windows.Forms.DockStyle.Fill;
this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label13.ForeColor = System.Drawing.Color.White;
this.label13.Location = new System.Drawing.Point(3, 0);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(201, 51);
this.label13.TabIndex = 4;
this.label13.Text = "Kundename:";
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.Controls.Add(this.rBAltKunde, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.rBNeuKunde, 1, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(1413, 94);
this.tableLayoutPanel1.TabIndex = 1;
//
// rBAltKunde
//
this.rBAltKunde.AccessibleName = "Bestandskunde";
this.rBAltKunde.Appearance = System.Windows.Forms.Appearance.Button;
this.rBAltKunde.Checked = true;
this.rBAltKunde.Dock = System.Windows.Forms.DockStyle.Fill;
this.rBAltKunde.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.rBAltKunde.FlatAppearance.CheckedBackColor = System.Drawing.Color.White;
this.rBAltKunde.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ActiveCaption;
this.rBAltKunde.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.rBAltKunde.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rBAltKunde.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.rBAltKunde.Location = new System.Drawing.Point(10, 10);
this.rBAltKunde.Margin = new System.Windows.Forms.Padding(10);
this.rBAltKunde.Name = "rBAltKunde";
this.rBAltKunde.Size = new System.Drawing.Size(686, 74);
this.rBAltKunde.TabIndex = 1;
this.rBAltKunde.TabStop = true;
this.rBAltKunde.Text = "Bestandskunde";
this.rBAltKunde.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.rBAltKunde.UseVisualStyleBackColor = true;
this.rBAltKunde.CheckedChanged += new System.EventHandler(this.RadioButtonsKunde_CheckedChanged);
//
// rBNeuKunde
//
this.rBNeuKunde.AccessibleName = "Neukunde";
this.rBNeuKunde.Appearance = System.Windows.Forms.Appearance.Button;
this.rBNeuKunde.Dock = System.Windows.Forms.DockStyle.Fill;
this.rBNeuKunde.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.rBNeuKunde.FlatAppearance.CheckedBackColor = System.Drawing.Color.White;
this.rBNeuKunde.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ActiveCaption;
this.rBNeuKunde.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.rBNeuKunde.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rBNeuKunde.ForeColor = System.Drawing.Color.White;
this.rBNeuKunde.Location = new System.Drawing.Point(716, 10);
this.rBNeuKunde.Margin = new System.Windows.Forms.Padding(10);
this.rBNeuKunde.Name = "rBNeuKunde";
this.rBNeuKunde.Size = new System.Drawing.Size(687, 74);
this.rBNeuKunde.TabIndex = 0;
this.rBNeuKunde.Text = "Neukunde";
this.rBNeuKunde.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.rBNeuKunde.UseVisualStyleBackColor = true;
this.rBNeuKunde.CheckedChanged += new System.EventHandler(this.RadioButtonsKunde_CheckedChanged);
//
// tLPKundeDetails
//
this.tLPKundeDetails.AutoSize = true;
this.tLPKundeDetails.ColumnCount = 2;
this.tLPKundeDetails.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tLPKundeDetails.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tLPKundeDetails.Controls.Add(this.label2, 1, 0);
this.tLPKundeDetails.Controls.Add(this.label1, 0, 0);
this.tLPKundeDetails.Controls.Add(this.tLPKontakt, 1, 1);
this.tLPKundeDetails.Controls.Add(this.tLPAdresse, 0, 1);
this.tLPKundeDetails.Controls.Add(this.buttonEdit, 0, 2);
this.tLPKundeDetails.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPKundeDetails.Location = new System.Drawing.Point(3, 166);
this.tLPKundeDetails.Name = "tLPKundeDetails";
this.tLPKundeDetails.RowCount = 3;
this.tLPKundeDetails.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
this.tLPKundeDetails.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKundeDetails.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
this.tLPKundeDetails.Size = new System.Drawing.Size(1413, 259);
this.tLPKundeDetails.TabIndex = 4;
//
// label2
//
this.label2.AutoSize = true;
this.label2.Dock = System.Windows.Forms.DockStyle.Fill;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.White;
this.label2.Location = new System.Drawing.Point(709, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(701, 50);
this.label2.TabIndex = 4;
this.label2.Text = "Details:";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(3, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(700, 50);
this.label1.TabIndex = 3;
this.label1.Text = "Adresse:";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tLPKontakt
//
this.tLPKontakt.AutoSize = true;
this.tLPKontakt.ColumnCount = 2;
this.tLPKontakt.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200F));
this.tLPKontakt.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPKontakt.Controls.Add(this.textBoxAnderes, 1, 2);
this.tLPKontakt.Controls.Add(this.textBoxMail, 1, 1);
this.tLPKontakt.Controls.Add(this.textBoxTel, 1, 0);
this.tLPKontakt.Controls.Add(this.label5, 0, 2);
this.tLPKontakt.Controls.Add(this.label7, 0, 1);
this.tLPKontakt.Controls.Add(this.label9, 0, 0);
this.tLPKontakt.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPKontakt.Location = new System.Drawing.Point(709, 53);
this.tLPKontakt.Name = "tLPKontakt";
this.tLPKontakt.RowCount = 3;
this.tLPKontakt.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKontakt.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKontakt.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPKontakt.Size = new System.Drawing.Size(701, 153);
this.tLPKontakt.TabIndex = 2;
//
// textBoxAnderes
//
this.textBoxAnderes.AccessibleName = "isAlpha";
this.textBoxAnderes.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxAnderes.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxAnderes.Location = new System.Drawing.Point(203, 105);
this.textBoxAnderes.Name = "textBoxAnderes";
this.textBoxAnderes.Size = new System.Drawing.Size(495, 45);
this.textBoxAnderes.TabIndex = 9;
this.textBoxAnderes.Enter += new System.EventHandler(this.TextBox_Enter);
//
// textBoxMail
//
this.textBoxMail.AccessibleName = "isAlpha";
this.textBoxMail.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxMail.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxMail.Location = new System.Drawing.Point(203, 54);
this.textBoxMail.Name = "textBoxMail";
this.textBoxMail.Size = new System.Drawing.Size(495, 45);
this.textBoxMail.TabIndex = 8;
this.textBoxMail.Enter += new System.EventHandler(this.TextBox_Enter);
//
// textBoxTel
//
this.textBoxTel.AccessibleName = "isCalc";
this.textBoxTel.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxTel.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxTel.Location = new System.Drawing.Point(203, 3);
this.textBoxTel.Name = "textBoxTel";
this.textBoxTel.Size = new System.Drawing.Size(495, 45);
this.textBoxTel.TabIndex = 7;
this.textBoxTel.Enter += new System.EventHandler(this.TextBox_Enter);
this.textBoxTel.Validating += new System.ComponentModel.CancelEventHandler(this.Pflichtfelder_Validating);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Dock = System.Windows.Forms.DockStyle.Fill;
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label5.ForeColor = System.Drawing.Color.White;
this.label5.Location = new System.Drawing.Point(3, 102);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(194, 51);
this.label5.TabIndex = 6;
this.label5.Text = "Anderes:";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Dock = System.Windows.Forms.DockStyle.Fill;
this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label7.ForeColor = System.Drawing.Color.White;
this.label7.Location = new System.Drawing.Point(3, 51);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(194, 51);
this.label7.TabIndex = 4;
this.label7.Text = "E-Mail:";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label9
//
this.label9.AutoSize = true;
this.label9.Dock = System.Windows.Forms.DockStyle.Fill;
this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label9.ForeColor = System.Drawing.Color.White;
this.label9.Location = new System.Drawing.Point(3, 0);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(194, 51);
this.label9.TabIndex = 2;
this.label9.Text = "Telefon:";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tLPAdresse
//
this.tLPAdresse.AutoSize = true;
this.tLPAdresse.ColumnCount = 2;
this.tLPAdresse.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 220F));
this.tLPAdresse.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPAdresse.Controls.Add(this.textBoxOrt, 1, 2);
this.tLPAdresse.Controls.Add(this.textBoxPLZ, 1, 1);
this.tLPAdresse.Controls.Add(this.textBoxStrasse, 1, 0);
this.tLPAdresse.Controls.Add(this.label8, 0, 2);
this.tLPAdresse.Controls.Add(this.label6, 0, 1);
this.tLPAdresse.Controls.Add(this.label4, 0, 0);
this.tLPAdresse.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPAdresse.Location = new System.Drawing.Point(3, 53);
this.tLPAdresse.Name = "tLPAdresse";
this.tLPAdresse.RowCount = 3;
this.tLPAdresse.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAdresse.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAdresse.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAdresse.Size = new System.Drawing.Size(700, 153);
this.tLPAdresse.TabIndex = 1;
//
// textBoxOrt
//
this.textBoxOrt.AccessibleName = "isAlpha";
this.textBoxOrt.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxOrt.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxOrt.Location = new System.Drawing.Point(223, 105);
this.textBoxOrt.Name = "textBoxOrt";
this.textBoxOrt.Size = new System.Drawing.Size(474, 45);
this.textBoxOrt.TabIndex = 9;
this.textBoxOrt.Enter += new System.EventHandler(this.TextBox_Enter);
//
// textBoxPLZ
//
this.textBoxPLZ.AccessibleName = "isNumeric";
this.textBoxPLZ.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxPLZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxPLZ.Location = new System.Drawing.Point(223, 54);
this.textBoxPLZ.Name = "textBoxPLZ";
this.textBoxPLZ.Size = new System.Drawing.Size(474, 45);
this.textBoxPLZ.TabIndex = 8;
this.textBoxPLZ.Enter += new System.EventHandler(this.TextBox_Enter);
//
// textBoxStrasse
//
this.textBoxStrasse.AccessibleName = "isAlpha";
this.textBoxStrasse.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxStrasse.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxStrasse.Location = new System.Drawing.Point(223, 3);
this.textBoxStrasse.Name = "textBoxStrasse";
this.textBoxStrasse.Size = new System.Drawing.Size(474, 45);
this.textBoxStrasse.TabIndex = 7;
this.textBoxStrasse.Enter += new System.EventHandler(this.TextBox_Enter);
//
// label8
//
this.label8.AutoSize = true;
this.label8.Dock = System.Windows.Forms.DockStyle.Fill;
this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label8.ForeColor = System.Drawing.Color.White;
this.label8.Location = new System.Drawing.Point(3, 102);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(214, 51);
this.label8.TabIndex = 6;
this.label8.Text = "Ort:";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Dock = System.Windows.Forms.DockStyle.Fill;
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label6.ForeColor = System.Drawing.Color.White;
this.label6.Location = new System.Drawing.Point(3, 51);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(214, 51);
this.label6.TabIndex = 4;
this.label6.Text = "PLZ:";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Dock = System.Windows.Forms.DockStyle.Fill;
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label4.ForeColor = System.Drawing.Color.White;
this.label4.Location = new System.Drawing.Point(3, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(214, 51);
this.label4.TabIndex = 2;
this.label4.Text = "Strasse/Nr:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// buttonEdit
//
this.buttonEdit.BackColor = System.Drawing.Color.White;
this.buttonEdit.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.buttonEdit.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonEdit.Image = ((System.Drawing.Image)(resources.GetObject("buttonEdit.Image")));
this.buttonEdit.Location = new System.Drawing.Point(3, 212);
this.buttonEdit.Name = "buttonEdit";
this.buttonEdit.Size = new System.Drawing.Size(44, 44);
this.buttonEdit.TabIndex = 0;
this.buttonEdit.UseVisualStyleBackColor = false;
this.buttonEdit.Click += new System.EventHandler(this.ButtonEdit_Click);
//
// tLPAuftrag
//
this.tLPAuftrag.AutoSize = true;
this.tLPAuftrag.ColumnCount = 2;
this.tLPAuftrag.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tLPAuftrag.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPAuftrag.Controls.Add(this.pictureBoxPlus, 1, 0);
this.tLPAuftrag.Controls.Add(this.label3, 0, 0);
this.tLPAuftrag.Controls.Add(this.tLPAuftragDetails, 0, 1);
this.tLPAuftrag.Controls.Add(this.fLPNetzeScan, 1, 1);
this.tLPAuftrag.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPAuftrag.Location = new System.Drawing.Point(3, 431);
this.tLPAuftrag.Name = "tLPAuftrag";
this.tLPAuftrag.RowCount = 2;
this.tLPAuftrag.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
this.tLPAuftrag.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAuftrag.Size = new System.Drawing.Size(1413, 299);
this.tLPAuftrag.TabIndex = 5;
//
// pictureBoxPlus
//
this.pictureBoxPlus.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.pictureBoxPlus.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxPlus.Image")));
this.pictureBoxPlus.Location = new System.Drawing.Point(521, 3);
this.pictureBoxPlus.Name = "pictureBoxPlus";
this.pictureBoxPlus.Size = new System.Drawing.Size(44, 44);
this.pictureBoxPlus.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBoxPlus.TabIndex = 42;
this.pictureBoxPlus.TabStop = false;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.ForeColor = System.Drawing.Color.White;
this.label3.Location = new System.Drawing.Point(3, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(512, 50);
this.label3.TabIndex = 4;
this.label3.Text = "Auftrag:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tLPAuftragDetails
//
this.tLPAuftragDetails.AutoSize = true;
this.tLPAuftragDetails.ColumnCount = 2;
this.tLPAuftragDetails.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tLPAuftragDetails.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tLPAuftragDetails.Controls.Add(this.textBoxNetzanzahl, 1, 1);
this.tLPAuftragDetails.Controls.Add(this.label12, 0, 1);
this.tLPAuftragDetails.Controls.Add(this.label11, 0, 0);
this.tLPAuftragDetails.Controls.Add(this.dTPAbholtag, 1, 0);
this.tLPAuftragDetails.Controls.Add(this.rBEigenNetze, 0, 2);
this.tLPAuftragDetails.Controls.Add(this.rBFremdNetze, 1, 2);
this.tLPAuftragDetails.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPAuftragDetails.Location = new System.Drawing.Point(3, 53);
this.tLPAuftragDetails.Name = "tLPAuftragDetails";
this.tLPAuftragDetails.RowCount = 3;
this.tLPAuftragDetails.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAuftragDetails.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAuftragDetails.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tLPAuftragDetails.Size = new System.Drawing.Size(512, 243);
this.tLPAuftragDetails.TabIndex = 0;
//
// textBoxNetzanzahl
//
this.textBoxNetzanzahl.AccessibleName = "isNumeric";
this.textBoxNetzanzahl.Dock = System.Windows.Forms.DockStyle.Fill;
this.textBoxNetzanzahl.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxNetzanzahl.Location = new System.Drawing.Point(259, 54);
this.textBoxNetzanzahl.Name = "textBoxNetzanzahl";
this.textBoxNetzanzahl.Size = new System.Drawing.Size(250, 45);
this.textBoxNetzanzahl.TabIndex = 10;
this.textBoxNetzanzahl.Enter += new System.EventHandler(this.TextBox_Enter);
this.textBoxNetzanzahl.Validating += new System.ComponentModel.CancelEventHandler(this.Pflichtfelder_Validating);
//
// label12
//
this.label12.AutoSize = true;
this.label12.Dock = System.Windows.Forms.DockStyle.Fill;
this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label12.ForeColor = System.Drawing.Color.White;
this.label12.Location = new System.Drawing.Point(3, 51);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(250, 51);
this.label12.TabIndex = 5;
this.label12.Text = "Netzanzahl:";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label11
//
this.label11.AutoSize = true;
this.label11.Dock = System.Windows.Forms.DockStyle.Fill;
this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label11.ForeColor = System.Drawing.Color.White;
this.label11.Location = new System.Drawing.Point(3, 0);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(250, 51);
this.label11.TabIndex = 3;
this.label11.Text = "Abholtag:";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// dTPAbholtag
//
this.dTPAbholtag.Checked = false;
this.dTPAbholtag.Dock = System.Windows.Forms.DockStyle.Fill;
this.dTPAbholtag.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.dTPAbholtag.Format = System.Windows.Forms.DateTimePickerFormat.Short;
this.dTPAbholtag.Location = new System.Drawing.Point(259, 3);
this.dTPAbholtag.Name = "dTPAbholtag";
this.dTPAbholtag.ShowCheckBox = true;
this.dTPAbholtag.Size = new System.Drawing.Size(250, 45);
this.dTPAbholtag.TabIndex = 4;
//
// rBEigenNetze
//
this.rBEigenNetze.AccessibleName = "EigeneNetze";
this.rBEigenNetze.Appearance = System.Windows.Forms.Appearance.Button;
this.rBEigenNetze.Checked = true;
this.rBEigenNetze.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.rBEigenNetze.FlatAppearance.CheckedBackColor = System.Drawing.Color.White;
this.rBEigenNetze.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ActiveCaption;
this.rBEigenNetze.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.rBEigenNetze.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rBEigenNetze.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.rBEigenNetze.Location = new System.Drawing.Point(3, 105);
this.rBEigenNetze.Name = "rBEigenNetze";
this.rBEigenNetze.Size = new System.Drawing.Size(250, 50);
this.rBEigenNetze.TabIndex = 11;
this.rBEigenNetze.TabStop = true;
this.rBEigenNetze.Text = "Eigene Netze";
this.rBEigenNetze.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.rBEigenNetze.UseVisualStyleBackColor = true;
this.rBEigenNetze.CheckedChanged += new System.EventHandler(this.RadioButtonsKunde_CheckedChanged);
//
// rBFremdNetze
//
this.rBFremdNetze.AccessibleName = "WirlNetze";
this.rBFremdNetze.Appearance = System.Windows.Forms.Appearance.Button;
this.rBFremdNetze.FlatAppearance.BorderColor = System.Drawing.Color.White;
this.rBFremdNetze.FlatAppearance.CheckedBackColor = System.Drawing.Color.White;
this.rBFremdNetze.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.ActiveCaption;
this.rBFremdNetze.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.rBFremdNetze.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rBFremdNetze.ForeColor = System.Drawing.Color.White;
this.rBFremdNetze.Location = new System.Drawing.Point(259, 105);
this.rBFremdNetze.Name = "rBFremdNetze";
this.rBFremdNetze.Size = new System.Drawing.Size(250, 50);
this.rBFremdNetze.TabIndex = 12;
this.rBFremdNetze.Text = "Wirl Netze";
this.rBFremdNetze.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.rBFremdNetze.UseVisualStyleBackColor = true;
this.rBFremdNetze.CheckedChanged += new System.EventHandler(this.RadioButtonsKunde_CheckedChanged);
//
// fLPNetzeScan
//
this.fLPNetzeScan.BackColor = System.Drawing.Color.White;
this.fLPNetzeScan.Dock = System.Windows.Forms.DockStyle.Fill;
this.fLPNetzeScan.Location = new System.Drawing.Point(521, 53);
this.fLPNetzeScan.Name = "fLPNetzeScan";
this.fLPNetzeScan.Size = new System.Drawing.Size(889, 243);
this.fLPNetzeScan.TabIndex = 1;
//
// tLPButtons
//
this.tLPButtons.ColumnCount = 2;
this.tLPButtons.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tLPButtons.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tLPButtons.Controls.Add(this.buttonAbbrechen, 1, 0);
this.tLPButtons.Controls.Add(this.buttonSpeichern, 0, 0);
this.tLPButtons.Dock = System.Windows.Forms.DockStyle.Fill;
this.tLPButtons.Location = new System.Drawing.Point(3, 736);
this.tLPButtons.Name = "tLPButtons";
this.tLPButtons.RowCount = 1;
this.tLPButtons.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tLPButtons.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tLPButtons.Size = new System.Drawing.Size(1413, 94);
this.tLPButtons.TabIndex = 8;
//
// buttonAbbrechen
//
this.buttonAbbrechen.BackColor = System.Drawing.Color.Red;
this.buttonAbbrechen.CausesValidation = false;
this.buttonAbbrechen.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonAbbrechen.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonAbbrechen.FlatAppearance.BorderSize = 0;
this.buttonAbbrechen.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAbbrechen.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonAbbrechen.ForeColor = System.Drawing.Color.Black;
this.buttonAbbrechen.Location = new System.Drawing.Point(716, 10);
this.buttonAbbrechen.Margin = new System.Windows.Forms.Padding(10);
this.buttonAbbrechen.Name = "buttonAbbrechen";
this.buttonAbbrechen.Size = new System.Drawing.Size(687, 74);
this.buttonAbbrechen.TabIndex = 70;
this.buttonAbbrechen.Text = "Abbrechen";
this.buttonAbbrechen.UseVisualStyleBackColor = false;
this.buttonAbbrechen.Click += new System.EventHandler(this.ButtonAbbrechen_Click);
//
// buttonSpeichern
//
this.buttonSpeichern.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.buttonSpeichern.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.buttonSpeichern.Dock = System.Windows.Forms.DockStyle.Fill;
this.buttonSpeichern.FlatAppearance.BorderSize = 0;
this.buttonSpeichern.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonSpeichern.Font = new System.Drawing.Font("Microsoft Sans Serif", 19.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonSpeichern.ForeColor = System.Drawing.Color.Black;
this.buttonSpeichern.Location = new System.Drawing.Point(10, 10);
this.buttonSpeichern.Margin = new System.Windows.Forms.Padding(10);
this.buttonSpeichern.Name = "buttonSpeichern";
this.buttonSpeichern.Size = new System.Drawing.Size(686, 74);
this.buttonSpeichern.TabIndex = 69;
this.buttonSpeichern.Text = "Auftrag speichern";
this.buttonSpeichern.UseVisualStyleBackColor = false;
this.buttonSpeichern.Click += new System.EventHandler(this.ButtonSpeichern_Click);
//
// FormGeschaeftMain
//
this.AcceptButton = this.buttonSpeichern;
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoScroll = true;
this.CancelButton = this.buttonAbbrechen;
this.ClientSize = new System.Drawing.Size(1419, 833);
this.Controls.Add(this.tLPGeschaeft);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormGeschaeftMain";
this.Text = "Geschäft";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.Load += new System.EventHandler(this.FormGeschaeftMain_Load);
this.tLPGeschaeft.ResumeLayout(false);
this.tLPGeschaeft.PerformLayout();
this.tLPKundeAuswahl.ResumeLayout(false);
this.tLPKundeAuswahl.PerformLayout();
this.tLPKundeNr.ResumeLayout(false);
this.tLPKundeNr.PerformLayout();
this.tLPKundeName.ResumeLayout(false);
this.tLPKundeName.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
this.tLPKundeDetails.ResumeLayout(false);
this.tLPKundeDetails.PerformLayout();
this.tLPKontakt.ResumeLayout(false);
this.tLPKontakt.PerformLayout();
this.tLPAdresse.ResumeLayout(false);
this.tLPAdresse.PerformLayout();
this.tLPAuftrag.ResumeLayout(false);
this.tLPAuftrag.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxPlus)).EndInit();
this.tLPAuftragDetails.ResumeLayout(false);
this.tLPAuftragDetails.PerformLayout();
this.tLPButtons.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tLPGeschaeft;
private System.Windows.Forms.RadioButton rBAltKunde;
private System.Windows.Forms.RadioButton rBNeuKunde;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tLPKundeDetails;
private System.Windows.Forms.Button buttonEdit;
private System.Windows.Forms.TableLayoutPanel tLPAdresse;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TableLayoutPanel tLPKontakt;
private System.Windows.Forms.TextBox textBoxAnderes;
private System.Windows.Forms.TextBox textBoxMail;
private System.Windows.Forms.TextBox textBoxTel;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox textBoxOrt;
private System.Windows.Forms.TextBox textBoxPLZ;
private System.Windows.Forms.TextBox textBoxStrasse;
private System.Windows.Forms.TableLayoutPanel tLPAuftrag;
private System.Windows.Forms.TableLayoutPanel tLPAuftragDetails;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.DateTimePicker dTPAbholtag;
private System.Windows.Forms.TextBox textBoxNetzanzahl;
private System.Windows.Forms.RadioButton rBEigenNetze;
private System.Windows.Forms.RadioButton rBFremdNetze;
private System.Windows.Forms.FlowLayoutPanel fLPNetzeScan;
private System.Windows.Forms.TableLayoutPanel tLPKundeAuswahl;
private System.Windows.Forms.TableLayoutPanel tLPKundeNr;
private System.Windows.Forms.TextBox textBoxKundeNr;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.TableLayoutPanel tLPKundeName;
private System.Windows.Forms.TextBox textBoxKundeName;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.PictureBox pictureBoxPlus;
private System.Windows.Forms.TableLayoutPanel tLPButtons;
private System.Windows.Forms.Button buttonSpeichern;
private System.Windows.Forms.Button buttonAbbrechen;
}
}

View File

@ -0,0 +1,273 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using VirtualKeyboard;
using static System.Net.Mime.MediaTypeNames;
using DatenDB;
using Deckungsbeitrag.AA_Forms;
namespace Deckungsbeitrag
{
public partial class FormGeschaeftMain : Form
{
private string kundetyp = "Bestandskunde";
private QwertzKeyboard keyboard;
private Screen screen = Screen.PrimaryScreen;
private Kunde kunde;
private bool _keyboardVisible;
public bool KeyBoardVisible
{
get { return _keyboardVisible; }
set
{
_keyboardVisible = value;
if (KeyBoardVisible)
{
this.Width = screen.WorkingArea.Width;
this.Height = (int)(screen.WorkingArea.Height * 0.55);
this.Location = new Point(0, 0);
this.ScrollControlIntoView(this.ActiveControl);
}
else
{
this.Width = screen.WorkingArea.Width;
this.Height = screen.WorkingArea.Height;
this.Location = new Point(0, 0);
}
}
}
public FormGeschaeftMain()
{
InitializeComponent();
}
private void FormGeschaeftMain_Load(object sender, EventArgs e)
{
this.buttonEdit.Visible = false;
this.dTPAbholtag.Value = DateTime.Today.AddDays(2);
this.dTPAbholtag.Checked = false;
StartKndAuswahl();
RadioButtonsKunde_CheckedChanged(rBAltKunde, null);
RadioButtonsKunde_CheckedChanged(rBEigenNetze, null);
}
private void StartKndAuswahl()
{
FormGeschaeftKndAuswahl auswahl = new FormGeschaeftKndAuswahl();
if (auswahl.ShowDialog() == DialogResult.OK)
{
this.kundetyp = auswahl.kundetyp;
if (this.kundetyp == "Bestandskunde") rBAltKunde.Checked = true;
else rBNeuKunde.Checked = true; ;
}
}
private void RadioButtonsKunde_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
rb.ForeColor = rb.Checked ? Program.Wirlblau : Color.White;
// RadioButtons für Kundenauswahl.
if (rb.AccessibleName.Contains("kunde"))
{
kundetyp = rb.AccessibleName;
// TextBoxen werden je nach Kundentyp Enabled und BackColor gesetzt.
//foreach (TextBox txt in this.tLPKontakt.Controls.OfType<TextBox>()) { txt.Enabled = (rb.Checked & kundetyp == "Neukunde"); txt.BackColor = !txt.Enabled ? Color.Silver : Color.White; }
//foreach (TextBox txt in this.tLPAdresse.Controls.OfType<TextBox>()) { txt.Enabled = (rb.Checked & kundetyp == "Neukunde"); txt.BackColor = !txt.Enabled ? Color.Silver : Color.White; }
foreach (TextBox txt in this.tLPKundeNr.Controls.OfType<TextBox>()) { txt.Enabled = (rb.Checked & kundetyp == "Bestandskunde"); txt.BackColor = !txt.Enabled ? Color.Silver : Color.White; }
buttonEdit.Enabled = (rb.Checked & kundetyp == "Bestandskunde");
if (buttonEdit.Enabled)
{
buttonEdit.BackColor = Color.White;
}
else buttonEdit.BackColor = Color.Gray;
return;
}
// Wenn Eigene Netze verwendet werden.
if (rb.Checked & rb.AccessibleName == "EigeneNetze")
{
fLPNetzeScan.Enabled = false;
fLPNetzeScan.BackColor = Color.Silver;
pictureBoxPlus.Enabled = false;
pictureBoxPlus.BackColor = Color.Gray;
return;
}
// Wenn Wirl Netze verwendet werden.
if (rb.Checked & rb.AccessibleName == "WirlNetze")
{
fLPNetzeScan.Enabled = true;
fLPNetzeScan.BackColor = Color.White;
pictureBoxPlus.Enabled = true;
pictureBoxPlus.BackColor = Color.FromArgb(0, 192, 0);
return;
}
}
private void ButtonEdit_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
foreach (TextBox txt in this.tLPKontakt.Controls.OfType<TextBox>()) { txt.Enabled = true; txt.BackColor = !txt.Enabled ? Color.Silver : Color.White; }
foreach (TextBox txt in this.tLPAdresse.Controls.OfType<TextBox>()) { txt.Enabled = true; txt.BackColor = !txt.Enabled ? Color.Silver : Color.White; }
}
private void TextBoxKunde_Leave(object sender, EventArgs e)
{
TextBox txt = (TextBox)sender;
if (kundetyp == "Neukunde") return;
//TODO: Kunde suchen und aus DB holen. Eventuell alle möglichen Namen durchsuchen. Eventuell DropDown mit Auswahl?
}
private void TextBox_Enter(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
tb.BackColor = Color.White;
tb.ForeColor = Color.Black;
keyboard = Funktionen.OpenVirtualKeyboard(sender);
keyboard.KeyBoardShown += KeyBoardShown;
keyboard.KeyBoardClosed += KeyBoardClosed;
this.BeginInvoke(new Action(() =>
{
if (!tb.IsDisposed && tb.CanFocus)
{
tb.Focus();
tb.SelectAll();
}
}));
}
/// <summary>
/// Wenn die virtuelle Tastatur geschlossen wird, wird KeyBoardVisible aktualisiert.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void KeyBoardClosed(object sender, EventArgs e)
{
KeyBoardVisible = false;
}
/// <summary>
/// Wenn die virtuelle Tastatur geschlossen wird, wird KeyBoardVisible aktualisiert.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void KeyBoardShown(object sender, EventArgs e)
{
KeyBoardVisible = true;
}
private void ButtonSpeichern_Click(object sender, EventArgs e)
{
if (GetRedTextBoxes(this).Count > 0) { MessageBox.Show("Alle Pflichtfelder müssen ausgefüllt sein.", "FEHLER"); return; }
// RadioButtons beide Checked false. Auswahl des Kundentyps geht über die FormGefschaeftKndAuswahl.
this.rBNeuKunde.Checked = false;
this.rBAltKunde.Checked = false;
MessageBox.Show("Speichern möglich");
StartKndAuswahl();
}
private List<TextBox> GetRedTextBoxes(Control parent)
{
var result = new List<TextBox>();
foreach (Control c in parent.Controls)
{
if (c is TextBox tb && tb.BackColor == Color.Red)
result.Add(tb);
if (c.HasChildren)
result.AddRange(GetRedTextBoxes(c));
}
return result;
}
private void Pflichtfelder_Validating(object sender, CancelEventArgs e)
{
if (sender is TextBox txt)
{
if (string.IsNullOrWhiteSpace(txt.Text))
{
txt.BackColor = Color.Red;
txt.ForeColor = Color.White;
return;
}
else
{
if (txt.AccessibleName.Contains("Numeric"))
{
if (!int.TryParse(txt.Text, out _))
{
txt.BackColor = Color.Red;
txt.ForeColor = Color.White;
return;
}
}
e.Cancel = false;
txt.BackColor = Color.White;
txt.ForeColor = Color.Black;
}
//TODO: Testen wie die Validierung abläuft.
}
}
private void ButtonAbbrechen_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Möchtest du die Eingabe wirklich abbrechen?", "FRAGE", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
else
{
kunde = null;
this.dTPAbholtag.Checked = false;
CheckAllTextBoxes(this);
// RadioButtons beide Checked false. Auswahl des Kundentyps geht über die FormGefschaeftKndAuswahl.
this.rBAltKunde.Checked = false;
this.rBNeuKunde.Checked = false;
StartKndAuswahl();
}
}
private void CheckAllTextBoxes(Control parent)
{
foreach (Control c in parent.Controls)
{
if (c is TextBox tb)
{
if (!string.IsNullOrWhiteSpace(tb.Text))
{
tb.Clear();
}
}
if (c.HasChildren)
{
CheckAllTextBoxes(c);
}
}
}
}
}

View File

@ -0,0 +1,238 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonEdit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vgAADr4B6kKxwAAAAXZJREFUOE+1kj9LwlEUhjXc+rP0IYKCpsJoKaRBGqpBHKygLxA5aQ2C5FBgFLQL
SUQQQoZmiAVNUUGYFhURDYqlqf00vG/gcuL8KLGrpQQ94+V93nPgHo2mSQAYAESFAAHIALAD0Mq5ugAY
S2SUstEVIp3ZQ12zO3QcT3CRXc7W8CV3z/lo2BGgq4dncmydqSW8iZz/BsvJT5mFzplNOrlOqiUtJg8X
kOxUYDmdK5b7bLs06jqgl6xCzu1ztYQ3GV8Kc0Fc9lSqZbM7QtmcQgWlqJbwJkOOAOUKbwDQL7s1cj5f
qMi8SZVskN2G8uDC3t9lfk/niu//ImsBZPV2P3VMe+ny/qmeXOYhsqsCoDf2mKH2KS9Nrh2p33Rxl2pO
ZgBY14MxMi6G1MmW1UNqm/QSHw8f0a8yA8BvckdIP++nEec+tVo2qMfqIz7fhjIjBF552sRymFb8UTq9
TVFJiBIAk5ytixC4EQJFAEEANgADAHRy7ic+ALEuweNxnDexAAAAAElFTkSuQmCC
</value>
</data>
<data name="pictureBoxPlus.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vAAADrwBlbxySQAAAFZJREFUOE+9kEEKACEMxHxb//+eXruwbGEwHhwKK+QSaqSuqloTIFwgXCBcKL6T
maW0xzyEBCLixQroqxpo9vljoC/u/BcYrTD+RA0o1wEXCBcIFwiXB07Nzd/k/DvRAAAAAElFTkSuQmCC
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
QmCC
</value>
</data>
</root>

View File

@ -1141,7 +1141,7 @@ namespace Deckungsbeitrag
ArtikelID = art.ArtikelID,
ArtikelName = art.Bezeichnung,
Gesamt = row.Cells[column.Index].Value == null ? 0 : int.Parse(row.Cells[column.Index].Value.ToString()),
Anzahl = row.Cells[column.Index].Value == null ? 0 : int.Parse(row.Cells[column.Index].Value.ToString()),
Anzahl = 0,
Erledigt = false,
};
saved += aufart.Save();

View File

@ -59,11 +59,11 @@ namespace Deckungsbeitrag
this.listViewKunde.HideSelection = false;
this.listViewKunde.HotTracking = true;
this.listViewKunde.HoverSelection = true;
this.listViewKunde.Location = new System.Drawing.Point(9, 62);
this.listViewKunde.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.listViewKunde.Location = new System.Drawing.Point(12, 76);
this.listViewKunde.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.listViewKunde.MultiSelect = false;
this.listViewKunde.Name = "listViewKunde";
this.listViewKunde.Size = new System.Drawing.Size(638, 448);
this.listViewKunde.Size = new System.Drawing.Size(849, 550);
this.listViewKunde.TabIndex = 1;
this.listViewKunde.UseCompatibleStateImageBehavior = false;
this.listViewKunde.View = System.Windows.Forms.View.Details;
@ -89,12 +89,13 @@ namespace Deckungsbeitrag
//
// textBoxKunde
//
this.textBoxKunde.AccessibleName = "isAlpha";
this.textBoxKunde.Font = new System.Drawing.Font("Microsoft Sans Serif", 16.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxKunde.ForeColor = System.Drawing.Color.Black;
this.textBoxKunde.Location = new System.Drawing.Point(9, 13);
this.textBoxKunde.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.textBoxKunde.Location = new System.Drawing.Point(12, 16);
this.textBoxKunde.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.textBoxKunde.Name = "textBoxKunde";
this.textBoxKunde.Size = new System.Drawing.Size(296, 32);
this.textBoxKunde.Size = new System.Drawing.Size(393, 38);
this.textBoxKunde.TabIndex = 0;
this.textBoxKunde.Text = "Hier eingeben";
this.textBoxKunde.Click += new System.EventHandler(this.TextBoxKunde_Click);
@ -106,9 +107,10 @@ namespace Deckungsbeitrag
//
this.label1.AutoSize = true;
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(309, 15);
this.label1.Location = new System.Drawing.Point(412, 18);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(248, 26);
this.label1.Size = new System.Drawing.Size(304, 32);
this.label1.TabIndex = 2;
this.label1.Text = "KundeNr. oder Name eingeben.\r\nKunde nicht vorhanden? Starte die Eingabe mit (?).";
//
@ -120,10 +122,10 @@ namespace Deckungsbeitrag
this.buttonOK.FlatAppearance.BorderSize = 0;
this.buttonOK.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonOK.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonOK.Location = new System.Drawing.Point(63, 69);
this.buttonOK.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.buttonOK.Location = new System.Drawing.Point(84, 85);
this.buttonOK.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(528, 41);
this.buttonOK.Size = new System.Drawing.Size(704, 50);
this.buttonOK.TabIndex = 15;
this.buttonOK.Text = "Kunde übernehmen";
this.buttonOK.UseVisualStyleBackColor = false;
@ -137,10 +139,10 @@ namespace Deckungsbeitrag
this.buttonNeuerAuftrag.FlatAppearance.BorderSize = 0;
this.buttonNeuerAuftrag.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonNeuerAuftrag.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonNeuerAuftrag.Location = new System.Drawing.Point(120, 466);
this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.buttonNeuerAuftrag.Location = new System.Drawing.Point(160, 574);
this.buttonNeuerAuftrag.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonNeuerAuftrag.Name = "buttonNeuerAuftrag";
this.buttonNeuerAuftrag.Size = new System.Drawing.Size(409, 34);
this.buttonNeuerAuftrag.Size = new System.Drawing.Size(545, 42);
this.buttonNeuerAuftrag.TabIndex = 16;
this.buttonNeuerAuftrag.Text = "Neuer Auftrag";
this.buttonNeuerAuftrag.UseVisualStyleBackColor = false;
@ -148,10 +150,10 @@ namespace Deckungsbeitrag
//
// FormListe
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.ClientSize = new System.Drawing.Size(656, 522);
this.ClientSize = new System.Drawing.Size(875, 642);
this.Controls.Add(this.buttonNeuerAuftrag);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.label1);
@ -159,10 +161,10 @@ namespace Deckungsbeitrag
this.Controls.Add(this.listViewKunde);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(427, 51);
this.MinimumSize = new System.Drawing.Size(563, 52);
this.Name = "FormListe";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;

View File

@ -350,22 +350,17 @@ namespace Deckungsbeitrag
}
private void TextBoxKunde_Click(object sender, EventArgs e)
{
this.textBoxKunde.Clear();
TextBox tb = (TextBox)sender;
keyboard = Funktionen.OpenVirtualKeyboard(sender);
if (Program.istTouch & Screen.PrimaryScreen.WorkingArea.Width > 0 & Screen.PrimaryScreen.WorkingArea.Width < 2000)
this.BeginInvoke(new Action(() =>
{
if (keyboard == null || keyboard.IsDisposed)
if (!tb.IsDisposed && tb.CanFocus)
{
keyboard = new QwertzKeyboard(textBoxKunde, "isAlpha");
if (keyboard.ShowDialog() == DialogResult.OK) this.ActiveControl.Focus();
tb.Focus();
tb.SelectAll();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(textBoxKunde, "isAlpha");
if (keyboard.ShowDialog() == DialogResult.OK) this.ActiveControl.Focus();
}
}
}));
}
private void TextBoxKunde_TextChanged(object sender, EventArgs e)

View File

@ -86,7 +86,6 @@ namespace Deckungsbeitrag
}
if (keyboard != null) keyboard.Close();
}
private void ButtonAbbrechen_Click(object sender, EventArgs e)
{
if (keyboard != null) keyboard.Close();
@ -94,7 +93,6 @@ namespace Deckungsbeitrag
this.DialogResult = DialogResult.Cancel;
this.Close();
}
private void ButtonRegistrieren_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(this.textBoxBenutzer.Text) && !String.IsNullOrEmpty(this.textBoxPasswort.Text) && this.textBoxPasswort.Text == this.textBoxPwdWh.Text)
@ -115,18 +113,11 @@ namespace Deckungsbeitrag
this.textBoxPwdWh.Visible = false;
this.buttonRegistrieren.Visible = false;
this.textBoxPasswort.Text = this.textBoxPwdWh.Text = string.Empty;
//if (MessageBox.Show($"Benutzer {this.textBoxBenutzer.Text} wurde erfolgreich angelegt.\n\nMöchtest du einen eigenen Benutzername angeben?\n\n[JA] -> Neuen Benutzername anlegen\n[NEIN] -> Alten Benutzername behalten", "Hinweis", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
//{
// string eingabe = Interaction.InputBox("Welchen Benutzername möchtest du verwenden?\n\nBenutzername:", "Neuer Benutzername", "");
// if (!string.IsNullOrWhiteSpace(eingabe)) person.BenutzerName = eingabe;
// if (person.Save() != 1) MessageBox.Show("Benutzername konnte nicht gespeichert werden. Melde dich bei deinem Vorgesetzten.", "SPEICHERFEHLER", MessageBoxButtons.OK, MessageBoxIcon.Information);
//}
this.textBoxBenutzer.Focus();
this.buttonAnmelden.Enabled = true;
}
}
}
private void TextBoxBenutzer_Leave(object sender, EventArgs e)
{
if (textBoxBenutzer.Text.Contains(";"))
@ -145,76 +136,29 @@ namespace Deckungsbeitrag
WindowState = FormWindowState.Normal;
StartPosition = FormStartPosition.CenterScreen;
}
private void FormLogin_Shown(object sender, EventArgs e)
{
this.Location = new Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2, ((Screen.PrimaryScreen.WorkingArea.Height / 2) - this.Height) / 2);
}
private void TextBoxBenutzer_Enter(object sender, EventArgs e)
{
this.textBoxBenutzer.SelectAll();
this.textBoxBenutzer.Focus();
if (Program.istTouch && Screen.PrimaryScreen.WorkingArea.Width > 0 && Screen.PrimaryScreen.WorkingArea.Width < 2000)
{
if (keyboard == null || keyboard.IsDisposed)
{
keyboard = new QwertzKeyboard(textBoxBenutzer, "isAlpha");
keyboard.Show();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(textBoxBenutzer, "isAlpha");
keyboard.Show();
}
}
}
private void TextBoxPasswort_Enter(object sender, EventArgs e)
{
this.textBoxPasswort.SelectAll();
this.textBoxPasswort.Focus();
if (Program.istTouch && Screen.PrimaryScreen.WorkingArea.Width > 0 && Screen.PrimaryScreen.WorkingArea.Width < 2000)
{
if (keyboard == null || keyboard.IsDisposed)
{
keyboard = new QwertzKeyboard(textBoxPasswort, "isNumeric");
keyboard.Show();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(textBoxPasswort, "isNumeric");
keyboard.Show();
}
}
}
private void TextBox_Leave(object sender, EventArgs e)
{
//this.buttonAnmelden.Focus();
}
private void TextBoxPwdWh_Enter(object sender, EventArgs e)
private void TextBoxes_Enter(object sender, EventArgs e)
{
this.textBoxPwdWh.SelectAll();
if (Program.istTouch && Screen.PrimaryScreen.WorkingArea.Width > 0 && Screen.PrimaryScreen.WorkingArea.Width < 2000)
TextBox tb = (TextBox)sender;
keyboard = Funktionen.OpenVirtualKeyboard(sender);
this.BeginInvoke(new Action(() =>
{
if (keyboard == null || keyboard.IsDisposed)
if (!tb.IsDisposed && tb.CanFocus)
{
keyboard = new QwertzKeyboard(textBoxPwdWh, "isNumeric");
keyboard.Show();
tb.Focus();
tb.SelectAll();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(textBoxPwdWh, "isNumeric");
keyboard.Show();
}
}
}));
}
}
}

View File

@ -53,11 +53,11 @@ namespace Deckungsbeitrag
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBox1.ForeColor = System.Drawing.Color.White;
this.groupBox1.Location = new System.Drawing.Point(27, 32);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox1.Location = new System.Drawing.Point(24, 26);
this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.groupBox1.Size = new System.Drawing.Size(694, 158);
this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
this.groupBox1.Size = new System.Drawing.Size(617, 120);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Login-Daten";
@ -65,36 +65,37 @@ namespace Deckungsbeitrag
// textBoxPwdWh
//
this.textBoxPwdWh.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxPwdWh.Location = new System.Drawing.Point(278, 169);
this.textBoxPwdWh.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.textBoxPwdWh.Location = new System.Drawing.Point(247, 135);
this.textBoxPwdWh.Margin = new System.Windows.Forms.Padding(4);
this.textBoxPwdWh.Name = "textBoxPwdWh";
this.textBoxPwdWh.Size = new System.Drawing.Size(394, 26);
this.textBoxPwdWh.Size = new System.Drawing.Size(351, 30);
this.textBoxPwdWh.TabIndex = 5;
this.textBoxPwdWh.UseSystemPasswordChar = true;
this.textBoxPwdWh.Enter += new System.EventHandler(this.TextBoxPwdWh_Enter);
this.textBoxPwdWh.Enter += new System.EventHandler(this.TextBoxes_Enter);
//
// labelPwdWh
//
this.labelPwdWh.AutoSize = true;
this.labelPwdWh.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelPwdWh.ForeColor = System.Drawing.Color.White;
this.labelPwdWh.Location = new System.Drawing.Point(39, 174);
this.labelPwdWh.Location = new System.Drawing.Point(35, 139);
this.labelPwdWh.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.labelPwdWh.Name = "labelPwdWh";
this.labelPwdWh.Size = new System.Drawing.Size(153, 20);
this.labelPwdWh.Size = new System.Drawing.Size(187, 25);
this.labelPwdWh.TabIndex = 4;
this.labelPwdWh.Text = "Passwort bestätigen";
//
// textBoxPasswort
//
this.textBoxPasswort.AccessibleName = "isNumeric";
this.textBoxPasswort.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxPasswort.Location = new System.Drawing.Point(278, 95);
this.textBoxPasswort.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.textBoxPasswort.Location = new System.Drawing.Point(247, 76);
this.textBoxPasswort.Margin = new System.Windows.Forms.Padding(4);
this.textBoxPasswort.Name = "textBoxPasswort";
this.textBoxPasswort.Size = new System.Drawing.Size(394, 26);
this.textBoxPasswort.Size = new System.Drawing.Size(351, 30);
this.textBoxPasswort.TabIndex = 3;
this.textBoxPasswort.UseSystemPasswordChar = true;
this.textBoxPasswort.Enter += new System.EventHandler(this.TextBoxPasswort_Enter);
this.textBoxPasswort.Enter += new System.EventHandler(this.TextBoxes_Enter);
this.textBoxPasswort.Leave += new System.EventHandler(this.TextBox_Leave);
//
// label2
@ -102,22 +103,23 @@ namespace Deckungsbeitrag
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.White;
this.label2.Location = new System.Drawing.Point(158, 100);
this.label2.Location = new System.Drawing.Point(140, 80);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(74, 20);
this.label2.Size = new System.Drawing.Size(92, 25);
this.label2.TabIndex = 2;
this.label2.Text = "Passwort";
//
// textBoxBenutzer
//
this.textBoxBenutzer.AccessibleName = "isAlpha";
this.textBoxBenutzer.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.textBoxBenutzer.Location = new System.Drawing.Point(278, 46);
this.textBoxBenutzer.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.textBoxBenutzer.Location = new System.Drawing.Point(247, 37);
this.textBoxBenutzer.Margin = new System.Windows.Forms.Padding(4);
this.textBoxBenutzer.Name = "textBoxBenutzer";
this.textBoxBenutzer.Size = new System.Drawing.Size(394, 26);
this.textBoxBenutzer.Size = new System.Drawing.Size(351, 30);
this.textBoxBenutzer.TabIndex = 1;
this.textBoxBenutzer.Enter += new System.EventHandler(this.TextBoxBenutzer_Enter);
this.textBoxBenutzer.Enter += new System.EventHandler(this.TextBoxes_Enter);
this.textBoxBenutzer.Leave += new System.EventHandler(this.TextBoxBenutzer_Leave);
//
// label1
@ -125,10 +127,10 @@ namespace Deckungsbeitrag
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(158, 51);
this.label1.Location = new System.Drawing.Point(140, 41);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(74, 20);
this.label1.Size = new System.Drawing.Size(90, 25);
this.label1.TabIndex = 0;
this.label1.Text = "Benutzer";
//
@ -141,11 +143,11 @@ namespace Deckungsbeitrag
this.buttonAnmelden.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAnmelden.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonAnmelden.ForeColor = System.Drawing.Color.White;
this.buttonAnmelden.Location = new System.Drawing.Point(495, 216);
this.buttonAnmelden.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.buttonAnmelden.Location = new System.Drawing.Point(440, 170);
this.buttonAnmelden.Margin = new System.Windows.Forms.Padding(4);
this.buttonAnmelden.Name = "buttonAnmelden";
this.buttonAnmelden.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.buttonAnmelden.Size = new System.Drawing.Size(225, 62);
this.buttonAnmelden.Size = new System.Drawing.Size(200, 50);
this.buttonAnmelden.TabIndex = 1;
this.buttonAnmelden.Text = "Anmelden";
this.buttonAnmelden.UseVisualStyleBackColor = false;
@ -161,10 +163,10 @@ namespace Deckungsbeitrag
this.buttonAbbrechen.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonAbbrechen.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonAbbrechen.ForeColor = System.Drawing.Color.White;
this.buttonAbbrechen.Location = new System.Drawing.Point(261, 216);
this.buttonAbbrechen.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.buttonAbbrechen.Location = new System.Drawing.Point(232, 170);
this.buttonAbbrechen.Margin = new System.Windows.Forms.Padding(4);
this.buttonAbbrechen.Name = "buttonAbbrechen";
this.buttonAbbrechen.Size = new System.Drawing.Size(225, 62);
this.buttonAbbrechen.Size = new System.Drawing.Size(200, 50);
this.buttonAbbrechen.TabIndex = 2;
this.buttonAbbrechen.Text = "Abbrechen";
this.buttonAbbrechen.UseVisualStyleBackColor = false;
@ -178,10 +180,10 @@ namespace Deckungsbeitrag
this.buttonRegistrieren.FlatAppearance.BorderSize = 0;
this.buttonRegistrieren.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonRegistrieren.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.buttonRegistrieren.Location = new System.Drawing.Point(27, 218);
this.buttonRegistrieren.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.buttonRegistrieren.Location = new System.Drawing.Point(24, 171);
this.buttonRegistrieren.Margin = new System.Windows.Forms.Padding(4);
this.buttonRegistrieren.Name = "buttonRegistrieren";
this.buttonRegistrieren.Size = new System.Drawing.Size(225, 62);
this.buttonRegistrieren.Size = new System.Drawing.Size(200, 50);
this.buttonRegistrieren.TabIndex = 3;
this.buttonRegistrieren.Text = "Registrieren";
this.buttonRegistrieren.UseVisualStyleBackColor = false;
@ -190,11 +192,11 @@ namespace Deckungsbeitrag
// FormLogin
//
this.AcceptButton = this.buttonAnmelden;
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(1)))), ((int)(((byte)(53)))), ((int)(((byte)(101)))));
this.CancelButton = this.buttonAbbrechen;
this.ClientSize = new System.Drawing.Size(738, 298);
this.ClientSize = new System.Drawing.Size(656, 235);
this.Controls.Add(this.buttonRegistrieren);
this.Controls.Add(this.buttonAbbrechen);
this.Controls.Add(this.buttonAnmelden);
@ -202,7 +204,7 @@ namespace Deckungsbeitrag
this.ForeColor = System.Drawing.SystemColors.ControlText;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.Margin = new System.Windows.Forms.Padding(4);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormLogin";

View File

@ -37,14 +37,14 @@
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 28.2F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(53, 26);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(799, 54);
this.label1.Size = new System.Drawing.Size(799, 117);
this.label1.TabIndex = 0;
this.label1.Text = "Welche Waschstrasse bedienst du?";
this.label1.Text = "Auf welcher Waschstraße wird der Kunde bearbeitet?";
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// radioButton1
//
@ -55,7 +55,7 @@
this.radioButton1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
this.radioButton1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButton1.Font = new System.Drawing.Font("Microsoft Sans Serif", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.radioButton1.Location = new System.Drawing.Point(185, 146);
this.radioButton1.Location = new System.Drawing.Point(185, 171);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(200, 200);
this.radioButton1.TabIndex = 1;
@ -63,7 +63,7 @@
this.radioButton1.Text = "1";
this.radioButton1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButton1.UseVisualStyleBackColor = false;
this.radioButton1.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
this.radioButton1.CheckedChanged += new System.EventHandler(this.RadioButton2_CheckedChanged);
//
// radioButton2
//
@ -74,7 +74,7 @@
this.radioButton2.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128)))));
this.radioButton2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.radioButton2.Font = new System.Drawing.Font("Microsoft Sans Serif", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.radioButton2.Location = new System.Drawing.Point(506, 146);
this.radioButton2.Location = new System.Drawing.Point(506, 171);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(200, 200);
this.radioButton2.TabIndex = 2;
@ -82,7 +82,7 @@
this.radioButton2.Text = "2";
this.radioButton2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.radioButton2.UseVisualStyleBackColor = false;
this.radioButton2.CheckedChanged += new System.EventHandler(this.radioButton2_CheckedChanged);
this.radioButton2.CheckedChanged += new System.EventHandler(this.RadioButton2_CheckedChanged);
//
// textBox1
//
@ -91,6 +91,7 @@
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(154, 34);
this.textBox1.TabIndex = 0;
this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TextBox1_KeyDown);
//
// label2
//
@ -118,6 +119,7 @@
this.Name = "FormMSAuswahl";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.Load += new System.EventHandler(this.FormMSAuswahl_Load);
this.ResumeLayout(false);
this.PerformLayout();

View File

@ -1,4 +1,5 @@
using System;
using DatenDB;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@ -7,37 +8,56 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Media.TextFormatting;
namespace Deckungsbeitrag
{
public partial class FormMSAuswahl : Form
{
public int s;
public Maschine maschine;
public int? id;
public FormMSAuswahl()
{
InitializeComponent();
}
private void FormMSAuswahl_Load(object sender, EventArgs e)
{
foreach (RadioButton btn in this.Controls.OfType<RadioButton>())
{
if (btn.Text == "1") btn.Tag = Maschine.GetMaschine(null, "Waschstrasse 1");
if (btn.Text == "2") btn.Tag = Maschine.GetMaschine(null, "Waschstrasse 2");
}
this.textBox1.Location = new Point(this.label2.Right + 10, textBox1.Location.Y);
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
private void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb.Checked)
{
rb.BackColor = Color.Green;
s = int.Parse(rb.Text);
if (MessageBox.Show($"Bist du sicher, dass du Waschstraße {s} bedienst?", "Frage", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
rb.BackColor = SystemColors.ButtonFace;
rb.Checked = false;
}
maschine = (Maschine)rb.Tag;
id = maschine.MaschineID;
this.DialogResult = DialogResult.OK;
this.Close();
}
}
private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
TextBox txtScan = (TextBox)sender;
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true;
if (int.TryParse(txtScan.Text.Substring(4).Trim(), out int i)) id = i;
this.DialogResult |= DialogResult.OK;
this.Close();
}
}
}
}

View File

@ -56,6 +56,7 @@ namespace Deckungsbeitrag
private readonly Screen screen = Screen.PrimaryScreen;
private Kunde kunde;
private Tour tour;
#endregion
public FormMain()
{
@ -114,6 +115,8 @@ namespace Deckungsbeitrag
var data = ShowTourenplan();
if (data.datum == null) { Application.Exit(); return; }
tour = Tour.GetTour(saison.SaisonId, data.tour);
tour.BenutzerID = this.benutzer.BenutzerID;
tour.Save();
}
}
}
@ -444,10 +447,12 @@ namespace Deckungsbeitrag
FehlmengeChart chart = new FehlmengeChart();
chart.Show();
}
private void ButtonTourenliste_Click(object sender, EventArgs e)
private async void ButtonTourenliste_Click(object sender, EventArgs e)
{
Tour tour = null;
Benutzer fahrer = this.benutzer;
Benutzer fahrer = null;
List<Auftrag> auftragliste = null;
DateTime? lieferdatum = null;
Saison saison = Saison.GetAktivSaison();
FormShowUserControl showUserControl = new FormShowUserControl("Tourenplan", this.benutzer);
@ -455,11 +460,18 @@ namespace Deckungsbeitrag
{
var lieferdaten = showUserControl.lieferDaten;
tour = Tour.GetTour(saison.SaisonId, lieferdaten.text);
lieferdatum = lieferdaten.datum.Date;
List<Auftrag> auftragliste = Auftrag.GetTourenListe(tour, lieferdaten.datum.Date);
if (auftragliste.Count > 0) Funktionen.TourenListe_Drucken(auftragliste, tour, this, this.benutzer, fahrer);
auftragliste = Auftrag.GetTourenListe(tour, (DateTime)lieferdatum);
}
if (auftragliste == null || auftragliste.Count == 0) return;
if (this.benutzer.Rolle != BenutzerRolle.Fahrer) fahrer = Benutzer.GetBenutzer(null, tour.BenutzerID);
if (fahrer == null) return;
List<TrelloCard> cards = await Funktionen.GetCardsFromTrello((DateTime)lieferdatum, fahrer.Tour);
Funktionen.TourenListe_Drucken(auftragliste, tour, this, this.benutzer, fahrer, cards);
//Benutzer fahrer = new Benutzer();
@ -711,10 +723,32 @@ namespace Deckungsbeitrag
return "❌"; // Status 0 ✓
}
};
var colSpannleintuch = new OLVColumn("Spannleintuch", "Spannleintuch")
{
Text = "SPLT",
DisplayIndex = 9,
TextAlign = HorizontalAlignment.Center,
CheckBoxes = false,
TriStateCheckBoxes = false,
Width = 50,
AspectGetter = row =>
{
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.SpannleintuchBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.SpannleintuchBeendet) != 0;
if (beendet) return "✅"; // Status 1 ✓
if (begonnen) return "⭕"; // Status 2 ✓
return "❌"; // Status 0 ✓
}
};
this.objectListViewAuftrag.AllColumns.Add(colFrottee);
this.objectListViewAuftrag.AllColumns.Add(colKleinteile);
this.objectListViewAuftrag.AllColumns.Add(colGrosseTeile);
this.objectListViewAuftrag.AllColumns.Add(colSpannleintuch);
foreach (OLVColumn col in this.objectListViewAuftrag.AllColumns)
{
@ -1394,13 +1428,48 @@ namespace Deckungsbeitrag
private async void buttonTest_Click(object sender, EventArgs e)
{
FormAuftragAuswahl auswahl = new FormAuftragAuswahl();
if (auswahl.ShowDialog() == DialogResult.OK)
{
Kunde kunde = auswahl.kunde;
}
FormGeschaeftMain geschaeft = new FormGeschaeftMain();
geschaeft.Show();
//FormAuftragAuswahl auswahl = new FormAuftragAuswahl();
//if (auswahl.ShowDialog() == DialogResult.OK)
//{
// Kunde kunde = auswahl.kunde;
//}
//if (TrelloConfig.HasCredentials())
//{
// var apiKey = TrelloConfig.GetApiKey();
// var token = TrelloConfig.GetToken();
// TrelloCardClient _trelloClient = new TrelloCardClient(apiKey, token);
// var targetDate = new DateTime(2026, 6, 10);
// var listId = "6a1fcdc9a1995f42c537ae10";
// try
// {
// var cards = await _trelloClient.GetCardsByDueDateAsync(listId, targetDate);
// // In DataGridView eintragen
// //dataGridView1.Rows.Clear();
// //foreach (var card in cards)
// //{
// // dataGridView1.Rows.Add(
// // card.Name,
// // card.Id,
// // card.DueDate?.ToString("dd.MM.yyyy") ?? "N/A",
// // card.ShortUrl
// // );
// //}
// MessageBox.Show($"{cards.Count} Karten gefunden mit Fälligkeitsdatum {targetDate}");
// }
// catch (Exception ex)
// {
// MessageBox.Show($"fehler: {ex.Message}", "API-Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
// }
// _trelloClient.Dispose();
//}
// TRELLO TEST
//if (TrelloConfig.HasCredentials())

View File

@ -40,7 +40,7 @@ namespace DatenDB
}
}
internal static int? GetArtikelID(int artNr)
public static int? GetArtikelID(int artNr)
{
DatenbankConnection.GetConnection().Open();
int? result = 0;
@ -53,7 +53,7 @@ namespace DatenDB
DatenbankConnection.GetConnection().Close();
return result;
}
internal static string GetShort(int? artikelID, string artname)
public static string GetShort(int? artikelID, string artname)
{
DatenbankConnection.GetConnection().Open();
string result = null;
@ -86,7 +86,7 @@ namespace DatenDB
DatenbankConnection.GetConnection().Close();
return result;
}
internal static List<Artikel> GetRegArtikelList()
public static List<Artikel> GetRegArtikelList()
{
DatenbankConnection.GetConnection().Open();
List<Artikel> resultList = new List<Artikel>();

View File

@ -68,6 +68,10 @@ namespace DatenDB
// Bit 4-5: Großteile (Status)
GrossteileBegonnen = 1 << 4, // 16 = begonnen
GrossteileBeendet = 1 << 5, // 32 = beendet
// Bit 6-7: Spannleintuch (Status)
SpannleintuchBegonnen = 1 << 6, // 64 = begonnen
SpannleintuchBeendet = 1 << 7 // 128 = beendet
}
@ -117,7 +121,7 @@ namespace DatenDB
{
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 a.tour_id = {tourID} and liefertag = CURRENT_DATE and status < {(int)AuftragStatus.Ausgeliefert} ORDER BY status DESC";
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 a.tour_id = {tourID} and liefertag = CURRENT_DATE and status = {(int)AuftragStatus.Fertig} ORDER BY status DESC";
using (var reader = await command.ExecuteReaderAsync())
{
@ -380,7 +384,7 @@ namespace DatenDB
this.ContainerClean = reader.IsDBNull(16) ? 0 : reader.GetInt32(16);
this.Typ = reader.IsDBNull(17) ? AuftragTyp.Standart : (AuftragTyp)reader.GetInt32(17);
this.AufgabeErledigt = !reader.IsDBNull(18) && reader.GetBoolean(18);
this.Abteilungen = reader.IsDBNull(19) ? AbteilungsStatus.Keine : (AbteilungsStatus)reader.GetInt16(19);
this.Abteilungen = reader.IsDBNull(19) ? AbteilungsStatus.Keine : (AbteilungsStatus)reader.GetInt32(19);
this.Rhythmus = reader.IsDBNull(20) ? RegRhythmen.Unbekannt : (RegRhythmen)reader.GetInt32(20);
this.Priority = (Priority)reader.GetInt32(21);
@ -415,7 +419,7 @@ namespace DatenDB
this.ContainerClean = reader.IsDBNull(16) ? 0 : reader.GetInt32(16);
this.Typ = reader.IsDBNull(17) ? AuftragTyp.Standart : (AuftragTyp)reader.GetInt32(17);
this.AufgabeErledigt = !reader.IsDBNull(18) && reader.GetBoolean(18);
this.Abteilungen = reader.IsDBNull(19) ? AbteilungsStatus.Keine : (AbteilungsStatus)reader.GetInt16(19);
this.Abteilungen = reader.IsDBNull(19) ? AbteilungsStatus.Keine : (AbteilungsStatus)reader.GetInt32(19);
this.Rhythmus = reader.IsDBNull(20) ? RegRhythmen.Unbekannt : (RegRhythmen)reader.GetInt32(20);
this.Priority = (Priority)reader.GetInt32(21);
@ -467,7 +471,7 @@ namespace DatenDB
//if (!FindAuftragStatus(this.AuftragID, Status))
//Jede Statusänderung wird gespeichert. Klarer Verlauf ersichtlich.
SpeicherStatus(); // Automatisches Speichern
//SpeicherStatus(); // Automatisches Speichern
}
}
@ -689,7 +693,7 @@ namespace DatenDB
command.Parameters.AddWithValue("p12", (int)this.Status);
command.Parameters.AddWithValue("p13", this.TourID ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p14", this.Container);
command.Parameters.AddWithValue("p15", this.MaschineID ?? 0);
command.Parameters.AddWithValue("p15", this.MaschineID ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p16", this.ContainerClean);
command.Parameters.AddWithValue("p17", (int)this.Typ);
command.Parameters.AddWithValue("p18", this.AufgabeErledigt);

View File

@ -111,13 +111,13 @@ namespace DatenDB
public int? ArtikelID { get; set; }
[OLVColumn(DisplayIndex = 1)]
[OLVColumn(DisplayIndex = 1, IsEditable = false)]
public string ArtikelName { get; set; }
[OLVColumn(DisplayIndex = 2, TextAlign = HorizontalAlignment.Center)]
[OLVColumn("Anzahl", DisplayIndex = 3, TextAlign = HorizontalAlignment.Center)]
public int Anzahl { get; set; }
[OLVColumn("Erledigt", DisplayIndex = 0, CheckBoxes = true)]
public bool Erledigt { get; set; }
[OLVIgnore]
[OLVColumn("Offen", DisplayIndex = 2, TextAlign = HorizontalAlignment.Center, IsEditable = false)]
public int Gesamt { get; set; }

View File

@ -62,7 +62,7 @@ namespace Deckungsbeitrag.AA_Klassen
var result = new List<AuftragInfo>();
using (var conn = new NpgsqlConnection(_connectionString))
using (var cmd = new NpgsqlCommand($"SELECT audit_id, spalten_name, alter_wert, neuer_wert, changed_by, changed_at FROM kundenverwaltung.vw_auftrag_audit WHERE auftrag_id = {auftrag.AuftragID} ORDER BY changed_at DESC", conn))
using (var cmd = new NpgsqlCommand($"SELECT audit_id, spalten_name, alter_wert, neuer_wert, changed_by, changed_at FROM kundenverwaltung.vw_auftrag_audit WHERE auftrag_id = {auftrag.AuftragID} ORDER BY changed_at ASC", conn))
{
conn.Open();
using (var reader = cmd.ExecuteReader())
@ -73,8 +73,8 @@ namespace Deckungsbeitrag.AA_Klassen
{
ChangeID = reader.GetInt32(0),
Bezeichnung = reader.GetString(1),
AlterWert = reader.GetString(2),
NeuerWert = reader.GetString(3),
AlterWert = reader.IsDBNull(2) ? string.Empty : reader.GetString(2),
NeuerWert = reader.IsDBNull(3) ? string.Empty : reader.GetString(3),
Client = reader.GetString(4),
Datum = reader.GetDateTime(5),
});
@ -90,6 +90,31 @@ namespace Deckungsbeitrag.AA_Klassen
public string AlterWert { get; set; }
public string NeuerWert { get; set; }
public string Client { get; set; }
public AbteilungsStatus AbtStatus
{
get
{
// Berechne die Bit-Differenz
if (Bezeichnung == "abteilungen_status")
{
int alt = int.Parse(AlterWert);
int neu = int.Parse(NeuerWert);
int geänderteStatus = alt ^ neu; // XOR
foreach (var value in Enum.GetValues(typeof(AbteilungsStatus)))
{
int bitValue = (int)value;
if (bitValue == 0) continue;
if ((geänderteStatus & bitValue) != 0)
{
return (AbteilungsStatus)value;
}
}
}
return AbteilungsStatus.Keine;
}
}
public AuftragStatus? StatusAlt
{
get
@ -206,6 +231,8 @@ namespace Deckungsbeitrag.AA_Klassen
// Frottee-Filter
if (kategorie.HasValue)
{
//TODO: ArtikelKategorie wechseln?
//if (kategorie.Value == ArtikelKategorie.Spannleintuch) kategorie = ArtikelKategorie.Frottee;
if (undFertig.HasValue && undFertig.Value) conditions.Add($"{kategorie.ToString().ToLower()}_status < 3");
else conditions.Add($"{kategorie.ToString().ToLower()}_status < 2");
}
@ -318,7 +345,8 @@ namespace Deckungsbeitrag.AA_Klassen
Tour = SafeString(reader, "tour"),
FrotteeStatus = SafeInt(reader, "frottee_status"),
KleinteileStatus = SafeInt(reader, "kleinteile_status"),
GrossteileStatus = SafeInt(reader, "grossteile_status")
GrossteileStatus = SafeInt(reader, "grossteile_status"),
SpannleintuchStatus = SafeInt(reader, "spannleintuch_status")
});
}
}
@ -368,6 +396,7 @@ namespace Deckungsbeitrag.AA_Klassen
[OLVIgnore]public int FrotteeStatus { get; set; }
[OLVIgnore]public int KleinteileStatus { get; set; }
[OLVIgnore]public int GrossteileStatus { get; set; }
[OLVIgnore]public int SpannleintuchStatus { get; set; }
// **Ein zentrales Dictionary für alle AbteilungStatus-Anzeigen**
private static readonly Dictionary<int, string> StatusAnzeigen = new Dictionary<int, string>
@ -391,6 +420,11 @@ namespace Deckungsbeitrag.AA_Klassen
{
get { return StatusAnzeigen.TryGetValue(GrossteileStatus, out string text) ? text : "?"; }
}
[OLVColumn("SL", DisplayIndex = 63, TextAlign = HorizontalAlignment.Center, IsEditable = false)]public string SpannleintuchAnzeige
{
get { return StatusAnzeigen.TryGetValue(SpannleintuchStatus, out string text) ? text : "?"; }
}
//[OLVColumn("Etikett", DisplayIndex = 80, TextAlign = HorizontalAlignment.Center)]public string DruckenAnzeige
//{
// get

View File

@ -20,6 +20,7 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using TrelloIntegration;
using VirtualKeyboard;
using ZXing;
using ZXing.QrCode.Internal;
@ -51,13 +52,81 @@ namespace Deckungsbeitrag
private static bool printed = false;
private static bool inPreview = false;
private static int KundeID;
private QwertzKeyboard keyboard;
private static readonly UserSettingsManager _settings = new UserSettingsManager();
private static List<TrelloCard> _cards;
private static QwertzKeyboard keyboard;
public Funktionen()
{
}
/// <summary>
/// Daten der benötigten Trellokarten werden geholt und in eine Liste eingefügt und retour gegeben.
/// </summary>
/// <param name="dt">Liefertag</param>
/// <param name="lId">Fahrerliste in Trello (Tour in DB)</param>
/// <returns>Liste der Daten der entsprechenden Trellokarten.</returns>
public async static Task<List<TrelloCard>> GetCardsFromTrello(DateTime dt, string lId)
{
List<TrelloCard> cards = null;
if (TrelloConfig.HasCredentials())
{
var apiKey = TrelloConfig.GetApiKey();
var token = TrelloConfig.GetToken();
TrelloCardClient _trelloClient = new TrelloCardClient(apiKey, token);
var targetDate = dt;
var listId = string.IsNullOrWhiteSpace(lId) ? "6a1fcdc9a1995f42c537ae10" : lId;
try
{
cards = await _trelloClient.GetCardsByDueDateAsync(listId, targetDate);
}
catch (Exception ex)
{
MessageBox.Show($"fehler: {ex.Message}", "API-Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
_trelloClient.Dispose();
}
return cards;
}
/// <summary>
/// Öffnet die virtuelle Tastatur für die gewünschte TextBox mit AccessibleName.
/// </summary>
/// <param name="sender">TextBox mit AccessibleName (isAlpha, isNumeric, isClac)</param>
/// <returns>Virtuelle Tastatur</returns>
public static QwertzKeyboard OpenVirtualKeyboard(object sender)
{
TextBox tb = sender as TextBox;
// Kontrolle ob das Gerät Touch hat. Falls analoge Tastatur verwendet wird, wird durch den PrimaryScreen unterschieden.
if (Program.istTouch && Screen.PrimaryScreen.WorkingArea.Width > 0 && Screen.PrimaryScreen.WorkingArea.Width < 2000)
{
if (keyboard == null || keyboard.IsDisposed)
{
keyboard = new QwertzKeyboard(tb, tb.AccessibleName);
keyboard.Show();
}
else
{
keyboard.Close();
keyboard = new QwertzKeyboard(tb, tb.AccessibleName);
keyboard.Show();
}
}
return keyboard;
}
public static HeaderFormatStyle GetHeader()
{
HeaderFormatStyle headerFormat = new HeaderFormatStyle();
@ -804,13 +873,13 @@ namespace Deckungsbeitrag
}
public static void SWS_Drucken(Auftrag auftrag, Kunde adresse, object sender)
{
_settings.Load();
if (auftrag != null) _auftrag = auftrag;
if (adresse != null) _adresse = adresse;
PrintDialog dialog = new PrintDialog();
foreach (string printer in PrinterSettings.InstalledPrinters) if (printer.Contains(Properties.Settings.Default.SWS_Drucker)) dialog.PrinterSettings.PrinterName = printer;
dialog.PrinterSettings.Copies = (short)Settings.Default.SWS_Copies;
foreach (string printer in PrinterSettings.InstalledPrinters) if (printer.Contains(_settings.DruckerSWS)) dialog.PrinterSettings.PrinterName = printer;
dialog.PrinterSettings.Copies = (short)_settings.CopiesSWS;
if (dialog.ShowDialog() == DialogResult.OK)
{
@ -874,6 +943,7 @@ namespace Deckungsbeitrag
}
public static DialogResult Etikett_Drucken(Auftrag auftrag, bool nocont)
{
_settings.Load();
_nocont = nocont;
_auftrag = auftrag;
int x = auftrag.ContainerClean;
@ -881,14 +951,17 @@ namespace Deckungsbeitrag
//PrintPreviewDialog preview = new PrintPreviewDialog();
PrintDocument printDocument = new PrintDocument();
foreach (string printer in PrinterSettings.InstalledPrinters) if (printer.Contains(Properties.Settings.Default.Etikett_Drucker)) dialog.PrinterSettings.PrinterName = printer;
foreach (string printer in PrinterSettings.InstalledPrinters)
{
if (printer.Contains(_settings.DruckerEtikett)) dialog.PrinterSettings.PrinterName = printer;
printDocument.DefaultPageSettings.PaperSize = new PaperSize("Etikett-Custom", 29, 90);
}
dialog.PrinterSettings.Copies = (short)auftrag.ContainerClean;
if (dialog.ShowDialog() == DialogResult.OK)
{
printDocument.PrinterSettings = dialog.PrinterSettings;
printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
if (!printDocument.PrinterSettings.PrinterName.Contains(Properties.Settings.Default.Etikett_Drucker)) printDocument.DefaultPageSettings.PaperSize = new PaperSize("Etikett-Custom", 29, 90);
//preview.StartPosition = FormStartPosition.CenterScreen;
//preview.WindowState = FormWindowState.Normal;
//preview.Document = printDocument;
@ -898,6 +971,9 @@ namespace Deckungsbeitrag
dialog.Document.DocumentName = "Etikett";
printDocument.Print();
_settings.DruckerEtikett = dialog.PrinterSettings.PrinterName;
_settings.Save();
return DialogResult.OK;
}
@ -905,20 +981,27 @@ namespace Deckungsbeitrag
}
public static Image TourenListe_Entwurf(List<Auftrag> auftragliste, Benutzer fahrer, int bottom, Tour tour)
{
Bitmap bitmap = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(bitmap);
DateTime liefertag = auftragliste[0].Liefertag;
int ezl = 50; int lastline = 0;
float fontsize = 15; float fontsize2 = 30; float fontsize3 = 10;
int bitmapHeight = CalculateBitmapHeight(auftragliste);
Bitmap bitmap = new Bitmap(790, bitmapHeight);
Graphics g = Graphics.FromImage(bitmap);
Point adressblock = new Point(ezl, 50);
Point tabelle = new Point(ezl, 330);
Point trello = new Point(ezl, 200);
SizeF textSize2 = g.MeasureString("Salzburg, am 26.08.1984", new Font("Arial", fontsize, FontStyle.Regular));
SizeF textSize3 = g.MeasureString("MO", new Font("Arial", fontsize2, FontStyle.Regular));
SizeF textSize4 = g.MeasureString("MO", new Font("Arial", fontsize3, FontStyle.Regular));
SizeF textSizePos = g.MeasureString("Container Gesamt: ", new Font("Arial", fontsize, FontStyle.Regular));
SizeF textSizePos2 = g.MeasureString("Container: ", new Font("Arial", fontsize, FontStyle.Regular));
SizeF datumSize = g.MeasureString("00.00.0000 - 00:00", new Font("Arial", 10, FontStyle.Regular));
int auftragHeight = 50;
int bitmapHeight = adressblock.Y + tabelle.Y + (auftragHeight * auftragliste.Count); //CalculateBitmapHeight(auftragliste);
int totalHeight = 1119 * Math.Max(1, (int)Math.Ceiling((double)bitmapHeight / 1119));
bitmap = new Bitmap(790, totalHeight);
g = Graphics.FromImage(bitmap);
g.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height);
@ -930,16 +1013,27 @@ namespace Deckungsbeitrag
//TOUR START UND ENDE ZEILE 3
g.DrawString($"Tour Start um:", new Font("Arial", fontsize, FontStyle.Regular), Brushes.Black, tabelle.X, lastline = lastline + (int)textSize3.Height + 40);
g.DrawString($"Tour Ende um:", new Font("Arial", fontsize, FontStyle.Regular), Brushes.Black, (bitmap.Width / 2), lastline);
//TOURKOPF ENDLINIE ALLE ÄNDERUNGEN AM TOURKOPF ^^ DARÜBER EINFÜGEN
g.DrawLine(new Pen(Brushes.Black), new Point(tabelle.X, tabelle.Y + 20), new Point(bitmap.Width - 50, lastline = tabelle.Y + 20));
g.DrawLine(new Pen(Brushes.Black), new Point(trello.X, trello.Y + 20), new Point(bitmap.Width - 50, lastline = trello.Y + 20));
foreach (TrelloCard card in _cards)
{
g.DrawString("Zusätzliche Infos:", new Font("Arial", fontsize3, FontStyle.Bold), Brushes.Black, ezl, lastline);
lastline = lastline + (int)textSize4.Height;
g.DrawString($"{card.DueDate:d} {card.Name}", new Font("Arial", fontsize3, FontStyle.Regular), Brushes.Black, ezl, lastline = lastline + 5);
lastline = lastline + (int)textSize4.Height;
}
//AUFTRAG STARTLINIE ALLE ÄNDERUNGEN AN TRELLOKARTEN ^^ DARÜBER EINFÜGEN
g.DrawLine(new Pen(Brushes.Black), new Point(tabelle.X, tabelle.Y + 20), new Point(bitmap.Width - 50, lastline = lastline + 20));
int idx1 = 0;
int gesCont = 0;
int kndanzahl = 0;
int kndnichtfertig = 0;
bool seitenwechsel = false;
foreach (Auftrag auftrag in auftragliste)
{
Kunde knd = Kunde.GetKunde(string.Empty, auftrag.KundeID, string.Empty);
@ -960,16 +1054,16 @@ namespace Deckungsbeitrag
else style = FontStyle.Regular;
++idx1;
if (kndanzahl == 15)
{
if (kndanzahl == 34)
{
if (kndanzahl == 54) lastline += 140;
else lastline += 140;
}
else lastline += 140;
}
//if (kndanzahl == 15)
//{
// if (kndanzahl == 34)
// {
// if (kndanzahl == 54) lastline += 140;
// else lastline += 140;
// }
// else lastline += 140;
//}
if (lastline > 1000 && !seitenwechsel) { lastline += 140; seitenwechsel = true; }
//ZEILE 1
g.DrawString($"{auftrag.Status.ToString()}", new Font("Arial", fontsize, style), Brushes.Black, tabelle.X, lastline + 5);
g.DrawString($"{knd.KundeNummer} {kndName}", new Font("Arial", fontsize, style), Brushes.Black, tabelle.X + 130, lastline = lastline + 5);
@ -1009,13 +1103,14 @@ namespace Deckungsbeitrag
//TODO: Reg.Aufträge einbauen. Besonderheit: Die Artikel sollen ebenfalls erscheinen.
//TODO: Zuweisung zu Fahrer muss geklärt werden.
}
public static void TourenListe_Drucken(List<Auftrag> auftragliste, Tour tour, object sender, Benutzer benutzer, Benutzer fahrer)
public static void TourenListe_Drucken(List<Auftrag> auftragliste, Tour tour, object sender, Benutzer benutzer, Benutzer fahrer, List<TrelloCard> cards)
{
if (auftragliste != null) _auftragliste = auftragliste;
if (fahrer != null) _fahrer = fahrer;
if (benutzer != null) _benutzer = benutzer;
if (tour != null) _tour = tour;
if (cards != null) _cards = cards;
string dateiName = $"{_auftragliste[0].Liefertag}_{_tour.Bezeichnung}_{_fahrer.BenutzerName}";
currentPage = 0; // WICHTIG: reset vor jedem Druck
@ -1029,7 +1124,7 @@ namespace Deckungsbeitrag
try
{
foreach (string printer in PrinterSettings.InstalledPrinters) if (printer.Contains(Properties.Settings.Default.SWS_Drucker)) dialog.PrinterSettings.PrinterName = printer;
foreach (string printer in PrinterSettings.InstalledPrinters) if (printer.Contains(_settings.DruckerTourenListe)) dialog.PrinterSettings.PrinterName = printer;
dialog.PrinterSettings.Copies = 1;
if (dialog.ShowDialog() == DialogResult.OK)
@ -1086,7 +1181,7 @@ namespace Deckungsbeitrag
}
}
}
public static Image SonderEtikett_Entwurf(int KundeID, object dictionary)
public static Image SonderEtikett_Entwurf(int KundeID, object dictionary, Auftrag auftrag)
{
Kunde kunde = Kunde.GetKunde(string.Empty, KundeID, string.Empty);
@ -1110,7 +1205,9 @@ namespace Deckungsbeitrag
g.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height);
//Etikett-Text
g.DrawString($"{kunde.KundeNummer}", font2, Brushes.Black, startpoint);
g.DrawString($"{auftrag.Typ.ToString()}", font2, Brushes.Black, startpoint);
nextposition += (int)height_font2;
g.DrawString($"{kunde.KundeNummer}", font2, Brushes.Black, einzug, nextposition);
nextposition += (int)height_font2;
int length = kunde.Suchtext.Length < 10 ? kunde.Suchtext.Length : 10;
g.DrawString($"{kunde.Suchtext.Substring(0, length)}", font2, Brushes.Black, einzug, nextposition);
@ -1172,9 +1269,11 @@ namespace Deckungsbeitrag
Image img = bitmap;
return img;
}
public static DialogResult SonderEtikett_Drucken(int kundeID, object dictionary)
public static DialogResult SonderEtikett_Drucken(int kundeID, object dictionary, Auftrag auftrag)
{
_settings.Load();
_dictionary = dictionary;
_auftrag = auftrag;
KundeID = kundeID;
//int x = auftrag.ContainerClean;
@ -1184,9 +1283,10 @@ namespace Deckungsbeitrag
foreach (string printer in PrinterSettings.InstalledPrinters)
{
if (printer.Contains(Properties.Settings.Default.Etikett_Drucker))
if (printer.Contains(_settings.DruckerEtikett))
{
dialog.PrinterSettings.PrinterName = printer;
printDocument.DefaultPageSettings.PaperSize = new PaperSize("Etikett-Custom", 29, 90);
break;
}
}
@ -1197,9 +1297,6 @@ namespace Deckungsbeitrag
printDocument.PrinterSettings = dialog.PrinterSettings;
printDocument.PrintPage -= PrintDocument_PrintPage;
printDocument.PrintPage += PrintDocument_PrintPage;
// Wenn Drucker ist NICHT Etikett_Drucker wird Papiergröße Custom gesetzt
if (!printDocument.PrinterSettings.PrinterName.Contains(Properties.Settings.Default.Etikett_Drucker)) printDocument.DefaultPageSettings.PaperSize = new PaperSize("Etikett-Custom", 29, 90);
dialog.Document = printDocument;
dialog.Document.DocumentName = "Sonder";
@ -1241,7 +1338,7 @@ namespace Deckungsbeitrag
if (sender.ToString().Contains("Sonder"))
{
if (!inPreview) printed = true;
e.Graphics.DrawImage(SonderEtikett_Entwurf(KundeID, _dictionary), e.PageBounds);
e.Graphics.DrawImage(SonderEtikett_Entwurf(KundeID, _dictionary, _auftrag), e.PageBounds);
}
if (sender.ToString().Contains("TourenListe"))
{
@ -1250,7 +1347,8 @@ namespace Deckungsbeitrag
Image img = TourenListe_Entwurf(_auftragliste, _fahrer, bottom, _tour);
if (img == null) return;
pagesToPrint = img.Height / 1119;
pagesToPrint = Math.Max(1, (int)Math.Ceiling((double)img.Height / 1119));
//pagesToPrint = img.Height / 1119;
Rectangle printArea = e.MarginBounds;

View File

@ -9,7 +9,6 @@ using System.Runtime.CompilerServices;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Net.Mime.MediaTypeNames;
namespace DatenDB
@ -99,7 +98,7 @@ namespace DatenDB
return resultList;
}
internal static List<Kunde> GetReklamationListe(string waescheart)
public static List<Kunde> GetReklamationListe(string waescheart)
{
DatenbankConnection.GetConnection().Open();
List<Kunde> resultList = new List<Kunde>();
@ -115,7 +114,7 @@ namespace DatenDB
return resultList;
}
internal static List<Kunde> GetKundenTourenListe(string region)
public static List<Kunde> GetKundenTourenListe(string region)
{
DatenbankConnection.GetConnection().Open();
List<Kunde> resultList = new List<Kunde>();
@ -203,7 +202,7 @@ namespace DatenDB
if (id != null) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {id}";
if (!string.IsNullOrEmpty(name))
{
command.CommandText = $"select {COLUMNS} from {TABLE} where LOWER(name1) = '{name}'";
command.CommandText = $"select {COLUMNS} from {TABLE} where LOWER(name1) ~* '{name}' or LOWER(suchtext) ~* '{name}'";
}
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) kunde = new Kunde(reader);
@ -347,7 +346,7 @@ namespace DatenDB
}
}
internal static List<string> GetRegionDistinct()
public static List<string> GetRegionDistinct()
{
DatenbankConnection.GetConnection().Open();
List<string> resultList = new List<string>();

View File

@ -9,6 +9,7 @@ using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DatenDB
{
public class KundeArtikel
@ -270,9 +271,10 @@ namespace DatenDB
[OLVColumn("ArtNr.", DisplayIndex = 2, TextAlign = HorizontalAlignment.Left)] public int ArtikelNR { get; set; }
[OLVColumn("Artikel", DisplayIndex = 3, TextAlign = HorizontalAlignment.Left)] public string ArtikelName { get; set; }
[OLVColumn("Nachwäsche", DisplayIndex = 4, TextAlign = HorizontalAlignment.Center)] public int Fehlmenge { get; set; }
[OLVColumn("Korrektur", DisplayIndex = 5, TextAlign = HorizontalAlignment.Center)] public int Korrektur { get; set; }
[OLVColumn("Reihung", DisplayIndex = 6, IsVisible = false)] public int Reihung { get; set; }
[OLVColumn("Nachwäsche", DisplayIndex = 4, TextAlign = HorizontalAlignment.Center, IsEditable = false)] public int Fehlmenge { get; set; }
[OLVColumn("Reklamation", DisplayIndex = 5, TextAlign = HorizontalAlignment.Center, IsEditable = false)] public int Reklamation { get; set; }
[OLVColumn("Korrektur", DisplayIndex = 6, TextAlign = HorizontalAlignment.Center)] public int Korrektur { get; set; }
[OLVColumn("Reihung", DisplayIndex = 7, IsVisible = false)] public int Reihung { get; set; }
[OLVIgnore] public int? KundeArtikelID { get; set; }
[OLVIgnore] public int? KundeID { get; set; }
@ -280,7 +282,6 @@ namespace DatenDB
[OLVIgnore] public string StandBearbeitet { get; set; }
[OLVIgnore] public string FehlmengeBearbeitet { get; set; }
[OLVIgnore] public string KorrekturBearbeitet { get; set; }
[OLVIgnore] public int Reklamation { get; set; }
[OLVIgnore] public int? ArtikelID { get; set; }
[OLVIgnore] public string ComboBoxAnzeige => $"{ArtikelNR} {ArtikelName}";
[OLVIgnore] public string ReklamationBearbeitet { get; set; }

View File

@ -6,7 +6,7 @@
</sectionGroup>
</configSections>
<appSettings>
<add key="ConnectionString" value="user id=mskleinteile01;password=8cEPQwvWpk;host=10.10.10.1;port=5432;database=Wirl_DB_17012023;Timeout=15" />
<add key="ConnectionString" value="user id=postgres;password=Ki985941Wi;host=10.10.10.1;port=5432;database=Test_Wirl;Timeout=15" />
<add key="SortimentPfad" value="N:\\TECHNIK\\Software\\Wirl-Verwaltung\\Listen\\Kundensortiment.txt" />
<add key="InventurPfad" value="N:\BÜRO\KUNDEN\INVENTUREN\Verwaltung" />
<add key="BildPfad" value="C:\\Users\\KilianWirl\\OneDrive - gehgassi GmbH\\Wäscherei Wirl\\Programme\\Deckungsbeitrag\\Deckungsbeitrag\\Star.png" />

6
Geschaeft/App.config Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DFA8C4E4-5E87-49F0-9710-89B88066F2F4}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>Geschaeft</RootNamespace>
<AssemblyName>Geschaeft</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FormGeschaeftMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormGeschaeftMain.Designer.cs">
<DependentUpon>FormGeschaeftMain.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FormGeschaeftMain.resx">
<DependentUpon>FormGeschaeftMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\VirtualKeyboard\VirtualKeyboard.csproj">
<Project>{d5d68e54-f738-45e5-82fd-da987f2e0589}</Project>
<Name>VirtualKeyboard</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

27
Geschaeft/Program.cs Normal file
View File

@ -0,0 +1,27 @@
using Geschaeft.Properties;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Geschaeft
{
internal static class Program
{
public static bool istTouch = true; //TouchHelper.IsTouchDeviceReady();
public static Color Wirlblau = Color.FromArgb(1,53,101);
/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormGeschaeftMain());
}
}
}

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("Geschaeft")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Geschaeft")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("dfa8c4e4-5e87-49f0-9710-89b88066f2f4")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion: 4.0.30319.42000
//
// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn
// der Code neu generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Geschaeft.Properties
{
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse
// über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Geschaeft.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Geschaeft.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -198,11 +198,23 @@ namespace Deckungsbeitrag
Application.UseWaitCursor = false;
if (istest) { Application.Run(new FormAufleger()); return; }
//laden.Close();
if (userid.Contains("geschaeft")) Application.Run(new FormGeschaeftMain());
if (userid.StartsWith("ms") | userid.StartsWith("ps"))
{
Maschine maschine = Maschine.GetMaschine(null, userid);
if (maschine == null)
{
maschine = new Maschine()
{
Faecher = 1,
Bezeichnung = userid,
TrocknerKaputt = false,
};
maschine.Save();
}
switch (userid)
{
case var s when s.Contains("wstrasse"):
@ -271,6 +283,7 @@ namespace Deckungsbeitrag
}
}
#region private-Funktionen
private static void TouchAppConfig()
@ -387,8 +400,11 @@ namespace Deckungsbeitrag
art.Kategorie = ArtikelKategorie.Frottee;
break;
case var nr when nr.ToString()[1] == '1' & nr.ToString()[2] == '1': // 2. und 3. Stelle wird auf 1 überprüft
if (nr.ToString()[4] == '5' || nr.ToString()[4] == '6')
art.Kategorie = ArtikelKategorie.Spannleintuch;
if (nr.ToString()[4] == '5' || nr.ToString()[4] == '6') // 4. Stelle wird auf 5 oder 6 überprüft
{
if (nr.ToString()[4] == '5') art.Kategorie = ArtikelKategorie.Frottee; // Wenn 4. Stelle 5 dann Single Spannleintuch und ArtikelKategorie Frottee
else art.Kategorie = ArtikelKategorie.Spannleintuch;
}
else art.Kategorie = ArtikelKategorie.Grossteile;
break;
case var nr when nr.ToString()[1] == '1' & nr.ToString()[2] == '2': // 2. und 3. Stelle wird auf 2 überprüft
@ -598,16 +614,16 @@ namespace Deckungsbeitrag
// Prüfen ob neue Version ist größer als aktuelle Version.
if (new Version(newVersion).CompareTo(new Version(currentVersion)) > 0)
{
DialogResult result = DialogResult.Yes;
//DialogResult result = MessageBox.Show(
// $"Update verfügbar: {newVersion}\nInstallieren?",
// "UPDATE VERFÜGBAR",
// MessageBoxButtons.YesNo,
// MessageBoxIcon.Question);
//DialogResult result = DialogResult.Yes;
DialogResult result = MessageBox.Show(
$"Ein Update wird durchgeführt. Schließe es ab um weiter zu kommen.",
"ACHTUNG UPDATE",
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
string msiPath = Path.Combine(updatePath, $"SetupVerwaltung{newVersion}.msi");
if (result == DialogResult.Yes)
if (result == DialogResult.OK)
{
try
{

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.1.5.7")]
[assembly: AssemblyFileVersion("1.1.5.7")]
[assembly: AssemblyVersion("1.1.7.0")]
[assembly: AssemblyFileVersion("1.1.7.0")]

View File

@ -34,37 +34,7 @@
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"OwnerKey" = "8:_99A1851DAB14095B2C6FFF6100D312B7"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -76,7 +46,37 @@
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_99A1851DAB14095B2C6FFF6100D312B7"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -124,31 +124,7 @@
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"OwnerKey" = "8:_8A953E0634B8757038749C9F77062056"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -160,7 +136,31 @@
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -214,13 +214,13 @@
"Entry"
{
"MsmKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -268,19 +268,7 @@
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -292,7 +280,19 @@
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -352,37 +352,7 @@
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"OwnerKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -394,7 +364,37 @@
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -406,7 +406,7 @@
"Entry"
{
"MsmKey" = "8:_C2D67A4770D262B66069252CF1E903CF"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -418,7 +418,7 @@
"Entry"
{
"MsmKey" = "8:_C2D67A4770D262B66069252CF1E903CF"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -442,13 +442,13 @@
"Entry"
{
"MsmKey" = "8:_E637243CDA02D043DD2BAED063790F80"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_E637243CDA02D043DD2BAED063790F80"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -472,169 +472,7 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_848FCB2438E4DBC274C4D124CEB9562C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_EEA0FC277F3C1BC119E28ABD40FA3C76"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_16723AF5DFDEF26FC6A07BEB7D389737"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_65845AF9470C67B4E2216A46EFF4246C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_2DE2024BE0845063AAE50C820ED805AE"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_BDDC042CD8ACEF57F35D002490214D33"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_99A1851DAB14095B2C6FFF6100D312B7"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_1B916DE951F447CD3C62E7AEBE228A3F"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C2D67A4770D262B66069252CF1E903CF"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_8A953E0634B8757038749C9F77062056"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_17ABCA3C569C9181F3FE3A46B8638164"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_E637243CDA02D043DD2BAED063790F80"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_70C791195E1E3B637AE8CB0DE5BB4EFB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_0014568666DC36A67BD4258FEDAE4805"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_8208B2126E1B253A2E427D55D4E5F13A"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_A2FA7AC58F6A16AB132434F8A00EA507"
"OwnerKey" = "8:_5CDE0A18B0E8657CBCF9143673DB464A"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
@ -646,7 +484,169 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_5CDE0A18B0E8657CBCF9143673DB464A"
"OwnerKey" = "8:_A2FA7AC58F6A16AB132434F8A00EA507"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_8208B2126E1B253A2E427D55D4E5F13A"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_0014568666DC36A67BD4258FEDAE4805"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_70C791195E1E3B637AE8CB0DE5BB4EFB"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_E637243CDA02D043DD2BAED063790F80"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_17ABCA3C569C9181F3FE3A46B8638164"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_8A953E0634B8757038749C9F77062056"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C2D67A4770D262B66069252CF1E903CF"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_1B916DE951F447CD3C62E7AEBE228A3F"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_99A1851DAB14095B2C6FFF6100D312B7"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_4E92FDDD15B89BB89053E8A65FA73EAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_BDDC042CD8ACEF57F35D002490214D33"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_2DE2024BE0845063AAE50C820ED805AE"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_C92C21BE3984A4EC1BCD3A988C56652E"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_65845AF9470C67B4E2216A46EFF4246C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_16723AF5DFDEF26FC6A07BEB7D389737"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_EEA0FC277F3C1BC119E28ABD40FA3C76"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_848FCB2438E4DBC274C4D124CEB9562C"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED"
}
}
@ -751,11 +751,6 @@
"AssemblyAsmDisplayName" = "8:AForge.Video, Version=2.2.5.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_0014568666DC36A67BD4258FEDAE4805"
{
"Name" = "8:AForge.Video.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:AForge.Video.dll"
"TargetName" = "8:"
@ -782,11 +777,6 @@
"AssemblyAsmDisplayName" = "8:System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_0B016AD02A79C43C243D615B3AD40570"
{
"Name" = "8:System.Memory.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Memory.dll"
"TargetName" = "8:"
@ -813,11 +803,6 @@
"AssemblyAsmDisplayName" = "8:Npgsql, Version=4.1.14.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_125834DE4128EDE3F82BFC1A45B2ACD9"
{
"Name" = "8:Npgsql.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Npgsql.dll"
"TargetName" = "8:"
@ -844,11 +829,6 @@
"AssemblyAsmDisplayName" = "8:zxing.presentation, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_16723AF5DFDEF26FC6A07BEB7D389737"
{
"Name" = "8:zxing.presentation.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:zxing.presentation.dll"
"TargetName" = "8:"
@ -875,11 +855,6 @@
"AssemblyAsmDisplayName" = "8:HarfBuzzSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_17ABCA3C569C9181F3FE3A46B8638164"
{
"Name" = "8:HarfBuzzSharp.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:HarfBuzzSharp.dll"
"TargetName" = "8:"
@ -906,11 +881,6 @@
"AssemblyAsmDisplayName" = "8:Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_1B916DE951F447CD3C62E7AEBE228A3F"
{
"Name" = "8:Microsoft.Bcl.HashCode.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Microsoft.Bcl.HashCode.dll"
"TargetName" = "8:"
@ -937,11 +907,6 @@
"AssemblyAsmDisplayName" = "8:Spire.Barcode, Version=7.4.1.0, Culture=neutral, PublicKeyToken=663f351905198cb3, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_2DE2024BE0845063AAE50C820ED805AE"
{
"Name" = "8:Spire.Barcode.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Spire.Barcode.dll"
"TargetName" = "8:"
@ -988,11 +953,6 @@
"AssemblyAsmDisplayName" = "8:System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_4C0EEC06451FEA61E39F79681578838C"
{
"Name" = "8:System.Runtime.CompilerServices.Unsafe.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Runtime.CompilerServices.Unsafe.dll"
"TargetName" = "8:"
@ -1019,11 +979,6 @@
"AssemblyAsmDisplayName" = "8:System.Text.Encodings.Web, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_4E92FDDD15B89BB89053E8A65FA73EAA"
{
"Name" = "8:System.Text.Encodings.Web.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Text.Encodings.Web.dll"
"TargetName" = "8:"
@ -1070,11 +1025,6 @@
"AssemblyAsmDisplayName" = "8:System.Net.Sockets, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies"
{
"_5CDE0A18B0E8657CBCF9143673DB464A"
{
"Name" = "8:System.Net.Sockets.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Net.Sockets.dll"
"TargetName" = "8:"
@ -1101,11 +1051,6 @@
"AssemblyAsmDisplayName" = "8:zxing, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_65845AF9470C67B4E2216A46EFF4246C"
{
"Name" = "8:zxing.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:zxing.dll"
"TargetName" = "8:"
@ -1132,11 +1077,6 @@
"AssemblyAsmDisplayName" = "8:System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_65AC8F9F13B5E0ADCA662A6618010328"
{
"Name" = "8:System.ValueTuple.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.ValueTuple.dll"
"TargetName" = "8:"
@ -1163,11 +1103,6 @@
"AssemblyAsmDisplayName" = "8:System.Runtime.InteropServices.RuntimeInformation, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies"
{
"_6A4E9AB7C92A8099AD635862468BFCBE"
{
"Name" = "8:System.Runtime.InteropServices.RuntimeInformation.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Runtime.InteropServices.RuntimeInformation.dll"
"TargetName" = "8:"
@ -1194,11 +1129,6 @@
"AssemblyAsmDisplayName" = "8:AForge.Video.DirectShow, Version=2.2.5.0, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_70C791195E1E3B637AE8CB0DE5BB4EFB"
{
"Name" = "8:AForge.Video.DirectShow.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:AForge.Video.DirectShow.dll"
"TargetName" = "8:"
@ -1225,11 +1155,6 @@
"AssemblyAsmDisplayName" = "8:AForge, Version=2.2.5.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_8208B2126E1B253A2E427D55D4E5F13A"
{
"Name" = "8:AForge.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:AForge.dll"
"TargetName" = "8:"
@ -1253,14 +1178,9 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:VirtualKeyboard, Version=1.0.2.1, Culture=neutral, processorArchitecture=MSIL"
"AssemblyAsmDisplayName" = "8:VirtualKeyboard, Version=1.0.2.3, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_848FCB2438E4DBC274C4D124CEB9562C"
{
"Name" = "8:VirtualKeyboard.exe"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:VirtualKeyboard.exe"
"TargetName" = "8:"
@ -1287,11 +1207,6 @@
"AssemblyAsmDisplayName" = "8:System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_8A953E0634B8757038749C9F77062056"
{
"Name" = "8:System.Threading.Tasks.Extensions.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Threading.Tasks.Extensions.dll"
"TargetName" = "8:"
@ -1318,11 +1233,6 @@
"AssemblyAsmDisplayName" = "8:System.IO.Pipelines, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_8E444A9D7B7F9420CF44964B1EAE9AAA"
{
"Name" = "8:System.IO.Pipelines.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.IO.Pipelines.dll"
"TargetName" = "8:"
@ -1349,11 +1259,6 @@
"AssemblyAsmDisplayName" = "8:Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_99A1851DAB14095B2C6FFF6100D312B7"
{
"Name" = "8:Microsoft.Extensions.Logging.Abstractions.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Microsoft.Extensions.Logging.Abstractions.dll"
"TargetName" = "8:"
@ -1380,11 +1285,6 @@
"AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies"
{
"_A2FA7AC58F6A16AB132434F8A00EA507"
{
"Name" = "8:System.Net.Http.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Net.Http.dll"
"TargetName" = "8:"
@ -1411,11 +1311,6 @@
"AssemblyAsmDisplayName" = "8:System.Diagnostics.DiagnosticSource, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_A41FC3BFD0E1CE905FCB1693E99348B8"
{
"Name" = "8:System.Diagnostics.DiagnosticSource.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Diagnostics.DiagnosticSource.dll"
"TargetName" = "8:"
@ -1442,11 +1337,6 @@
"AssemblyAsmDisplayName" = "8:ObjectListView, Version=2.9.3.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_BDDC042CD8ACEF57F35D002490214D33"
{
"Name" = "8:ObjectListView.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:ObjectListView.dll"
"TargetName" = "8:"
@ -1473,11 +1363,6 @@
"AssemblyAsmDisplayName" = "8:System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_C025D526FF076AA8036CB8B1A2BD888E"
{
"Name" = "8:System.Buffers.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Buffers.dll"
"TargetName" = "8:"
@ -1504,11 +1389,6 @@
"AssemblyAsmDisplayName" = "8:Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_C2D67A4770D262B66069252CF1E903CF"
{
"Name" = "8:Microsoft.Bcl.AsyncInterfaces.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Microsoft.Bcl.AsyncInterfaces.dll"
"TargetName" = "8:"
@ -1535,11 +1415,6 @@
"AssemblyAsmDisplayName" = "8:System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_C92C21BE3984A4EC1BCD3A988C56652E"
{
"Name" = "8:System.Collections.Immutable.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Collections.Immutable.dll"
"TargetName" = "8:"
@ -1566,11 +1441,6 @@
"AssemblyAsmDisplayName" = "8:System.Threading.Channels, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_D3E738B1E9D7C3C737CDD91DCC4DC37B"
{
"Name" = "8:System.Threading.Channels.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Threading.Channels.dll"
"TargetName" = "8:"
@ -1597,11 +1467,6 @@
"AssemblyAsmDisplayName" = "8:System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_E637243CDA02D043DD2BAED063790F80"
{
"Name" = "8:System.Numerics.Vectors.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Numerics.Vectors.dll"
"TargetName" = "8:"
@ -1625,14 +1490,9 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
"AssemblyAsmDisplayName" = "8:TrelloIntegration, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
"AssemblyAsmDisplayName" = "8:TrelloIntegration, Version=1.0.0.1, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_EEA0FC277F3C1BC119E28ABD40FA3C76"
{
"Name" = "8:TrelloIntegration.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:TrelloIntegration.dll"
"TargetName" = "8:"
@ -1659,11 +1519,6 @@
"AssemblyAsmDisplayName" = "8:System.Text.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_EF6D58F917144384701E1DBDFB979BD8"
{
"Name" = "8:System.Text.Json.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:System.Text.Json.dll"
"TargetName" = "8:"
@ -1739,15 +1594,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:SetupVerwaltung"
"ProductCode" = "8:{9B884941-E5E0-4EA9-AC95-2AEB0FA80FE8}"
"PackageCode" = "8:{04A6506F-B180-44A8-AAAC-ECBEB36FCC19}"
"ProductCode" = "8:{3ED6B287-1043-4189-AF73-35192034AB95}"
"PackageCode" = "8:{76C9A4E3-4912-4F55-96A5-79CD92D6BE3E}"
"UpgradeCode" = "8:{2DC7CE56-8D1C-42EB-B326-2E887EBB7F5A}"
"AspNetVersion" = "8:"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE"
"ProductVersion" = "8:1.1.57"
"ProductVersion" = "8:1.1.70"
"Manufacturer" = "8:Kilian Wirl GmbH"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"

248
SharedClasses/Artikel.cs Normal file
View File

@ -0,0 +1,248 @@
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BrightIdeasSoftware;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
using System.Configuration;
namespace DatenDB
{
public enum ArtikelKategorie
{
Unbekannt = 0,
Frottee = 1,
Grossteile = 2,
Kleinteile = 3,
Spannleintuch = 4
}
public class Artikel
{
// 0 1 2 3 4 5 6 7
public const string COLUMNS = "artikel_id, nummer, bezeichnung, short, nachwaesche, muellwaesche, last_reset, kategorie"; // aktive hinzufügen
private const string TABLE = "kundenverwaltung.artikel";
public Artikel() { }
public Artikel(string row, int nr)
{
//if (nr <= 1) return; //ERSTE ZEILE IGNORIEREN.
string[] zeileData = row.Split(';');
if (zeileData[0] == "60" || zeileData[0] == "20")
{
this.Nummer = Convert.ToInt32(zeileData[1]);
this.Bezeichnung = zeileData[3];
//this.Short = zeileData[4];
}
}
public static int? GetArtikelID(int artNr)
{
DatenbankConnection.GetConnection().Open();
int? result = 0;
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select artikel_id from {TABLE} where nummer = {artNr}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = reader.GetInt32(0);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public static string GetShort(int? artikelID, string artname)
{
DatenbankConnection.GetConnection().Open();
string result = null;
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (artikelID != null) command.CommandText = $"select short from {TABLE} where artikel_id = {artikelID}";
if (!string.IsNullOrWhiteSpace(artname))
{
artname += "%";
command.CommandText = $"select short from {TABLE} where bezeichnung ILIKE '{artname}'";
}
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = reader.IsDBNull(0) ? string.Empty : reader.GetString(0);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public static Artikel GetArtikel(int? artikelNr, int? artikelID)
{
DatenbankConnection.GetConnection().Open();
Artikel result = null;
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (artikelNr != null) command.CommandText = $"select {COLUMNS} from {TABLE} where nummer = {artikelNr}";
if (artikelID != null) command.CommandText = $"select {COLUMNS} from {TABLE} where artikel_id = {artikelID}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = new Artikel(reader);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public static List<Artikel> GetRegArtikelList()
{
DatenbankConnection.GetConnection().Open();
List<Artikel> resultList = new List<Artikel>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select {COLUMNS} from {TABLE} where SUBSTRING(nummer::text, 2, 1) = '9'";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new Artikel(reader));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<Artikel> GetArtikelList(string s)
{
DatenbankConnection.GetConnection().Open();
List<Artikel> resultList = new List<Artikel>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (s == "Alle") command.CommandText = $"select {COLUMNS} from {TABLE}";
if (s == "Nachwaesche") command.CommandText = $"select {COLUMNS} from {TABLE} where kategorie > 0 and SUBSTRING(nummer::text, 1, 1) = '6' order by kategorie ASC, nummer ASC";
if (s == "MitNachwaesche") command.CommandText = $"select {COLUMNS} from {TABLE} where nachwaesche > 0";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new Artikel(reader));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static int SaveList(List<Artikel> artlist)
{
DatenbankConnection.GetConnection().Open();
int result = 0;
foreach (Artikel art in artlist)
{
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (art.ArtikelID.HasValue & art.ArtikelID != 0)
{
command.CommandText = $"update {TABLE} set nummer = :p1, bezeichnung = :p2, short = :p3, nachwaesche = :p4, muellwaesche = :p5, last_reset = :p6, kategorie = :p7 where artikel_id = :p0";
}
else
{
command.CommandText = "select nextval('kundenverwaltung.artikel_seq')";
art.ArtikelID = (int)(long)command.ExecuteScalar();
command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7)";
}
command.Parameters.AddWithValue("p0", art.ArtikelID);
command.Parameters.AddWithValue("p1", art.Nummer);
command.Parameters.AddWithValue("p2", string.IsNullOrEmpty(art.Bezeichnung) ? (object)DBNull.Value : art.Bezeichnung);
command.Parameters.AddWithValue("p3", string.IsNullOrEmpty(art.Short) ? (object)DBNull.Value : art.Short);
command.Parameters.AddWithValue("p4", art.Nachwaesche);
command.Parameters.AddWithValue("p5", art.Muellwaesche);
command.Parameters.AddWithValue("p6", art.LastReset.HasValue ? art.LastReset.Value : (object)DBNull.Value);
command.Parameters.AddWithValue("p7", (int)art.Kategorie);
command.ExecuteNonQuery();
result++;
}
//result = command.ExecuteNonQuery();
DatenbankConnection.GetConnection().Close();
return result;
}
public int Save()
{
DatenbankConnection.GetConnection().Open();
int result = 0;
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (this.ArtikelID.HasValue & this.ArtikelID != 0)
{
command.CommandText = $"update {TABLE} set nummer = :p1, bezeichnung = :p2, short = :p3, nachwaesche = :p4, muellwaesche = :p5, last_reset = :p6, kategorie = :p7 where artikel_id = :p0";
}
else
{
command.CommandText = "select nextval('kundenverwaltung.artikel_seq')";
this.ArtikelID = (int)(long)command.ExecuteScalar();
command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7)";
}
command.Parameters.AddWithValue("p0", this.ArtikelID);
command.Parameters.AddWithValue("p1", this.Nummer);
command.Parameters.AddWithValue("p2", string.IsNullOrEmpty(this.Bezeichnung) ? (object)DBNull.Value : this.Bezeichnung);
command.Parameters.AddWithValue("p3", string.IsNullOrEmpty(this.Short) ? (object)DBNull.Value : this.Short);
command.Parameters.AddWithValue("p4", this.Nachwaesche);
command.Parameters.AddWithValue("p5", this.Muellwaesche);
command.Parameters.AddWithValue("p6", this.LastReset.HasValue ? this.LastReset.Value : (object)DBNull.Value);
command.Parameters.AddWithValue("p7", (int)this.Kategorie);
result = command.ExecuteNonQuery();
DatenbankConnection.GetConnection().Close();
return result;
}
public Artikel(NpgsqlDataReader reader)
{
this.ArtikelID = reader.GetInt32(0);
this.Nummer = reader.GetInt32(1);
this.Bezeichnung = reader.IsDBNull(2) ? string.Empty : reader.GetString(2);
this.Short = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
this.Nachwaesche = reader.GetInt32(4);
this.Muellwaesche = reader.GetInt32(5);
this.LastReset = reader.IsDBNull(6) ? null : (DateTime?)reader.GetDateTime(6);
this.Kategorie = (ArtikelKategorie)reader.GetInt16(7);
}
#region Properties
[OLVIgnore]
public int? ArtikelID { get; set; }
[OLVColumn("ArtNr.", DisplayIndex = 0, TextAlign = HorizontalAlignment.Right, IsEditable = false)]
public int Nummer { get; set; }
[OLVColumn("Bezeichnung", DisplayIndex = 1, IsEditable = false)]
public string Bezeichnung { get; set; }
[OLVColumn("Abkürzung", DisplayIndex = 2)]
public string Short { get; set; }
//[OLVColumn("Nachwäsche", DisplayIndex = 3, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
[OLVIgnore]
public int Nachwaesche { get; set; }
//[OLVColumn("Müll", DisplayIndex = 4, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
[OLVIgnore]
public int Muellwaesche { get; set; }
//[OLVColumn("Letzter Reset", DisplayIndex = 5, AspectToStringFormat = "{0:d}", TextAlign = System.Windows.Forms.HorizontalAlignment.Right)]
[OLVIgnore]
public DateTime? LastReset { get; set; }
[OLVColumn("Kategorie", DisplayIndex = 6)]
public ArtikelKategorie Kategorie { get; set; }
private string _reset;
//[OLVColumn("Reset", DisplayIndex = 7)]
[OLVIgnore]
public string Reset
{
get
{
if (Nachwaesche > 0)
return _reset = "Reset";
else
return _reset = string.Empty; // Alternativwert, wenn Bedingung nicht erfüllt
}
set { }
}
[OLVIgnore]
public string ComboBoxAnzeige => $"{Nummer} {Bezeichnung}";
#endregion
}
}

View File

@ -0,0 +1,125 @@
using BrightIdeasSoftware;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DatenDB
{
public class AuftragArtikel
{
private static string TABLE = "kundenverwaltung.auftrag_artikel";
private static string COLUMNS = "auftrag_artikel_id, auftrag_id, artikel_id, artikel_name, anzahl, erledigt, gesamt";
private static string ACOLUMNS = "a.auftrag_artikel_id, a.auftrag_id, a.artikel_id, a.artikel_name, a.anzahl, a.erledigt, a.gesamt";
public Kunde kunde;
public AuftragArtikel()
{
}
public static List<AuftragArtikel> GetList(int? auftragID)
{
DatenbankConnection.GetConnection().Open();
List<AuftragArtikel> resultList = new List<AuftragArtikel>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select {ACOLUMNS} from {TABLE} a where auftrag_id = {auftragID}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new AuftragArtikel(reader, 1));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static AuftragArtikel GetArtikel(int aufartid)
{
DatenbankConnection.GetConnection().Open();
AuftragArtikel result = new AuftragArtikel();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT {COLUMNS} from {TABLE} where auftrag_artikel_id = {aufartid}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = new AuftragArtikel(reader, 1);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public int Save()
{
DatenbankConnection.GetConnection().Open();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if(this.AuftragArtikelID.HasValue & this.AuftragArtikelID != 0)
{
command.CommandText = $"update {TABLE} set auftrag_id = :p1, artikel_id = :p2, artikel_name = :p3, anzahl = :p4, erledigt = :p5, gesamt = :p6 WHERE auftrag_artikel_id = :p0";
}
else
{
command.CommandText = "select nextval('kundenverwaltung.auftrag_artikel_seq')";
this.AuftragArtikelID = (int)(long)command.ExecuteScalar();
command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5, :p6)";
}
command.Parameters.AddWithValue("p0", this.AuftragArtikelID.Value);
command.Parameters.AddWithValue("p1", this.AuftragID);
command.Parameters.AddWithValue("p2", this.ArtikelID.HasValue ? this.ArtikelID.Value : (object)DBNull.Value);
command.Parameters.AddWithValue("p3", string.IsNullOrWhiteSpace(this.ArtikelName) ? (object)DBNull.Value : this.ArtikelName);
command.Parameters.AddWithValue("p4", this.Anzahl);
command.Parameters.AddWithValue("p5", this.Erledigt);
command.Parameters.AddWithValue("p6", this.Gesamt);
int result = command.ExecuteNonQuery();
DatenbankConnection.GetConnection().Close();
return result;
}
public AuftragArtikel(NpgsqlDataReader reader, int i)
{
if (i == 1)
{
this.AuftragArtikelID = reader.GetInt32(0);
this.AuftragID = reader.GetInt32(1);
this.ArtikelID = reader.IsDBNull(2) ? (int?)null : reader.GetInt32(2);
this.ArtikelName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
this.Anzahl = reader.GetInt32(4);
this.Erledigt = reader.GetBoolean(5);
this.Gesamt = reader.IsDBNull(6) ? 0 : reader.GetInt32(6);
}
if (i == 2)
{
kunde = new Kunde();
this.ArtikelName = reader.GetString(0);
this.Anzahl = reader.GetInt32(1);
this.kunde.Suchtext = reader.GetString(2);
}
}
[OLVIgnore]
public int? AuftragArtikelID { get; set; }
[OLVIgnore]
public int? AuftragID { get; set; }
[OLVIgnore]
public int? ArtikelID { get; set; }
[OLVColumn(DisplayIndex = 1, IsEditable = false)]
public string ArtikelName { get; set; }
[OLVColumn("Anzahl", DisplayIndex = 3, TextAlign = HorizontalAlignment.Center)]
public int Anzahl { get; set; }
[OLVColumn("Erledigt", DisplayIndex = 0, CheckBoxes = true)]
public bool Erledigt { get; set; }
[OLVColumn("Offen", DisplayIndex = 2, TextAlign = HorizontalAlignment.Center, IsEditable = false)]
public int Gesamt { get; set; }
}
}

View File

@ -0,0 +1,55 @@
using Deckungsbeitrag;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DatenDB
{
static class DatenbankConnection
{
private static NpgsqlConnection connection = null;
private static readonly int MaxRetries = 3;
private static readonly int RetryDelayMs = 1000; // 1 Sekunde
public static NpgsqlConnection GetConnection()
{
if (connection?.State == System.Data.ConnectionState.Open) return connection;
connection?.Dispose();
var cs = ConfigurationManager.AppSettings["ConnectionString"];
int attempt = 0;
while (true)
{
try
{
connection = new NpgsqlConnection(cs);
return connection;
}
catch (NpgsqlException ex)
{
attempt++;
Console.WriteLine($"DB-Connection-Versuch {attempt}");
if (attempt >= MaxRetries)
{
MessageBox.Show(ex.Message + $"\n\nBitte starte das Programm neu.", "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Error);
Program.AddFehler(null, ex.Message, ex.StackTrace, null);
throw; // nach X Versuchen aufgeben
}
Thread.Sleep(RetryDelayMs);
}
}
}
}
}

452
SharedClasses/Kunde.cs Normal file
View File

@ -0,0 +1,452 @@
using Npgsql;
using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Text;
using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames;
namespace DatenDB
{
public class Kunde
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
public const string COLUMNS = "kunde_id, tour_id, kunde_nr, name1, name2, straße, plz, bezeichnung, land, aktiv, bettenanzahl, kunde_gruppe, service, region, waescheart, suchtext, aufgabe, anmerkung, aufgabe_count, sommerlieferrhythmus, winterlieferrhythmus, nachwaesche";
private const string RED_COLUMNS = "kunde_id, tour_id, kunde_nr, name1, name2, straße, plz, bezeichnung, land, aktiv, bettenanzahl, kunde_gruppe, service, region, waescheart, jahr, umsatz";
public const string TABLE = "kundenverwaltung.kunde";
public const string VIEW = "kundenverwaltung.jahresumsaetze"; //RICHTIGE VIEW AUSSUCHEN FÜR INAKTIVE MIT LETZTEN UMSATZ...
public Umsatz umsatz;
public Kunde()
{
} // LEER
public static List<Kunde> GetTmpList(string text, string kndService)
{
DatenbankConnection.GetConnection().Open();
List<Kunde> resultList = new List<Kunde>();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (kndService != null)
{
if (string.IsNullOrEmpty(text)) command.CommandText = $"select {COLUMNS} from {TABLE} where aktiv = {true} and service <> '{kndService}'";
else
{
string cleanedText = new string(text.Where(c => char.IsLetterOrDigit(c) || c == ' ').ToArray());
if (int.TryParse(cleanedText, out _)) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_nr::varchar ~* '{cleanedText}' and service <> '{kndService}'";
else command.CommandText = $"select {COLUMNS} from {TABLE} where suchtext ~* '{cleanedText}' or name1 ~* '{cleanedText}' and service <> '{kndService}'";
}
}
else
{
if (string.IsNullOrEmpty(text)) command.CommandText = $"select {COLUMNS} from {TABLE} where aktiv = {true}";
else
{
string cleanedText = new string(text.Where(c => char.IsLetterOrDigit(c) || c == ' ').ToArray());
if (int.TryParse(cleanedText, out _)) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_nr::varchar ~* '{cleanedText}'";
else command.CommandText = $"select {COLUMNS} from {TABLE} where suchtext ~* '{cleanedText}' or name1 ~* '{cleanedText}'";
}
}
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new Kunde(reader));
reader.Close();
}
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static int GetKundeID(string kndnr, string text)
{
DatenbankConnection.GetConnection().Open();
int result = 0;
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (!string.IsNullOrEmpty(kndnr)) command.CommandText = $"select kunde_id from {TABLE} where kunde_nr = '{kndnr}'";
else command.CommandText = $"select kunde_id from {TABLE} where suchtext ~* '{text}' or name1 ~* '{text}'";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = reader.GetInt32(0);
reader.Close();
}
DatenbankConnection.GetConnection().Close();
return result;
}
public static List<string> GetServiceDistinct()
{
DatenbankConnection.GetConnection().Open();
List<string> resultList = new List<string>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT distinct service FROM {TABLE} where service is not null";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(reader.GetString(0));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<Kunde> GetReklamationListe(string waescheart)
{
DatenbankConnection.GetConnection().Open();
List<Kunde> resultList = new List<Kunde>();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select {COLUMNS} from {TABLE} where aktiv = true and waescheart = '{waescheart}' order by bettenanzahl desc";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new Kunde(reader));
reader.Close();
}
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<Kunde> GetKundenTourenListe(string region)
{
DatenbankConnection.GetConnection().Open();
List<Kunde> resultList = new List<Kunde>();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (region == string.Empty) command.CommandText = $"select {COLUMNS} from {TABLE} where aktiv = true and service = 'Lieferservice' order by region asc";
else command.CommandText = $"select {COLUMNS} from {TABLE} where aktiv = true and service = 'Lieferservice' and region = '{region}' order by region asc";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new Kunde(reader));
reader.Close();
}
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<Kunde> GetList(bool? isaktiv, string text)
{
DatenbankConnection.GetConnection().Open();
List<Kunde> resultList = new List<Kunde>();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (isaktiv != null) command.CommandText = $"select {COLUMNS} from {TABLE} where aktiv = {isaktiv}";
if (!string.IsNullOrWhiteSpace(text))command.CommandText = $"select {COLUMNS} from {TABLE} where suchtext ~* '{text}'";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new Kunde(reader, false));
reader.Close();
}
DatenbankConnection.GetConnection().Close();
foreach(Kunde kunde in resultList)
{
List<OLVKundenumsatz> list = new List<OLVKundenumsatz>();
list = OLVKundenumsatz.GetJahresumsatz(kunde.KundeID);
if(list.Count > 0)
{
kunde.Zeitraum = double.Parse(OLVKundenumsatz.GetJahresumsatz(kunde.KundeID).Last().Zeitraum);
kunde.Umsatz1 = OLVKundenumsatz.GetJahresumsatz(kunde.KundeID).Last().Umsatz;
}
else
{
kunde.Zeitraum = 0;
kunde.Umsatz1 = 0;
}
}
return resultList;
} //INAKTIV KUNDENLISTE LADEN...
public static int GetBettenAnzahl(string bett)
{
DatenbankConnection.GetConnection().Open();
int betten = 0;
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (bett == "Miete") command.CommandText = $"select sum(bettenanzahl) from {TABLE} where aktiv = {true} and waescheart = '{bett}'";
else command.CommandText = $"select sum(bettenanzahl) from {TABLE} where aktiv = {true}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) betten = reader.IsDBNull(0) ? 0 : reader.GetInt16(0);
reader.Close();
}
DatenbankConnection.GetConnection().Close();
return betten;
}
public static Kunde GetKunde(string nr, int? id, string name)
{
DatenbankConnection.GetConnection().Open();
Kunde kunde = null;
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if(nr != null)
{
if (int.TryParse(nr, out int _))
{
command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_nr = '{nr}'";
}
else command.CommandText = $"select {COLUMNS} from {TABLE} where suchtext = '{nr}'";
}
if (id != null) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {id}";
if (!string.IsNullOrEmpty(name))
{
command.CommandText = $"select {COLUMNS} from {TABLE} where LOWER(name1) ~* '{name}' or LOWER(suchtext) ~* '{name}'";
}
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) kunde = new Kunde(reader);
reader.Close();
}
DatenbankConnection.GetConnection().Close();
return kunde;
}
public Kunde(NpgsqlDataReader reader, bool mitUmsatz)
{
if (!mitUmsatz)
{
this.KundeID = reader.GetInt32(0);
this.TourID = reader.IsDBNull(1) ? null : (int?)reader.GetInt32(1);
this.KundeNummer = reader.GetString(2);
this.KundeName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
this.KundeName2 = reader.IsDBNull(4) ? string.Empty : reader.GetString(4);
this.Strasse = reader.IsDBNull(5) ? string.Empty : reader.GetString(5);
this.PLZ = reader.IsDBNull(6) ? null : (int?)reader.GetInt32(6);
this.Ort = reader.IsDBNull(7) ? string.Empty : reader.GetString(7);
this.Land = reader.IsDBNull(8) ? string.Empty : reader.GetString(8);
this.Aktiv = reader.GetBoolean(9);
this.Bettenanzahl = reader.IsDBNull(10) ? null : (int?)reader.GetInt32(10);
this.KundeGruppe = reader.IsDBNull(11) ? string.Empty : reader.GetString(11);
this.Service = reader.IsDBNull(12) ? string.Empty : reader.GetString(12);
this.Region = reader.IsDBNull(13) ? string.Empty : reader.GetString(13);
this.Waescheart = reader.IsDBNull(14) ? string.Empty : reader.GetString(14);
this.Suchtext = reader.IsDBNull(15) ? string.Empty : reader.GetString(15);
this.Aufgabe = reader.IsDBNull(16) ? null : (int?)reader.GetInt32(16);
this.Anmerkung = reader.IsDBNull(17) ? string.Empty : reader.GetString(17);
this.AufgabeCount = reader.IsDBNull(18) ? 0 : reader.GetInt32(18);
this.SommerLieferRhythmus = reader.IsDBNull(19) ? (int)Lieferrhythmen.Unbekannt : reader.GetInt16(19);
this.WinterLieferRhythmus = reader.IsDBNull(20) ? (int)Lieferrhythmen.Unbekannt : reader.GetInt16(20);
this.HatNachwaesche = reader.IsDBNull(21) ? (this.Waescheart == "Miete" ? true : false) : reader.GetBoolean(21);
}
}
public Kunde(NpgsqlDataReader reader)
{
this.KundeID = reader.GetInt32(0);
this.TourID = reader.IsDBNull(1) ? null : (int?)reader.GetInt32(1);
this.KundeNummer = reader.GetString(2);
this.KundeName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
this.KundeName2 = reader.IsDBNull(4) ? string.Empty : reader.GetString(4);
this.Strasse = reader.IsDBNull(5) ? string.Empty : reader.GetString(5);
this.PLZ = reader.IsDBNull(6) ? null : (int?)reader.GetInt32(6);
this.Ort = reader.IsDBNull(7) ? string.Empty : reader.GetString(7);
this.Land = reader.IsDBNull(8) ? string.Empty : reader.GetString(8);
this.Aktiv = reader.GetBoolean(9);
this.Bettenanzahl = reader.IsDBNull(10) ? null : (int?)reader.GetInt32(10);
this.KundeGruppe = reader.IsDBNull(11) ? string.Empty : reader.GetString(11);
this.Service = reader.IsDBNull(12) ? string.Empty : reader.GetString(12);
this.Region = reader.IsDBNull(13) ? string.Empty : reader.GetString(13);
this.Waescheart = reader.IsDBNull(14) ? string.Empty : reader.GetString(14);
this.Suchtext = reader.IsDBNull(15) ? string.Empty : reader.GetString(15);
this.Aufgabe = reader.IsDBNull(16) ? null : (int?)reader.GetInt32(16);
this.Anmerkung = reader.IsDBNull(17) ? string.Empty : reader.GetString(17);
this.AufgabeCount = reader.IsDBNull(18) ? 0 : reader.GetInt32(18);
this.SommerLieferRhythmus = reader.IsDBNull(19) ? (int)Lieferrhythmen.Unbekannt : reader.GetInt16(19);
this.WinterLieferRhythmus = reader.IsDBNull(20) ? (int)Lieferrhythmen.Unbekannt : reader.GetInt16(20);
this.HatNachwaesche = reader.IsDBNull(21) ? (this.Waescheart == "Miete" ? true : false) : reader.GetBoolean(21);
}
public int Save()
{
DatenbankConnection.GetConnection().Open();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (this.KundeID.HasValue & this.KundeID != 0)
{
command.CommandText = $"update {TABLE} set tour_id = :p1, kunde_nr = :p2, name1 = :p3, name2 = :p4, straße = :p5, plz = :p6, bezeichnung = :p7, land = :p8, aktiv = :p9, bettenanzahl = :p10, kunde_gruppe = :p11, service = :p12, region = :p13, waescheart = :p14, suchtext = :p15, aufgabe = :p16, anmerkung = :p17, aufgabe_count = :p18, sommerlieferrhythmus = :p19, winterlieferrhythmus = :p20, nachwaesche = :p21 WHERE kunde_id = :p0";
}
else
{
command.CommandText = "select nextval('kundenverwaltung.kunde_seq')";
this.KundeID = (int)(long)command.ExecuteScalar();
command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10, :p11, :p12, :p13, :p14, :p15, :p16, :p17, :p18, :p19, :p20, :p21)";
}
command.Parameters.AddWithValue("p0", this.KundeID);
command.Parameters.AddWithValue("p1", this.TourID ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p2", this.KundeNummer);
command.Parameters.AddWithValue("p3", string.IsNullOrEmpty(this.KundeName) ? (object)DBNull.Value : this.KundeName);
command.Parameters.AddWithValue("p4", string.IsNullOrEmpty(this.KundeName2) ? (object)DBNull.Value : this.KundeName2);
command.Parameters.AddWithValue("p5", string.IsNullOrEmpty(this.Strasse) ? (object)DBNull.Value : this.Strasse);
command.Parameters.AddWithValue("p6", this.PLZ ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p7", string.IsNullOrEmpty(this.Ort) ? (object)DBNull.Value : this.Ort);
command.Parameters.AddWithValue("p8", string.IsNullOrEmpty(this.Land) ? (object)DBNull.Value : this.Land);
command.Parameters.AddWithValue("p9", this.Aktiv);
command.Parameters.AddWithValue("p10", this.Bettenanzahl ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p11", string.IsNullOrEmpty(this.KundeGruppe) ? (object)DBNull.Value : this.KundeGruppe);
command.Parameters.AddWithValue("p12", string.IsNullOrEmpty(this.Service) ? (object)DBNull.Value : this.Service);
command.Parameters.AddWithValue("p13", string.IsNullOrEmpty(this.Region) ? (object)DBNull.Value : this.Region);
command.Parameters.AddWithValue("p14", string.IsNullOrEmpty(this.Waescheart) ? (object)DBNull.Value : this.Waescheart);
command.Parameters.AddWithValue("p15", string.IsNullOrEmpty(this.Suchtext) ? (object)DBNull.Value : this.Suchtext);
command.Parameters.AddWithValue("p16", this.Aufgabe ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p17", string.IsNullOrWhiteSpace(this.Anmerkung) ? (object)DBNull.Value : this.Anmerkung);
command.Parameters.AddWithValue("p18", this.AufgabeCount ?? (object)DBNull.Value);
command.Parameters.AddWithValue("p19", this.SommerLieferRhythmus);
command.Parameters.AddWithValue("p20", this.WinterLieferRhythmus);
command.Parameters.AddWithValue("p21", this.HatNachwaesche);
int result = command.ExecuteNonQuery();
DatenbankConnection.GetConnection().Close();
return result;
}
}
public int CheckKndNr(string v)
{
DatenbankConnection.GetConnection().Open();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select kunde_id from {TABLE} where kunde_nr = '{v}'";
int result = 0;
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = reader.GetInt16(0);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
}
public static int GetAnzahlKnd(bool? aktiv)
{
DatenbankConnection.GetConnection().Open();
using (NpgsqlCommand command = new NpgsqlCommand())
{
command.Connection = DatenbankConnection.GetConnection();
if (aktiv != null) command.CommandText = $"select count (*) from {TABLE} where aktiv = '{aktiv}'";
else command.CommandText = $"select count (*) from {TABLE}";
int result = (int)(long)command.ExecuteScalar();
DatenbankConnection.GetConnection().Close();
return result;
}
}
public static List<string> GetRegionDistinct()
{
DatenbankConnection.GetConnection().Open();
List<string> resultList = new List<string>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT distinct region FROM {TABLE} where region is not null order by region ASC";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(reader.GetString(0));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
#region Properties
[OLVIgnore]
public int? KundeID { get; set; }
[OLVIgnore]
public int? TourID { get; set; }
[OLVColumn(IsVisible = false)]
public string KundeGruppe { get; set; }
[OLVColumn("KndNr.", DisplayIndex = 0, IsTileViewColumn = true, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
public string KundeNummer { get; set; }
[OLVColumn("Name", DisplayIndex = 1)]
public string KundeName { get; set; }
[OLVColumn("Zusatz", DisplayIndex = 2)]
public string KundeName2 { get; set; }
[OLVColumn(DisplayIndex = 3)]
public string Strasse { get; set; }
[OLVColumn(DisplayIndex = 4)]
public string HausNr { get; set; }
[OLVColumn(DisplayIndex = 5, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
public int? PLZ { get; set; }
[OLVColumn(DisplayIndex = 6)]
public string Ort { get; set; }
[OLVColumn(DisplayIndex = 7, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
public string Land { get; set; }
[OLVColumn("Betten", DisplayIndex = 8, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
public int? Bettenanzahl { get; set; }
[OLVColumn(CheckBoxes = true, DisplayIndex = 9)]
public bool Aktiv { get; set; } = true;
[OLVColumn(DisplayIndex = 10)]
public string Service { get; set; }
[OLVColumn(DisplayIndex = 11)]
public string Region { get; set; }
[OLVColumn(DisplayIndex = 12)]
public string Waescheart { get; set; }
[OLVColumn("Umsatz", DisplayIndex = 15, TextAlign = System.Windows.Forms.HorizontalAlignment.Center, AspectToStringFormat ="{0:C}")]
public double? Umsatz1 { get; set; }
[OLVIgnore]
public double? Umsatz2 { get; set; }
[OLVIgnore]
public double? DifferenzEUR { get; set; }
[OLVIgnore]
public double? DifferenzP { get; set; }
[OLVIgnore]
public double? UmsatzAnteil { get; set; }
[OLVIgnore]
public double? KostenAnteil { get; set; }
[OLVIgnore]
public double? GastUmsatz { get; set; }
[OLVIgnore]
public double? BewertungEUR { get; set; }
[OLVIgnore]
public string Bewertung { get; set; }
[OLVColumn("Jahr", DisplayIndex = 14, TextAlign = System.Windows.Forms.HorizontalAlignment.Center)]
public double Zeitraum { get; set; }
[OLVColumn(DisplayIndex = 13)]
public string Suchtext { get; set; }
[OLVIgnore]
public int? Aufgabe { get; set; }
[OLVIgnore]
public int? AufgabeCount { get; set; }
[OLVIgnore]
public string Anmerkung { get; set; }
[OLVIgnore]
public int SommerLieferRhythmus { get; set; }
public int WinterLieferRhythmus { get; set; }
public bool HatNachwaesche { get; set; }
#endregion
}
}

View File

@ -0,0 +1,287 @@

using Npgsql;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DatenDB
{
public class KundeArtikel
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13
private static string COLUMNS = "kunde_artikel_id, kunde_id, artikel_nr, artikel_name, stand, fehlmenge, stand_bearbeitet, fehlmenge_bearbeitet, korrektur, korrektur_bearbeitet, reklamation, artikel_id, reihung, reklamation_bearbeitet";
private static string TABLE = "kundenverwaltung.kunde_artikel";
public KundeArtikel() { }
internal static List<KundeArtikel> GetInventurList(int? kundeid)
{
DatenbankConnection.GetConnection().Open();
List<KundeArtikel> resultList = new List<KundeArtikel>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {kundeid} order by reihung asc";
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
resultList.Add(new KundeArtikel(reader));
}
}
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static List<KundeArtikel> GetList(string kundeid)
{
DatenbankConnection.GetConnection().Open();
List<KundeArtikel> resultList = new List<KundeArtikel>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {kundeid} order by reihung asc";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new KundeArtikel(reader));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
public static KundeArtikel GetItem(int kndartID)
{
DatenbankConnection.GetConnection().Open();
KundeArtikel result = new KundeArtikel();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT {COLUMNS} from {TABLE} where kunde_artikel_id = {kndartID}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = new KundeArtikel(reader);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public static KundeArtikel GetItemIfAvailable(int kndid, int artnr)
{
DatenbankConnection.GetConnection().Open();
KundeArtikel result = null;
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT {COLUMNS} from {TABLE} where kunde_id = {kndid} and artikel_nr = {artnr}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = new KundeArtikel(reader);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public static KundeArtikel GetKundeArtikelVonArtikelID(int? kndid, int? artikelid)
{
DatenbankConnection.GetConnection().Open();
KundeArtikel result = null;
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT {COLUMNS} from {TABLE} where kunde_id = {kndid} and artikel_id = {artikelid}";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) result = new KundeArtikel(reader);
reader.Close();
DatenbankConnection.GetConnection().Close();
return result;
}
public static List<KundeArtikel> GetFehlmengeList(string kundeid, int? artikelID)
{
DatenbankConnection.GetConnection().Open();
List<KundeArtikel> resultList = new List<KundeArtikel>();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (!string.IsNullOrWhiteSpace(kundeid)) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {kundeid} and SUBSTRING(artikel_nr::text, 1, 1) = '6' or kunde_id = {kundeid} and SUBSTRING(artikel_nr::text, 1, 1) = '1' order by reihung asc";
else command.CommandText = $"select {COLUMNS} from {TABLE} where artikel_id = {artikelID} order by artikel_nr";
NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new KundeArtikel(reader));
reader.Close();
DatenbankConnection.GetConnection().Close();
return resultList;
}
internal static bool HatKategorieArtikel(int kundeid, ArtikelKategorie frottee)
{
DatenbankConnection.GetConnection().Open();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
command.CommandText = $"SELECT CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END FROM {TABLE} a inner join kundenverwaltung.artikel b on a.artikel_id = b.artikel_id WHERE a.kunde_id = {kundeid} and b.kategorie = {(int)frottee}";
int result = (int)command.ExecuteScalar();
DatenbankConnection.GetConnection().Close();
return result > 0;
}
public static void SaveKundeArtikel_Numbers(KundeArtikel kndart, int? korrektur, int? fehlmenge, int? reklamation, int? stand)
{
if (korrektur.HasValue)
{
kndart.Korrektur = korrektur.Value;
kndart.KorrekturBearbeitet = Program.benutzer.BenutzerName + " am " + DateTime.Now.ToString();
}
if (fehlmenge.HasValue)
{
kndart.Fehlmenge = fehlmenge.Value;
kndart.FehlmengeBearbeitet = Program.benutzer.BenutzerName + " am " + DateTime.Now.ToString();
}
if (reklamation.HasValue)
{
kndart.Reklamation = reklamation.Value;
kndart.ReklamationBearbeitet = Program.benutzer.BenutzerName + " am " + DateTime.Now.ToString();
}
if (stand.HasValue)
{
kndart.Stand = stand.Value;
kndart.StandBearbeitet = Program.benutzer.BenutzerName + " am " + DateTime.Now.ToString();
}
kndart.Save();
}
public int Save()
{
DatenbankConnection.GetConnection().Open();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (this.KundeArtikelID.HasValue & this.KundeArtikelID != 0)
{
command.CommandText = $"update {TABLE} set kunde_id = :p1, artikel_nr = :p2, artikel_name = :p3, stand = :p4, fehlmenge = :p5, stand_bearbeitet = :p6, fehlmenge_bearbeitet = :p7, korrektur = :p8, korrektur_bearbeitet = :p9, reklamation = :p10, artikel_id = :p11, reihung = :p12, reklamation_bearbeitet = :p13 WHERE kunde_artikel_id = :p0";
}
else
{
command.CommandText = "select nextval('kundenverwaltung.kunde_artikel_seq')";
this.KundeArtikelID = (int)(long)command.ExecuteScalar();
command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10, :p11, :p12, :p13)";
}
command.Parameters.AddWithValue("p0", this.KundeArtikelID.Value);
command.Parameters.AddWithValue("p1", this.KundeID);
command.Parameters.AddWithValue("p2", this.ArtikelNR);
command.Parameters.AddWithValue("p3", string.IsNullOrWhiteSpace(this.ArtikelName) ? (object)DBNull.Value : this.ArtikelName);
command.Parameters.AddWithValue("p4", this.Stand);
command.Parameters.AddWithValue("p5", this.Fehlmenge);
command.Parameters.AddWithValue("p6", string.IsNullOrWhiteSpace(this.StandBearbeitet) ? (object)DBNull.Value : this.StandBearbeitet);
command.Parameters.AddWithValue("p7", string.IsNullOrWhiteSpace(this.FehlmengeBearbeitet) ? (object)DBNull.Value : this.FehlmengeBearbeitet);
command.Parameters.AddWithValue("p8", this.Korrektur);
command.Parameters.AddWithValue("p9", string.IsNullOrWhiteSpace(this.KorrekturBearbeitet) ? (object)DBNull.Value : this.KorrekturBearbeitet);
command.Parameters.AddWithValue("p10", this.Reklamation);
command.Parameters.AddWithValue("p11", this.ArtikelID.HasValue ?this.ArtikelID.Value : (object)DBNull.Value);
command.Parameters.AddWithValue("p12", this.Reihung);
command.Parameters.AddWithValue("p13", string.IsNullOrWhiteSpace(this.ReklamationBearbeitet) ? (object)DBNull.Value : this.ReklamationBearbeitet);
int result = command.ExecuteNonQuery();
DatenbankConnection.GetConnection().Close();
return result;
}
public int ZahlenUpdate()
{
DatenbankConnection.GetConnection().Open();
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection();
if (this.KundeArtikelID.HasValue & this.KundeArtikelID != 0)
{
command.CommandText = $"update {TABLE} set stand = :p1, stand_bearbeitet = :p2 fehlmenge = :p3, fehlmenge_bearbeitet = :p4, korrektur = :p5, korrektur_bearbeitet = :p6 WHERE kunde_artikel_id = :p0";
}
else
{
command.CommandText = "select nextval('kundenverwaltung.kunde_artikel_seq')";
this.KundeArtikelID = (int)(long)command.ExecuteScalar();
command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5, :p6)";
}
command.Parameters.AddWithValue("p0", this.KundeArtikelID.Value);
command.Parameters.AddWithValue("p1", this.Stand);
command.Parameters.AddWithValue("p2", string.IsNullOrWhiteSpace(this.StandBearbeitet) ? (object)DBNull.Value : this.StandBearbeitet);
command.Parameters.AddWithValue("p3", this.Fehlmenge);
command.Parameters.AddWithValue("p4", string.IsNullOrWhiteSpace(this.FehlmengeBearbeitet) ? (object)DBNull.Value : this.FehlmengeBearbeitet);
command.Parameters.AddWithValue("p5", this.Korrektur);
command.Parameters.AddWithValue("p6", string.IsNullOrWhiteSpace(this.KorrekturBearbeitet) ? (object)DBNull.Value : this.KorrekturBearbeitet);
int result = command.ExecuteNonQuery();
DatenbankConnection.GetConnection().Close();
return result;
}
internal static async Task<List<KundeArtikel>> LoadArtikelDatenAsync(Kunde kunde)
{
var artikelDaten = new List<KundeArtikel>();
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
await Task.Run(() =>
{
using (var conn = new NpgsqlConnection(connectionString))
{
conn.Open();
using (var cmd = new NpgsqlCommand($"SELECT a.artikel_name, a.stand, a.fehlmenge, a.kunde_id, a.reklamation, a.artikel_id, a.reihung, b.kategorie FROM {TABLE} a inner join kundenverwaltung.artikel b on a.artikel_id = b.artikel_id WHERE a.kunde_id = {kunde.KundeID} and b.kategorie > 0 and (a.fehlmenge + a.reklamation) > 0", conn))
{
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
artikelDaten.Add(new KundeArtikel
{
ArtikelName = reader.GetString(0),
Stand = reader.GetInt32(1),
Fehlmenge = reader.GetInt32(2),
KundeID = reader.GetInt32(3),
Reklamation = reader.IsDBNull(4) ? 0 : reader.GetInt32(4),
ArtikelID = reader.IsDBNull(5) ? (int?)null : reader.GetInt32(5),
Reihung = reader.IsDBNull(6) ? 0 : reader.GetInt32(6)
});
}
}
}
}
});
return artikelDaten;
}
public KundeArtikel(NpgsqlDataReader reader)
{
this.KundeArtikelID = reader.GetInt32(0);
this.KundeID = reader.GetInt32(1);
this.ArtikelNR = reader.GetInt32(2);
this.ArtikelName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
this.Stand = reader.GetInt32(4);
this.Fehlmenge = reader.GetInt32(5);
this.StandBearbeitet = reader.IsDBNull(6) ? string.Empty : reader.GetString(6);
this.FehlmengeBearbeitet = reader.IsDBNull(7) ? string.Empty : reader.GetString(7);
this.Korrektur = reader.IsDBNull(8) ? 0 : reader.GetInt32(8);
this.KorrekturBearbeitet = reader.IsDBNull(9) ? string.Empty : reader.GetString(9);
this.Reklamation = reader.IsDBNull(10) ? 0 : reader.GetInt32(10);
this.ArtikelID = reader.IsDBNull(11) ? (int?)null : reader.GetInt32(11);
this.Reihung = reader.IsDBNull(12) ? 0 : reader.GetInt32(12);
this.ReklamationBearbeitet = reader.IsDBNull(13) ? string.Empty : reader.GetString(13);
}
[OLVColumn("ArtNr.", DisplayIndex = 2, TextAlign = HorizontalAlignment.Left)] public int ArtikelNR { get; set; }
[OLVColumn("Artikel", DisplayIndex = 3, TextAlign = HorizontalAlignment.Left)] public string ArtikelName { get; set; }
[OLVColumn("Nachwäsche", DisplayIndex = 4, TextAlign = HorizontalAlignment.Center)] public int Fehlmenge { get; set; }
[OLVColumn("Korrektur", DisplayIndex = 5, TextAlign = HorizontalAlignment.Center)] public int Korrektur { get; set; }
[OLVColumn("Reihung", DisplayIndex = 6, IsVisible = false)] public int Reihung { get; set; }
[OLVIgnore] public int? KundeArtikelID { get; set; }
[OLVIgnore] public int? KundeID { get; set; }
[OLVIgnore] public int Stand { get; set; }
[OLVIgnore] public string StandBearbeitet { get; set; }
[OLVIgnore] public string FehlmengeBearbeitet { get; set; }
[OLVIgnore] public string KorrekturBearbeitet { get; set; }
[OLVIgnore] public int Reklamation { get; set; }
[OLVIgnore] public int? ArtikelID { get; set; }
[OLVIgnore] public string ComboBoxAnzeige => $"{ArtikelNR} {ArtikelName}";
[OLVIgnore] public string ReklamationBearbeitet { get; set; }
}
}

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("SharedClasses")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SharedClasses")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("ede9193a-b9ae-48b8-88d8-0038f21c47e0")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{EDE9193A-B9AE-48B8-88D8-0038F21C47E0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SharedClasses</RootNamespace>
<AssemblyName>SharedClasses</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Npgsql, Version=4.1.14.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
<HintPath>..\packages\Npgsql.4.1.14\lib\net461\Npgsql.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Text.Encodings.Web, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.4.6.0\lib\netstandard2.0\System.Text.Encodings.Web.dll</HintPath>
</Reference>
<Reference Include="System.Text.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Json.4.6.0\lib\net461\System.Text.Json.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Artikel.cs" />
<Compile Include="AuftragArtikel.cs" />
<Compile Include="DatenbankConnection.cs" />
<Compile Include="Kunde.cs" />
<Compile Include="KundeArtikel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Umsatz.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

27
SharedClasses/app.config Normal file
View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.0" targetFramework="net48" />
<package id="Npgsql" version="4.1.14" targetFramework="net48" />
<package id="System.Buffers" version="4.5.0" targetFramework="net48" />
<package id="System.Memory" version="4.5.3" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.6.0" targetFramework="net48" />
<package id="System.Text.Encodings.Web" version="4.6.0" targetFramework="net48" />
<package id="System.Text.Json" version="4.6.0" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net48" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
</packages>

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Buildnummer
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.0.2")]
[assembly: AssemblyFileVersion("1.0.0.2")]

View File

@ -18,5 +18,6 @@ namespace TrelloIntegration
public string ShortUrl { get; set; }
public DateTime? DueDate { get; set; }
public DateTime? StartDate { get; set; }
public string IdBoard { get; set; }
}
}

View File

@ -10,7 +10,7 @@ namespace TrelloIntegration
{
/// <summary>
/// Trello-Karten-Client für WinForms-Anwendungen (.NET Framework 4.8, C# 7.3)
/// Erstellt Karten via Trello REST API über HttpClient.
/// Erstellt und abruft Karten via Trello REST API über HttpClient.
/// </summary>
public class TrelloCardClient : IDisposable
{
@ -34,11 +34,13 @@ namespace TrelloIntegration
};
}
// ========================================================================
// BESTEHENDE METHODE: Karte erstellen
// ========================================================================
/// <summary>
/// Erstellt eine neue Trello-Karte asynchron und gibt die Roh-JSON-Antwort zurück.
/// </summary>
/// <param name="options">Konfiguration der Karte (Name, Liste, Beschreibung, Labels, DueDate, StartDate)</param>
/// <returns>Antwort-JSON als String (enthaltend die erstellte Karte)</returns>
public async Task<string> CreateCardAsync(CreateCardOptions options)
{
ValidateOptions(options);
@ -89,10 +91,182 @@ namespace TrelloIntegration
return ParseTrelloCard(json);
}
// ========================================================================
// NEUE METHODE: Karten aus Liste abrufen & nach Fälligkeitsdatum filteren
// ========================================================================
/// <summary>
/// Abrufen aller Karten aus einer Liste und Filterung nach Fälligkeitsdatum.
/// GET-Anfrage statt Webhook.
/// </summary>
/// <param name="listId">Die ID der Trello-Liste</param>
/// <param name="targetDueDate">Das gesuchte Fälligkeitsdatum (wird genau verglichen)</param>
/// <param name="includeClosed">Ob geschlossene Karten eingeschlossen werden (optional, default: false)</param>
/// <returns>Liste von TrelloCard-Objekten, die dem Fälligkeitsdatum entsprechen</returns>
public async Task<List<TrelloCard>> GetCardsByDueDateAsync(
string listId,
DateTime targetDueDate,
bool includeClosed = false)
{
if (string.IsNullOrWhiteSpace(listId))
throw new ArgumentNullException(nameof(listId));
// GET-Request: Alle Karten aus der Liste abrufen
var values = new Dictionary<string, string>
{
["key"] = _apiKey,
["token"] = _token
};
// Optional: geschlossene Karten einschließen
if (includeClosed)
values["closed"] = "true";
var url = $"lists/{listId}/cards?key={_apiKey}&token={_token}";
// Ergänzeclosed-Parameter falls benötigt
if (includeClosed)
url += "&closed=true";
var response = await _httpClient.GetAsync(url);
var jsonResponse = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
throw new HttpRequestException(
$"Trello API Fehler {response.StatusCode}: {jsonResponse}");
}
// JSON parsen (Array von Karten)
var cards = ParseCardsArray(jsonResponse);
// Nach Fälligkeitsdatum filtern
var filteredCards = cards.Where(c =>
c.DueDate != null &&
c.DueDate.Value.Date == targetDueDate.Date
).ToList();
return filteredCards;
}
/// <summary>
/// Abrufen aller Karten aus einer Liste (ohne Fälligkeitsdatum-Filter).
/// </summary>
/// <param name="listId">Die ID der Trello-Liste</param>
/// <param name="includeClosed">Ob geschlossene Karten eingeschlossen werden</param>
/// <returns>Liste von allen TrelloCard-Objekten in der Liste</returns>
public async Task<List<TrelloCard>> GetCardsFromListAsync(
string listId,
bool includeClosed = false)
{
if (string.IsNullOrWhiteSpace(listId))
throw new ArgumentNullException(nameof(listId));
var url = $"lists/{listId}/cards?key={_apiKey}&token={_token}";
if (includeClosed)
url += "&closed=true";
var response = await _httpClient.GetAsync(url);
var jsonResponse = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
throw new HttpRequestException(
$"Trello API Fehler {response.StatusCode}: {jsonResponse}");
}
return ParseCardsArray(jsonResponse);
}
/// <summary>
/// JSON-Array von Karten parsen (mehrere Karten).
/// </summary>
private List<TrelloCard> ParseCardsArray(string json)
{
var cards = new List<TrelloCard>();
// Einfachster Parser für JSON-Array: [{"id":"...", "name":"..."}, {...}]
// Entfernung der äußeren [ ]
json = json.Trim();
if (json.StartsWith("[") && json.EndsWith("]"))
json = json.Substring(1, json.Length - 2);
if (string.IsNullOrWhiteSpace(json))
return cards;
// Jede Karte durch {" "} trennen (einfache Division)
var cardStrings = SplitJsonArray(json);
foreach (var cardJson in cardStrings)
{
if (!string.IsNullOrWhiteSpace(cardJson))
{
cards.Add(ParseTrelloCard(cardJson));
}
}
return cards;
}
/// <summary>
/// JSON-Array in einzelne Objekte teilen.
/// </summary>
private List<string> SplitJsonArray(string json)
{
var result = new List<string>();
var current = new StringBuilder();
var inString = false;
var depth = 0;
for (int i = 0; i < json.Length; i++)
{
var ch = json[i];
if (ch == '"' && (i == 0 || json[i - 1] != '\\'))
inString = !inString;
if (!inString)
{
if (ch == '{')
{
depth++;
if (depth == 1)
current.Clear();
}
else if (ch == '}')
{
depth--;
if (depth == 0)
{
current.Append(ch);
result.Add(current.ToString());
current.Clear();
continue;
}
}
else if (ch == ',' && depth == 0)
{
continue; // Array-Trenner überspringen
}
}
if (depth >= 1)
current.Append(ch);
}
return result;
}
// ========================================================================
// BESTEHENDE HELPER-METHODEN (unverändert)
// ========================================================================
/// <summary>
/// Minimaler Parser ohne System.Text.Json (für .NET Framework 4.8)
/// </summary>
private static TrelloCard ParseTrelloCard(string json)
{
// Minimaler Parser ohne System.Text.Json (für .NET Framework 4.8)
// Extrahiert die wichtigsten Felder aus der JSON-Antwort
var card = new TrelloCard();
card.Id = ExtractJsonValue(json, "id");
@ -100,36 +274,154 @@ namespace TrelloIntegration
card.Desc = ExtractJsonValue(json, "desc");
card.IdList = ExtractJsonValue(json, "idList");
card.ShortUrl = ExtractJsonValue(json, "shortUrl");
card.IdBoard = ExtractJsonValue(json, "idBoard");
var due = ExtractJsonValue(json, "due");
if (!string.IsNullOrWhiteSpace(due))
if (DateTime.TryParse(due, out var dtDue)) card.DueDate = dtDue;
else card.DueDate = null;
{
if (DateTime.TryParse(due, out var dtDue))
card.DueDate = dtDue;
else
card.DueDate = null;
}
var start = ExtractJsonValue(json, "start");
if (!string.IsNullOrWhiteSpace(start))
if (DateTime.TryParse(start, out var dtStart)) card.StartDate = dtStart;
else card.StartDate = null;
{
if (DateTime.TryParse(start, out var dtStart))
card.StartDate = dtStart;
else
card.StartDate = null;
}
return card;
}
private static string ExtractJsonValue(string json, string key)
{
// Einfacher JSON-String-Extractor für "key": "value"
var pattern = "\"" + key + "\"\\s*:\\s*\"";
var startIndex = json.IndexOf(pattern, StringComparison.Ordinal);
if (startIndex < 0)
return null;
// Suche nach "\"key\":" auf oberster Ebene (nicht in nested Objekten)
var searchKey = "\"" + key + "\"";
var startIndex = 0;
startIndex += pattern.Length;
var endIndex = json.IndexOf("\"", startIndex);
if (endIndex < 0)
return null;
while (startIndex < json.Length)
{
// Finde nächstes "\"key\""
var keyIndex = json.IndexOf(searchKey, startIndex, StringComparison.Ordinal);
if (keyIndex < 0)
return null;
return json.Substring(startIndex, endIndex - startIndex);
// Prüfen ob direkt danach ":" folgt (evtl. mit Whitespace)
var afterKey = keyIndex + searchKey.Length;
// Muss innerhalb des JSON sein
if (afterKey >= json.Length)
return null;
// Whitespace überspringen
while (afterKey < json.Length && char.IsWhiteSpace(json[afterKey]))
afterKey++;
if (afterKey >= json.Length)
return null;
// Prüfen ob ":" folgt
if (json[afterKey] == ':')
{
// WICHTIG: Prüfen ob wir in einem nested Objekt sind (labels, badges, etc.)
// Wir müssen die Tiefe zählen von Anfang des JSON
var depth = CalculateDepth(json, keyIndex);
// Nur oberste Ebene (depth == 1, weil wir bei "{" beginnen)
if (depth == 1)
{
// Wert extrahieren
afterKey++; // Nach ":"
// Whitespace überspringen
while (afterKey < json.Length && char.IsWhiteSpace(json[afterKey]))
afterKey++;
if (afterKey >= json.Length)
return null;
// null prüfen
if (json[afterKey] == 'n' && json.Substring(afterKey, 4) == "null")
return null;
// String mit "
if (json[afterKey] == '"')
{
afterKey++; // Erstes " überspringen
var endIndex = afterKey;
while (endIndex < json.Length)
{
if (json[endIndex] == '"' && (endIndex == 0 || json[endIndex - 1] != '\\'))
break;
endIndex++;
}
if (endIndex >= json.Length)
return null;
return json.Substring(afterKey, endIndex - afterKey);
}
// Andere Werte
var endPos = afterKey;
while (endPos < json.Length && !IsDelimiter(json[endPos]))
endPos++;
return json.Substring(afterKey, endPos - afterKey).Trim();
}
}
// Weiter suchen (nächstes occurrences)
startIndex = keyIndex + 1;
}
return null;
}
/// <summary>
/// Berechnet die Tiefe (depth) an einer bestimmten Position im JSON
/// depth = Anzahl der offenen "{" vor dieser Position
/// </summary>
private static int CalculateDepth(string json, int position)
{
var depth = 0;
var inString = false;
for (int i = 0; i < position && i < json.Length; i++)
{
var ch = json[i];
if (ch == '\\' && i + 1 < json.Length)
{
i++; // Escape char überspringen
continue;
}
if (ch == '"')
inString = !inString;
if (!inString)
{
if (ch == '{')
depth++;
else if (ch == '}')
depth--;
}
}
return depth;
}
private static bool IsDelimiter(char ch)
{
return ch == ',' || ch == '}' || ch == ']' || ch == ' ' ||
ch == '\n' || ch == '\r' || ch == '\t';
}
private void ValidateOptions(CreateCardOptions options)
{
if (options == null)
@ -142,12 +434,9 @@ namespace TrelloIntegration
throw new ArgumentException("IdList ist erforderlich.", nameof(options.IdList));
}
/// <summary>
/// Gibt die Ressourcen des Clients frei (empiohlen).
/// </summary>
public void Dispose()
{
_httpClient?.Dispose();
}
}
}
}

View File

@ -78,6 +78,7 @@ namespace TrelloIntegration
var encryptedKey = Encrypt(apiKey);
var encryptedToken = Encrypt(token);
//TODO: Key und Token in der DB speichern. Dazu eine settings-Tabelle erstellen mit ID/Bezeichnung/Wert int/string/string
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove("TrelloApiKeyEncrypted");
config.AppSettings.Settings.Add("TrelloApiKeyEncrypted", encryptedKey);
@ -134,5 +135,6 @@ namespace TrelloIntegration
var token = System.Configuration.ConfigurationManager.AppSettings["TrelloTokenEncrypted"];
return !string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(token);
}
}
}

View File

@ -82,7 +82,8 @@ namespace Deckungsbeitrag.UserControls
Infos = AuftragInfo.LadeInfos(this.auftrag);
foreach (AuftragInfo aufinfo in Infos)
{
info = $"{aufinfo.Datum} {aufinfo.Bezeichnung.ToUpper()} von {aufinfo.AlterWert} zu {aufinfo.NeuerWert}";
if (aufinfo.Bezeichnung == "abteilungen_status") info = $"{aufinfo.Client} hat am {aufinfo.Datum} {aufinfo.AbtStatus}";
else info = $"{aufinfo.Client} hat am {aufinfo.Datum} {aufinfo.Bezeichnung.ToUpper()} von {aufinfo.AlterWert} zu {aufinfo.NeuerWert}";
infoListe.Add(info);
i++;

View File

@ -248,9 +248,32 @@ namespace Deckungsbeitrag.UserControls
return "❌"; // Status 0 ✓
};
var colSpannleintuch = new OLVColumn("Spannleintuch", "Spannleintuch")
{
Text = "SPLT",
DisplayIndex = 9,
TextAlign = HorizontalAlignment.Center,
CheckBoxes = false,
TriStateCheckBoxes = false,
Width = 50,
AspectGetter = row =>
{
var auftrag = (Auftrag)row;
int abteilungen = (int)auftrag.Abteilungen;
bool begonnen = (abteilungen & (int)AbteilungsStatus.SpannleintuchBegonnen) != 0;
bool beendet = (abteilungen & (int)AbteilungsStatus.SpannleintuchBeendet) != 0;
if (beendet) return "✅"; // Status 1 ✓
if (begonnen) return "⭕"; // Status 2 ✓
return "❌"; // Status 0 ✓
}
};
this.objectListViewAuftrag.AllColumns.Add(colFrottee);
this.objectListViewAuftrag.AllColumns.Add(colKleinteile);
this.objectListViewAuftrag.AllColumns.Add(colGrosseTeile);
this.objectListViewAuftrag.AllColumns.Add(colSpannleintuch);
foreach (OLVColumn col in this.objectListViewAuftrag.AllColumns)
{

View File

@ -175,6 +175,24 @@
<Compile Include="AA-Forms\FormAuftragAuswahl.Designer.cs">
<DependentUpon>FormAuftragAuswahl.cs</DependentUpon>
</Compile>
<Compile Include="AA-Forms\FormGeschaeftKndAuswahl.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AA-Forms\FormGeschaeftKndAuswahl.Designer.cs">
<DependentUpon>FormGeschaeftKndAuswahl.cs</DependentUpon>
</Compile>
<Compile Include="AA-Forms\FormGeschaeftMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AA-Forms\FormGeschaeftMain.Designer.cs">
<DependentUpon>FormGeschaeftMain.cs</DependentUpon>
</Compile>
<Compile Include="AA-Forms\FormMSAuswahl.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AA-Forms\FormMSAuswahl.Designer.cs">
<DependentUpon>FormMSAuswahl.cs</DependentUpon>
</Compile>
<Compile Include="AA-Forms\FormOnBoarding.cs">
<SubType>Form</SubType>
</Compile>
@ -217,6 +235,7 @@
<Compile Include="AA-Klassen\DatenbankConnection.cs" />
<Compile Include="AA-Klassen\Fach.cs" />
<Compile Include="AA-Klassen\FahrerAuftrag.cs" />
<Compile Include="AA-Klassen\Kunde.cs" />
<Compile Include="AA-Klassen\Lieferrhythmus.cs" />
<Compile Include="AA-Klassen\Meldungen.cs" />
<Compile Include="AA-Forms\FormArtikelVW.cs">
@ -324,7 +343,6 @@
<Compile Include="AA-Klassen\Funktionen.cs" />
<Compile Include="AA-Klassen\Help.cs" />
<Compile Include="AA-Klassen\Kosten.cs" />
<Compile Include="AA-Klassen\Kunde.cs" />
<Compile Include="AA-Klassen\KundeArtikel.cs" />
<Compile Include="AA-Klassen\LoginException.cs" />
<Compile Include="AA-Klassen\Maschine.cs" />
@ -353,6 +371,7 @@
<Compile Include="AA-Klassen\Saison.cs" />
<Compile Include="AA-Klassen\TouchScroll.cs" />
<Compile Include="AA-Klassen\Tour.cs" />
<Compile Include="AA-Klassen\Umsatz.cs" />
<Compile Include="AA-Klassen\WSFach.cs" />
<Compile Include="Config.cs" />
<Compile Include="Program.cs" />
@ -413,7 +432,6 @@
<Compile Include="UserControls\UCAuftrag.Designer.cs">
<DependentUpon>UCAuftrag.cs</DependentUpon>
</Compile>
<Compile Include="AA-Klassen\Umsatz.cs" />
<Compile Include="AA-Klassen\Views.cs" />
<Compile Include="AA-Klassen\WProgramm.cs" />
<Compile Include="UserControls\UCFach.cs">
@ -450,6 +468,15 @@
<EmbeddedResource Include="AA-Forms\FormAuftragAuswahl.resx">
<DependentUpon>FormAuftragAuswahl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="AA-Forms\FormGeschaeftKndAuswahl.resx">
<DependentUpon>FormGeschaeftKndAuswahl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="AA-Forms\FormGeschaeftMain.resx">
<DependentUpon>FormGeschaeftMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="AA-Forms\FormMSAuswahl.resx">
<DependentUpon>FormMSAuswahl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="AA-Forms\FormOnBoarding.resx">
<DependentUpon>FormOnBoarding.cs</DependentUpon>
</EmbeddedResource>

View File

@ -1,15 +1,15 @@
=====================================
NEUIGKEITEN - Version 1.1.5.7
NEUIGKEITEN - Version 1.1.7.0
=====================================
Build-Info:
- Build-Typ: Release Build
- Erledigte TODOs: 10
- Offene TODOs: 22
- Offene TODOs: 26
- Install-Reminders: 0
- Changes: 32
- Changes: 33
=== ✨ CHANGES (32) ===
=== ✨ CHANGES (33) ===
## ArtikelVW.cs ##
- ✨ Reklamation als Spalte hinzugefügt und Anzeigen implementiert. Sowohl bei KundeArtikel als auch bei NW_Artikel.
@ -48,6 +48,7 @@ Build-Info:
## Settings.Designer.cs ##
- ✨ to this file may cause incorrect behavior and will be lost if
- ✨ to this file may cause incorrect behavior and will be lost if
## Tourenplanung.cs ##
@ -72,5 +73,5 @@ Build-Info:
Keine Install-Reminder vorhanden ✅
Installation: 12.06.2026 14:22
Installation: 23.06.2026 11:26
=====================================

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Buildnummer
// Revision
//
[assembly: AssemblyVersion("1.0.2.1")]
[assembly: AssemblyFileVersion("1.0.2.1")]
[assembly: AssemblyVersion("1.0.2.5")]
[assembly: AssemblyFileVersion("1.0.2.5")]

View File

@ -28,10 +28,17 @@
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.SuspendLayout();
//
// QwertzKeyboard
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "QwertzKeyboard";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion

View File

@ -14,6 +14,8 @@ namespace VirtualKeyboard
{
public partial class QwertzKeyboard : Form
{
public event EventHandler KeyBoardShown;
public event EventHandler KeyBoardClosed;
private TextBox targetTextBox;
//private Button okBtn;
private bool isNumeric = false;
@ -48,7 +50,8 @@ namespace VirtualKeyboard
if (numeric == "isCalc")
{
isCalc = true;
numpadLayout = new string[] {"⌫/*-","789+","456","123↵","0,"};
numpadLayout = new string[] { "⌫/*-", "789+", "456", "123↵", "_0," };
numkeys = new Button[5][] { new Button[4], new Button[4], new Button[4], new Button[4], new Button[4] };
InitializeNumPad();
}
if (numeric == "isAlpha")
@ -103,12 +106,11 @@ namespace VirtualKeyboard
// OK-Button rechts unten (NumPad-Enter-Stil)
continue;
}
if (ch == '+') { btnHeight = btnHeight * 2 + spacing; }
Button btn = new Button
{
Text = ch.ToString(),
Tag = ch,
Size = new Size(btnWidth, btnHeight),
Size = ch == '+' ? new Size(btnWidth, btnHeight * 2 + spacing) : new Size(btnWidth, btnHeight),
Location = new Point(xBase, y),
Font = new Font("Arial", 18, FontStyle.Bold),
BackColor = Color.FromArgb(240, 240, 240),
@ -206,6 +208,7 @@ namespace VirtualKeyboard
private void OK_Click(object sender, EventArgs e)
{
KeyBoardClosed?.Invoke(this, EventArgs.Empty);
this.Close();
}
private void Tab_Click(object sender, EventArgs e)
@ -232,6 +235,9 @@ namespace VirtualKeyboard
case var t when t == "Leertaste":
targetTextBox.Text += " ";
break;
case var t when t == "_":
targetTextBox.Text += " ";
break;
default: targetTextBox.Text += btn.Text;
break;
}
@ -271,6 +277,8 @@ namespace VirtualKeyboard
{
base.OnShown(e);
this.Location = new Point((screen.WorkingArea.Width - this.Width) / 2, screen.WorkingArea.Height - this.Height);
KeyBoardShown?.Invoke(this, EventArgs.Empty);
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -63,6 +63,9 @@
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<EmbeddedResource Include="QwertzKeyboard.resx">
<DependentUpon>QwertzKeyboard.cs</DependentUpon>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>