Programm_Wirl/AA-Forms/FormNeuDeckungsbeitrag.cs
2026-04-21 09:02:20 +02:00

719 lines
27 KiB
C#

using BrightIdeasSoftware;
using DatenDB;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Point = System.Drawing.Point;
using Size = System.Drawing.Size;
namespace Deckungsbeitrag
{
public partial class FormNeuDeckungsbeitrag : Form
{
public List<Kunde> umsatzliste;
private ListViewColumnSorter lvwColumnSorter;
public List<Kunde> kundenliste;
public List<Kosten> kostenliste;
public Kunde kunde;
public Benutzer benutzer;
double bmin = 0; double bmax = 100; int bimage = 10;
double[] erfpos = new double[2];
double[] erfneg = new double[2];
int erfnull = 0;
int items = 0;
int monat; int vpjahr; int aktjahr; int aktquartal;
int Mietbetten; int Gesamtbetten;
bool filter = false; bool iskosten = false; bool isaktiv = true;
int[] quartale;
public double[] kosten = new double[3];
byte[] olvsettings;
Thread t;
ImageList imageList = new ImageList();
public FormNeuDeckungsbeitrag()
{
//t = new Thread(new ThreadStart(Splash));
//t.Start();
InitializeComponent();
this.WindowState = FormWindowState.Minimized; //Fenster verbergen (Bis fertig geladen)
this.groupBoxFilter.Visible = false;
foreach (Control ctr in this.groupBoxFilter.Controls) ctr.Visible = false;
imageList.Images.Add(Image.FromFile(ConfigurationManager.AppSettings["BildPfad"]));
}
public FormNeuDeckungsbeitrag(Benutzer benutzer, bool v) : this()
{
this.benutzer = benutzer;
this.iskosten = v;
//Einblenden von AddKosten wenn Kostenliste geladen und gleichzeitiges ausbelnden von KundeSuchen
if (iskosten) this.tSBAddKosten.Visible = true;
else this.tSButtonKundeSuchen.Visible = true;
}
private void FormNeuDeckungsbeitrag_Load(object sender, EventArgs e)
{
//StatusStrip Zahlen auf null setzten wegen Reload
erfpos = new double[2]; erfneg = new double[2]; erfnull = 0; items = 0;
//Sortieren und Filtern ermöglichen
lvwColumnSorter = new ListViewColumnSorter(false);
this.olvDeckungsbeitrag.ListViewItemSorter = lvwColumnSorter;
this.olvDeckungsbeitrag.FilterMenuBuildStrategy = new MeinFilterMenu();
//ComboBox KundeSuchen ausblenden. bei Click auf Kunde suchen wird eingeblendet.
this.tSComboBoxKndName.Visible = false;
//Letztes vorhandenes Quartal (wenn 4 dann ganzes Jahr) und Jahr aus DB holen vpjahr fix auf 2019.
aktquartal = OLVBewertung.GetLast()[0];
aktjahr = OLVBewertung.GetLast()[1];
vpjahr = 2019;
//ColumnHeader Format bearbeiten und Columns generieren.
this.olvDeckungsbeitrag.HeaderFormatStyle = Funktionen.GetHeader(); //OLV_ColumnHeader_Format();
this.olvDeckungsbeitrag.OwnerDraw = true;
OLV_Load(aktjahr, monat, aktquartal, isaktiv, vpjahr, null, iskosten, null);
OLV_State("AppStart", null);
this.WindowState = FormWindowState.Maximized; //Fenster einblenden (Wenn fertig geladen)
//Position und Größe ToolStrip und ListView an Screen anpassen
this.toolStripMenu.Size = new Size(toolStripButton1.Size.Width + 20, this.Height);
this.olvDeckungsbeitrag.Location = new Point(toolStripMenu.Width, 0);
this.olvDeckungsbeitrag.Size = new Size(this.Width - toolStripMenu.Width - 15, toolStripMenu.Height - statusStrip1.Height);
//Farbe der StatusStrip Labels für Erfolg
this.tSSLErfolgNeg.BackColor = Properties.Settings.Default.ColNeg;
this.tSSLErfolgNull.BackColor = Properties.Settings.Default.ColEqu;
this.tSSLErfolgPos.BackColor = Properties.Settings.Default.ColPos;
//t.Abort();
}
private void OLVcolumnResize()
{
this.olvDeckungsbeitrag.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
ListView.ColumnHeaderCollection cc = olvDeckungsbeitrag.Columns;
for (int i = 0; i < cc.Count; i++)
{
int colWidth = TextRenderer.MeasureText(cc[i].Text, olvDeckungsbeitrag.Font).Width + 10;
if (colWidth > cc[i].Width)
{
cc[i].Width = colWidth;
}
}//COLUMNS BREITE CONTENT ODER HEADER SIZE
//OLV_Design();
}
private void OLV_Load(int? aktjahr, int? monat, int? quartal, bool aktiv, int vpjahr, int[] quartale, bool kosten, Kunde kunde)
{
Cursor.Current = Cursors.WaitCursor;
this.olvDeckungsbeitrag.SuspendLayout();
this.olvDeckungsbeitrag.BeginUpdate();
this.olvDeckungsbeitrag.Clear();
isaktiv = aktiv;
if (!kosten)
{
if (isaktiv)
{
this.olvDeckungsbeitrag.CellEditActivation = ObjectListView.CellEditActivateMode.None;
if (monat != 0)
{
Generator.GenerateColumns(this.olvDeckungsbeitrag, typeof(OLVBewertung), true);
this.olvDeckungsbeitrag.SetObjects(OLVBewertung.GetList(aktjahr, monat, aktquartal, isaktiv, vpjahr, quartale, kunde != null ? kunde.KundeID : null));
}
else
{
Generator.GenerateColumns(this.olvDeckungsbeitrag, typeof(OLVBewertung), true);
this.olvDeckungsbeitrag.SetObjects(OLVBewertung.GetList(aktjahr, monat, quartal, isaktiv, vpjahr, quartale, kunde != null ? kunde.KundeID : null));
}
//ColumnHeader Umsatz je nach Zeitraum Text ändern.
foreach (OLVColumn c in this.olvDeckungsbeitrag.Columns)
{
if (quartal == null || quartal == 0)
{
if (monat == null || monat == 0)
{
if (quartale == null || quartale.Length == 0)
{
if (c.Name == "UmsatzVorperiode") c.Text = $"Umsatz {vpjahr}"; //Wenn Filter nach Jahren
if (c.Name == "Umsatz1") c.Text = $"Umsatz {aktjahr}"; //Wenn Filter nach Jahren
}
else
{
if (c.Name == "UmsatzVorperiode") c.Text = $"Umsatz Q{quartale.Min()}-{quartale.Max()} {vpjahr}"; //Wenn Filter nach mehreren Quartalen
if (c.Name == "Umsatz1") c.Text = $"Umsatz Q{quartale.Min()}-{quartale.Max()} {aktjahr}"; //Wenn Filter nach mehreren Quartalen
}
}
else
{
if (c.Name == "UmsatzVorperiode") c.Text = $"Umsatz M{monat} {vpjahr}"; //Wenn Filter nach Monat
if (c.Name == "Umsatz1") c.Text = $"Umsatz M{monat} {aktjahr}"; //Wenn Filter nach Monat
}
}
else
{
if (quartal != 4)
{
if (c.Name == "UmsatzVorperiode") c.Text = $"Umsatz Q{quartal} {vpjahr}"; //Wenn Aktuelles Quartal ist 1-3
if (c.Name == "Umsatz1") c.Text = $"Umsatz Q{quartal} {aktjahr}"; //Wenn Aktuelles Quartal ist 1-3
}
else
{
if (c.Name == "UmsatzVorperiode") c.Text = $"Umsatz {vpjahr}"; //Wenn Aktuelles Quartal ist 4 (Ganzes Jahr wird angezeigt)
if (c.Name == "Umsatz1") c.Text = $"Umsatz {aktjahr}"; //Wenn Aktuelles Quartal ist 4 (Ganzes Jahr wird angezeigt)
}
}
}//ColumnHeader Text ändern.
Get_Ratingwerte(); //Holt Ratingwerte für Bewertung
}
else
{
Generator.GenerateColumns(this.olvDeckungsbeitrag, typeof(Kunde), true);
this.olvDeckungsbeitrag.SetObjects(Kunde.GetList(isaktiv, string.Empty));
} //Inakive Kundenlsite laden -> mit letztem Jahresumsatz.
}
else
{
this.olvDeckungsbeitrag.CellEditActivation = ObjectListView.CellEditActivateMode.SingleClick;
Generator.GenerateColumns(this.olvDeckungsbeitrag, typeof(Kosten), true);
kostenliste = new List<Kosten>(Kosten.GetList(aktjahr, monat, quartal, aktiv, vpjahr, quartale));
this.olvDeckungsbeitrag.SetObjects(kostenliste);
} //Kostenliste anzeigen.
GetStatusStripData();
OLVcolumnResize();
this.olvDeckungsbeitrag.EndUpdate();
this.olvDeckungsbeitrag.ResumeLayout();
Cursor.Current = Cursors.Default;
}
//Click - Events
private void ButtonOK_Click(object sender, EventArgs e)
{
//StatusStrip Zahlen auf null setzten wegen Reload
erfpos = new double[2]; erfneg = new double[2]; erfnull = 0; items = 0;
aktjahr = int.Parse(comboBoxAktJahr.SelectedItem.ToString());
vpjahr = int.Parse(comboBoxVPJahr.SelectedItem.ToString());
monat = (int)comboBoxMonat.SelectedIndex + 1;
//if (this.checkBoxKosten.Checked) iskosten = true;
//else iskosten = false;
if (this.checkBoxInaktiv.Checked) isaktiv = false;
else isaktiv = true;
int idx = 0;
foreach (CheckBox cb in this.groupBoxQuartal.Controls)
{
if (cb.Checked)
{
quartale[idx] = int.Parse(cb.Text);
idx++;
}
}
OLV_Load(aktjahr, monat, null, isaktiv, vpjahr, quartale, iskosten, kunde); //MIT DB ALLE RELEVANTEN SITUATIONEN LADEN UND PROBIEREN!!!!!
} //Filter bestätigen und OLV-Laden beginnen
private void ToolStripButtonFilter_Click(object sender, EventArgs e)
{
Point location = olvDeckungsbeitrag.Location;
if (filter == false)
{
filter = true;
this.groupBoxFilter.Visible = true;
this.groupBoxFilter.Location = new Point(toolStripMenu.Width, 0);
this.groupBoxFilter.Size = new Size(this.Width - toolStripMenu.Width - 15, 95);
this.olvDeckungsbeitrag.Location = new Point(location.X, location.Y + 100);
this.olvDeckungsbeitrag.Size = new Size(olvDeckungsbeitrag.Size.Width, olvDeckungsbeitrag.Size.Height - 100);
foreach (Control ctr in this.groupBoxFilter.Controls) ctr.Visible = true;
List<string> list = new List<string>(Umsatz.GetJahre());
List<string> list2 = new List<string>(Umsatz.GetJahre());
this.comboBoxAktJahr.DataSource = list;
this.comboBoxAktJahr.SelectedIndex = (int)list.Count() - 1;
this.comboBoxVPJahr.DataSource = list2;
this.comboBoxVPJahr.SelectedIndex = 0;
if (iskosten)
{
checkBoxInaktiv.Visible = false;
comboBoxVPJahr.Enabled = false;
}
}
else
{
filter = false;
this.groupBoxFilter.Visible = false;
this.olvDeckungsbeitrag.Location = new Point(location.X, location.Y - 100);
this.olvDeckungsbeitrag.Size = new Size(olvDeckungsbeitrag.Size.Width, olvDeckungsbeitrag.Size.Height + 100);
foreach (Control ctr in this.groupBoxFilter.Controls) ctr.Visible = false;
umsatzliste = null;
FormNeuDeckungsbeitrag_Load(this, null);
}
} //Filtermenü einblenden
private void TSButtonKundeSuchen_Click(object sender, EventArgs e)
{
if (!tSComboBoxKndName.Visible)
{
this.tSComboBoxKndName.Size = new Size(180, 40);
this.tSComboBoxKndName.Visible = true;
}
else this.tSComboBoxKndName.Visible = false;
} //Clicken für Kunde suchen - ComboboxKndName einblenden
private void ToolStripBeenden_Click(object sender, EventArgs e)
{
OLV_State("Speichern", null);
this.DialogResult = DialogResult.Cancel;
this.Close();
} //Speichern des OLV-Status
private void tSBAddKosten_Click(object sender, EventArgs e)
{
Kosten newkosten = new Kosten();
newkosten.Betrag = 0;
newkosten.Bezeichnung = string.Empty;
newkosten.Datum = DateTime.Now;
newkosten.KontoNr = 0;
this.olvDeckungsbeitrag.AddObject(newkosten);
foreach (OLVColumn cl in this.olvDeckungsbeitrag.Columns) if (cl.Name != "KontoNr") cl.IsEditable = true;
this.olvDeckungsbeitrag.Refresh();
this.olvDeckungsbeitrag.EnsureVisible(olvDeckungsbeitrag.Items.Count - 1);
} //Kosten hinzufügen
//Drucken - Events
private void ToolStripPrint_Click(object sender, EventArgs e)
{
//ListViewPrinter printer = new ListViewPrinter();
//printer.ListView = this.olvDeckungsbeitrag;
//printer.PrintPreview();
//PrintDialog dialog = new PrintDialog();
//if (dialog.ShowDialog() == DialogResult.OK)
//{
// PrintPreviewDialog previewDialog = new PrintPreviewDialog();
// PrintDocument printDocument = new PrintDocument();
// printDocument.PrintPage += new PrintPageEventHandler(printDocument_PrintPage);
// printDocument.PrinterSettings = dialog.PrinterSettings;
// previewDialog.UseAntiAlias = true;
// previewDialog.Document = printDocument;
// (previewDialog as Form).WindowState = FormWindowState.Maximized;
// previewDialog.ShowDialog();
//}
}
private void PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(Report.Get_ListView_Report((OLVListItem)this.olvDeckungsbeitrag.Objects), 0, 0);
}
//Diverse - Events
private void Get_Ratingwerte()
{
if (!Properties.Settings.Default.MaxChecked) bmax = (int)OLVBewertung.GetTopLast(aktjahr, monat, aktquartal, true, vpjahr)[1];
else bmax = Properties.Settings.Default.RatMax;
if (!Properties.Settings.Default.MinChecked) bmin = (int)OLVBewertung.GetTopLast(aktjahr, monat, aktquartal, true, vpjahr)[0];
else bmin = Properties.Settings.Default.RatMin;
bimage = Properties.Settings.Default.ZAnzahl;
} //Ratingwerte wenn nicht individuell dann an Top Last der Liste orientieren sonst Werte aus Settings.
private void OLV_State(object sender, EventArgs e)
{
if(sender.ToString() == "AppStart")
{
if (Properties.Settings.Default.OLVState != string.Empty)
{
olvsettings = Convert.FromBase64String(Properties.Settings.Default.OLVState);
this.olvDeckungsbeitrag.RestoreState(olvsettings);
}
} //Lädt OLV_State bei FormNeuDeckungsbeitrag Start.
if(sender.ToString() == "StartmitFilter")
{
if (Properties.Settings.Default.OLVState != string.Empty)
{
olvsettings = Convert.FromBase64String(Properties.Settings.Default.OLVState);
this.olvDeckungsbeitrag.RestoreState(olvsettings);
}
} //Lädt OLV_State beim Laden mit Filter.
if(sender.ToString() == "Speichern")
{
if (!filter)
{
olvsettings = this.olvDeckungsbeitrag.SaveState();
string s = Convert.ToBase64String(olvsettings);
Properties.Settings.Default.OLVState = s;
Properties.Settings.Default.Save();
} //Speichert OLV_State ohne Filter.
else
{
olvsettings = this.olvDeckungsbeitrag.SaveState();
string s = Convert.ToBase64String(olvsettings);
Properties.Settings.Default.OLVState = s;
Properties.Settings.Default.Save();
} //Speichert OLV_State wenn Filter.
} //Speichert OLV_State bei Click auf SPEICHERN (toolStripBeenden)
} //SPEICHERN UND LADEN DES OLV_STATE (Status der Spalten)
private void GetStatusStripData()
{
if (iskosten)
{
tSSLMietbetten.Text = "Kostensumme Rest:";
tSSLGesamtbetten.Text = "Kostensumme Variabel:";
tSSLKunden.Text = "Summe Fixkosten (Lohn / Miet):";
//double[] kostenkat = new double[4];
double[] kostenkat = Berechnungen.Kostensummen(kostenliste);
tSSLMietbettenAnz.Text = kostenkat[3].ToString("C2");
tSSLGesamtbettenAnz.Text = kostenkat[2].ToString("C2");
tSSLKundenzahlen.Text = kostenkat[0].ToString("C2") + " / " + kostenkat[1].ToString("C2");
tSSLErfolg.Visible = tSSLErfolgNeg.Visible = tSSLErfolgNull.Visible = tSSLErfolgPos.Visible = false;
tSSLItemsAnz.Text = items.ToString();
}
else
{
tSSLMietbetten.Text = "Mietbetten:";
tSSLGesamtbetten.Text = "Gesamtbetten:";
tSSLKunden.Text = "Kunden (Aktiv / Inaktiv / Gesamt):";
//BETTENANZAHL
Mietbetten = Kunde.GetBettenAnzahl("Miete");
Gesamtbetten = Kunde.GetBettenAnzahl("Lohn");
this.tSSLGesamtbettenAnz.Text = Gesamtbetten.ToString();
this.tSSLMietbettenAnz.Text = Mietbetten.ToString();
//KUNDENANZAHL
this.tSSLKundenzahlen.Text = Kunde.GetAnzahlKnd(true).ToString() + " / " + Kunde.GetAnzahlKnd(false).ToString() + " / " + Kunde.GetAnzahlKnd(null).ToString();
//ERFOLGSZAHLEN
this.tSSLErfolgPos.Text = erfpos[0].ToString() + " / " + erfpos[1].ToString("C2");
this.tSSLErfolgNull.Text = erfnull.ToString();
this.tSSLErfolgNeg.Text = erfneg[0].ToString() + " / " + erfneg[1].ToString("C2");
this.tSSLItemsAnz.Text = items.ToString();
}
} //Diverse Zahlen im StatusStrip einfügen
private void OlvDeckungsbeitrag_BeforeSorting(object sender, BeforeSortingEventArgs e)
{
//if(MessageBox.Show("Möchtest du die Gruppierung beibehalten?"))
if(e.ColumnToSort != null)
{
if (e.ColumnToSort.DataType != null)
{
if (e.ColumnToSort.Index == lvwColumnSorter.SortColumn)
{
// Reverse the current sort direction for this column.
if (lvwColumnSorter.Order == SortOrder.Ascending) lvwColumnSorter.Order = SortOrder.Descending;
else lvwColumnSorter.Order = SortOrder.Ascending;
}
else
{
// Set the column number that is to be sorted; default to ascending.
lvwColumnSorter.SortColumn = e.ColumnToSort.Index;
lvwColumnSorter.Order = SortOrder.Ascending;
}
this.olvDeckungsbeitrag.ListViewItemSorter = new ColumnComparer(e.ColumnToSort, lvwColumnSorter.Order);
e.Handled = true;
}
}
}
private void Get_Border_Paint(object sender, PaintEventArgs e)
{
ToolStripItem item = (ToolStripItem)sender;
ControlPaint.DrawBorder(e.Graphics, new Rectangle(0, 0, item.Width, item.Height), Color.White, ButtonBorderStyle.Solid);
}//BOARDER UM TOOLSTRIP-BUTTON
private void Splash()
{
//Open a splash screen form
FormLaden frm = new FormLaden();
Application.Run(frm);
} //Ladescreen anzeigen bis Thread beendet
private void GroupBoxQuartal_Validating(object sender, CancelEventArgs e)
{
int idx = 0;
foreach (CheckBox cb in this.groupBoxQuartal.Controls) if (cb.Checked) ++idx;
if (idx == 4)
{
MessageBox.Show("Es sind zu viele Quartale markiert. Maximal 3 erlaubt." + Environment.NewLine + "Um ein ganzes Jahr zu sehen weder Quartal noch Monat wählen.");
this.groupBoxQuartal.BackColor = Color.Red;
e.Cancel = true;
}
else
{
quartale = new int[idx];
this.groupBoxQuartal.BackColor = Program.Wirlblau;
}
} //Max 3 Quartale auswählbar sonst ganzes Jahr
private void tSBEinstellung_Click(object sender, EventArgs e)
{
FormEinstellung einstellung = new FormEinstellung();
if (einstellung.ShowDialog() == DialogResult.OK) { FormNeuDeckungsbeitrag_Load(this, null); }
} //Einstellungen öffnen
//Kunde suchen - Events
private void TSComboBoxKndName_TextUpdate(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(tSComboBoxKndName.Text))
{
List<Kunde> tmplist = Kunde.GetTmpList(tSComboBoxKndName.Text, null);
if (int.TryParse(tSComboBoxKndName.Text, out _)) foreach (Kunde kunde in tmplist) tSComboBoxKndName.AutoCompleteCustomSource.Add(kunde.KundeNummer);
else foreach (Kunde kunde in tmplist) tSComboBoxKndName.AutoCompleteCustomSource.Add(kunde.KundeName);
}
} //Aktualisieren von DataSource während dem Tippen
private void TSComboBoxKndName_Leave(object sender, EventArgs e)
{
ToolStripComboBox tb = (ToolStripComboBox)sender;
if (string.IsNullOrEmpty(tb.Text))
{
tb.Text = "SUCHTEXT";
if (!filter) FormNeuDeckungsbeitrag_Load(this, null);
else ButtonOK_Click(this, null);
}
else
{
kunde = new Kunde();
if (int.TryParse(this.tSComboBoxKndName.Text, out _)) kunde = Kunde.GetKunde(this.tSComboBoxKndName.Text, null, null);
else kunde = Kunde.GetKunde(null, null, this.tSComboBoxKndName.Text.ToLower());
ButtonOK_Click(this, null);
}
} //Text überprüfen und Kunde laden (Wenn leer Standarttext einfügen)
private void TSComboBoxKndName_Enter(object sender, EventArgs e)
{
ToolStripComboBox tb = (ToolStripComboBox)sender;
tb.Text = "";
} //Entfernen vom Standarttext wenn Enter
private void TSComboBoxKndName_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
TSComboBoxKndName_Leave(this.tSComboBoxKndName, null);
e.Handled = true;
}
} //Enter Click registrieren und dadurch ComboBox_Leave
//ObjectListView - Events
private void OlvDeckungsbeitrag_FormatCell(object sender, FormatCellEventArgs e)
{
if (e.CellValue != null)
{
if (e.Column.AspectName == "DifferenzEUR")
{
e.SubItem.Font = new Font(e.Item.Font, FontStyle.Bold);
if (e.CellValue.ToString().StartsWith("-")) e.SubItem.ForeColor = Properties.Settings.Default.ColNeg;
else e.SubItem.ForeColor = Properties.Settings.Default.ColPos;
}
if (e.Column.AspectName == "DifferenzPRO")
{
e.SubItem.Font = new Font(e.Item.Font, FontStyle.Bold);
if (e.CellValue.ToString().StartsWith("-")) e.SubItem.ForeColor = Properties.Settings.Default.ColNeg;
else e.SubItem.ForeColor = Properties.Settings.Default.ColPos;
}
if (e.Column.AspectName == "ErfolgGesamt")
{
if ((double)e.CellValue > 0)
{
e.SubItem.BackColor = Properties.Settings.Default.ColPos;
e.SubItem.ForeColor = Color.White;
erfpos[1] += (double)e.CellValue;
++erfpos[0];
}
if ((double)e.CellValue == 0)
{
e.SubItem.BackColor = Properties.Settings.Default.ColEqu;
e.SubItem.ForeColor = Color.Black;
++erfnull;
}
if ((double)e.CellValue < 0)
{
e.SubItem.BackColor = Properties.Settings.Default.ColNeg;
e.SubItem.ForeColor = Color.White;
erfneg[1] += (double)e.CellValue;
++erfneg[0];
}
}
//Versuch Text Aligne pro Item ändern.
//if (e.Column.AspectName == "Bewertung")
//{
// if ((int)e.CellValue >= 0) e.Column.TextAlign = HorizontalAlignment.Right;
// else e.Column.TextAlign = HorizontalAlignment.Left;
// }
}
} //Automatisch ausgelöst, Möglichkeit einzelne Zellen zu formatieren.
private void OlvDeckungsbeitrag_FormatRow(object sender, FormatRowEventArgs e)
{
++items;
if (!iskosten && isaktiv)
{
this.olvDeckungsbeitrag.AllColumns[0].Renderer = new MultiImageRenderer(imageList.Images[0], bimage, (int)bmin, (int)bmax);
e.Item.ToolTipText = e.Item.Text;
//Versuch bei Negativzahl anderes Image anzeigen.
//if (double.Parse(e.Item.Text) >= 0)
//{
// this.olvDeckungsbeitrag.AllColumns[0].Renderer = new MultiImageRenderer(imageList.Images[0], bimage, 0, (int)bmax);
// e.Item.ToolTipText = e.Item.Text;
// //this.olvDeckungsbeitrag.AllColumns[0].TextAlign = HorizontalAlignment.Right;
// //Text Aligne right
//}
//else
//{
// this.olvDeckungsbeitrag.AllColumns[0].Renderer = new MultiImageRenderer(imageList.Images[1], bimage, (int)bmin, 0);
// //Text Aligne left
//} //Bei NegativZahl anderes Image anzeigen. NOCH NICHT VERSUCHT.
}
} //Automatisch ausgelöst, Möglichkeit einzelne RowObjects zu formatieren.
private void OlvDeckungsbeitrag_ItemChecked(object sender, ItemCheckedEventArgs e)
{
OLVListItem item = (OLVListItem)e.Item;
kunde = Kunde.GetKunde(item.Text, null, string.Empty);
kunde.Aktiv = item.Checked;
kunde.Save();
GetStatusStripData();
} //Vermutlich UNNÖTIG durch SubItemChecking abgelöst.
private void OlvDeckungsbeitrag_SubItemChecking(object sender, SubItemCheckingEventArgs e)
{
kunde = Kunde.GetKunde(e.ListViewItem.Text, null, string.Empty);
kunde.Aktiv = e.ListViewItem.Checked;
kunde.Save();
GetStatusStripData();
} //SubItem Aktiv mit CheckBox Status ändern.
private void OlvDeckungsbeitrag_MouseDoubleClick(object sender, MouseEventArgs e)
{
OLVListItem item = (OLVListItem)this.olvDeckungsbeitrag.GetItemAt(e.X, e.Y);
OLVBewertung bew = (OLVBewertung)item.RowObject;
Kunde knd = Kunde.GetKunde(null, bew.KundeID, string.Empty);
FormKundeVW daten = new FormKundeVW(knd);
if(daten.ShowDialog() == DialogResult.OK)
{
}
} //RowObject (Kunde) in KundenDaten öffnen
private void olvDeckungsbeitrag_CellEditValidating(object sender, CellEditEventArgs e)
{
if (e.Column.Name == "Kategorie")
{
StringCollection variabel = new StringCollection();
variabel.AddRange(ConfigurationManager.AppSettings["Variabel"].Split(','));
StringCollection fixlohn = new StringCollection();
fixlohn.AddRange(ConfigurationManager.AppSettings["FixLohn"].Split(','));
StringCollection fixmiet = new StringCollection();
fixmiet.AddRange(ConfigurationManager.AppSettings["FixMiete"].Split(','));
foreach (Kosten kosten in Kosten.GetUpdateList(e.ListViewItem.Text))
{
if(kosten.KontoNr.ToString() == e.ListViewItem.Text)
{
kosten.Kategorie = (KostenKat)e.NewValue;
kosten.Save();
}
}
if ((KostenKat)e.NewValue == KostenKat.Variabel) variabel.Add(e.ListViewItem.Text);
if ((KostenKat)e.NewValue == KostenKat.FixMiete) fixmiet.Add(e.ListViewItem.Text);
if ((KostenKat)e.NewValue == KostenKat.FixLohn) fixlohn.Add(e.ListViewItem.Text);
if ((KostenKat)e.Value == KostenKat.Variabel) variabel.Remove(e.ListViewItem.Text);
if ((KostenKat)e.Value == KostenKat.FixMiete) fixmiet.Remove(e.ListViewItem.Text);
if ((KostenKat)e.Value == KostenKat.FixLohn) fixlohn.Remove(e.ListViewItem.Text);
Save_Kostenstelle(variabel, fixmiet, fixlohn);
}
if (e.Column.Name == "Betrag")
{
Kosten kstn = (Kosten)e.RowObject;
kstn.Betrag = (double)e.NewValue;
kstn.Save();
}
if (e.Column.Name == "Bezeichnung")
{
Kosten kost = (Kosten)e.RowObject;
Kosten nokost = Kosten.GetKosten(null, e.NewValue.ToString());
kost.KontoNr = nokost.KontoNr;
kost.Kategorie = nokost.Kategorie;
kost.Bezeichnung = nokost.Bezeichnung.Substring(0,1).ToUpper() + nokost.Bezeichnung.Substring(1).ToLower();
kost.Save();
e.NewValue = kost.Bezeichnung.ToString();
}
if (e.Column.Name == "Datum")
{
Kosten kstn = (Kosten)e.RowObject;
kstn.Datum = (DateTime)e.NewValue;
kstn.Save();
}
} //Bei Verlassen der Zelle nach Edit wird Value kontrolliert
private void olvDeckungsbeitrag_CellEditStarting(object sender, CellEditEventArgs e)
{
e.Control.Bounds = e.ListViewItem.GetSubItemBounds(e.SubItemIndex);
} //Vor Edit wird Control an Spaltenbreite angepasst
private void Save_Kostenstelle(StringCollection variabel, StringCollection fixmiet, StringCollection fixlohn)
{
string var = string.Empty;
string lohn = string.Empty;
string miet = string.Empty;
foreach (string s in variabel) var += "," + s;
foreach (string s in fixmiet) miet += "," + s;
foreach (string s in fixlohn) lohn += "," + s;
Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
config.AppSettings.Settings.Remove("Variabel");
config.AppSettings.Settings.Add("Variabel", var.Remove(0, 1));
config.AppSettings.Settings.Remove("FixMiete");
config.AppSettings.Settings.Add("FixMiete", miet.Remove(0, 1));
config.AppSettings.Settings.Remove("FixLohn");
config.AppSettings.Settings.Add("FixLohn", lohn.Remove(0, 1));
config.Save();
} //Speichern der KontoNr. in einer Kostenstelle
//FUNKTIONIERT NICHT
}
}