Essensbestellungen

This commit is contained in:
2023-01-09 16:23:32 +01:00
parent aae58351a7
commit ebafee916f
8 changed files with 459 additions and 89 deletions

View File

@@ -1,13 +1,15 @@
Imports System.Web.UI.HtmlControls

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 = Now.ToShortDateString
btnMonat.Text = MONAT.ToString("MMMM")
@@ -19,11 +21,7 @@ Public Class frmEssensbestellungenAdministration
cbxStornos.Checked = False
cbxAbgerechnet.Checked = False
cboGebaeude.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Frontoffice", "Frontoffice"))
cboGebaeude.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Asfinag", "Asfinag"))
cboGebaeude.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Verag Verrechnung", "Verag Verrechnung"))
cboGebaeude.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Maut", "Maut"))
cboGebaeude.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
cboGebaeude.fillWithSQL("SELECT DISTINCT(eb_gebaeude) FROM [tblEssensbestellungen]", False, "AVISO", True)
cboGebaeude.changeItem("")
cboAbteilung.fillWithSQL("SELECT DISTINCT(eb_abteilung) FROM [tblEssensbestellungen]", False, "AVISO", True)
@@ -31,6 +29,13 @@ Public Class frmEssensbestellungenAdministration
cbKW.fillWithSQL("SELECT DISTINCT(eb_kw) FROM [tblEssensbestellungen]", False, "AVISO", True)
cbxMailKW.fillWithSQL("SELECT DISTINCT(eb_kw) FROM [tblEssensbestellungen]", False, "AVISO", True)
cbxMailKW.changeItem("")
cbxMailGebäude.changeItem("")
cbxMailGebäude.fillWithSQL("SELECT DISTINCT(eb_gebaeude) FROM [tblEssensbestellungen]", False, "AVISO", True)
loadBestellungen()
End Sub
@@ -304,12 +309,12 @@ Public Class frmEssensbestellungenAdministration
End Select
Case "An Higway 118 schicken"
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()
generateEMailforHighway(sender, e)
Else
Exit Sub
End If
@@ -317,7 +322,7 @@ Public Class frmEssensbestellungenAdministration
If vbYes = MsgBox("Möchten Sie diese " & dgvBestellungen.SelectedRows.Count & " Essensbestellungen abschicken", vbYesNoCancel) Then
bestellungenSenden(True)
generateEMailforHighway()
generateEMailforHighway(sender, e)
Else
Exit Sub
End If
@@ -399,77 +404,116 @@ Public Class frmEssensbestellungenAdministration
End Sub
Private Sub generateEMailforHighway()
Private Sub generateEMailforHighway(sender As Object, e As EventArgs)
Me.Cursor = Cursors.WaitCursor
Try
Dim kw As String = ""
Dim gebaeude As String = ""
Dim TextHTMLtable = ""
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
TextHTMLtable &= "<table border=1>"
TextHTMLtable &= "<tr><td>Mitarbeiter</td><td>Montag</td><td>Dienstag</td><td>Mittwoch</td><td>Donnerstag</td><td>Freitag</td><td>Gebäude</td><td>Anmerkung</td></tr>"
If sender.Text = "Email" Then
Dim dtBestellungenMail = generateDTBestellungen()
kw = cbxMailKW._value
gebaeude = cbxMailGebäude._value
For Each row As DataRow In dtBestellungenMail.Rows
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & row("Name") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Montag") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Dienstag") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Mittwoch") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Donnerstag") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Freitag") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Gebaeude") & "</b></td>"
TextHTMLtable &= "<td><b>" & row("Anmerkung") & "</b></td>"
TextHTMLtable &= "</tr>"
If row("ID") <> 0 Then
Dim bestellung As New cEssensbestellung(row("KW"), row("ID"))
bestellung.eb_gesendet = True
bestellung.eb_gesendet_am = Now
bestellung.SAVE()
End If
Next
Mail = outl.CreateItem(0)
Mail.Subject = "Essensbestellung: "
Else
For Each row In dgvBestellungen.SelectedRows
Dim DETextHTML = ""
DETextHTML &= "Hallo,<br>"
DETextHTML &= "<br>"
DETextHTML &= "Anbei ist die Essensbestellung für .<br>"
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_mitname").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_montag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_dienstag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_mittwoch").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_donnerstag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_freitag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_gebaeude").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_anmerkung").Value & "</b></td>"
TextHTMLtable &= "</tr>"
Dim TextHTMLtable = ""
Next
TextHTMLtable &= "<table border=1>"
TextHTMLtable &= "<tr><td>KW </td><td>Montag</td><td>Dienstag</td><td>Mittwoch</td><td>Donnerstag</td><td>Freitag</td><td>Gebäude</td></tr>"
End If
lblWarning.Text = ""
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Dim cnt = 1
For Each row In dgvBestellungen.SelectedRows
Mail = outl.CreateItem(0)
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_mitname").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_montag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_dienstag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_mittwoch").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_donnerstag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_freitag").Value & "</b></td>"
TextHTMLtable &= "<td><b>" & row.Cells("eb_gebaeude").Value & "</b></td>"
TextHTMLtable &= "</tr>"
Next
Mail.Subject = "Essensbestellung: " & IIf(kw <> "", kw, "") & " " & IIf(gebaeude <> "", gebaeude, "")
Dim DETextHTML = ""
DETextHTML &= "Hallo,<br>"
DETextHTML &= "<br>"
DETextHTML &= "Anbei ist die Essensbestellung " & IIf(kw <> "", "für " & kw, "") & ".<br>"
TextHTMLtable &= "</table>"
Dim EndTextHTML = ""
Dim EndTextHTML = ""
EndTextHTML &= "<br>"
EndTextHTML &= "<br>"
EndTextHTML &= "<br>"
EndTextHTML &= "<br>"
EndTextHTML &= "Bitte um kurze Bestätigung nach Erhalt der Mail, danke. <br>"
EndTextHTML &= "<br>"
EndTextHTML &= "Mit freundlichen Grüßen/Best regards<br>"
EndTextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br>"
EndTextHTML &= "<br>"
EndTextHTML &= "Mit freundlichen Grüßen/Best regards<br>"
EndTextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br>"
EndTextHTML &= "<br>"
Mail.HTMLBody = "<div style=""font-family:Calibri, Arial;font-size:15px;"">" & DETextHTML & TextHTMLtable & EndTextHTML & SDL.cFakturierung.getSignature("DE") & "</div>"
Mail.Display()
Mail.Display()
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler beim Öffnen der Mail!")
End Try
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler beim Öffnen der Mail!")
End Try
Me.Cursor = Cursors.Default
End Sub
Private Sub cbKW_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbKW.SelectedValueChanged
If cbKW._value Is Nothing Then Exit Sub
If cbKW._value Is Nothing Or cbKW._value = "" Then Exit Sub
Dim dt As DataTable = SQL.loadDgvBySql("SELECT Top 1 * FROM tblEBMenu where [MenuTitel] = '" & cbKW._value & "' order by MenuDateVon desc", "AVISO", 100, True)
If dt IsNot Nothing Then
dt.Clear()
End If
dt = SQL.loadDgvBySql("SELECT Top 1 * from (SELECT (REPLACE(MenuTitel,'Wochenkarte ','')) + ' - ' + Convert(varchar, Year(MenuDateVon)) as kwDate, MenuDateVon, MenuDateBis FROM tblEBMenu) kwDate where kwDate = '" & cbKW._value & "'", "AVISO", 100, True)
If dt.Rows.Count > 0 Then
@@ -480,7 +524,145 @@ Public Class frmEssensbestellungenAdministration
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
lblWarning.Text = ""
If cbxMailKW._value = "" Then
lblWarning.Text = "Kalenderwoche auswählen!"
Exit Sub
End If
If cbxMailGebäude._value = "" Then
lblWarning.Text = "Gebäude auswählen!"
Exit Sub
End If
Select Case sender.Text
Case "Email"
generateEMailforHighway(sender, e)
Case "Excel"
SDL.cProgramFunctions.genExcelFromDT_NEW(generateDTBestellungen())
End Select
End Sub
Private Function generateDTBestellungen() As DataTable
Dim dtBestellungen As DataTable
Dim SQLStringBEstellungen As String = "SELECT [eb_mitname] as Name ,[eb_mitid] as ID , [eb_kw] as KW , [eb_gebaeude] as Gebaeude ,[eb_abteilung] as Abteilung ,[eb_montag] As Montag ,[eb_dienstag] As Dienstag,[eb_mittwoch] As Mittwoch,
[eb_donnerstag] As Donnerstag ,[eb_freitag] as Freitag, [eb_anmerkung] as Anmerkung ,[eb_datum] as Datum , [eb_storniert] as Storniert
FROM
[tblEssensbestellungen] " 'WHERE eb_kw = '" & cbxMailKW._value & "' AND eb_gebaeude = '" & cbxMailGebäude._value & "' AND ISNULL(eb_storniert,1)=0 Order by eb_datum"
dtBestellungen = SQL.loadDgvBySql(SQLStringBEstellungen, "AVISO", 100, True)
Dim uniqueMenusMontag = dtBestellungen.AsEnumerable() _
.GroupBy(Function(row) _
New With
{
Key .Montag = row.Field(Of String)("Montag")
}
)
Dim uniqueMenusDienstag = dtBestellungen.AsEnumerable() _
.GroupBy(Function(row) _
New With
{
Key .Dienstag = row.Field(Of String)("Dienstag")
}
)
Dim uniqueMenusMittwoch = dtBestellungen.AsEnumerable() _
.GroupBy(Function(row) _
New With
{
Key .Mittwoch = row.Field(Of String)("Mittwoch")
}
)
Dim uniqueMenusDonnerstag = dtBestellungen.AsEnumerable() _
.GroupBy(Function(row) _
New With
{
Key .Donnerstag = row.Field(Of String)("Donnerstag")
}
)
Dim uniqueMenusFreitag = dtBestellungen.AsEnumerable() _
.GroupBy(Function(row) _
New With
{
Key .Freitag = row.Field(Of String)("Freitag")
}
)
Dim resultMontag, resultDienstag, resultMittwoch, resultDonnerstag, resultFreitag As String
For Each el In uniqueMenusMontag
resultMontag &= IIf(el.Key.Montag <> "", String.Format("{0} {1}x ", el.Key.Montag, el.Count()), "")
Next
For Each el In uniqueMenusDienstag
resultDienstag &= IIf(el.Key.Dienstag <> "", String.Format("{0} {1}x ", el.Key.Dienstag, el.Count()), "")
Next
For Each el In uniqueMenusMittwoch
resultMittwoch &= IIf(el.Key.Mittwoch <> "", String.Format("{0} {1}x ", el.Key.Mittwoch, el.Count()), "")
Next
For Each el In uniqueMenusDonnerstag
resultDonnerstag &= IIf(el.Key.Donnerstag <> "", String.Format("{0} {1}x ", el.Key.Donnerstag, el.Count()), "")
Next
For Each el In uniqueMenusFreitag
resultFreitag &= IIf(el.Key.Freitag <> "", String.Format("{0} {1}x ", el.Key.Freitag, el.Count()), "")
Next
Dim R As DataRow = dtBestellungen.NewRow
R("ID") = 0
R("KW") = "-"
R("Name") = "-"
R("KW") = "Summe"
R("Gebaeude") = "-"
R("Name") = "-"
R("Gebaeude") = "-"
R("Abteilung") = "-"
R("Datum") = DateTime.Now()
R("Storniert") = True
R("Montag") = String.Join(" ", resultMontag)
R("Dienstag") = String.Join(" ", resultDienstag)
R("Mittwoch") = String.Join(" ", resultMittwoch)
R("Donnerstag") = String.Join(" ", resultDonnerstag)
R("Freitag") = String.Join(" ", resultFreitag)
dtBestellungen.Rows.Add(R)
' MessageBox.Show(String.Join(Environment.NewLine, result))
If dtBestellungen.Rows.Count = 0 Then
lblWarning.Text = "keine Datensätze vorhanden"
Me.Cursor = Cursors.Default
Exit Function
End If
Return dtBestellungen
End Function
End Class