Imports Microsoft.Office.Interop Imports System.Drawing.Printing Public Class frmSDLBestellungEintrag Dim TMP_KdNr As Integer Dim TMP_SDLNr As Integer Dim saveInProgress = False Sub New() ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Sub New(KdNr As Integer, SDLNr As Integer) InitializeComponent() TMP_KdNr = KdNr TMP_SDLNr = SDLNr End Sub Private Sub frmSDLAbholungEintrag_Load(sender As Object, e As EventArgs) Handles Me.Load KdFirma.initKdBox(Me) cboSDLNr.fillWithSQL("SELECT [SDLNr],cast([SDLNr] as varchar(3)) + ' ' + [SDLBez] FROM [Speditionsdienstleistungen] WHERE SDLTypNr<=2 and SDLNr IN(500) ORDER BY SDLBez", False, "SDL", True) initDrucker() lblSBErfassung.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME If TMP_KdNr > 0 Then KdFirma.KdNr = TMP_KdNr If TMP_SDLNr > 0 Then cboSDLNr.changeItem(TMP_SDLNr) : btnSDLLaden.PerformClick() cboSprache.Items.Clear() cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DEUTSCH", "DE")) cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("SERBISCH", "YU")) cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("TÜRKISCH", "TR")) cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("RUMÄNISCH", "RO")) If KdFirma.KdNr <> "" Then Select Case KdFirma.KdNr.ToString.Substring(0, 1) Case "1" : cboSprache.changeItem("TR") Case "2" : cboSprache.changeItem("RO") Case "3" : cboSprache.changeItem("YU") Case "4" : cboSprache.changeItem("YU") Case Else : cboSprache.changeItem("DE") End Select End If End Sub Sub initDrucker() ' alle installierten Drucker ermitteln und ' in in ein ArrayList-Objekt speichern Dim sPrinters As New ArrayList For Each sPrinter As String In PrinterSettings.InstalledPrinters sPrinters.Add(sPrinter) Next ' Array sortieren sPrinters.Sort() ' jetzt alle Drucker in sortierter Reihenfolge in einer ' ComboBox zur Auswahl anbieten Dim oPS As New System.Drawing.Printing.PrinterSettings For i As Integer = 0 To sPrinters.Count - 1 cboPrinter.Items.Add(sPrinters(i)) Next If sPrinters.Count > 0 Then cboPrinter.SelectedIndex = 0 For Each i In cboPrinter.Items If i.ToString = oPS.PrinterName Then cboPrinter.SelectedItem = i Exit For End If Next End If End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnSDLLaden.Click initdgv() End Sub Sub initdgv() Dim kundenSQL As New kundenSQL Dim sqlStr As String = "" Dim sdlnr As Integer = If(IsNumeric(cboSDLNr._value), cboSDLNr._value, -1) sqlStr = " SELECT [KfzKennzeichen] ,SDLNr, " & " cast(CASE [SDLNr] " & " WHEN '207' THEN 'FREJUS' " & " WHEN '100' THEN 'IDS'" & " WHEN '101' THEN 'WÖLFL'" & " WHEN '202' THEN 'IT' " & " WHEN '208' THEN 'MSE' " & " WHEN '211' THEN 'MULTI-BOX' " & " WHEN '210' THEN 'SI' " & " WHEN '212' THEN 'UTA' " & " WHEN '213' THEN 'HUGO' " & " WHEN '203' THEN 'CZ' " & " WHEN '209' THEN 'PL' " & " WHEN '500' THEN 'ABGASPLAKETTE' " & " Else '-' " & " END as VARCHAR(30)) AS KARTEBOX, " & " cast(CASE [SDLNr] " & " WHEN '207' THEN cast([FREJUS-CARD-Nr] as VARCHAR(200)) " & " WHEN '100' THEN cast(KartenNr as VARCHAR(200))" & " WHEN '101' THEN cast([KartenSchlüsselNr] as VARCHAR(200))" & " WHEN '202' THEN cast([TELEPASS-Nr] as VARCHAR(200)) " & " WHEN '208' THEN cast(KartenNr as VARCHAR(200)) " & " WHEN '211' THEN cast([PAN-Nr] as VARCHAR(200)) " & " WHEN '210' THEN cast([SERIE-Nr] as VARCHAR(200)) " & " WHEN '212' THEN cast(KartenNr as VARCHAR(200)) " & " WHEN '213' THEN cast(OBUID as VARCHAR(200)) " & " WHEN '203' THEN cast(KartenNr as VARCHAR(200)) " & " WHEN '209' THEN cast([MSE-Kd-Nr] as VARCHAR(200)) " & " WHEN '500' THEN '-' " & " Else '-' " & " END as VARCHAR(200)) AS KARTEBOX_NR, " & " [PIN] " & " FROM [SDL] " & " WHERE KundenNr = " & KdFirma.KdNr_value If sdlnr > 0 Then : sqlStr &= " AND SDLNr=" & sdlnr Else : sqlStr &= " AND SDLNr IN (500)" End If sqlStr &= " AND Bestelldatum between '" & datVon.Value.ToShortDateString & "' and '" & datBis.Value.ToShortDateString & "' " Dim order As String = " ORDER BY KfzKennzeichen,SDLNr, Bestelldatum, BestellNr,Ausstellungsdatum,KartenNr,OBUID" Dim dt = kundenSQL.loadSQLDataAdapterBySqlWithoutReadonlyProblem(sqlStr & order, "SDL") If Not cboAnTabelleAnfuegen.Checked Then dgvPositionen.Rows.Clear() If dt IsNot Nothing Then For Each r In dt.Rows dgvPositionen.Rows.Add(r("KfzKennzeichen"), r("SDLNr"), r("KARTEBOX"), r("KARTEBOX_NR"), r("PIN")) Next End If FilterKZ() Exit Sub With dgvPositionen .DataSource = kundenSQL.loadSQLDataAdapterBySqlWithoutReadonlyProblem(sqlStr & order, "SDL") .Columns("KfzKennzeichen").HeaderText = "KENNZEICHEN" .Columns("KfzKennzeichen").Width = 200 .Columns("KfzKennzeichen").ReadOnly = True .Columns("SDLNr").ReadOnly = True .Columns("SDLNr").Visible = False '.Columns("MSE-Kd-Nr").Visible = False '.Columns("MSE-Kd-Nr").HeaderText = "MSE-Kd-Nr" '.Columns("MSE-Kd-Nr").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("PIN").Visible = False '.Columns("KartenNr").Visible = False ' .Columns("KartenNr").Visible = False .Columns("KARTEBOX_NR").Width = 300 .Columns("KARTEBOX_NR").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("PIN").HeaderText = "PIN" .Columns("PIN").Width = 200 Select Case sdlnr Case -1, 100 .Columns("PIN").Visible = True Case 203, 209 .Columns("MSE-Kd-Nr").Visible = True Case Else .Columns("PIN").Visible = True .Columns("PIN").Visible = True End Select .Sort(.Columns("KfzKennzeichen"), System.ComponentModel.ListSortDirection.Ascending) End With 'CreateTableForGridView() End Sub Sub FilterKZ() 'FahrerAbholAuftrag dgvPositionen.Sort(dgvPositionen.Columns("KfzKennzeichen"), System.ComponentModel.ListSortDirection.Ascending) End Sub Function genFormular(sender As Button, Optional ByRef WordPath As String = "") As Microsoft.Office.Interop.Word.Document Me.Cursor = Cursors.WaitCursor FilterKZ() Dim SDLNr As Integer = -1 ' If(IsNumeric(cboSDLNr._value), cboSDLNr._value, -1) If dgvPositionen.Rows.Count > 0 Then SDLNr = 999 'PL+CZ For Each r As DataGridViewRow In dgvPositionen.Rows If r.Cells("SDLNr").Value IsNot DBNull.Value Then If r.Cells("SDLNr").Value <> 209 And r.Cells("SDLNr").Value <> 203 Then SDLNr = -1 : Exit For End If End If Next End If If SDLNr < 0 Then For Each r As DataGridViewRow In dgvPositionen.Rows If r.Cells("SDLNr").Value IsNot DBNull.Value Then If SDLNr <= 0 Then SDLNr = r.Cells("SDLNr").Value Else If SDLNr <> r.Cells("SDLNr").Value Then SDLNr = -1 Exit For 'Verschiedene Leistungen --> SDLNR=-1 --> richtige .docx End If End If End If Next End If Dim KdNr As Integer = KdFirma.KdNr_value Dim TMPvisible = True If sender Is Button3 Then TMPvisible = False Dim print = False Dim printername = cboPrinter.Text lblErrSprache.Visible = False Dim cGenWord As New cGenWord Dim sprache = cboSprache._value ' DirectCast(cboSprache.SelectedItem, VERAG_PROG_ALLGEMEIN.MyListItem).Value If SDLNr = 500 Then 'Spezialfall PL+CZ genFormular = cGenWord.genBestellung_MAN(cProgramFunctions.dgridViewTods(dgvPositionen), KdNr, VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME, cboSprache._value, print, printername, WordPath, TMPvisible) End If Me.Cursor = Cursors.Default End Function Private Sub btnFax_Click(sender As Object, e As EventArgs) Handles btnFax.Click genFormular(sender) End Sub Private Sub btnFaxDrucken_Click(sender As Object, e As EventArgs) Handles btnFaxDrucken.Click genFormular(sender) End Sub Private Sub MyComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSprache.SelectedIndexChanged lblErrSprache.Visible = False End Sub Private Sub KdFirma_PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Handles KdFirma.PropertyChanged If KdFirma.KdNr_value > 0 Then lbl_ErrKunde.Visible = False End If If Not saveInProgress Then If KdFirma.KdNr <> "" Then Select Case KdFirma.KdNr.ToString.Substring(0, 1) Case "1" : cboSprache.changeItem("TR") Case "2" : cboSprache.changeItem("RO") Case "3" : cboSprache.changeItem("YU") Case "4" : cboSprache.changeItem("YU") Case Else : cboSprache.changeItem("DE") End Select End If End If End Sub Private Sub KdFirma_TextChanged(sender As Object, e As EventArgs) Handles KdFirma.TextChanged End Sub Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click Dim WordPath = "" Dim oWORD As Microsoft.Office.Interop.Word.Document = genFormular(sender, WordPath) If oWORD IsNot Nothing AndAlso WordPath <> "" Then oWORD.SaveAs(WordPath.Replace(".docx", "") & ".pdf", Word.WdSaveFormat.wdFormatPDF) openMail(WordPath.Replace(".docx", "") & ".pdf") oWORD.Close() End If End Sub Sub openMail(dest_path) Try Dim outl As New Outlook.Application Dim Mail As Object 'Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) ' Mail.To = If(KdFirma.KdData_ADRESSEN IsNot Nothing, KdFirma.KdData_ADRESSEN.E_Mail, "") Mail.Display() Dim signature = Mail.HTMLBody Select Case If(IsNumeric(cboSDLNr._value), cboSDLNr._value, -1) Case 500 Mail.To = If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "al@verag.ag", "david.reisinger@mtruck.at") 'office@mtruck.at Mail.HTMLBody = "" Mail.HTMLBody &= "Sehr geehrte Damen und Herren," Mail.HTMLBody &= "
" Mail.HTMLBody &= "
" Mail.HTMLBody &= "bitte um Bestellung von Abgasplaketten lt. angefügter Liste." Mail.HTMLBody &= "
" ' Mail.Body &= vbNewLine ' Mail.Body &= "Mit freundlichen Grüßen" ' Mail.Body &= vbNewLine ' Mail.Body &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME ' Mail.Body &= vbNewLine ' Mail.Body &= "ABTEILUNG Maut u. Diesel" Mail.HTMLBody &= signature Mail.HTMLBody &= "
" Mail.Subject &= "Abgasplakette" Case Else Select Case KdFirma.KdNr.ToString.Substring(0, 1) Case "1" : Mail.To = "maut.tr@verag.ag" Case "2" : Mail.To = "ma@verag.ag" : Mail.CC = "maut.ro@verag.ag" Case "3" : Mail.To = "z.batinic@verag.ag" Case "4" : Mail.To = "z.batinic@verag.ag" Case Else End Select End Select Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "VERAG_Formular.pdf") Catch ex As Exception MsgBox("Fehler beim erstellen der E-Mail:" & vbNewLine & ex.Message) End Try End Sub End Class