Imports System.DirectoryServices.ActiveDirectory
Imports com.sun.org.apache.xerces.internal.xs
Imports com.sun.tools.corba.se.idl.constExpr
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN

Public Class frmGoMautBoxen
    Public kundenNr = -1

    Dim kunde As cKunde
    Dim adresse As cAdressen
    Dim kundeErw As cKundenErweitert
    Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL

    Dim dt As New DataTable

    Public addnew = False
    Public WithEvents s As New cBinding("SDL") 'fürs Binding
    Dim changed As Boolean = False
    Dim ready As Boolean = False

    Sub New(kundenNr)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        Me.kundenNr = kundenNr
        Me.addnew = addnew

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Sub New(kunde As cKunde, adresse As cAdressen, kundeErw As cKundenErweitert)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        Me.kunde = kunde
        Me.adresse = adresse
        Me.kundeErw = kundeErw

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click, btn.Click

        lblWarning.Text = ""

        If kunde Is Nothing And kundenNr < 0 Then
            lblWarning.Text = "Bitte Kunden-Nr eingeben."
            Exit Sub
        End If


        If cbxKK.SelectedValue = "" Then
            lblWarning.Text = "Bitte Kreditkarten-Nr eingeben."
            Exit Sub
        End If

        If rbAP.Checked And txtbishAbrp.Text = "" Then
            lblWarning.Text = "Bitte bisherigen Abrechnungspartner eingeben."
            Exit Sub
        End If



        If dgvLKW.Rows(0).Cells(0).Value = "" Then
            lblWarning.Text = "Bitte KFZ-Kennzeichen eingeben."
            Exit Sub
        End If


        If Not rbPostPay.Checked And Not rbAP.Checked Then
            lblWarning.Text = "Umstellungsart angeben!"
            Exit Sub
        End If

        genMausboxenFormular(dgvLKW, sender)

    End Sub




    Sub initdgv()
        Try

            Dim setKdNr
            If kundenNr > 0 Then
                setKdNr = kundenNr
            ElseIf kunde IsNot Nothing Then
                setKdNr = kunde.KundenNr
            Else
                setKdNr = -1

            End If

            dt = SQL.loadDgvBySql("SELECT Kreditkarten.KartenNr, Kreditkarten.Kartenablaufmonat, Kreditkarten.Kartenablaufjahr FROM Kreditkarten WHERE (((Kreditkarten.AdressenNr)=" & setKdNr & ") AND ((Kreditkarten.NeueKartenNr) Is Null)) ORDER BY Kreditkarten.KartenNr", "FMZOLL")

            If dt.Rows.Count > 0 Then
                Dim dv As New DataView(dt, "KartenNr<>''", "KartenNr", DataViewRowState.CurrentRows)
                Dim dt_new As DataTable = dv.ToTable(False, "KartenNr")
                cbxKK.DataSource = dv
                cbxKK.DisplayMember = "KartenNr"
                cbxKK.ValueMember = "KartenNr"
                cbxKK.changeItem(dv.Item(0).Row.Item(0))
            End If

            For i As Integer = 1 To 6
                dgvLKW.Rows.Add("LKW-KZ " & i, "")
            Next

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
        End Try


    End Sub




    Private Sub btnAbbrechen_Click(sender As Object, e As EventArgs) Handles btnAbbrechen.Click ', Me.FormClosing

        Me.Close()

    End Sub

    Private Sub frmLKWDetails_Load(sender As Object, e As EventArgs) Handles Me.Load

        'If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MAUTBOXEN_bearbeiten", Me) Then
        '    MsgBox("Keine Berechtigung!")
        '    Me.Close()
        'End If

        KdSearchBox1.initKdBox(Me)


        If kundenNr > 0 Then
            Me.KdSearchBox1.KdNr = kundenNr
            KdSearchBox1.Enabled = False
        End If

        cbxLandKz.fillWithSQL(" select distinct landkz, Währungstabelle.Land  from   Währungstabelle  where landkz is not null  order by LandKz", , "FMZOLL", True)

        initKunde()

    End Sub

    Private Sub KdSearchBox1_PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Handles KdSearchBox1.PropertyChanged
        initKunde()
    End Sub


    Private Sub initKunde()

        If kundenNr < 0 Then


            If adresse IsNot Nothing Then
                kundenNr = adresse.AdressenNr
                txtName.Text = If(adresse.Name_1, "") & If(adresse.Name_2, "")
                txtStrasse.Text = If(adresse.Straße, "")
                txtOrt.Text = If(adresse.Ort, "")
                txtPlz.Text = If(adresse.PLZ, "")
                cbxLandKz.changeItem(If(adresse.LandKz, ""))
                txtAnsprechpartnerAnrede.Text = adresse.Anrede
                txtAnsprechpartner.Text = adresse.Ansprechpartner
                txtFax.Text = adresse.Telefax
                txtEmail.Text = adresse.E_Mail

                initdgv()

            End If

        Else


            If KdSearchBox1.KdNr_value > 0 AndAlso KdSearchBox1.KdData_ADRESSEN IsNot Nothing AndAlso KdSearchBox1.KdData_KUNDE IsNot Nothing Then

                Dim AD = KdSearchBox1.KdData_ADRESSEN
                Dim KD = KdSearchBox1.KdData_KUNDE
                Dim KDERW = KdSearchBox1.KdData_KUNDE_ERW

                kundenNr = AD.AdressenNr
                txtName.Text = If(AD.Name_1, "") & If(AD.Name_2, "")
                txtStrasse.Text = If(AD.Straße, "")
                txtOrt.Text = If(AD.Ort, "")
                txtPlz.Text = If(AD.PLZ, "")
                cbxLandKz.changeItem(If(AD.LandKz, ""))
                txtAnsprechpartnerAnrede.Text = AD.Anrede
                txtAnsprechpartner.Text = AD.Ansprechpartner
                txtFax.Text = (If(AD.Telefax, ""))
                txtEmail.Text = (If(AD.E_Mail, ""))

                initdgv()

            End If
        End If


    End Sub

    Private Sub cbxKK_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxKK.SelectedValueChanged

        If cbxKK.SelectedValue Is Nothing OrElse cbxKK.SelectedValue.ToString = "System.Data.DataRowView" Then
            txtMonat.Text = ""
            txtJahr.Text = ""
            Exit Sub
        End If

        Dim dr() As DataRow = dt.Select("KartenNr = " & cbxKK.SelectedValue)

        txtMonat.Text = dr(0).Item(1)
        txtJahr.Text = dr(0).Item(2)

    End Sub

    Private Sub rbAP_CheckedChanged(sender As Object, e As EventArgs) Handles rbAP.CheckedChanged

        If rbAP.Checked Then
            txtbishAbrp.ReadOnly = False
        Else
            txtbishAbrp.Text = ""
            txtbishAbrp.ReadOnly = True
        End If

    End Sub


    Public Function genMausboxenFormular(dgv As DataGridView, sender As Object, Optional PrinterName As String = "", Optional ByRef pfadWord As String = "", Optional printReportElsePDF As Boolean = False, Optional openWord As Boolean = False) As Microsoft.Office.Interop.Word.Document


        Dim odoc As Microsoft.Office.Interop.Word.Document = Nothing

        Try
            pfadWord = AppDomain.CurrentDomain.BaseDirectory & "Resources\MDM_Schreiben\GOBOX_UMSTELLUNG.dotx"

            Dim oWord As New Microsoft.Office.Interop.Word.Application
            Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID)


            Dim cGenWord As New cGenWord

            odoc = cGenWord.openWord(pfadWord, False, oWord)
            Dim oTable As Word.Table

            'odoc.FormFields("Adresse1").Range.Text = kunde.Name_1 & " " & kunde.Name_2
            'odoc.FormFields("Adresse2").Range.Text = kunde.Straße
            'odoc.FormFields("Adresse3").Range.Text = kunde.LandKz & " " & kunde.PLZ & " " & kunde.Ort
            ''  odoc.FormFields("KdNrVERAG").Range.Text = KUNDE.KundenNr
            '' odoc.FormFields("KdNrMST").Range.Text = PartnerKdNrFromFMZOLL.MSEKundenNr
            'odoc.FormFields("Sachbearbeiter").Range.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
            'odoc.FormFields("Datum").Range.Text = Now.ToShortDateString
            'odoc.FormFields("KundenNr").Range.Text = kunde.AdressenNr
            'odoc.FormFields("AuftragsNr").Range.Text = AuftragsNr.ToString("000000.##")

            Dim textArt As String = ""
            If rbPostPay.Checked Then
                textArt = "hiermit beantragen wir die Umstellung unserer Pre-Pay GO-Box(en) auf Post-Pay." & vbNewLine & "Dies betrifft das/die folgende(n) Fahrzeug(e):"
            ElseIf rbAP.Checked Then
                textArt = "hiermit beantragen wir die Änderung des Abrechnungspartners unserer Post-Pay-GO-Boxen von " & txtbishAbrp.Text & " auf Verag." & vbNewLine & "Dies betrifft die folgenden Fahrzeuge:"
            End If


            Dim txtEnde As String = ""

            If rbPostPay.Checked Then
                txtEnde = "Hiermit bestätige Ich, dass:" & vbNewLine &
                    "• die Änderungen in der Reihenfolge des Eintreffens bei ASFINAG laufend bearbeitet werden." & vbNewLine &
                    "• die Umstellung genau zu einem Stichtag von ASFINAG nicht zugesichert werden kann." & vbNewLine &
                    "• die Änderung der Vertragsart von Pre- auf Post-Pay erst nach erfolgter Aktualisierung der in der/den GO-Box(en) gespeicherten Daten an einer GO-Vertriebsstelle wirksam wird."

            ElseIf rbAP.Checked Then
                txtEnde = "Weitere Fahrzeuge habe ich in einer zusätzlichen Liste beigefügt." & vbNewLine &
                    "Ich nehme zur Kenntnis, dass die Änderungen nach Eintreffen bei ASFINAG laufend bearbeitet werden." & vbNewLine &
                    "Die Umstellung genau zu einem Stichtag ist von ASFINAG nicht zugesichert."
            End If


            Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues)
            For Each item In odoc.FormFields

                Dim fieldName = item.Name.ToLower().Trim()

                Select Case fieldName
                    Case "adresse1" : odoc.FormFields(fieldName).Range.Text = txtName.Text
                    Case "adresse2" : odoc.FormFields(fieldName).Range.Text = txtAnsprechpartnerAnrede.Text & " " & txtAnsprechpartner.Text
                    Case "adresse3" : odoc.FormFields(fieldName).Range.Text = txtStrasse.Text
                    Case "adresse4" : odoc.FormFields(fieldName).Range.Text = cbxLandKz._value & " " & txtPlz.Text & " " & txtOrt.Text
                    Case "adresse5" : odoc.FormFields(fieldName).Range.Text = txtEmail.Text
                    Case "adresse6" : odoc.FormFields(fieldName).Range.Text = txtFax.Text
                    Case "sachbearbeiter" : odoc.FormFields(fieldName).Range.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
                    Case "datum" : odoc.FormFields(fieldName).Range.Text = Now.ToShortDateString
                    Case "kundennr" : odoc.FormFields(fieldName).Range.Text = IIf(kundenNr > 0, kundenNr, KdSearchBox1.KdNr_value)
                    Case "kartennr" : odoc.FormFields(fieldName).Range.Text = cbxKK.SelectedValue
                    Case "art" : odoc.FormFields(fieldName).Range.Text = IIf(rbPostPay.Checked, rbPostPay.Text, rbAP.Text)
                    Case "typ_text" : odoc.FormFields(fieldName).Range.Text = textArt
                    Case "ende" : odoc.FormFields(fieldName).Range.Text = txtEnde

                End Select

            Next

            If True Then


                If odoc.Range.Bookmarks.Exists("TabelleKarten") Then
                    If odoc.Bookmarks("TabelleKarten").Range.Tables.Count > 0 Then
                        oTable = odoc.Bookmarks("TabelleKarten").Range.Tables(1)
                        Dim i = 1
                        Dim kfzTmp = ""
                        For Each r As DataGridViewRow In dgvLKW.Rows
                            If r.Cells(0).Value <> "" And r.Cells(1).Value <> "" Then
                                oTable.Rows(i + 1).Cells(1).Range.Text = r.Cells(0).Value
                                oTable.Rows(i + 1).Cells(2).Range.Text = r.Cells(1).Value

                            Else
                                oTable.Rows(i + 1).Cells(1).Range.Text = ""
                                oTable.Rows(i + 1).Cells(2).Range.Text = ""
                            End If


                            If i < dgvLKW.Rows.Count Then oTable.Rows.Add()
                            i += 1
                        Next
                    End If


                End If
            End If

            odoc.Save() : odoc.Activate()

            Dim path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("GOBOX_UMSTELLUNG_" & kundenNr & ".pdf", ".pdf", True, False)
                odoc.SaveAs(path, Word.WdSaveFormat.wdFormatPDF)


                Try
                    odoc.Close()
                    oWord.Quit()
                Catch ex As Exception
                    VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
                End Try


            If sender Is Button2 Then
                Process.Start(path)
            ElseIf sender Is btn Then

                Dim outl As New Outlook.Application
                Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
                Mail = outl.CreateItem(0)
                Mail.Attachments.Add(path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf")
                Mail.Display()

            End If

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
        End Try

    End Function

End Class