Imports System.Timers Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN Public Class frmEssensbestellungenAdministration Dim dt As DataTable Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Private Sub frmEssensbestellungenAdministration_Load(sender As Object, e As EventArgs) Handles MyBase.Load lblWarning.Text = "" txtBestellDat.Text = Date.Parse("01.01.2001") txtBestellDatBis.Text = Today.AddDays(7).ToShortDateString btnMonat.Text = MONAT.ToString("MMMM") btnJahr.Text = JAHR.Year txtMitarbeiter.Text = "" 'cboGebaeude.changeItem("") 'cboAbteilung.changeItem("") cbxStornos.Checked = False cbxAbgerechnet.Checked = False cboGebaeude.fillWithSQL("SELECT DISTINCT(eb_gebaeude) FROM [tblEssensbestellungen]", False, "AVISO", True) cboGebaeude.changeItem("") cboAbteilung.fillWithSQL("SELECT DISTINCT(eb_abteilung) FROM [tblEssensbestellungen]", False, "AVISO", True) cboAbteilung.changeItem("") cbKW.fillWithSQL("SELECT DISTINCT(eb_kw) FROM [tblEssensbestellungen] UNION SELECT (REPLACE(MenuTitel,'Wochenkarte ','')) + ' - ' + Convert(varchar, Year(MenuDateVon)) as kwDateNew FROM [tblEBMenu] where MenuDateVon > GETDATE()ORDER BY eb_kw desc", False, "AVISO", True) cbxMailKW.fillWithSQL("SELECT DISTINCT(eb_kw) FROM [tblEssensbestellungen] ORDER BY eb_kw desc", False, "AVISO", True) cbxMailKW.changeItem("") cbxMailGebäude.changeItem("") cbxMailGebäude.Items.AddRange(cboGebaeude.Items.Cast(Of VERAG_PROG_ALLGEMEIN.MyListItem).ToArray()) loadBestellungen() End Sub Private Sub loadBestellungen() Dim SQLString As String = "SELECT [eb_mitid] , [eb_mitname] ,[eb_firma] , [eb_kw] , [eb_gebaeude],[eb_abteilung],[eb_montag],[eb_dienstag],[eb_mittwoch], [eb_donnerstag] ,[eb_freitag],[eb_datum],[eb_preis], [eb_anmerkung],[eb_storniert],[eb_storniert_am],[eb_abgerechnet],[eb_abgerechnet_am], [eb_gesendet], [eb_gesendet_am] FROM [tblEssensbestellungen] WHERE 1=1" dgvBestellungen.SET_SQL(SQLString & bestellungenWhereClause() & " Order by eb_datum, eb_mitid", "AVISO", ,) dgvBestellungen.LOAD() With dgvBestellungen 'If .RowCount = 0 Then Me.Cursor = Cursors.Default : Exit Sub .RowHeadersVisible = False .ReadOnly = True .SelectionMode = DataGridViewSelectionMode.FullRowSelect .RowHeadersWidth = 10 .Columns("eb_kw").HeaderText = "KW" .Columns("eb_kw").Width = 80 .Columns("eb_mitid").HeaderText = "MID" .Columns("eb_mitid").Width = 40 .Columns("eb_mitname").HeaderText = "Mitarbeiter" .Columns("eb_mitname").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("eb_abteilung").Visible = False .Columns("eb_firma").Width = 80 .Columns("eb_firma").HeaderText = "Firma" .Columns("eb_datum").Width = 80 .Columns("eb_datum").HeaderText = "Datum" .Columns("eb_montag").Width = 80 .Columns("eb_montag").HeaderText = "Montag" .Columns("eb_montag").Width = 80 .Columns("eb_dienstag").HeaderText = "Dienstag" .Columns("eb_dienstag").Width = 80 .Columns("eb_mittwoch").HeaderText = "Mittwoch" .Columns("eb_mittwoch").Width = 80 .Columns("eb_donnerstag").HeaderText = "Donnerstag" .Columns("eb_donnerstag").Width = 80 .Columns("eb_freitag").HeaderText = "Freitag" .Columns("eb_freitag").Width = 80 .Columns("eb_gebaeude").HeaderText = "Gebäude" .Columns("eb_gebaeude").Width = 100 .Columns("eb_preis").HeaderText = "Preis" .Columns("eb_preis").Width = 40 .Columns("eb_preis").DefaultCellStyle.Format = "N" .Columns("eb_storniert_am").HeaderText = "Storniert am" .Columns("eb_storniert_am").Width = 80 .Columns("eb_abgerechnet_am").HeaderText = "Abgerechnet am" .Columns("eb_abgerechnet_am").Width = 80 .Columns("eb_gesendet_am").HeaderText = "Gesendet am" .Columns("eb_gesendet_am").Width = 80 .Columns("eb_storniert").Visible = False .Columns("eb_abgerechnet").Visible = False .Columns("eb_gesendet").Visible = False .Columns("eb_anmerkung").HeaderText = "Anmerkung" End With For Each row As DataGridViewRow In dgvBestellungen.Rows If Not IsDBNull(row.Cells("eb_gesendet").Value) Then If row.Cells("eb_gesendet").Value Then row.DefaultCellStyle.BackColor = Color.LightYellow End If If Not IsDBNull(row.Cells("eb_storniert").Value) Then If row.Cells("eb_storniert").Value Then row.DefaultCellStyle.BackColor = Color.IndianRed End If End If If Not IsDBNull(row.Cells("eb_abgerechnet").Value) Then If row.Cells("eb_abgerechnet").Value Then row.DefaultCellStyle.BackColor = Color.LightGreen End If Next txtAnzahlDS.Text = dgvBestellungen.Rows.Count calcSumme() End Sub Private Function bestellungenWhereClause() As String Dim SQLwhere = "" If cboGebaeude._value IsNot "" Then SQLwhere &= " AND [eb_gebaeude] = '" & cboGebaeude._value.ToString & "'" If cboAbteilung._value IsNot "" Then SQLwhere &= " AND [eb_abteilung] = '" & cboAbteilung._value.ToString & "'" If txtMitarbeiter.Text <> "" Then SQLwhere &= " AND [eb_mitname] like '%" & txtMitarbeiter.Text & "%'" If cbxAlleAnzeigen.Checked = False Then If cbxStornos.Checked Then SQLwhere &= " AND [eb_storniert] = '1'" Else SQLwhere &= " AND ISNULL([eb_storniert],0) = '0'" End If If cbxAbgerechnet.Checked Then SQLwhere &= " AND [eb_abgerechnet] = '1'" Else SQLwhere &= " AND ISNULL([eb_abgerechnet],0) = '0'" End If If cbxNichtAbgeschickt.Checked Then SQLwhere &= " AND ISNULL([eb_gesendet],0) = '0'" Else 'SQLwhere &= " AND [eb_gesendet] = '1'" End If End If If txtBestellDat._value <> Nothing AndAlso txtBestellDatBis._value <> Nothing Then SQLwhere &= " AND [eb_datum] BETWEEN '" & txtBestellDat._value & "' AND '" & txtBestellDatBis._value & "'" End If Return SQLwhere End Function Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged txtBestellDat._value = CDate(sender.value).ToShortDateString End Sub Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged txtBestellDatBis._value = CDate(sender.value).ToShortDateString End Sub Private Sub btnMonat_Click(sender As Object, e As EventArgs) Handles btnMonat.Click initBtns("Monat") End Sub Dim MONAT As Date = CDate("01." & Now.Month & "." & Now.Year) Dim JAHR As Date = CDate("01.01." & Now.Year) Sub initBtns(MonatJahr) btnMonat.Text = MONAT.ToString("MMMM") btnJahr.Text = JAHR.Year Select Case MonatJahr Case "Monat" DateTimePicker1.Value = MONAT DateTimePicker2.Value = MONAT.AddMonths(1).AddDays(-1) Case "Jahr" DateTimePicker1.Value = JAHR DateTimePicker2.Value = JAHR.AddYears(1).AddDays(-1) Case "" DateTimePicker1.Value = ("01." & Now.Month & "." & Now.Year) DateTimePicker2.Value = Now End Select End Sub Private Sub btnJahr_Click(sender As Object, e As EventArgs) Handles btnJahr.Click initBtns("Jahr") End Sub Private Sub btnBisMonat_Click(sender As Object, e As EventArgs) Handles btnBisMonat.Click MONAT = MONAT.AddMonths(1) initBtns("Monat") End Sub Private Sub btnVonMonat_Click(sender As Object, e As EventArgs) Handles btnVonMonat.Click MONAT = MONAT.AddMonths(-1) initBtns("Monat") End Sub Private Sub btnBisJahr_Click(sender As Object, e As EventArgs) Handles btnBisJahr.Click JAHR = JAHR.AddYears(1) initBtns("Jahr") End Sub Private Sub btnVonJahr_Click(sender As Object, e As EventArgs) Handles btnVonJahr.Click JAHR = JAHR.AddYears(-1) initBtns("Jahr") End Sub Private Sub txtMitarbeiter_KeyDown(sender As Object, e As KeyEventArgs) Handles txtMitarbeiter.KeyDown If e.KeyCode = Keys.Enter Then Me.loadBestellungen() e.Handled = True End If End Sub Private Sub btnSuche_Click(sender As Object, e As EventArgs) Handles btnSuche.Click, cbxAbgerechnet.CheckedChanged, cbxStornos.CheckedChanged, cbxNichtAbgeschickt.CheckedChanged, cbxAlleAnzeigen.CheckedChanged If cbxAlleAnzeigen.Checked Then cbxAbgerechnet.Checked = Not cbxAlleAnzeigen.Checked cbxNichtAbgeschickt.Checked = Not cbxAlleAnzeigen.Checked cbxStornos.Checked = Not cbxAlleAnzeigen.Checked End If loadBestellungen() End Sub Private Sub FlatButton7_Click(sender As Object, e As EventArgs) Handles FlatButton7.Click cbKW.changeItem("") txtMitarbeiter.Text = "" cboGebaeude.changeItem("") cboAbteilung.changeItem("") cbxStornos.Checked = False cbxAbgerechnet.Checked = False txtBestellDat.Text = Date.Parse("01.01.2001") txtBestellDatBis.Text = Now.AddDays(7).ToShortDateString 'Um die aktuellen EB für nächste Woche zu sehen Me.btnSuche.PerformClick() End Sub Private Sub calcSumme() Dim countSumme As Double = 0 For i As Integer = 0 To dgvBestellungen.Rows.Count - 1 countSumme += CDbl(dgvBestellungen.Rows(i).Cells("eb_preis").Value) Next txtSumme._value = countSumme.ToString End Sub Private Sub BearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BearbeitenToolStripMenuItem.Click If dgvBestellungen.SelectedRows.Count < 1 Then Exit Sub Dim bestellung As New cEssensbestellung(dgvBestellungen.SelectedRows(0).Cells("eb_kw").Value, dgvBestellungen.SelectedRows(0).Cells("eb_mitid").Value) Using UserControl1 As SDL.UsrCntlessensbestellungen = New SDL.UsrCntlessensbestellungen(bestellung) Using tmpForm As Form = New Form() tmpForm.Width = UserControl1.Width tmpForm.Height = UserControl1.Height + 40 tmpForm.Text = bestellung.eb_kw.ToString & " - " & bestellung.eb_mitname.ToString tmpForm.StartPosition = tmpForm.StartPosition.CenterParent tmpForm.Controls.Add(UserControl1) If tmpForm.ShowDialog() = DialogResult.OK Then dgvBestellungen.GetOrder() loadBestellungen() dgvBestellungen.SetOrder() End If End Using End Using End Sub Private Sub AbgerechnetToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AbgerechnetToolStripMenuItem.Click, StornierenToolStripMenuItem.Click, AnHigway118SchickenToolStripMenuItem.Click If dgvBestellungen.SelectedRows.Count = 0 Then Exit Sub Select Case sender.Text Case "abrechnen" Select Case dgvBestellungen.SelectedRows.Count Case 1 If vbYes = MsgBox("Möchten Sie die Essensbestellung '" & dgvBestellungen.SelectedRows(0).Cells("eb_kw").Value & " von Mitarbeiter " & dgvBestellungen.SelectedRows(0).Cells("eb_mitname").Value & " abrechnen", vbYesNoCancel) Then bestellungenAbrechnen(True) Else Exit Sub End If Case Else If vbYes = MsgBox("Möchten Sie diese " & dgvBestellungen.SelectedRows.Count & " Essensbestellungen abrechnen", vbYesNoCancel) Then bestellungenAbrechnen(True) Else Exit Sub End If End Select Case "stornieren" Select Case dgvBestellungen.SelectedRows.Count Case 1 If vbYes = MsgBox("Möchten Sie die Essensbestellung '" & dgvBestellungen.SelectedRows(0).Cells("eb_kw").Value & " von Mitarbeiter " & dgvBestellungen.SelectedRows(0).Cells("eb_mitname").Value & " wirklich stornieren", vbYesNoCancel) Then bestellungenStornieren(True) Else Exit Sub End If Case Else If vbYes = MsgBox("Möchten Sie diese " & dgvBestellungen.SelectedRows.Count & " Essensbestellungen wirklich stornieren", vbYesNoCancel) Then bestellungenStornieren(True) Else Exit Sub End If End Select Case "markierte Bestellungen per Mail senden" Select Case dgvBestellungen.SelectedRows.Count Case 1 If vbYes = MsgBox("Möchten Sie die Essensbestellung '" & dgvBestellungen.SelectedRows(0).Cells("eb_kw").Value & " von Mitarbeiter " & dgvBestellungen.SelectedRows(0).Cells("eb_mitname").Value & " abschicken?", vbYesNoCancel) Then bestellungenSenden(True) generateEMailforHighway(sender, e) Else Exit Sub End If Case Else If vbYes = MsgBox("Möchten Sie diese " & dgvBestellungen.SelectedRows.Count & " Essensbestellungen abschicken", vbYesNoCancel) Then bestellungenSenden(True) generateEMailforHighway(sender, e) Else Exit Sub End If End Select End Select loadBestellungen() End Sub Private Sub bestellungenStornieren(stornieren As Boolean) For Each row As DataGridViewRow In dgvBestellungen.SelectedRows Dim bestellung As New cEssensbestellung(row.Cells("eb_kw").Value, row.Cells("eb_mitid").Value) bestellung.eb_storniert = True If stornieren Then bestellung.eb_storniert_am = Now Else bestellung.eb_storniert_am = DBNull.Value End If bestellung.eb_preis = 0 bestellung.SAVE() Next dgvBestellungen.GetOrder() dgvBestellungen.LOAD() dgvBestellungen.SetOrder() End Sub Private Sub bestellungenAbrechnen(abrechnen As Boolean) For Each row As DataGridViewRow In dgvBestellungen.SelectedRows Dim bestellung As New cEssensbestellung(row.Cells("eb_kw").Value, row.Cells("eb_mitid").Value) bestellung.eb_abgerechnet = abrechnen If abrechnen Then bestellung.eb_abgerechnet_am = Now Else bestellung.eb_abgerechnet_am = DBNull.Value End If bestellung.SAVE() Next dgvBestellungen.GetOrder() dgvBestellungen.LOAD() dgvBestellungen.SetOrder() End Sub Private Sub bestellungenSenden(senden As Boolean) For Each row As DataGridViewRow In dgvBestellungen.SelectedRows Dim bestellung As New cEssensbestellung(row.Cells("eb_kw").Value, row.Cells("eb_mitid").Value) bestellung.eb_gesendet = senden If senden Then bestellung.eb_gesendet_am = Now Else bestellung.eb_gesendet_am = DBNull.Value End If bestellung.SAVE() Next dgvBestellungen.GetOrder() dgvBestellungen.LOAD() dgvBestellungen.SetOrder() End Sub Private Sub generateEMailforHighway(sender As Object, e As EventArgs) Me.Cursor = Cursors.WaitCursor Try Dim kw As String = "" Dim gebaeude As String = "" Dim TextHTMLtable = "" TextHTMLtable &= "
| Mitarbeiter | Montag | Dienstag | Mittwoch | Donnerstag | Freitag | Gebäude | Anmerkung | Firma |
| " & row("Name") & " | " TextHTMLtable &= "" & row("Montag") & " | " TextHTMLtable &= "" & row("Dienstag") & " | " TextHTMLtable &= "" & row("Mittwoch") & " | " TextHTMLtable &= "" & row("Donnerstag") & " | " TextHTMLtable &= "" & row("Freitag") & " | " TextHTMLtable &= "" & row("Gebaeude") & " | " TextHTMLtable &= "" & row("Anmerkung") & " | " TextHTMLtable &= "" & row("Firma") & " | " TextHTMLtable &= "
| " & row.Cells("eb_mitname").Value & " | " TextHTMLtable &= "" & row.Cells("eb_montag").Value & " | " TextHTMLtable &= "" & row.Cells("eb_dienstag").Value & " | " TextHTMLtable &= "" & row.Cells("eb_mittwoch").Value & " | " TextHTMLtable &= "" & row.Cells("eb_donnerstag").Value & " | " TextHTMLtable &= "" & row.Cells("eb_freitag").Value & " | " TextHTMLtable &= "" & row.Cells("eb_gebaeude").Value & " | " TextHTMLtable &= "" & row.Cells("eb_anmerkung").Value & " | " TextHTMLtable &= "" & row.Cells("eb_firma").Value & " | " TextHTMLtable &= "