444 lines
17 KiB
C#
444 lines
17 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Drawing.Printing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.DataVisualization.Charting;
|
|
using DatenDB;
|
|
using Deckungsbeitrag.Properties;
|
|
using ZXing;
|
|
using ZXing.QrCode.Internal;
|
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
|
|
|
|
namespace Deckungsbeitrag
|
|
{
|
|
public partial class FormExpedit : Form
|
|
{
|
|
|
|
public Image etikett = null;
|
|
public Auftrag auftrag;
|
|
public AuftragArtikel auftragArtikel;
|
|
public Benutzer benutzer;
|
|
public FormExpedit(Benutzer benutzer)
|
|
{
|
|
InitializeComponent();
|
|
|
|
this.benutzer = benutzer;
|
|
this.groupBoxEtikett.MouseDoubleClick += new MouseEventHandler(GroupBox_DoubleClick);
|
|
this.buttonDrucken.Enabled = false;
|
|
this.buttonDrucken.BackColor = Color.Gray;
|
|
this.pictureBoxMinus.BackColor = Color.Gray;
|
|
this.pictureBoxPlus.BackColor = Color.Gray;
|
|
|
|
//this.BackColor = Properties.Settings.Default.Wirlblau;
|
|
}
|
|
private void FormExpedit_Load(object sender, EventArgs e)
|
|
{
|
|
this.Cursor = Cursors.WaitCursor;
|
|
Funktionen.HideControls(this.Controls);
|
|
|
|
List<Auftrag> alllist = Auftrag.GetExpeditLists(null);
|
|
List<Auftrag> sonderlist = Auftrag.GetExpeditLists((int)AuftragTyp.Sonder);
|
|
List<Auftrag> standartlist = Auftrag.GetExpeditLists((int)AuftragTyp.Standart);
|
|
if (standartlist.Count == 0) this.tabPageStandart.Visible = false;
|
|
if (sonderlist.Count == 0) { this.tabPageSonder.Visible = false; }
|
|
|
|
|
|
ListView_Load(alllist, this.listViewLieferungen);
|
|
ListView_Load(sonderlist, this.listViewSonder);
|
|
ListView_Load(standartlist, this.listViewStandart);
|
|
Sonderauftrag_Load();
|
|
|
|
Funktionen.ShowControls(this.Controls);
|
|
this.Cursor = Cursors.Default;
|
|
|
|
//Button ausblenden
|
|
this.buttonStatusSpeichern.Visible = false;
|
|
|
|
}
|
|
private void ListView_Load(List<Auftrag> auftraglist, ListView lv)
|
|
{
|
|
|
|
lv.Items.Clear();
|
|
foreach (Auftrag auftrag in auftraglist)
|
|
{
|
|
Kunde kunde = Kunde.GetKunde(string.Empty, auftrag.KundeID, string.Empty);
|
|
ListViewItem item = new ListViewItem();
|
|
item.Tag = auftrag;
|
|
item.Text = "";
|
|
item.SubItems.Add(auftrag.Liefertag.ToString("dddd dd.MM"));
|
|
if (kunde.KundeNummer == "0") item.SubItems.Add(auftrag.ZusatzInfo);
|
|
else item.SubItems.Add(kunde.Suchtext);
|
|
item.SubItems.Add(kunde.Region);
|
|
item.SubItems.Add(auftrag.Container.ToString());
|
|
if ((int)auftrag.Status == 3) item.SubItems.Add(auftrag.Status.ToString() + " " + Aufgabe.GetAufgabe(string.Empty, auftrag.AuftragID).Bezeichnung);
|
|
else item.SubItems.Add(auftrag.Status.ToString());
|
|
|
|
if (auftrag.Liefertag <= DateTime.Today.AddDays(1))
|
|
{
|
|
if (auftrag.Liefertag < DateTime.Today) { item.BackColor = (Color)Settings.Default["AuftAbgel"]; }
|
|
else
|
|
{
|
|
item.BackColor = (Color)Settings.Default["AuftBald"];
|
|
item.ForeColor = Color.Black;
|
|
}
|
|
}
|
|
|
|
lv.Items.Add(item);
|
|
}
|
|
Funktionen.Columns_Resize(lv);
|
|
lv.Columns[0].Width = 0;
|
|
lv.Columns[1].Width = lv.Columns[1].Width + 50;
|
|
|
|
}
|
|
private void Sonderauftrag_Load()
|
|
{
|
|
//this.buttonSTH.Enabled = this.buttonSTH.Visible = false;
|
|
//this.listViewLieferungen.Visible = false;
|
|
//this.listViewSTH.Visible = true;
|
|
this.listViewSTH.Columns.Clear();
|
|
this.listViewSTH.Items.Clear();
|
|
|
|
List<Views> artikel = Views.GetArtikel_sthList();
|
|
|
|
var groups = artikel.GroupBy(a => new { a.ArtikelName, a.KundeName, a.Anzahl });
|
|
|
|
|
|
//Spalten in die ListView einfügen. Pro Kund mit STH wird eine Spalte erstellt.
|
|
this.listViewSTH.Columns.Add("ARTIKEL");
|
|
foreach (var col in groups.GroupBy(g => g.Key.KundeName))
|
|
{
|
|
this.listViewSTH.Columns.Add(col.Key.ToString());
|
|
}
|
|
this.listViewSTH.Columns.Add("GESAMT");
|
|
|
|
//Zeilen in die ListView einfügen. Pro Artikel mit STH wird eine Zeile erstellt.
|
|
//Subitems für jede Spalte erstellen
|
|
foreach (var row in groups.GroupBy(g => g.Key.ArtikelName))
|
|
{
|
|
ListViewItem item = new ListViewItem();
|
|
item.Tag = row;
|
|
item.Text = row.Key.ToString();
|
|
|
|
//Subitems getrennt formatierbar machen
|
|
item.UseItemStyleForSubItems = false;
|
|
|
|
//Subitems für jede Spalte erstellen
|
|
for (int i = 0; i <= this.listViewSTH.Columns.Count; i++)
|
|
{
|
|
item.SubItems.Add(string.Empty);
|
|
}
|
|
this.listViewSTH.Items.Add(item);
|
|
}
|
|
|
|
//Übereinstimmend mit Spalten(Kunde) und Zeile(Artikel) wird die Anzahl der Stück eingefügt
|
|
//Letzte Spalte Artikelsumme berechnen und eintragen
|
|
//SubItem "GESAMT" Schriftfarbe und Dicke ändern
|
|
foreach (Views view in artikel)
|
|
{
|
|
foreach (ListViewItem item in this.listViewSTH.Items)
|
|
{
|
|
if (item.Text == view.ArtikelName)
|
|
{
|
|
foreach (ColumnHeader ch in this.listViewSTH.Columns)
|
|
{
|
|
|
|
if (ch.Text == view.KundeName) { item.SubItems[ch.Index].Text = view.Anzahl.ToString(); item.SubItems[ch.Index].Tag = view; }
|
|
|
|
//Letzte Spalte Artikelsumme berechnen und eintragen.
|
|
if (ch.Text == "GESAMT")
|
|
{
|
|
int ges = 0;
|
|
for (int i = 0; i < this.listViewSTH.Columns.Count - 1; i++)
|
|
{
|
|
if (int.TryParse(item.SubItems[i].Text, out int value)) ges += value;
|
|
}
|
|
item.SubItems[ch.Index].Text = ges.ToString();
|
|
|
|
//SubItem "GESAMT" Schriftfarbe und Dicke ändern
|
|
item.SubItems[ch.Index].ForeColor = Color.Red;
|
|
item.SubItems[ch.Index].Font = new Font(item.Font, FontStyle.Bold);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Spaltenbreite der ListView wird automatisch optimiert.
|
|
Funktionen.Columns_Resize(this.listViewSTH);
|
|
//Umreihen der Spalten in der Listview wird
|
|
Funktionen.Columns_Reorder(this.listViewSTH);
|
|
|
|
//GESAMT-Spalte wird als 2.Spalte angezeigt.
|
|
foreach (ColumnHeader ch in this.listViewSTH.Columns) if (ch.Text == "GESAMT") { ch.DisplayIndex = 1; }
|
|
|
|
|
|
|
|
}
|
|
private void Container_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
PictureBox pb = (PictureBox)sender;
|
|
int cont = int.Parse(this.labelContainer.Text);
|
|
if (pb.Name.ToString().Contains("Plus")) cont++;
|
|
if (pb.Name.ToString().Contains("Minus")) cont--;
|
|
this.labelContainer.Text = cont.ToString();
|
|
labelContainer_TextChanged(this, e);
|
|
|
|
}
|
|
private void GroupBox_DoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
Control ctr = this.groupBoxEtikett.GetChildAtPoint(e.Location);
|
|
if (this.listViewLieferungen.SelectedItems.Count == 0 && this.textBoxQRCode.Text.Contains("scannen"))
|
|
{
|
|
MessageBox.Show("Containeranzahl ändern NICHT MÖGLICH. Du hast noch keinen Auftrag ausgewählt.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
}
|
|
else
|
|
{
|
|
if (ctr.Name.Contains("Minus"))
|
|
{
|
|
if (int.Parse(this.labelContainer.Text) == 0) MessageBox.Show($"Containeranzahl kleiner als 0 ist nicht möglich.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
else
|
|
{
|
|
if (MessageBox.Show("Möchtest du die Containeranzahl händisch verändern?", "Frage", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
this.pictureBoxMinus.Enabled = this.pictureBoxPlus.Enabled = true;
|
|
this.pictureBoxMinus.BackColor = Color.Red;
|
|
this.pictureBoxPlus.BackColor = Color.FromArgb(0, 192, 0);
|
|
labelContainer_TextChanged(this, e);
|
|
}
|
|
}
|
|
}
|
|
if (ctr.Name.Contains("Plus"))
|
|
{
|
|
if (MessageBox.Show("Möchtest du die Containeranzahl händisch verändern?", "Frage", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
this.pictureBoxMinus.Enabled = this.pictureBoxPlus.Enabled = true;
|
|
this.pictureBoxMinus.BackColor = Color.Red;
|
|
this.pictureBoxPlus.BackColor = Color.FromArgb(0, 192, 0);
|
|
labelContainer_TextChanged(this, e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
private void textBoxQRCode_Leave(object sender, EventArgs e)
|
|
{
|
|
//this.tabControlAuftragList.SelectedIndex = 0;
|
|
FormExpedit ex;
|
|
ListView listView = null;
|
|
|
|
if(sender.GetType() == typeof(FormExpedit))
|
|
{
|
|
ex = (FormExpedit)sender;
|
|
listView = (ListView)ex.ActiveControl;
|
|
}
|
|
else
|
|
{
|
|
foreach (Control c in this.tabControlAuftragList.SelectedTab.Controls)
|
|
{
|
|
if (c.GetType() == typeof(ListView)) { listView = (ListView)c; }
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(textBoxQRCode.Text))
|
|
{
|
|
|
|
if (int.TryParse(textBoxQRCode.Text, out int value)) auftrag = Auftrag.GetAuftrag(value);
|
|
|
|
//Kunde kunde = Kunde.GetKunde(string.Empty, auftrag.KundeID, string.Empty);
|
|
|
|
if (auftrag != null) {Load_Etikett_GroupBox(auftrag); }
|
|
|
|
foreach (ListViewItem item in listView.Items)
|
|
{
|
|
Auftrag auftrag = item.Tag as Auftrag;
|
|
if (auftrag.AuftragID.ToString() == textBoxQRCode.Text)
|
|
{
|
|
item.Selected = true;
|
|
buttonDrucken.Enabled = true;
|
|
buttonDrucken.BackColor = Color.FromArgb(0, 192, 0);
|
|
this.labelContainer.Text = auftrag.ContainerClean.ToString();
|
|
}
|
|
}
|
|
}
|
|
//this.textBoxQRCode.Clear();
|
|
//this.textBoxQRCode.Text = "QR-Code scannen";
|
|
//this.buttonDrucken.Focus();
|
|
}
|
|
private void Load_Etikett_GroupBox(Auftrag auftrag)
|
|
{
|
|
this.textBoxQRCode.Text = auftrag.AuftragID + " " + Kunde.GetKunde(null, auftrag.KundeID, null).Suchtext;
|
|
this.labelContainer.Text = auftrag.ContainerClean.ToString();
|
|
etikett = Funktionen.Etikett_Entwurf(auftrag);
|
|
this.pictureBoxEntwurf.Image = etikett;
|
|
|
|
}
|
|
private Bitmap Entwurf_erstellen(Auftrag auftrag)
|
|
{
|
|
Kunde kunde = Kunde.GetKunde(string.Empty, auftrag.KundeID, string.Empty);
|
|
Image qr = Funktionen.Get_QR_Code(kunde, auftrag);
|
|
|
|
Bitmap bitmap = new Bitmap(1200, 350);
|
|
Graphics g = Graphics.FromImage(bitmap);
|
|
Font font1 = new Font("Arial", 50, FontStyle.Bold);
|
|
Font font2 = new Font("Arial", 30, FontStyle.Bold);
|
|
Font font3 = new Font("Arial", 20, FontStyle.Regular);
|
|
Font font4 = new Font("Arial", 80, FontStyle.Bold);
|
|
float height_font1 = g.MeasureString($"{kunde.Suchtext}", font1).Height;
|
|
float height_font2 = g.MeasureString($"{kunde.PLZ} {kunde.Ort})", font2).Height;
|
|
SizeF size_Liefertag = new SizeF(g.MeasureString("Liefertag:", font3));
|
|
float width_date_font1 = g.MeasureString("25.05.2023", font1).Width;
|
|
|
|
|
|
g.FillRectangle(Brushes.White, 0, 0, bitmap.Width, bitmap.Height);
|
|
//QR-Code
|
|
g.DrawImage(qr, 10, 0, 400, 400);
|
|
|
|
//while (g.MeasureString($"{kunde.KundeName} + ({kunde.Suchtext})", font1).Width < (bitmap.Width - bitmap.Height))
|
|
//{
|
|
// font1 = new Font(font1.FontFamily, font1.Size + 1);
|
|
//}
|
|
g.DrawString($"{kunde.Suchtext}", font1, Brushes.Black, 350, 25);
|
|
g.DrawString($"{kunde.PLZ} {kunde.Ort}", font2, Brushes.Black, 350, 25 + height_font1 + 5);
|
|
g.DrawString("Liefertag:", font3, Brushes.Black, 350, 25 + height_font1 + 10 + height_font2 + 10);
|
|
//g.DrawString("Container:", font3, Brushes.Black, 350 + width_date_font1, 25 + height_font1 + 10 + height_font2 + 10);
|
|
g.DrawString($"{auftrag.Liefertag.ToShortDateString()}", font1, Brushes.Black, 350, 25 + height_font1 + 10 + height_font2 + 5 + size_Liefertag.Height + 5);
|
|
//g.DrawString($"{etkdata[1]}", font4, Brushes.Black, 350 + width_date_font1 + size_Liefertag.Width + 40, 25 + height_font1 + 10 + height_font2);
|
|
|
|
return bitmap;
|
|
}
|
|
private void buttonDrucken_Click(object sender, EventArgs e)
|
|
{
|
|
PrintDialog dialog = new PrintDialog();
|
|
//foreach (string printer in PrinterSettings.InstalledPrinters) if (printer.Contains(ConfigurationManager.AppSettings["PrinterName"])) dialog.PrinterSettings.PrinterName = printer;
|
|
//dialog.PrinterSettings.Copies = 10;
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
PrintDocument printDocument = new PrintDocument();
|
|
printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
|
|
printDocument.PrinterSettings = dialog.PrinterSettings;
|
|
printDocument.Print();
|
|
|
|
//int z = int.Parse(labelContainer.Text);
|
|
//z++;
|
|
//auftrag.ContainerClean = z;
|
|
//auftrag.Save();
|
|
//this.labelContainer.Text = auftrag.ContainerClean.ToString();
|
|
etikett.RotateFlip(RotateFlipType.Rotate180FlipNone);
|
|
FormExpedit_Load(this, null);
|
|
}
|
|
}
|
|
private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
|
|
{
|
|
etikett.RotateFlip(RotateFlipType.Rotate180FlipNone);
|
|
e.Graphics.DrawImage(etikett, e.PageBounds);
|
|
//e.Graphics.DrawImage(bitmap, 0, 0, 790, 900);
|
|
}
|
|
private void labelContainer_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (this.labelContainer.Text == "0") { this.pictureBoxMinus.Enabled = false; this.pictureBoxMinus.BackColor = Color.Gray; }
|
|
else { this.pictureBoxMinus.Enabled = true; this.pictureBoxMinus.BackColor = Color.Red; }
|
|
}
|
|
private void buttonAbbrechen_Click(object sender, EventArgs e)
|
|
{
|
|
this.DialogResult = DialogResult.Cancel;
|
|
this.Close();
|
|
}
|
|
|
|
//FÜR QR-CODE SCANN VORBEREITET
|
|
private void textBoxQRCode_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Menu)
|
|
{
|
|
textBoxQRCode_Leave(this, null);
|
|
}
|
|
|
|
//Console.WriteLine(textBoxQRCode.Text);
|
|
|
|
}
|
|
private void textBoxQRCode_Enter(object sender, EventArgs e)
|
|
{
|
|
this.textBoxQRCode.Clear();
|
|
foreach (ListViewItem item in this.listViewLieferungen.Items) item.Selected = false;
|
|
}
|
|
|
|
//LISTVIEW STANDERHÖHUNG WENN ITEM CHECKED WIRD BUTTON SPEICHERN VERFÜGBAR
|
|
private void listViewSonder_ItemChecked(object sender, ItemCheckedEventArgs e)
|
|
{
|
|
ListView lv = (ListView)sender;
|
|
if (lv.CheckedItems.Count > 0) { this.buttonStatusSpeichern.Enabled = this.buttonStatusSpeichern.Visible = true; this.buttonStatusSpeichern.BackColor = Color.Yellow; }
|
|
}
|
|
|
|
//BUTTON SPEICHERN
|
|
private void buttonStatusSpeichern_Click(object sender, EventArgs e)
|
|
{
|
|
foreach (ListViewItem item in this.listViewSTH.CheckedItems)
|
|
{
|
|
foreach (ListViewItem.ListViewSubItem subItem in item.SubItems)
|
|
{
|
|
if (subItem.Tag != null)
|
|
{
|
|
auftragArtikel = AuftragArtikel.GetArtikel(((Views)subItem.Tag).AuftragArtikelID);
|
|
if (auftragArtikel.Erledigt) auftragArtikel.Erledigt = false;
|
|
else auftragArtikel.Erledigt = true;
|
|
auftragArtikel.Save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//WENN TAB GEWECHSELT ANZEIGE AKTUALISIEREN
|
|
private void tabControlAuftragList_Selected(object sender, TabControlEventArgs e)
|
|
{
|
|
TabControl tabControl = (TabControl)sender;
|
|
if(tabControl.SelectedIndex < 3) { this.groupBoxEtikett.Visible = true; this.buttonStatusSpeichern.Visible = this.buttonStatusSpeichern.Enabled = false; }
|
|
if(tabControl.SelectedIndex == 3) { this.groupBoxEtikett.Visible = false; this.buttonStatusSpeichern.Visible = true; }
|
|
}
|
|
|
|
//TAB CONTROL LISTVIEWS MOUSECLICK EVENTS
|
|
private void listView_MouseClick(object sender, MouseEventArgs e)
|
|
{
|
|
ListView listView = (ListView)sender;
|
|
ListViewItem item = listView.GetItemAt(e.X, e.Y);
|
|
if (listView.SelectedItems.Count == 1)
|
|
{
|
|
auftrag = item.Tag as Auftrag;
|
|
buttonDrucken.Enabled = true;
|
|
buttonDrucken.BackColor = Color.FromArgb(0, 192, 0);
|
|
this.textBoxQRCode.Text = auftrag.AuftragID.ToString();
|
|
this.labelContainer.Text = auftrag.ContainerClean.ToString();
|
|
textBoxQRCode_Leave(this, e);
|
|
this.textBoxQRCode.Enabled = false;
|
|
}
|
|
listView.Focus();
|
|
}
|
|
private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
ListView lv = (ListView)sender;
|
|
ListViewItem item1 = lv.GetItemAt(e.X, e.Y);
|
|
auftrag = item1.Tag as Auftrag;
|
|
FormAuftragDetail detail = new FormAuftragDetail(auftrag, benutzer);
|
|
if(detail.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.auftrag = detail.auftrag;
|
|
Load_Etikett_GroupBox(this.auftrag);
|
|
}
|
|
|
|
}
|
|
|
|
private void listViewLieferungen_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
ListView l = (ListView)sender;
|
|
if (l.SelectedItems.Count == 0) this.textBoxQRCode.Enabled = true;
|
|
}
|
|
}
|
|
}
|