Reklamation erstellt jetzt ein Etikett. Die Berechnung des Bestandes wurde überarbeitet. Etwas Code-Kosmetik wurde gemacht.

This commit is contained in:
Kilian Wirl 2026-05-05 13:44:15 +02:00
parent 624e157edd
commit a78cd3dc32
22 changed files with 614 additions and 638 deletions

View File

@ -36,7 +36,7 @@ namespace Deckungsbeitrag.AA_Forms
private void TextBoxText_Click(object sender, EventArgs e) private void TextBoxText_Click(object sender, EventArgs e)
{ {
this.textBoxText.Clear(); this.textBoxText.Clear();
if (TouchHelper.IsTouchDeviceReady()) if (Program.istTouch && !Program.hatTastatur)
{ {
if (keyboard == null || keyboard.IsDisposed) if (keyboard == null || keyboard.IsDisposed)
{ {

View File

@ -99,7 +99,7 @@
this.buttonFertig.TabIndex = 14; this.buttonFertig.TabIndex = 14;
this.buttonFertig.Text = "Speichern/Abschließen"; this.buttonFertig.Text = "Speichern/Abschließen";
this.buttonFertig.UseVisualStyleBackColor = false; this.buttonFertig.UseVisualStyleBackColor = false;
this.buttonFertig.Click += new System.EventHandler(this.buttonFertig_Click); this.buttonFertig.Click += new System.EventHandler(this.ButtonFertig_Click);
// //
// buttonAbbrechen // buttonAbbrechen
// //
@ -116,7 +116,7 @@
this.buttonAbbrechen.TabIndex = 0; this.buttonAbbrechen.TabIndex = 0;
this.buttonAbbrechen.Text = "Abbrechen"; this.buttonAbbrechen.Text = "Abbrechen";
this.buttonAbbrechen.UseVisualStyleBackColor = false; this.buttonAbbrechen.UseVisualStyleBackColor = false;
this.buttonAbbrechen.Click += new System.EventHandler(this.buttonAbbrechen_Click); this.buttonAbbrechen.Click += new System.EventHandler(this.ButtonAbbrechen_Click);
// //
// labelRegion // labelRegion
// //
@ -201,7 +201,7 @@
this.labelContainer.TabIndex = 28; this.labelContainer.TabIndex = 28;
this.labelContainer.Text = "0"; this.labelContainer.Text = "0";
this.labelContainer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.labelContainer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.labelContainer.TextChanged += new System.EventHandler(this.labelContainer_TextChanged); this.labelContainer.TextChanged += new System.EventHandler(this.LabelContainer_TextChanged);
// //
// label5 // label5
// //
@ -256,7 +256,7 @@
this.comboBoxPriority.Name = "comboBoxPriority"; this.comboBoxPriority.Name = "comboBoxPriority";
this.comboBoxPriority.Size = new System.Drawing.Size(348, 37); this.comboBoxPriority.Size = new System.Drawing.Size(348, 37);
this.comboBoxPriority.TabIndex = 41; this.comboBoxPriority.TabIndex = 41;
this.comboBoxPriority.SelectedValueChanged += new System.EventHandler(this.comboBox_SelectedValueChanged); this.comboBoxPriority.SelectedValueChanged += new System.EventHandler(this.ComboBox_SelectedValueChanged);
// //
// comboBoxFahrer // comboBoxFahrer
// //
@ -267,7 +267,7 @@
this.comboBoxFahrer.Name = "comboBoxFahrer"; this.comboBoxFahrer.Name = "comboBoxFahrer";
this.comboBoxFahrer.Size = new System.Drawing.Size(348, 37); this.comboBoxFahrer.Size = new System.Drawing.Size(348, 37);
this.comboBoxFahrer.TabIndex = 42; this.comboBoxFahrer.TabIndex = 42;
this.comboBoxFahrer.SelectedValueChanged += new System.EventHandler(this.comboBox_SelectedValueChanged); this.comboBoxFahrer.SelectedValueChanged += new System.EventHandler(this.ComboBox_SelectedValueChanged);
// //
// pictureBoxDirtMinus // pictureBoxDirtMinus
// //
@ -362,11 +362,9 @@
this.oLVArtikel.UseCompatibleStateImageBehavior = false; this.oLVArtikel.UseCompatibleStateImageBehavior = false;
this.oLVArtikel.UseSubItemCheckBoxes = true; this.oLVArtikel.UseSubItemCheckBoxes = true;
this.oLVArtikel.View = System.Windows.Forms.View.Details; this.oLVArtikel.View = System.Windows.Forms.View.Details;
this.oLVArtikel.CellEditFinished += new BrightIdeasSoftware.CellEditEventHandler(this.oLVArtikel_CellEditFinished); this.oLVArtikel.CellEditFinished += new BrightIdeasSoftware.CellEditEventHandler(this.OLVArtikel_CellEditFinished);
this.oLVArtikel.CellEditStarting += new BrightIdeasSoftware.CellEditEventHandler(this.oLVArtikel_CellEditStarting); this.oLVArtikel.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.OLVArtikel_ItemChecked);
this.oLVArtikel.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.OLVArtikel_ItemCheck); this.oLVArtikel.SizeChanged += new System.EventHandler(this.OLVArtikel_SizeChanged);
this.oLVArtikel.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.oLVArtikel_ItemChecked);
this.oLVArtikel.SizeChanged += new System.EventHandler(this.oLVArtikel_SizeChanged);
// //
// FormAuftragDetail // FormAuftragDetail
// //

View File

@ -72,7 +72,7 @@ namespace Deckungsbeitrag
{ {
InitializeComponent(); InitializeComponent();
//this.BackColor = Properties.Settings.Default.Wirlblau; //this.BackColor = Properties.Settings.Default.Wirlblau;
labelContainer_TextChanged(this.labelContainer, EventArgs.Empty); LabelContainer_TextChanged(this.labelContainer, EventArgs.Empty);
} }
public FormAuftragDetail(Auftrag auftrag, Benutzer benutzer) : this() public FormAuftragDetail(Auftrag auftrag, Benutzer benutzer) : this()
@ -99,8 +99,8 @@ namespace Deckungsbeitrag
this.comboBoxPriority.SelectedItem = auftrag.Priority; this.comboBoxPriority.SelectedItem = auftrag.Priority;
// Events nach dem Laden der Daten wieder den ComboBoxen zuweisen. // Events nach dem Laden der Daten wieder den ComboBoxen zuweisen.
this.comboBoxPriority.SelectedValueChanged += comboBox_SelectedValueChanged; this.comboBoxPriority.SelectedValueChanged += ComboBox_SelectedValueChanged;
this.comboBoxFahrer.SelectedValueChanged += comboBox_SelectedValueChanged; this.comboBoxFahrer.SelectedValueChanged += ComboBox_SelectedValueChanged;
if (this.auftrag.Typ != AuftragTyp.Inventur || (this.auftrag.Typ == AuftragTyp.Inventur & this.auftrag.Status == AuftragStatus.Herrichten)) Load_OLV(); if (this.auftrag.Typ != AuftragTyp.Inventur || (this.auftrag.Typ == AuftragTyp.Inventur & this.auftrag.Status == AuftragStatus.Herrichten)) Load_OLV();
else else
@ -161,13 +161,13 @@ namespace Deckungsbeitrag
this.oLVArtikel = Funktionen.Columns_Resize(null, this.oLVArtikel).olv; this.oLVArtikel = Funktionen.Columns_Resize(null, this.oLVArtikel).olv;
// Wenn alle Artikel Checked sind TOCLOSE auslösen. // Wenn alle Artikel Checked sind TOCLOSE auslösen.
oLVArtikel_ItemChecked(this.oLVArtikel, null); OLVArtikel_ItemChecked(this.oLVArtikel, null);
} }
private void LadeComboBoxen() private void LadeComboBoxen()
{ {
this.comboBoxFahrer.SelectedValueChanged -= comboBox_SelectedValueChanged; this.comboBoxFahrer.SelectedValueChanged -= ComboBox_SelectedValueChanged;
this.comboBoxPriority.SelectedValueChanged -= comboBox_SelectedValueChanged; this.comboBoxPriority.SelectedValueChanged -= ComboBox_SelectedValueChanged;
List<Benutzer> benutzerliste = Benutzer.GetFahrerList(); List<Benutzer> benutzerliste = Benutzer.GetFahrerList();
this.comboBoxFahrer.DataSource = benutzerliste; this.comboBoxFahrer.DataSource = benutzerliste;
@ -175,11 +175,11 @@ namespace Deckungsbeitrag
this.comboBoxPriority.DataSource = Enum.GetValues(typeof(Priority)); this.comboBoxPriority.DataSource = Enum.GetValues(typeof(Priority));
} }
private void comboBox_SelectedValueChanged(object sender, EventArgs e) private void ComboBox_SelectedValueChanged(object sender, EventArgs e)
{ {
Tosave = true; Tosave = true;
} }
private void labelContainer_TextChanged(object sender, EventArgs e) private void LabelContainer_TextChanged(object sender, EventArgs e)
{ {
if (this.labelContainer.Text == "0") { this.pictureBoxMinus.Enabled = this.pictureBoxDirtMinus.Enabled = false; this.pictureBoxMinus.BackColor = this.pictureBoxDirtMinus.BackColor = Color.Gray; } if (this.labelContainer.Text == "0") { this.pictureBoxMinus.Enabled = this.pictureBoxDirtMinus.Enabled = false; this.pictureBoxMinus.BackColor = this.pictureBoxDirtMinus.BackColor = Color.Gray; }
else { this.pictureBoxMinus.Enabled = this.pictureBoxDirtMinus.Enabled = true; this.pictureBoxMinus.BackColor = this.pictureBoxDirtMinus.BackColor = Color.Red; } else { this.pictureBoxMinus.Enabled = this.pictureBoxDirtMinus.Enabled = true; this.pictureBoxMinus.BackColor = this.pictureBoxDirtMinus.BackColor = Color.Red; }
@ -196,7 +196,7 @@ namespace Deckungsbeitrag
auftrag.ZusatzInfo = this.textBoxZusatz.Text; auftrag.ZusatzInfo = this.textBoxZusatz.Text;
auftrag.Save(); auftrag.Save();
if (auftrag.Typ == AuftragTyp.Regelmäßig || (auftrag.Typ == AuftragTyp.Inventur & auftrag.Status == AuftragStatus.Herrichten)) if (auftrag.Typ <= AuftragTyp.Regelmäßig && (auftrag.Typ >= AuftragTyp.Inventur) && auftrag.Status == AuftragStatus.Herrichten)
{ {
foreach (var kvp in auftragDictionary) foreach (var kvp in auftragDictionary)
{ {
@ -207,14 +207,6 @@ namespace Deckungsbeitrag
aufart.Save(); aufart.Save();
} }
//foreach (OLVListItem item in this.oLVArtikel.Items)
//{
// AuftragArtikel art = (AuftragArtikel)item.RowObject;
// if (item.Checked) art.Erledigt = true;
// else art.Erledigt = false;
// art.Save();
//}
if (auftrag.Typ == AuftragTyp.Inventur) if (auftrag.Typ == AuftragTyp.Inventur)
{ {
foreach (var kvp in dictionary) foreach (var kvp in dictionary)
@ -254,7 +246,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 (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, dictionary) == DialogResult.OK) if (Funktionen.SonderEtikett_Drucken(this.auftrag.KundeID, dictionary) == DialogResult.OK)
{ {
etikettgedruckt = true; etikettgedruckt = true;
} }
@ -310,7 +302,7 @@ namespace Deckungsbeitrag
#region Button-Click #region Button-Click
//AUFTRAG ABBRECHEN //AUFTRAG ABBRECHEN
private void buttonAbbrechen_Click(object sender, EventArgs e) private void ButtonAbbrechen_Click(object sender, EventArgs e)
{ {
//if (_tosave) //if (_tosave)
//{ //{
@ -332,7 +324,7 @@ namespace Deckungsbeitrag
} }
//AUFTRAG ABSCHLIESSEN //AUFTRAG ABSCHLIESSEN
private void buttonFertig_Click(object sender, EventArgs e) private void ButtonFertig_Click(object sender, EventArgs e)
{ {
EtikettDrucken(); EtikettDrucken();
if (Tosave && etikettgedruckt) AuftragSpeichern(); if (Tosave && etikettgedruckt) AuftragSpeichern();
@ -427,6 +419,7 @@ namespace Deckungsbeitrag
this.DialogResult = DialogResult.OK; this.DialogResult = DialogResult.OK;
this.Close(); this.Close();
} }
else this.Close();
} }
@ -435,16 +428,22 @@ namespace Deckungsbeitrag
/// <summary> /// <summary>
/// TOCLOSE /// TOCLOSE
/// </summary> /// </summary>
private void oLVArtikel_ItemChecked(object sender, ItemCheckedEventArgs e) private void OLVArtikel_ItemChecked(object sender, ItemCheckedEventArgs e)
{ {
ObjectListView olv = (ObjectListView)sender; ObjectListView olv = (ObjectListView)sender;
if (olv.Items.Count == olv.CheckedItems.Count) Toclose = true; if (e == null) return;
foreach(OLVListItem item in olv.CheckedItems) OLVListItem item = e.Item as OLVListItem;
{
AuftragArtikel auftragArtikel = (AuftragArtikel)item.RowObject; AuftragArtikel auftragArtikel = (AuftragArtikel)item.RowObject;
if (item.Checked)
{
auftragArtikel.Erledigt = true; auftragArtikel.Erledigt = true;
auftragArtikel.Save(); int oldValue = auftragArtikel.Anzahl;
int newValue = 0;
ChangeAnzahl(newValue, oldValue, auftragArtikel);
} }
else auftragArtikel.Erledigt = false;
if (olv.Items.Count == olv.CheckedItems.Count) Toclose = true;
} }
@ -556,29 +555,16 @@ namespace Deckungsbeitrag
//if (oLVArtikel != null) this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25); //if (oLVArtikel != null) this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25);
} }
private void ChangeAnzahl(int newValue, int oldvalue, AuftragArtikel auftragArtikel)
private void oLVArtikel_CellEditStarting(object sender, CellEditEventArgs e)
{ {
if (this.auftrag.Typ == AuftragTyp.SOLL_Verminderung) if (newValue > 0) newValue *= -1;
} diff = oldvalue - (newValue);
private void oLVArtikel_CellEditFinished(object sender, CellEditEventArgs e)
{
this.Cursor = Cursors.WaitCursor;
this.SuspendLayout();
ObjectListView olv = (ObjectListView)sender;
AuftragArtikel auftragArtikel = (AuftragArtikel)e.RowObject;
int newValue = (int)e.NewValue;
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 (diff != 0) Tosave = true;
if (auftragDictionary.TryGetValue((int)auftragArtikel.AuftragArtikelID, out int val)) if (auftragDictionary.TryGetValue((int)auftragArtikel.AuftragArtikelID, out int val))
{ {
val = newValue; auftragDictionary[(int)auftragArtikel.AuftragArtikelID] = newValue;
if (newValue == 0) e.ListViewItem.Checked = true; //if (newValue == 0) e.ListViewItem.Checked = true;
} }
else auftragDictionary.Add((int)auftragArtikel.AuftragArtikelID, newValue); else auftragDictionary.Add((int)auftragArtikel.AuftragArtikelID, newValue);
@ -602,24 +588,105 @@ namespace Deckungsbeitrag
this.ResumeLayout(); this.ResumeLayout();
this.Cursor = Cursors.Default; this.Cursor = Cursors.Default;
}
private void OLVArtikel_CellEditFinished(object sender, CellEditEventArgs e)
{
this.Cursor = Cursors.WaitCursor;
this.SuspendLayout();
ObjectListView olv = (ObjectListView)sender;
AuftragArtikel auftragArtikel = (AuftragArtikel)e.RowObject;
int newValue = (int)e.NewValue;
int oldValue = (int)e.Value;
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;
} }
public void KorrigiereBestand(int diff, ref int reklamation, ref int fehlmenge, ref int stand, ref int korrektur) public void KorrigiereBestand(int diff, ref int reklamation, ref int fehlmenge, ref int stand, ref int korrektur)
{ {
bestand = new int[4]; bestand = new int[4];
if (diff == 0) if (diff == 0)
return; return;
if (diff < 0 || this.auftrag.Typ == AuftragTyp.SOLL_Erhoehung) { bestand[2] = diff; stand += diff; return; }
int rest = diff * 1; switch (this.auftrag.Typ)
// 1) Reklamation nur korrigieren, wenn sie <= diff ist
if (reklamation > 0 && reklamation <= rest)
{ {
rest -= reklamation; case AuftragTyp.Inventur:
bestand[0] = reklamation; {
reklamation = 0; if (diff < 0) // Diff ist negativ
{
int korr = diff;
bestand[3] = korr;
korrektur -= korr;
}
else // Diff ist positiv
{
int korr = diff;
bestand[3] = korr;
korrektur -= korr;
}
}
break;
case AuftragTyp.SOLL_Erhoehung:
{
if (diff < 0) { MessageBox.Show("Eine SOLL-Erhöhung kann keine negative Zahl haben. Bitte korrigiere die Zahlen.", "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; }
bestand[2] = diff;
stand += diff;
}
break;
case AuftragTyp.IST_Erhoehung:
{
if (diff < 0) { MessageBox.Show("Eine IST-Erhöhung kann keine negative Zahl haben. Bitte korrigiere die Zahlen.", "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; }
goto default;
}
case AuftragTyp.SOLL_Verminderung:
{
if (diff > 0) { MessageBox.Show("Eine SOLL-Verminderung kann keine positiven Zahlen haben. Bitte korrigiere die Zahlen.", "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Stop ); return; }
bestand[2] = diff;
stand += diff;
}
break;
default:
{
int rest = diff;
// 1) Reklamation nur korrigieren, wenn sie <= diff ist
if (reklamation > 0)
{
int reduktion = Math.Min(reklamation, rest);
bestand[0] = reduktion;
reklamation -= reduktion;
rest -= reduktion;
} }
// 2) Fehlmenge korrigieren // 2) Fehlmenge korrigieren
if (fehlmenge > 0) if (fehlmenge > 0)
{ {
@ -628,33 +695,17 @@ namespace Deckungsbeitrag
fehlmenge -= abbau; fehlmenge -= abbau;
rest -= abbau; rest -= abbau;
} }
// 3) Rest auf Stand buchen
// 3) Inventurausgleich korrigieren
if (korrektur > 0)
{
int korr = Math.Min(korrektur, rest);
bestand[3] = korr;
korrektur -= korr;
rest -= korr;
}
// 4) Rest auf Stand buchen
if (rest > 0) if (rest > 0)
stand += rest; stand += rest;
bestand[2] = rest; bestand[2] = rest;
} }
private void oLVArtikel_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) break;
{
Tosave = true;
} }
private void FormAuftragDetail_Resize(object sender, EventArgs e)
{
if (fb != null) fb.Location = new Point(this.ClientSize.Width - fb.Width - 7, 0);
if (uci != null) this.ClientSize = new Size(uci.Right, uci.Bottom + buttonAbbrechen.Height + 25);
if (oLVArtikel != null) this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25);
} }
private void oLVArtikel_SizeChanged(object sender, EventArgs e) private void OLVArtikel_SizeChanged(object sender, EventArgs e)
{ {
this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25); this.ClientSize = new Size(oLVArtikel.Right + 10, oLVArtikel.Bottom + buttonAbbrechen.Height + 25);
} }
@ -678,3 +729,5 @@ namespace Deckungsbeitrag
//CHANGES: Bei Druckabbruch wird die geänderte Zahl NICHT zurückgesetzt. (Das muss händisch erfolgen) //CHANGES: Bei Druckabbruch wird die geänderte Zahl NICHT zurückgesetzt. (Das muss händisch erfolgen)
//CHANGES: Wenn die Zahlen zurückgesetzt werden sollen, muss AuftragDetail geschlossen werden. //CHANGES: Wenn die Zahlen zurückgesetzt werden sollen, muss AuftragDetail geschlossen werden.
//CHANGES: Wenn die reduzierte Anzahl bei SOLL-Verminderung nicht negativ ist, wird diese negativ gemacht. So wird ein möglicher Fehler ausgebessert. //CHANGES: Wenn die reduzierte Anzahl bei SOLL-Verminderung nicht negativ ist, wird diese negativ gemacht. So wird ein möglicher Fehler ausgebessert.
//CHANGES: Beim Speichern ohne Abschließen schließt sich das Fenster nach dem Speichern.
//CHANGES: Wenn ein Artikel vollständig hergerichtet wird, muss er nur abgehackt werden. Den Rest macht der Computer.

View File

@ -98,22 +98,6 @@ namespace Deckungsbeitrag
if (MessageBox.Show("Möchtest du die Einstellungen speichern?", "Frage", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; if (MessageBox.Show("Möchtest du die Einstellungen speichern?", "Frage", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
else else
{ {
//TODO: Hier Settings speichern mit UserSettingsManager Klasse.
//if (changed)
//{
// Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
// config.AppSettings.Settings.Remove("SortimentPfad");
// config.AppSettings.Settings.Add("SortimentPfad", this.textBoxSortiment.Text);
// config.AppSettings.Settings.Remove("BildPfad");
// config.AppSettings.Settings.Add("BildPfad", this.textBoxRatingbild.Text);
// config.Save();
//}
//if (this.checkBoxMaxWert.Checked) Settings.Default.MaxChecked = this.checkBoxMaxWert.Checked;
//if (this.checkBoxMinWert.Checked) Settings.Default.MinChecked = this.checkBoxMinWert.Checked;
//if (this.numUpDownMinWert.Enabled) Settings.Default.RatMin = (double)this.numUpDownMinWert.Value;
//if (this.numUpDownMaxWert.Enabled) Settings.Default.RatMax = (double)this.numUpDownMaxWert.Value;
if (this.comboBoxEtikettDrucker.SelectedItem != null) _settings.DruckerEtikett = this.comboBoxEtikettDrucker.SelectedItem.ToString(); if (this.comboBoxEtikettDrucker.SelectedItem != null) _settings.DruckerEtikett = this.comboBoxEtikettDrucker.SelectedItem.ToString();
if (this.comboBoxSWSDrucker.SelectedItem != null) { _settings.DruckerSWS = this.comboBoxSWSDrucker.SelectedItem.ToString(); _settings.CopiesSWS = this.numericUpDownSWSKopien.Value; } if (this.comboBoxSWSDrucker.SelectedItem != null) { _settings.DruckerSWS = this.comboBoxSWSDrucker.SelectedItem.ToString(); _settings.CopiesSWS = this.numericUpDownSWSKopien.Value; }
if (this.comboBoxTourenlisteDrucker.SelectedItem != null) _settings.DruckerTourenListe = this.comboBoxTourenlisteDrucker.ToString(); if (this.comboBoxTourenlisteDrucker.SelectedItem != null) _settings.DruckerTourenListe = this.comboBoxTourenlisteDrucker.ToString();

View File

@ -595,7 +595,7 @@ namespace Deckungsbeitrag
} }
break; break;
default: default:
if (_auftrag.Typ == AuftragTyp.Regelmäßig || _auftrag.Typ == AuftragTyp.SOLL_Erhoehung || _auftrag.Typ == AuftragTyp.SOLL_Verminderung || _auftrag.Typ == AuftragTyp.Inventur) if (_auftrag.Typ == AuftragTyp.Regelmäßig || _auftrag.Typ == AuftragTyp.SOLL_Erhoehung || _auftrag.Typ == AuftragTyp.SOLL_Verminderung || _auftrag.Typ == AuftragTyp.Inventur || _auftrag.Typ == AuftragTyp.IST_Erhoehung)
{ {
FormAuftragDetail auftragDetail = new FormAuftragDetail(_auftrag, this.benutzer); FormAuftragDetail auftragDetail = new FormAuftragDetail(_auftrag, this.benutzer);
if (auftragDetail.ShowDialog() == DialogResult.OK) if (auftragDetail.ShowDialog() == DialogResult.OK)
@ -1145,7 +1145,6 @@ namespace Deckungsbeitrag
/// </summary> /// </summary>
private void Auftrag_Fertig() private void Auftrag_Fertig()
{ {
//TODO: Auftrag richtig speichern... mit gedruckt bzw. erledigt bzw.
if (this.benutzer.Rolle == BenutzerRolle.Frottee) this.auftrag.Abteilungen |= AbteilungsStatus.FrotteeBeendet; if (this.benutzer.Rolle == BenutzerRolle.Frottee) this.auftrag.Abteilungen |= AbteilungsStatus.FrotteeBeendet;
else this.auftrag.Status = AuftragStatus.Fertig; else this.auftrag.Status = AuftragStatus.Fertig;
this.auftrag.Save(); this.auftrag.Save();

View File

@ -3,6 +3,7 @@ using DatenDB;
using Deckungsbeitrag.AA_Klassen; using Deckungsbeitrag.AA_Klassen;
using System; using System;
using System.CodeDom; using System.CodeDom;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Configuration; using System.Configuration;
@ -30,7 +31,8 @@ namespace Deckungsbeitrag
private List<object> auftragsliste; private List<object> auftragsliste;
private ArtikelKategorie kategorie; private ArtikelKategorie kategorie;
readonly string userid; readonly string userid;
private Dictionary<int, int> auftragDictionary = new Dictionary<int, int>();
private bool etikettgedruckt = false;
#region Form-Konstruktor #region Form-Konstruktor
public FormFehlmengeCount() public FormFehlmengeCount()
@ -158,7 +160,6 @@ namespace Deckungsbeitrag
foreach (Button btn in this.tableLayoutPanelArtikel.Controls) btn.Tag = btn.Text = null; foreach (Button btn in this.tableLayoutPanelArtikel.Controls) btn.Tag = btn.Text = null;
this.groupBoxArtikel.Visible = true; this.groupBoxArtikel.Visible = true;
this.tableLayoutPanelArtikel.Visible = true; this.tableLayoutPanelArtikel.Visible = true;
//TODO: Nach Test und Rücksprache eventuell wieder umbauen. Benutzer.Rolle etc.
// Buttons werden den Artikeln aus der Artikelliste zugewiesen. Unterschied zwischen Frotteewäsche, Spannleintüchern, Großteilen und Kleinteilen // Buttons werden den Artikeln aus der Artikelliste zugewiesen. Unterschied zwischen Frotteewäsche, Spannleintüchern, Großteilen und Kleinteilen
foreach (KundeArtikel artikel in artikelListe) foreach (KundeArtikel artikel in artikelListe)
{ {
@ -417,6 +418,9 @@ namespace Deckungsbeitrag
} }
if ((userid != null && userid.Contains("reklamation")) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Frottee)) if ((userid != null && userid.Contains("reklamation")) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Frottee))
{
EtikettDrucken();
if (etikettgedruckt)
{ {
DialogResult result = meldung.GetFrage(this, "Möchtest du eine weitere Reklamation eingeben?", false); DialogResult result = meldung.GetFrage(this, "Möchtest du eine weitere Reklamation eingeben?", false);
switch (result) switch (result)
@ -430,6 +434,8 @@ namespace Deckungsbeitrag
break; break;
} }
} }
else return;
}
else else
{ {
// AbteilungsStatus für Kleinteile und Großteile wird hier gesetzt. // AbteilungsStatus für Kleinteile und Großteile wird hier gesetzt.
@ -443,6 +449,16 @@ namespace Deckungsbeitrag
Open_Liste(); Open_Liste();
ControlLaden(); 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)
{
etikettgedruckt = true;
}
}
}
/// <summary> /// <summary>
/// Auftragliste aufrufen. /// Auftragliste aufrufen.
@ -537,7 +553,17 @@ namespace Deckungsbeitrag
}; };
} }
if ((userid != null && userid.Contains("reklamation")) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Frottee)) { kndart.Reklamation++; artnw.Reklamation++; } if ((userid != null && userid.Contains("reklamation")) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Expedit) || (this.benutzer != null && this.benutzer.Rolle == BenutzerRolle.Frottee))
{
artnw.Reklamation++;
kndart.Reklamation++;
if (auftragDictionary.TryGetValue((int)kndart.KundeArtikelID, out int val))
{
auftragDictionary[(int)kndart.KundeArtikelID] = kndart.Reklamation;
}
else auftragDictionary.Add((int)kndart.KundeArtikelID, kndart.Reklamation);
}
else { kndart.Fehlmenge++; artnw.Nachwaesche++; } else { kndart.Fehlmenge++; artnw.Nachwaesche++; }
// Wenn speichern nicht möglich, wird darauf hingewiesen. // Wenn speichern nicht möglich, wird darauf hingewiesen.

View File

@ -91,7 +91,6 @@ namespace Deckungsbeitrag
{ {
this.CenterToScreen(); this.CenterToScreen();
} }
private void ListViewKunde_Load() private void ListViewKunde_Load()
{ {
//LISTE LEEREN //LISTE LEEREN
@ -503,15 +502,13 @@ namespace Deckungsbeitrag
this.Close(); this.Close();
} }
} }
private void FormListe_FormClosing(object sender, FormClosingEventArgs e) private void FormListe_FormClosing(object sender, FormClosingEventArgs e)
{ {
if (keyboard != null) keyboard.Close(); if (keyboard != null) keyboard.Close();
} }
private void TextBoxKunde_Click(object sender, EventArgs e) private void TextBoxKunde_Click(object sender, EventArgs e)
{ {
if (TouchHelper.IsTouchDeviceReady()) if (Program.istTouch && !Program.hatTastatur)
{ {
if (keyboard == null || keyboard.IsDisposed) if (keyboard == null || keyboard.IsDisposed)
{ {

View File

@ -23,6 +23,7 @@ namespace Deckungsbeitrag
string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
private QwertzKeyboard keyboard; private QwertzKeyboard keyboard;
private OnboardingSchritt onBoardingArt; private OnboardingSchritt onBoardingArt;
public Benutzer Person { get; set; } public Benutzer Person { get; set; }
public FormLogin() public FormLogin()
@ -152,9 +153,10 @@ namespace Deckungsbeitrag
private void TextBoxBenutzer_Enter(object sender, EventArgs e) private void TextBoxBenutzer_Enter(object sender, EventArgs e)
{ {
this.textBoxBenutzer.SelectAll(); this.textBoxBenutzer.SelectAll();
if (TouchHelper.IsTouchDeviceReady()) if (Program.istTouch && !Program.hatTastatur)
{ {
if (keyboard == null || keyboard.IsDisposed) if (keyboard == null || keyboard.IsDisposed)
{ {
@ -173,7 +175,7 @@ namespace Deckungsbeitrag
private void TextBoxPasswort_Enter(object sender, EventArgs e) private void TextBoxPasswort_Enter(object sender, EventArgs e)
{ {
if (TouchHelper.IsTouchDeviceReady()) if (Program.istTouch && !Program.hatTastatur)
{ {
if (keyboard == null || keyboard.IsDisposed) if (keyboard == null || keyboard.IsDisposed)
{ {
@ -196,7 +198,7 @@ namespace Deckungsbeitrag
private void TextBoxPwdWh_Enter(object sender, EventArgs e) private void TextBoxPwdWh_Enter(object sender, EventArgs e)
{ {
if (TouchHelper.IsTouchDeviceReady()) if (Program.istTouch && !Program.hatTastatur)
{ {
if (keyboard == null || keyboard.IsDisposed) if (keyboard == null || keyboard.IsDisposed)
{ {

View File

@ -210,6 +210,7 @@ namespace Deckungsbeitrag
this.Name = "FormLogin"; this.Name = "FormLogin";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "LOGIN Version: "; this.Text = "LOGIN Version: ";
this.TopMost = true;
this.Load += new System.EventHandler(this.FormLogin_Load); this.Load += new System.EventHandler(this.FormLogin_Load);
this.Shown += new System.EventHandler(this.FormLogin_Shown); this.Shown += new System.EventHandler(this.FormLogin_Shown);
this.groupBox1.ResumeLayout(false); this.groupBox1.ResumeLayout(false);

View File

@ -320,10 +320,25 @@ namespace Deckungsbeitrag
this.Height = 470; this.Height = 470;
this.textBoxText.BringToFront(); this.textBoxText.BringToFront();
break; break;
case AuftragTyp.IST_Erhoehung:
if (this.kunde == null) return;
this.textBoxText.Visible = false;
this.panelRegAuftrag.Enabled = this.panelRegAuftrag.Visible = true;
this.pictureBoxPlus.Enabled = this.pictureBoxMinus.Enabled = this.textBoxCont.Enabled = false;
this.labelText.Text = "Rhythmus:";
this.Width = this.panelRegAuftrag.Right + 25;
this.Height = 470;
break;
default: default:
break; break;
} }
PanelRegAuftrag_EnabledChanged(this.panelRegAuftrag, null); if (this.panelRegAuftrag.Enabled == false)
{
this.pictureBoxPlus.Enabled = this.pictureBoxMinus.Enabled = this.textBoxCont.Enabled = true;
this.Width = textBoxKundeName.Right + 30;
this.Height = 470;
}
//PanelRegAuftrag_EnabledChanged(this.panelRegAuftrag, null);
} }
else else
{ {
@ -341,7 +356,7 @@ namespace Deckungsbeitrag
CustomInputBox inputBox = new CustomInputBox("Wieviel Stück sollen geliefert oder eingezogen werden?", "ARTIKELANZAHL", "Anzahl", "isNumeric"); CustomInputBox inputBox = new CustomInputBox("Wieviel Stück sollen geliefert oder eingezogen werden?", "ARTIKELANZAHL", "Anzahl", "isNumeric");
if (inputBox.ShowDialog() == DialogResult.OK) if (inputBox.ShowDialog() == DialogResult.OK)
{ {
anzahl = inputBox.text; artAnzahl = int.Parse(inputBox.text);
} }
else return; else return;
@ -408,6 +423,7 @@ namespace Deckungsbeitrag
{ {
MessageBox.Show("Auswahl für den gewählten Kunden nicht verfügbar.", "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show("Auswahl für den gewählten Kunden nicht verfügbar.", "FEHLER", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.comboBoxTyp.SelectedIndex = -1; this.comboBoxTyp.SelectedIndex = -1;
this.panelRegAuftrag.Enabled = false;
return; return;
} }
comboBoxArtikel.DataSource = kndartikel; comboBoxArtikel.DataSource = kndartikel;
@ -541,7 +557,7 @@ namespace Deckungsbeitrag
inputBox = new CustomInputBox("Wieviel Stück sollen geliefert oder eingezogen werden?", "ARTIKELANZAHL", "Anzahl", "isNumeric"); inputBox = new CustomInputBox("Wieviel Stück sollen geliefert oder eingezogen werden?", "ARTIKELANZAHL", "Anzahl", "isNumeric");
if (inputBox.ShowDialog() == DialogResult.OK) if (inputBox.ShowDialog() == DialogResult.OK)
{ {
anzahl = inputBox.text; artAnzahl = int.Parse(inputBox.text);
} }
else return; else return;
} }
@ -660,6 +676,7 @@ namespace Deckungsbeitrag
id = null; id = null;
artname = uca.ArtikelName.ToString(); artname = uca.ArtikelName.ToString();
} }
AuftragArtikel aufart = new AuftragArtikel() AuftragArtikel aufart = new AuftragArtikel()
{ {
AuftragID = Auftrag.AuftragID, AuftragID = Auftrag.AuftragID,
@ -669,6 +686,7 @@ namespace Deckungsbeitrag
Erledigt = false, Erledigt = false,
Gesamt = uca.Anzahl, Gesamt = uca.Anzahl,
}; };
aufart.Save(); aufart.Save();
} }
} }

View File

@ -886,6 +886,4 @@ namespace DatenDB
} }
} }
} }
//INSTALL-REMINDER: DB anpassen. (Priority in Auftrag etc.)
//CAHNGES: Priority wird bei Auftrag hinterlegt. Derzeit nach Fahrer Vorname bis andere Lösung gefunden.
//TODO: Non-Hard-Coded-Lösung für Priority finden. //TODO: Non-Hard-Coded-Lösung für Priority finden.

View File

@ -45,9 +45,10 @@ namespace Deckungsbeitrag
private static Benutzer _benutzer; private static Benutzer _benutzer;
private static PrintDocument printdoc; private static PrintDocument printdoc;
public static bool IsPhysicalPrint = false; // Globaler Schalter public static bool IsPhysicalPrint = false; // Globaler Schalter
static Dictionary<int, int[]> _dictionary; static object _dictionary;
private static bool printed = false; private static bool printed = false;
private static bool inPreview = false; private static bool inPreview = false;
private static int KundeID;
public Funktionen() public Funktionen()
{ {
@ -863,7 +864,6 @@ namespace Deckungsbeitrag
g.DrawString($"{auftrag.Liefertag.ToString("ddd dd.MM.")}", font1, Brushes.Black, startpoint.X, startpoint.Y + height_font1 + 5 + height_font2 + 2 + size_Liefertag.Height + 2); g.DrawString($"{auftrag.Liefertag.ToString("ddd dd.MM.")}", font1, Brushes.Black, startpoint.X, startpoint.Y + height_font1 + 5 + height_font2 + 2 + size_Liefertag.Height + 2);
if (!nocont) g.DrawString($"{auftrag.ContainerClean}", font4, Brushes.Black, startpoint.X + size_Liefertag.Width + size_container.Width + 10, startpoint.Y + height_font1); if (!nocont) g.DrawString($"{auftrag.ContainerClean}", font4, Brushes.Black, startpoint.X + size_Liefertag.Width + size_container.Width + 10, startpoint.Y + height_font1);
//TODO: Ausprobieren ob die Ausrichtung jetzt richtig ist. Sowohl beim ersten wie auch zweiten Mal.
if (sender == null) bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone); if (sender == null) bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);
Image img = bitmap; Image img = bitmap;
return img; return img;
@ -1083,12 +1083,9 @@ namespace Deckungsbeitrag
} }
} }
} }
public static Image SonderEtikett_Entwurf(Auftrag auftrag, Dictionary<int, int[]> dictionary) public static Image SonderEtikett_Entwurf(int KundeID, object dictionary)
{ {
Kunde kunde = Kunde.GetKunde(string.Empty, auftrag.KundeID, string.Empty); Kunde kunde = Kunde.GetKunde(string.Empty, KundeID, string.Empty);
if (kunde.Suchtext.StartsWith("?") | kunde.KundeNummer == "2320000") kunde.Suchtext = auftrag.ZusatzInfo;
List<AuftragArtikel> artliste = AuftragArtikel.GetList(auftrag.AuftragID);
if (artliste == null || artliste.Count == 0) return null;
Bitmap bitmap = new Bitmap(300, 1200); Bitmap bitmap = new Bitmap(300, 1200);
Graphics g = Graphics.FromImage(bitmap); Graphics g = Graphics.FromImage(bitmap);
@ -1109,37 +1106,66 @@ namespace Deckungsbeitrag
//Etikett-Text //Etikett-Text
g.DrawString($"{kunde.KundeNummer}", font2, Brushes.Black, startpoint); g.DrawString($"{kunde.KundeNummer}", font2, Brushes.Black, startpoint);
nextposition += (int)height_font2; nextposition += (int)height_font2;
g.DrawString($"{kunde.Suchtext}", font2, Brushes.Black, einzug, nextposition); g.DrawString($"{kunde.Suchtext.Substring(0, 10)}", font2, Brushes.Black, einzug, nextposition);
nextposition += (int)height_font2; nextposition += (int)height_font2;
g.DrawString($"{auftrag.Liefertag.Date.ToString("dd.MM.yyyy")}", font2, Brushes.Black, einzug, nextposition); g.DrawString($"{DateTime.Today.Date:dd.MM.yyyy}", font2, Brushes.Black, einzug, nextposition);
nextposition += (int)height_font2; nextposition += (int)height_font2;
g.DrawString("Artikel", font2, Brushes.Black, einzug, nextposition + 20); g.DrawString("Artikel", font2, Brushes.Black, einzug, nextposition + 20);
nextposition += 20 + (int)height_font1; nextposition += 20 + (int)height_font2;
g.DrawString("Rekl/NW/Stand/Inv", font3, Brushes.Black, bitmap.Width - g.MeasureString("Rekl/NW/Stand/Inv", font3).Width, nextposition + 10);
nextposition += (int)height_font2;
foreach (var kvp in dictionary) switch (dictionary)
{
case Dictionary<int, int> dictInt:
g.DrawString("REKL", font2, Brushes.Black, bitmap.Width - g.MeasureString("REKL", font2).Width, nextposition);
nextposition += (int)height_font2;
foreach (var kvp in dictInt)
{
KundeArtikel kndart = KundeArtikel.GetItem(kvp.Key);
Artikel _artikel = Artikel.GetArtikel(null, kndart.ArtikelID);
string artikelKey = _artikel.Bezeichnung; // z.B. "ART1"
int reklAnzahl = kvp.Value; // z.B. [3, 0, 5]
string shortName = _artikel.Short;
float bestandWidth = g.MeasureString($"{reklAnzahl}", font2).Width;
g.DrawString($"{shortName}", font2, Brushes.Black, einzug, nextposition);
nextposition += (int)height_font2;
g.DrawString($"{reklAnzahl}", font2, Brushes.Black, bitmap.Width - bestandWidth, nextposition);
nextposition += (int)height_font2;
}
break;
case Dictionary<int, int[]> dictArray:
g.DrawString("IST/SOLL", font2, Brushes.Black, bitmap.Width - g.MeasureString("IST/SOLL", font2).Width, nextposition);
nextposition += (int)height_font2;
foreach (var kvp in dictArray)
{ {
KundeArtikel kndart = KundeArtikel.GetItem(kvp.Key); KundeArtikel kndart = KundeArtikel.GetItem(kvp.Key);
Artikel _artikel = Artikel.GetArtikel(null, kndart.ArtikelID); Artikel _artikel = Artikel.GetArtikel(null, kndart.ArtikelID);
string artikelKey = _artikel.Bezeichnung; // z.B. "ART1" string artikelKey = _artikel.Bezeichnung; // z.B. "ART1"
int[] artbestand = kvp.Value; // z.B. [3, 0, 5] int[] artbestand = kvp.Value; // z.B. [3, 0, 5]
int ist = artbestand[0] + artbestand[1];
if (ist == 0 & artbestand[2] == 0) ist = artbestand[3];
string shortName = _artikel.Short; string shortName = _artikel.Short;
float bestandWidth = g.MeasureString($"{artbestand[0].ToString()}/{artbestand[1].ToString()}/({artbestand[2].ToString()})/{artbestand[3].ToString()}", font3).Width; float bestandWidth = g.MeasureString($"{ist}/({artbestand[2]})", font2).Width;
g.DrawString($"{shortName}", font3, Brushes.Black, einzug, nextposition); g.DrawString($"{shortName}", font2, Brushes.Black, einzug, nextposition);
if (artbestand[2] < 0) g.DrawString($"{artbestand[0].ToString()}/{artbestand[1].ToString()}/({artbestand[2].ToString()})/{artbestand[3].ToString()}", font3, Brushes.Black, bitmap.Width - bestandWidth - 10, nextposition); nextposition += (int)height_font2;
else g.DrawString($"{artbestand[0].ToString()}/{artbestand[1].ToString()}/{artbestand[2].ToString()}/{artbestand[3].ToString()}", font3, Brushes.Black, bitmap.Width - bestandWidth - 10, nextposition); if (artbestand[2] < 0) g.DrawString($"{ist}/({artbestand[2]})", font2, Brushes.Black, bitmap.Width - bestandWidth - 10, nextposition);
nextposition += (int)height_font1; else g.DrawString($"{ist}/{artbestand[2]}", font2, Brushes.Black, bitmap.Width - bestandWidth, nextposition);
nextposition += (int)height_font2;
} }
break;
default:
throw new ArgumentException("Unbekannter Dictionary-Typ übergeben.");
}
Image img = bitmap; Image img = bitmap;
return img; return img;
} }
public static DialogResult SonderEtikett_Drucken(Auftrag auftrag, Dictionary<int, int[]> dictionary) public static DialogResult SonderEtikett_Drucken(int kundeID, object dictionary)
{ {
_auftrag = auftrag;
_dictionary = dictionary; _dictionary = dictionary;
int x = auftrag.ContainerClean; KundeID = kundeID;
//int x = auftrag.ContainerClean;
PrintDialog dialog = new PrintDialog(); PrintDialog dialog = new PrintDialog();
PrintPreviewDialog preview = new PrintPreviewDialog(); PrintPreviewDialog preview = new PrintPreviewDialog();
@ -1165,7 +1191,7 @@ namespace Deckungsbeitrag
if (!printDocument.PrinterSettings.PrinterName.Contains(Properties.Settings.Default.Etikett_Drucker)) printDocument.DefaultPageSettings.PaperSize = new PaperSize("Etikett-Custom", 29, 90); if (!printDocument.PrinterSettings.PrinterName.Contains(Properties.Settings.Default.Etikett_Drucker)) printDocument.DefaultPageSettings.PaperSize = new PaperSize("Etikett-Custom", 29, 90);
dialog.Document = printDocument; dialog.Document = printDocument;
dialog.Document.DocumentName = "SonderEtikett"; dialog.Document.DocumentName = "Sonder";
printDocument.Print(); printDocument.Print();
@ -1204,7 +1230,7 @@ namespace Deckungsbeitrag
if (sender.ToString().Contains("Sonder")) if (sender.ToString().Contains("Sonder"))
{ {
if (!inPreview) printed = true; if (!inPreview) printed = true;
e.Graphics.DrawImage(SonderEtikett_Entwurf(_auftrag, _dictionary), e.PageBounds); e.Graphics.DrawImage(SonderEtikett_Entwurf(KundeID, _dictionary), e.PageBounds);
} }
if (sender.ToString().Contains("TourenListe")) if (sender.ToString().Contains("TourenListe"))
{ {
@ -1500,7 +1526,6 @@ namespace Deckungsbeitrag
chart1.ChartAreas[0].Position = new ElementPosition(0, 8, 100, 92); chart1.ChartAreas[0].Position = new ElementPosition(0, 8, 100, 92);
// Gesamtmenge als einzelne Säule (links oder transparent) // Gesamtmenge als einzelne Säule (links oder transparent)
//TODO: Gesamt soll immer 100% sein.
var serieGesamt = new Series("Gesamtmenge") var serieGesamt = new Series("Gesamtmenge")
{ {
ChartType = SeriesChartType.StackedBar100, ChartType = SeriesChartType.StackedBar100,

View File

@ -97,7 +97,7 @@ namespace DatenDB
List<KundeArtikel> resultList = new List<KundeArtikel>(); List<KundeArtikel> resultList = new List<KundeArtikel>();
NpgsqlCommand command = new NpgsqlCommand(); NpgsqlCommand command = new NpgsqlCommand();
command.Connection = DatenbankConnection.GetConnection(); command.Connection = DatenbankConnection.GetConnection();
if (!string.IsNullOrWhiteSpace(kundeid)) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {kundeid} order by reihung asc"; if (!string.IsNullOrWhiteSpace(kundeid)) command.CommandText = $"select {COLUMNS} from {TABLE} where kunde_id = {kundeid} and SUBSTRING(artikel_nr::text, 1, 1) = '6' order by reihung asc";
else command.CommandText = $"select {COLUMNS} from {TABLE} where artikel_id = {artikelID} order by artikel_nr"; else command.CommandText = $"select {COLUMNS} from {TABLE} where artikel_id = {artikelID} order by artikel_nr";
NpgsqlDataReader reader = command.ExecuteReader(); NpgsqlDataReader reader = command.ExecuteReader();
while (reader.Read()) resultList.Add(new KundeArtikel(reader)); while (reader.Read()) resultList.Add(new KundeArtikel(reader));

View File

@ -42,71 +42,87 @@ namespace Deckungsbeitrag
[DllImport("user32.dll")] [DllImport("user32.dll")]
private static extern int GetSystemMetrics(int nIndex); private static extern int GetSystemMetrics(int nIndex);
[DllImport("user32.dll", SetLastError = true)]
private static extern uint GetRawInputDeviceList(IntPtr pRawInputDeviceList, ref uint puiNumDevices, uint cbSize);
private const int SM_DIGITIZER = 94; private const int SM_DIGITIZER = 94;
private const int SM_MAXIMUMTOUCHES = 95; private const int SM_MAXIMUMTOUCHES = 95;
private const int SM_CONVERTIBLESLATEMODE = 125; private const int SM_CONVERTIBLESLATEMODE = 125;
private const int RIM_TYPEKEYBOARD = 1;
[StructLayout(LayoutKind.Sequential)]
private struct RAWINPUTDEVICELIST
{
public IntPtr hDevice;
public uint dwType;
}
public static readonly bool HasTouchHardware = (GetSystemMetrics(SM_DIGITIZER) & 0x80) != 0; public static readonly bool HasTouchHardware = (GetSystemMetrics(SM_DIGITIZER) & 0x80) != 0;
public static readonly int TouchPoints = GetSystemMetrics(SM_MAXIMUMTOUCHES); public static readonly int TouchPoints = GetSystemMetrics(SM_MAXIMUMTOUCHES);
public static readonly bool IsTabletMode = GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 1; public static readonly bool IsTabletMode = GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 1;
/// <summary>
/// **Hauptmethode**: Touch FUNKTIONIERT (Hardware + aktiviert)
/// </summary>
public static bool IsTouchActive() public static bool IsTouchActive()
{ {
// 1. Registry: TouchGate = 0 → deaktiviert
if (IsRegistryDisabled()) return false; if (IsRegistryDisabled()) return false;
// 2. TouchPoints > 0 UND System sagt "Touch ready"
if (TouchPoints <= 0) return false; if (TouchPoints <= 0) return false;
// 3. Windows Touch-Session aktiv? (SM_DIGITIZER bits)
int digitizer = GetSystemMetrics(SM_DIGITIZER); int digitizer = GetSystemMetrics(SM_DIGITIZER);
bool touchReady = (digitizer & 0x00000001) != 0; // Integrated touch? bool touchReady = (digitizer & 0x00000001) != 0;
bool penReady = (digitizer & 0x00000002) != 0; bool penReady = (digitizer & 0x00000002) != 0;
return touchReady || penReady; return touchReady || penReady;
} }
/// <summary>
/// Vollständig einsatzbereit
/// </summary>
public static bool IsTouchDeviceReady() => HasTouchHardware && IsTouchActive(); public static bool IsTouchDeviceReady() => HasTouchHardware && IsTouchActive();
/// <summary> // Prüft, ob ein Gerät vom Typ "Tastatur" vom System registriert ist
/// Registry-Status public static bool IsPhysicalKeyboardPresent()
/// </summary>
private static bool IsRegistryDisabled()
{ {
RegistryKey key = null; uint deviceCount = 0;
uint size = (uint)Marshal.SizeOf(typeof(RAWINPUTDEVICELIST));
if (GetRawInputDeviceList(IntPtr.Zero, ref deviceCount, size) != 0)
return false;
IntPtr pDevices = Marshal.AllocHGlobal((int)(size * deviceCount));
try try
{ {
key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Wisp\TouchGate"); if (GetRawInputDeviceList(pDevices, ref deviceCount, size) == uint.MaxValue)
if (key != null) return false;
for (int i = 0; i < deviceCount; i++)
{ {
object value = key.GetValue("TouchGate"); RAWINPUTDEVICELIST device = (RAWINPUTDEVICELIST)Marshal.PtrToStructure(
if (value != null && Convert.ToInt32(value) == 0) new IntPtr(pDevices.ToInt64() + (size * i)), typeof(RAWINPUTDEVICELIST));
if (device.dwType == RIM_TYPEKEYBOARD)
return true; return true;
} }
return false;
}
catch
{
return false;
} }
finally finally
{ {
if (key != null) key.Close(); Marshal.FreeHGlobal(pDevices);
}
return false;
}
private static bool IsRegistryDisabled()
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Wisp\TouchGate"))
{
if (key != null)
{
object value = key.GetValue("TouchGate");
return value != null && Convert.ToInt32(value) == 0;
} }
} }
/// <summary> return false;
/// Debug-Status }
/// </summary>
public static string GetStatus() public static string GetStatus()
{ {
int digitizer = GetSystemMetrics(SM_DIGITIZER); return $"Hardware: {HasTouchHardware}, TouchActive: {IsTouchActive()}, Keyboard: {IsPhysicalKeyboardPresent()}, Points: {TouchPoints}, TabletMode: {IsTabletMode}";
return $"Hardware: {HasTouchHardware}, Active: {IsTouchActive()}, Points: {TouchPoints}, RegistryDisabled: {IsRegistryDisabled()}, Digitizer: 0x{digitizer:X}";
} }
} }
static class Program static class Program
@ -123,6 +139,8 @@ namespace Deckungsbeitrag
//public static string vaultPath = @"N:\TECHNIK\Software\Wirl-Verwaltung\Feedback"; //public static string vaultPath = @"N:\TECHNIK\Software\Wirl-Verwaltung\Feedback";
private static readonly string savePath = ConfigurationManager.AppSettings["DateiSavePfad"]; private static readonly string savePath = ConfigurationManager.AppSettings["DateiSavePfad"];
private static readonly bool istest = false; private static readonly bool istest = false;
public static bool istTouch = TouchHelper.IsTouchDeviceReady();
public static bool hatTastatur = TouchHelper.IsPhysicalKeyboardPresent();
/// <summary> /// <summary>

View File

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

View File

@ -34,37 +34,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570" "MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72" "OwnerKey" = "8:_99A1851DAB14095B2C6FFF6100D312B7"
"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"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -76,7 +46,37 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_0B016AD02A79C43C243D615B3AD40570" "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" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -124,31 +124,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C" "MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72" "OwnerKey" = "8:_8A953E0634B8757038749C9F77062056"
"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"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -160,7 +136,31 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_4C0EEC06451FEA61E39F79681578838C" "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" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -214,13 +214,13 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328" "MsmKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72" "OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328" "MsmKey" = "8:_65AC8F9F13B5E0ADCA662A6618010328"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9" "OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -268,19 +268,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056" "MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72" "OwnerKey" = "8:_8E444A9D7B7F9420CF44964B1EAE9AAA"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -292,7 +280,19 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_8A953E0634B8757038749C9F77062056" "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" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -346,37 +346,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E" "MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E"
"OwnerKey" = "8:_A41FC3BFD0E1CE905FCB1693E99348B8" "OwnerKey" = "8:_0B016AD02A79C43C243D615B3AD40570"
"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"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -388,7 +358,37 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_C025D526FF076AA8036CB8B1A2BD888E" "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" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -400,7 +400,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_C2D67A4770D262B66069252CF1E903CF" "MsmKey" = "8:_C2D67A4770D262B66069252CF1E903CF"
"OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B" "OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -412,7 +412,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_C2D67A4770D262B66069252CF1E903CF" "MsmKey" = "8:_C2D67A4770D262B66069252CF1E903CF"
"OwnerKey" = "8:_125834DE4128EDE3F82BFC1A45B2ACD9" "OwnerKey" = "8:_D3E738B1E9D7C3C737CDD91DCC4DC37B"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -436,13 +436,13 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_E637243CDA02D043DD2BAED063790F80" "MsmKey" = "8:_E637243CDA02D043DD2BAED063790F80"
"OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72" "OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
{ {
"MsmKey" = "8:_E637243CDA02D043DD2BAED063790F80" "MsmKey" = "8:_E637243CDA02D043DD2BAED063790F80"
"OwnerKey" = "8:_EF6D58F917144384701E1DBDFB979BD8" "OwnerKey" = "8:_AD2C2F4AADC342899908C708EB4F4A72"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -466,157 +466,7 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_848FCB2438E4DBC274C4D124CEB9562C" "OwnerKey" = "8:_5CDE0A18B0E8657CBCF9143673DB464A"
"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"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
"Entry" "Entry"
@ -628,7 +478,157 @@
"Entry" "Entry"
{ {
"MsmKey" = "8:_UNDEFINED" "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:_848FCB2438E4DBC274C4D124CEB9562C"
"MsmSig" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED"
} }
} }
@ -733,11 +733,6 @@
"AssemblyAsmDisplayName" = "8:AForge.Video, Version=2.2.5.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:AForge.Video, Version=2.2.5.0, Culture=neutral, PublicKeyToken=cbfb6e07d173c401, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_0014568666DC36A67BD4258FEDAE4805"
{
"Name" = "8:AForge.Video.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:AForge.Video.dll" "SourcePath" = "8:AForge.Video.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -764,11 +759,6 @@
"AssemblyAsmDisplayName" = "8:System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_0B016AD02A79C43C243D615B3AD40570"
{
"Name" = "8:System.Memory.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Memory.dll" "SourcePath" = "8:System.Memory.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -795,11 +785,6 @@
"AssemblyAsmDisplayName" = "8:Npgsql, Version=4.1.14.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:Npgsql, Version=4.1.14.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_125834DE4128EDE3F82BFC1A45B2ACD9"
{
"Name" = "8:Npgsql.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:Npgsql.dll" "SourcePath" = "8:Npgsql.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -826,11 +811,6 @@
"AssemblyAsmDisplayName" = "8:zxing.presentation, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:zxing.presentation, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_16723AF5DFDEF26FC6A07BEB7D389737"
{
"Name" = "8:zxing.presentation.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:zxing.presentation.dll" "SourcePath" = "8:zxing.presentation.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -857,11 +837,6 @@
"AssemblyAsmDisplayName" = "8:HarfBuzzSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:HarfBuzzSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_17ABCA3C569C9181F3FE3A46B8638164"
{
"Name" = "8:HarfBuzzSharp.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:HarfBuzzSharp.dll" "SourcePath" = "8:HarfBuzzSharp.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -888,11 +863,6 @@
"AssemblyAsmDisplayName" = "8:Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_1B916DE951F447CD3C62E7AEBE228A3F"
{
"Name" = "8:Microsoft.Bcl.HashCode.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:Microsoft.Bcl.HashCode.dll" "SourcePath" = "8:Microsoft.Bcl.HashCode.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -919,11 +889,6 @@
"AssemblyAsmDisplayName" = "8:Spire.Barcode, Version=7.4.1.0, Culture=neutral, PublicKeyToken=663f351905198cb3, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:Spire.Barcode, Version=7.4.1.0, Culture=neutral, PublicKeyToken=663f351905198cb3, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_2DE2024BE0845063AAE50C820ED805AE"
{
"Name" = "8:Spire.Barcode.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:Spire.Barcode.dll" "SourcePath" = "8:Spire.Barcode.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -970,11 +935,6 @@
"AssemblyAsmDisplayName" = "8:System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_4C0EEC06451FEA61E39F79681578838C"
{
"Name" = "8:System.Runtime.CompilerServices.Unsafe.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Runtime.CompilerServices.Unsafe.dll" "SourcePath" = "8:System.Runtime.CompilerServices.Unsafe.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1001,11 +961,6 @@
"AssemblyAsmDisplayName" = "8:System.Text.Encodings.Web, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Text.Encodings.Web, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_4E92FDDD15B89BB89053E8A65FA73EAA"
{
"Name" = "8:System.Text.Encodings.Web.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Text.Encodings.Web.dll" "SourcePath" = "8:System.Text.Encodings.Web.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1052,11 +1007,6 @@
"AssemblyAsmDisplayName" = "8:System.Net.Sockets, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" "AssemblyAsmDisplayName" = "8:System.Net.Sockets, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_5CDE0A18B0E8657CBCF9143673DB464A"
{
"Name" = "8:System.Net.Sockets.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Net.Sockets.dll" "SourcePath" = "8:System.Net.Sockets.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1083,11 +1033,6 @@
"AssemblyAsmDisplayName" = "8:zxing, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:zxing, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_65845AF9470C67B4E2216A46EFF4246C"
{
"Name" = "8:zxing.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:zxing.dll" "SourcePath" = "8:zxing.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1114,11 +1059,6 @@
"AssemblyAsmDisplayName" = "8:System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_65AC8F9F13B5E0ADCA662A6618010328"
{
"Name" = "8:System.ValueTuple.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.ValueTuple.dll" "SourcePath" = "8:System.ValueTuple.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1145,11 +1085,6 @@
"AssemblyAsmDisplayName" = "8:System.Runtime.InteropServices.RuntimeInformation, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" "AssemblyAsmDisplayName" = "8:System.Runtime.InteropServices.RuntimeInformation, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_6A4E9AB7C92A8099AD635862468BFCBE"
{
"Name" = "8:System.Runtime.InteropServices.RuntimeInformation.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Runtime.InteropServices.RuntimeInformation.dll" "SourcePath" = "8:System.Runtime.InteropServices.RuntimeInformation.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1176,11 +1111,6 @@
"AssemblyAsmDisplayName" = "8:AForge.Video.DirectShow, Version=2.2.5.0, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:AForge.Video.DirectShow, Version=2.2.5.0, Culture=neutral, PublicKeyToken=61ea4348d43881b7, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_70C791195E1E3B637AE8CB0DE5BB4EFB"
{
"Name" = "8:AForge.Video.DirectShow.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:AForge.Video.DirectShow.dll" "SourcePath" = "8:AForge.Video.DirectShow.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1207,11 +1137,6 @@
"AssemblyAsmDisplayName" = "8:AForge, Version=2.2.5.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:AForge, Version=2.2.5.0, Culture=neutral, PublicKeyToken=c1db6ff4eaa06aeb, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_8208B2126E1B253A2E427D55D4E5F13A"
{
"Name" = "8:AForge.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:AForge.dll" "SourcePath" = "8:AForge.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1238,11 +1163,6 @@
"AssemblyAsmDisplayName" = "8:VirtualKeyboard, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:VirtualKeyboard, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_848FCB2438E4DBC274C4D124CEB9562C"
{
"Name" = "8:VirtualKeyboard.exe"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:VirtualKeyboard.exe" "SourcePath" = "8:VirtualKeyboard.exe"
"TargetName" = "8:" "TargetName" = "8:"
@ -1269,11 +1189,6 @@
"AssemblyAsmDisplayName" = "8:System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_8A953E0634B8757038749C9F77062056"
{
"Name" = "8:System.Threading.Tasks.Extensions.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Threading.Tasks.Extensions.dll" "SourcePath" = "8:System.Threading.Tasks.Extensions.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1300,11 +1215,6 @@
"AssemblyAsmDisplayName" = "8:System.IO.Pipelines, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.IO.Pipelines, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_8E444A9D7B7F9420CF44964B1EAE9AAA"
{
"Name" = "8:System.IO.Pipelines.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.IO.Pipelines.dll" "SourcePath" = "8:System.IO.Pipelines.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1331,11 +1241,6 @@
"AssemblyAsmDisplayName" = "8:Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_99A1851DAB14095B2C6FFF6100D312B7"
{
"Name" = "8:Microsoft.Extensions.Logging.Abstractions.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:Microsoft.Extensions.Logging.Abstractions.dll" "SourcePath" = "8:Microsoft.Extensions.Logging.Abstractions.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1362,11 +1267,6 @@
"AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_A2FA7AC58F6A16AB132434F8A00EA507"
{
"Name" = "8:System.Net.Http.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Net.Http.dll" "SourcePath" = "8:System.Net.Http.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1393,11 +1293,6 @@
"AssemblyAsmDisplayName" = "8:System.Diagnostics.DiagnosticSource, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Diagnostics.DiagnosticSource, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_A41FC3BFD0E1CE905FCB1693E99348B8"
{
"Name" = "8:System.Diagnostics.DiagnosticSource.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Diagnostics.DiagnosticSource.dll" "SourcePath" = "8:System.Diagnostics.DiagnosticSource.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1424,11 +1319,6 @@
"AssemblyAsmDisplayName" = "8:ObjectListView, Version=2.9.3.0, Culture=neutral, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:ObjectListView, Version=2.9.3.0, Culture=neutral, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_BDDC042CD8ACEF57F35D002490214D33"
{
"Name" = "8:ObjectListView.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:ObjectListView.dll" "SourcePath" = "8:ObjectListView.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1455,11 +1345,6 @@
"AssemblyAsmDisplayName" = "8:System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_C025D526FF076AA8036CB8B1A2BD888E"
{
"Name" = "8:System.Buffers.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Buffers.dll" "SourcePath" = "8:System.Buffers.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1486,11 +1371,6 @@
"AssemblyAsmDisplayName" = "8:Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_C2D67A4770D262B66069252CF1E903CF"
{
"Name" = "8:Microsoft.Bcl.AsyncInterfaces.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:Microsoft.Bcl.AsyncInterfaces.dll" "SourcePath" = "8:Microsoft.Bcl.AsyncInterfaces.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1517,11 +1397,6 @@
"AssemblyAsmDisplayName" = "8:System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_C92C21BE3984A4EC1BCD3A988C56652E"
{
"Name" = "8:System.Collections.Immutable.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Collections.Immutable.dll" "SourcePath" = "8:System.Collections.Immutable.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1548,11 +1423,6 @@
"AssemblyAsmDisplayName" = "8:System.Threading.Channels, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Threading.Channels, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_D3E738B1E9D7C3C737CDD91DCC4DC37B"
{
"Name" = "8:System.Threading.Channels.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Threading.Channels.dll" "SourcePath" = "8:System.Threading.Channels.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1579,11 +1449,6 @@
"AssemblyAsmDisplayName" = "8:System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_E637243CDA02D043DD2BAED063790F80"
{
"Name" = "8:System.Numerics.Vectors.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Numerics.Vectors.dll" "SourcePath" = "8:System.Numerics.Vectors.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1610,11 +1475,6 @@
"AssemblyAsmDisplayName" = "8:System.Text.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL" "AssemblyAsmDisplayName" = "8:System.Text.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
"ScatterAssemblies" "ScatterAssemblies"
{ {
"_EF6D58F917144384701E1DBDFB979BD8"
{
"Name" = "8:System.Text.Json.dll"
"Attributes" = "3:512"
}
} }
"SourcePath" = "8:System.Text.Json.dll" "SourcePath" = "8:System.Text.Json.dll"
"TargetName" = "8:" "TargetName" = "8:"
@ -1690,15 +1550,15 @@
{ {
"Name" = "8:Microsoft Visual Studio" "Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:SetupVerwaltung" "ProductName" = "8:SetupVerwaltung"
"ProductCode" = "8:{6D13C83E-FAD0-4B29-BBEC-E1ABCEAAFB03}" "ProductCode" = "8:{A52B48F7-18F7-4B26-87AF-63C7BADA67C1}"
"PackageCode" = "8:{32CA7B7D-CFC8-41EA-A986-11D890FE499A}" "PackageCode" = "8:{A8177456-8491-4BFE-ADEF-5DA58C61D3D4}"
"UpgradeCode" = "8:{2DC7CE56-8D1C-42EB-B326-2E887EBB7F5A}" "UpgradeCode" = "8:{2DC7CE56-8D1C-42EB-B326-2E887EBB7F5A}"
"AspNetVersion" = "8:" "AspNetVersion" = "8:"
"RestartWWWService" = "11:FALSE" "RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE" "RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE" "InstallAllUsers" = "11:FALSE"
"ProductVersion" = "8:1.1.07" "ProductVersion" = "8:1.1.08"
"Manufacturer" = "8:Kilian Wirl GmbH" "Manufacturer" = "8:Kilian Wirl GmbH"
"ARPHELPTELEPHONE" = "8:" "ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:" "ARPHELPLINK" = "8:"

View File

@ -59,7 +59,6 @@ namespace Deckungsbeitrag.UserControls
bildDateiname = $"feedback-{timestamp}.png"; bildDateiname = $"feedback-{timestamp}.png";
string bildPath = Path.Combine("N:\\TECHNIK\\Software\\Wirl-Verwaltung\\Feedback", bildDateiname); string bildPath = Path.Combine("N:\\TECHNIK\\Software\\Wirl-Verwaltung\\Feedback", bildDateiname);
//TODO: Warum der falsche Path? Immer mit \\
string tempPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(bildPath)); string tempPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(bildPath));
try try

View File

@ -220,7 +220,7 @@ namespace Deckungsbeitrag.UserControls
this.auftrag.Liefertag = dTPLieferDat.Value; this.auftrag.Liefertag = dTPLieferDat.Value;
foreach (DataGridViewRow row in this.dGArtikel.Rows) foreach (DataGridViewRow row in this.dGArtikel.Rows)
{ {
// KundeArtikel updaten. Neuen Stand eintragen, Reklamation & Fehlmenge auf Null setzten und Korrektur als InventruAusgleich speichern. // KundeArtikel updaten. Neuen Stand eintragen, Reklamation & Fehlmenge auf Null setzten und Korrektur als InventurAusgleich speichern.
KundeArtikel art = (KundeArtikel)artikelListe[row.Index]; KundeArtikel art = (KundeArtikel)artikelListe[row.Index];
art.Reklamation = 0; art.Reklamation = 0;
@ -468,6 +468,7 @@ namespace Deckungsbeitrag.UserControls
DataGridView_GetNewSize(this.dGArtikel); DataGridView_GetNewSize(this.dGArtikel);
this.buttonFreigeben.Visible = true; this.buttonFreigeben.Visible = true;
this.labelInvText.Visible = false; this.labelInvText.Visible = false;
if (this.user.Rolle == BenutzerRolle.Verwaltung || this.user.Rolle == BenutzerRolle.Admin) Tosave = true;
} }
} }
@ -485,11 +486,10 @@ namespace Deckungsbeitrag.UserControls
if (row.Cells[j].Value == null) row.Cells[j].Value = 0; if (row.Cells[j].Value == null) row.Cells[j].Value = 0;
iststand += int.TryParse(row.Cells[j].Value.ToString(), out int r) ? r : 0; iststand += int.TryParse(row.Cells[j].Value.ToString(), out int r) ? r : 0;
} }
if (e.ColumnIndex >= 7 || e.ColumnIndex == 2) if (e.ColumnIndex >= 7 || e.ColumnIndex == 2)
{ {
row.Cells[5].Value = sollstand - fehlmenge - iststand; row.Cells[5].Value = sollstand - fehlmenge - iststand;
row.Cells[6].Value = artikelListe[e.RowIndex].Korrektur = sollstand - iststand; row.Cells[6].Value = artikelListe[e.RowIndex].Korrektur = sollstand - iststand - fehlmenge; //DONE: INV-Ausgleich (Korrektur) = Sollstand - Iststand (Bei Kunde & Lieferungen) - fehlmenge (Reklamation & Nachwäsche)
} }
} }
else return; else return;

View File

@ -94,4 +94,3 @@ namespace Deckungsbeitrag.UserControls
} }
} }
} }
//TODO: Design des Controls anpassen. Eventuell im Designer erstellen.

View File

@ -1,15 +1,15 @@
===================================== =====================================
NEUIGKEITEN - Version 1.1.0.7 NEUIGKEITEN - Version 1.1.0.8
===================================== =====================================
Build-Info: Build-Info:
- Build-Typ: Release Build - Build-Typ: Release Build
- Erledigte TODOs: 6 - Erledigte TODOs: 7
- Offene TODOs: 25 - Offene TODOs: 18
- Install-Reminders: 1 - Install-Reminders: 0
- Changes: 29 - Changes: 31
=== ✨ CHANGES (29) === === ✨ CHANGES (31) ===
## ArtikelVW.cs ## ## ArtikelVW.cs ##
- ✨ Reklamation als Spalte hinzugefügt und Anzeigen implementiert. Sowohl bei KundeArtikel als auch bei NW_Artikel. - ✨ Reklamation als Spalte hinzugefügt und Anzeigen implementiert. Sowohl bei KundeArtikel als auch bei NW_Artikel.
@ -20,8 +20,10 @@ Build-Info:
- ✨ 2. Änderungen werden nur gespeichert wenn ein Etikett gedruckt wurde. - ✨ 2. Änderungen werden nur gespeichert wenn ein Etikett gedruckt wurde.
- ✨ 3. Abschließen nur möglich wenn alle Artikel auf 0 sind (Checked) und gespeichert wurde. - ✨ 3. Abschließen nur möglich wenn alle Artikel auf 0 sind (Checked) und gespeichert wurde.
- ✨ Bei Druckabbruch wird die geänderte Zahl NICHT zurückgesetzt. (Das muss händisch erfolgen) - ✨ Bei Druckabbruch wird die geänderte Zahl NICHT zurückgesetzt. (Das muss händisch erfolgen)
- ✨ Beim Speichern ohne Abschließen schließt sich das Fenster nach dem Speichern.
- ✨ Wenn die reduzierte Anzahl bei SOLL-Verminderung nicht negativ ist, wird diese negativ gemacht. So wird ein möglicher Fehler ausgebessert. - ✨ Wenn die reduzierte Anzahl bei SOLL-Verminderung nicht negativ ist, wird diese negativ gemacht. So wird ein möglicher Fehler ausgebessert.
- ✨ Wenn die Zahlen zurückgesetzt werden sollen, muss AuftragDetail geschlossen werden. - ✨ Wenn die Zahlen zurückgesetzt werden sollen, muss AuftragDetail geschlossen werden.
- ✨ Wenn ein Artikel vollständig hergerichtet wird, muss er nur abgehackt werden. Den Rest macht der Computer.
## Expedit.cs ## ## Expedit.cs ##
@ -67,8 +69,7 @@ Build-Info:
- ✨ Wenn der Lieferrhythmus geändert wird, werden KundenControls an falschen Tagen gelöscht. - ✨ Wenn der Lieferrhythmus geändert wird, werden KundenControls an falschen Tagen gelöscht.
=== ⚙️ INSTALL-REMINDER (1) === Keine Install-Reminder vorhanden ✅
- ⚙️ DB anpassen. (Priority in Auftrag etc.) [Auftrag.cs]
Installation: 29.04.2026 17:53 Installation: 05.05.2026 13:36
===================================== =====================================

View File

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

View File

@ -24,7 +24,7 @@ namespace VirtualKeyboard
new Button[14], new Button[14], new Button[14], new Button[14], new Button[8]}; new Button[14], new Button[14], new Button[14], new Button[14], new Button[8]};
// **Echtes QWERTZ-Layout** (5 Reihen + Funktion/Steuerung) // **Echtes QWERTZ-Layout** (5 Reihen + Funktion/Steuerung)
private string[] qwertzRows = { private string[] qwertzRows = {
" 1234567890ß⌫↵", // Ziffernreihe "?1234567890ß⌫↵", // Ziffernreihe
"↔qwertzuiopü+", // Hauptbuchstaben 1 (versetzt) "↔qwertzuiopü+", // Hauptbuchstaben 1 (versetzt)
" asdfghjklöä#", // Hauptbuchstaben 2 (versetzt) " asdfghjklöä#", // Hauptbuchstaben 2 (versetzt)
"⇧<yxcvbnm,.-⇧", // Hauptbuchstaben 3 (Y statt Z, versetzt) "⇧<yxcvbnm,.-⇧", // Hauptbuchstaben 3 (Y statt Z, versetzt)
@ -71,7 +71,6 @@ namespace VirtualKeyboard
private void InitializeKeyboard() private void InitializeKeyboard()
{ {
//int[] rowWidths = { 800, 800, 800, 800, 800 }; // Versetzte Reihenbreiten
int btnHeight = 60, spacing = 4; int btnHeight = 60, spacing = 4;
int startY = 10; int startY = 10;
@ -185,8 +184,8 @@ namespace VirtualKeyboard
} }
if (isShift && char.IsLetter(ch)) ch = char.ToUpper(ch); if (isShift && char.IsLetter(ch)) ch = char.ToUpper(ch);
targetTextBox.Focus(); //targetTextBox.Focus();
targetTextBox.SelectionStart = targetTextBox.Text.Length; //targetTextBox.SelectionStart = targetTextBox.Text.Length;
} }
private void ToggleMode_Click() private void ToggleMode_Click()
@ -229,6 +228,7 @@ namespace VirtualKeyboard
SetupRealNumPad(); SetupRealNumPad();
} }
this.Refresh(); this.Refresh();
targetTextBox.Focus();
} }
private void HideAllQwertzButtons() private void HideAllQwertzButtons()
{ {
@ -243,8 +243,6 @@ namespace VirtualKeyboard
} }
private void SetupRealNumPad() private void SetupRealNumPad()
{ {
int y = 10, xBase = 10, btnWidth = 70, btnHeight = 55, spacing = 8; int y = 10, xBase = 10, btnWidth = 70, btnHeight = 55, spacing = 8;
if (isCalc) this.Size = new Size((btnWidth + spacing) * 4 + xBase, (btnHeight + spacing) * 5 + xBase); if (isCalc) this.Size = new Size((btnWidth + spacing) * 4 + xBase, (btnHeight + spacing) * 5 + xBase);
if (isNumeric) this.Size = new Size((btnWidth + spacing) * 3 + xBase, (btnHeight + spacing) * 4 + xBase); if (isNumeric) this.Size = new Size((btnWidth + spacing) * 3 + xBase, (btnHeight + spacing) * 4 + xBase);