265 lines
8.6 KiB
C#
265 lines
8.6 KiB
C#
using BrightIdeasSoftware;
|
|
using DatenDB;
|
|
using Deckungsbeitrag.AA_Klassen;
|
|
using Deckungsbeitrag.UserControls;
|
|
//using HarfBuzzSharp;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Deckungsbeitrag
|
|
{
|
|
public partial class FormArtikelVW : Form
|
|
{
|
|
private Benutzer user;
|
|
private List<Artikel> artikelList;
|
|
private List<ArtikelNachwaesche> artNWList;
|
|
private int dropdownWidth;
|
|
public FormArtikelVW()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
public FormArtikelVW(Benutzer benutzer) : this()
|
|
{
|
|
this.user = benutzer;
|
|
}
|
|
|
|
private void FormArtikelVW_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
List<Artikel> artlist = Artikel.GetArtikelList("Nachwaesche");
|
|
this.comboBoxArtikel.SelectedIndexChanged -= comboBoxArtikel_SelectedIndexChanged;
|
|
this.comboBoxArtikel.DataSource = artlist;
|
|
this.comboBoxArtikel.DisplayMember = "Bezeichnung";
|
|
foreach (Artikel art in artlist)
|
|
{
|
|
int bezWidth = TextRenderer.MeasureText(art.Bezeichnung, comboBoxArtikel.Font).Width;
|
|
if (dropdownWidth < bezWidth) dropdownWidth = bezWidth;
|
|
}
|
|
this.comboBoxArtikel.DropDownWidth = dropdownWidth;
|
|
this.comboBoxArtikel.SelectedIndex = -1;
|
|
this.comboBoxArtikel.SelectedIndexChanged += comboBoxArtikel_SelectedIndexChanged;
|
|
|
|
OLV_Load_with_Artikel();
|
|
|
|
}
|
|
|
|
#region ObjectListView
|
|
|
|
private void OLV_GroupCount()
|
|
{
|
|
foreach (OLVGroup group in this.objectListViewArtikel.OLVGroups)
|
|
{
|
|
int sum = 0;
|
|
|
|
foreach (OLVListItem item in group.Items)
|
|
{
|
|
Artikel art = (Artikel)item.RowObject;
|
|
sum += art.Nachwaesche;
|
|
}
|
|
group.Header = $"{group.Header} (Anzahl: {sum.ToString()})";
|
|
}
|
|
|
|
}
|
|
|
|
private void OLV_Load_with_Artikel()
|
|
{
|
|
if (this.user.Rolle == BenutzerRolle.Expedit || this.user.Rolle == BenutzerRolle.Frottee || this.user.Rolle == BenutzerRolle.Master)
|
|
{
|
|
//TODO: Einbinden der NachwaescheArtikelData...
|
|
Generator.GenerateColumns(this.objectListViewArtikel, typeof(NachwaescheArtikelData));
|
|
this.artikelList = Artikel.GetArtikelList("Nachwaesche");
|
|
var NWArtikelList = new List<NachwaescheArtikelData>();
|
|
foreach (Artikel art in this.artikelList)
|
|
{
|
|
NWArtikelList.Add(new NachwaescheArtikelData
|
|
{
|
|
ArtikelID = art.ArtikelID,
|
|
ArtNummer = art.Nummer.ToString(),
|
|
ArtName = art.Bezeichnung,
|
|
Short = art.Short,
|
|
Sauber = 0,
|
|
Muell = 0,
|
|
Kategorie = art.Kategorie
|
|
});
|
|
}
|
|
this.objectListViewArtikel.Font = new Font(this.objectListViewArtikel.Font.FontFamily, 16, FontStyle.Regular);
|
|
this.objectListViewArtikel.SetObjects(NWArtikelList);
|
|
this.objectListViewArtikel.PrimarySortColumn = (OLVColumn)this.objectListViewArtikel.AllColumns[6];
|
|
this.objectListViewArtikel.SecondarySortColumn = (OLVColumn)this.objectListViewArtikel.Columns["Abkürzung"];
|
|
this.objectListViewArtikel.Sort();
|
|
this.objectListViewArtikel.Refresh();
|
|
}
|
|
else
|
|
{
|
|
Generator.GenerateColumns(this.objectListViewArtikel, typeof(Artikel), true);
|
|
this.artikelList = Artikel.GetArtikelList("Alle");
|
|
|
|
this.objectListViewArtikel.SetObjects(this.artikelList);
|
|
OLVColumn sortColumn = new OLVColumn();
|
|
sortColumn = (OLVColumn)this.objectListViewArtikel.Columns[6];
|
|
this.objectListViewArtikel.Sort(sortColumn);
|
|
OLV_GroupCount();
|
|
OLVColumn buttonColumn = new OLVColumn();
|
|
buttonColumn = (OLVColumn)this.objectListViewArtikel.Columns[7];
|
|
buttonColumn.IsButton = true;
|
|
buttonColumn.ButtonSizing = OLVColumn.ButtonSizingMode.CellBounds;
|
|
|
|
}
|
|
OLV_ColumnsResize(this.objectListViewArtikel);
|
|
}
|
|
private void OLV_Load_with_Kunden(Artikel art)
|
|
{
|
|
this.Cursor = Cursors.WaitCursor;
|
|
this.SuspendLayout();
|
|
|
|
this.objectListViewArtikel.Columns.Clear();
|
|
this.objectListViewArtikel.ShowGroups = false;
|
|
Generator.GenerateColumns(this.objectListViewArtikel, typeof(NWData));
|
|
|
|
List<KundeArtikel> kndartList = KundeArtikel.GetFehlmengeList(null, art.ArtikelID);
|
|
var NWDataList = new List<NWData>();
|
|
|
|
// Kunden sammeln
|
|
foreach (KundeArtikel kndart in kndartList)
|
|
{
|
|
Kunde knd = Kunde.GetKunde(null, kndart.KundeID, null);
|
|
NWDataList.Add(new NWData
|
|
{
|
|
KndArtID = kndart.KundeArtikelID,
|
|
KundeID = kndart.KundeID,
|
|
KndNummer = knd.KundeNummer,
|
|
Kunde = knd.Suchtext == null ? knd.KundeName : knd.Suchtext,
|
|
Nachwaesche = kndart.Fehlmenge
|
|
});
|
|
}
|
|
|
|
this.objectListViewArtikel.SetObjects(NWDataList);
|
|
this.objectListViewArtikel.Refresh();
|
|
|
|
OLV_ColumnsResize(this.objectListViewArtikel);
|
|
|
|
this.ResumeLayout();
|
|
this.Cursor = Cursors.Default;
|
|
}
|
|
private void OLV_ColumnsResize(ObjectListView olv)
|
|
{
|
|
this.objectListViewArtikel.FilterMenuBuildStrategy = new MeinFilterMenu();
|
|
this.objectListViewArtikel.Width = Funktionen.Columns_Resize(null, objectListViewArtikel).olv.Width + 20;
|
|
|
|
this.objectListViewArtikel.Refresh();
|
|
}
|
|
private void objectListViewArtikel_ButtonClick(object sender, CellClickEventArgs e)
|
|
{
|
|
Artikel artikel = (Artikel)e.Model;
|
|
artikel.Nachwaesche = 0;
|
|
artikel.LastReset = DateTime.Now;
|
|
if(artikel.Save() == 1) this.objectListViewArtikel.RefreshObject(e.Model);
|
|
}
|
|
|
|
private void objectListViewArtikel_AfterCreatingGroups(object sender, CreateGroupsEventArgs e)
|
|
{
|
|
foreach (OLVGroup group in this.objectListViewArtikel.OLVGroups)
|
|
{
|
|
int sum = 0;
|
|
|
|
foreach (OLVListItem item in group.Items)
|
|
{
|
|
Artikel art = (Artikel)item.RowObject;
|
|
sum += art.Nachwaesche;
|
|
}
|
|
group.Header = $"{group.Header} (Anzahl: {sum.ToString()})";
|
|
}
|
|
|
|
}
|
|
|
|
private void objectListViewArtikel_CellEditFinished(object sender, CellEditEventArgs e)
|
|
{
|
|
OLVColumn col = e.Column;
|
|
DateTime timestamp = DateTime.Now.Date;
|
|
|
|
if (col == null) return;
|
|
if (e.NewValue == e.Value) return;
|
|
|
|
if (int.TryParse(e.NewValue.ToString(), out int i))
|
|
{
|
|
if (i > 0)
|
|
{
|
|
Artikel art = Artikel.GetArtikel(null, ((NachwaescheArtikelData)e.RowObject).ArtikelID);
|
|
ArtikelNachwaesche artnw = ArtikelNachwaesche.FindeDatensatz(art.ArtikelID, timestamp);
|
|
|
|
if (col.Text == "Sauber")
|
|
{
|
|
if (artnw.NachwaescheID != null) artnw.Sauber += i;
|
|
else
|
|
{
|
|
artnw = new ArtikelNachwaesche()
|
|
{
|
|
ArtikelID = art.ArtikelID,
|
|
Datum = timestamp,
|
|
Sauber = i
|
|
};
|
|
}
|
|
|
|
|
|
}
|
|
if (col.Text == "Müll")
|
|
{
|
|
if (artnw.NachwaescheID != null) artnw.Muell += i;
|
|
else
|
|
{
|
|
artnw = new ArtikelNachwaesche()
|
|
{
|
|
ArtikelID = art.ArtikelID,
|
|
Datum = timestamp,
|
|
Muell = i
|
|
};
|
|
}
|
|
}
|
|
artnw.Save();
|
|
}
|
|
else
|
|
{
|
|
if (col.Text == "NW")
|
|
{
|
|
NWData nw = (NWData)e.RowObject;
|
|
KundeArtikel kndart = KundeArtikel.GetItem((int)nw.KndArtID);
|
|
kndart.Fehlmenge = i;
|
|
kndart.FehlmengeBearbeitet = this.user.BenutzerName + " am " + DateTime.Now.ToString();
|
|
kndart.Save();
|
|
}
|
|
}
|
|
}
|
|
else { MessageBox.Show("Bitte nur ganze Zahlen eingeben.", "ACHTUNG", MessageBoxButtons.OK, MessageBoxIcon.Error); e.Cancel = true; }
|
|
|
|
this.objectListViewArtikel.RefreshObject(e.RowObject);
|
|
}
|
|
|
|
private void objectListViewArtikel_CellEditStarting(object sender, CellEditEventArgs e)
|
|
{
|
|
OLVColumn col = e.Column;
|
|
if (e.Control is NumericUpDown numeric) { numeric.Select(0, Text.Length); numeric.Focus(); }
|
|
}
|
|
#endregion
|
|
private void comboBoxArtikel_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
ComboBox cb = sender as ComboBox;
|
|
Artikel art = cb.SelectedItem as Artikel;
|
|
|
|
OLV_Load_with_Kunden(art);
|
|
}
|
|
|
|
private void objectListViewArtikel_Resize(object sender, EventArgs e)
|
|
{
|
|
this.ClientSize = new Size(this.objectListViewArtikel.Width + this.objectListViewArtikel.Left, this.ClientSize.Height);
|
|
}
|
|
}
|
|
}
|