Imports System.Globalization
Imports Microsoft.Office.Interop

Public Class frmBU_Mahnlauf

    Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
    Private Sub btnSuche_Click(sender As Object, e As EventArgs) Handles btnSuche.Click
        initDGV()
    End Sub

    Sub initDGV()
        With MyDatagridview1
            .Columns.Clear()

            Dim Firma_ID = cboFirma._value
            Dim KdNr = KdSearchBox1.KdNr_value
            Dim KdTxt = ""
            If KdNr < 0 Then 'Wenn keine KdNr
                KdTxt = KdSearchBox1.Text.Trim
            End If

            If MyTextBox1._value = "" Then
                MsgBox("Bitte einen Wert als Bagatellgrenze eingeben!")
                Exit Sub
            End If


            'Dim sqlStr = "SELECT i_personenkonto Konto,KTO.c_name, KTO.c_landid Land,KTO.c_plz + ' ' + KTO.c_ort Ort,isnull(KTO.c_email,'') Email, count(*) Anzahl, sum(eur_bruttobetrag+eur_zahlung) Ausstand ,min(op.d_netto) Faelligkeit,max(si_mahnstufe) Mahnstufe, cast(MAX(d_mahnung)as date) Mahndatum
            Dim sqlStr = "SELECT i_personenkonto Konto,KTO.c_name, KTO.c_landid Land,KTO.c_plz + ' ' + KTO.c_ort Ort,/*isnull(KTO.c_email,'') Email, */  
                            isnull(( SELECT  TOP 1 [kkd_Email] FROM [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[tblKundenKontakt] where kkd_kkaId=10  and kkd_KundenNr=i_personenkonto ) ,'') Email,
                            count(*) Anzahl, sum(eur_bruttobetrag+eur_zahlung) Ausstand ,min(op.d_netto) Faelligkeit,max(si_mahnstufe) Mahnstufe, cast(MAX(d_mahnung)as date) Mahndatum
                        " & If(cbxNurFaellig.Checked, "", ",SUM(CASE WHEN op.d_netto<getDATE() THEN (eur_bruttobetrag+eur_zahlung) ELSE 0 END) Summe_Faellig") & "
                      FROM op_debitor OP
	                    RIGHT join fibu_konto KTO on i_personenkonto=i_konto AND  KTO.i_firm_refid=OP.i_firm_refid
                      WHERE (OP.i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                        " & If(cbxNurFaellig.Checked, " and op.d_netto<=getdate() and isnull(si_mahnflags,0) <>(1) ", "") & "
                        " & If(KdNr > 0, " AND i_personenkonto ='" & KdNr & "'", "") & "
                        " & If(KdTxt <> "", " AND KTO.c_name LIKE '" & KdTxt.Replace("*", "%") & "'", "") & "
                      group by i_personenkonto ,KTO.c_name,KTO.c_landid,KTO.c_ort,KTO.c_plz,KTO.c_email
                      HAVING sum(eur_bruttobetrag+eur_zahlung)>'" & MyTextBox1._value & "'
                         " & If(MyComboBox1._value > 0, " and max(si_mahnstufe)>='" & MyComboBox1._value & "'", "") & "
                      ORDER BY KTO.c_name"
            'MsgBox(sqlStr)
            Dim dt_OP As DataTable = SQL.loadDgvBySql(sqlStr, "FIBU")

            .DataSource = dt_OP
            If .Columns.Count = 0 Then Exit Sub

            .Columns("c_name").HeaderText = "Firma"
            .Columns("c_name").AutoSizeMode = DataGridViewAutoSizeColumnsMode.Fill

            .Columns("Land").Width = 40
            .Columns("Ort").Width = 150
            .Columns("Anzahl").Width = 40
            .Columns("Email").Width = 150

            .Columns("Faelligkeit").Width = 75
            .Columns("Faelligkeit").HeaderText = "Fälligkeit"

            .Columns("Mahndatum").Width = 75

            .Columns("Konto").Width = 75
            .Columns("Konto").HeaderText = "KdNr/Konto"
            .Columns("Ausstand").Width = 75
            .Columns("Ausstand").HeaderText = "Betrag"

            If Not cbxNurFaellig.Checked Then
                .Columns("Summe_Faellig").Width = 75
                .Columns("Summe_Faellig").HeaderText = "Summe fällig"
            End If

            .Columns("Mahnstufe").Width = 50

        End With
    End Sub

    Private Sub frmBU_Mahnlauf_Load(sender As Object, e As EventArgs) Handles Me.Load
        KdSearchBox1.initKdBox(Me)

        cboFirma.fillWithSQL("SELECT  [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE 1=1   ORDER BY Firma_ID  ", True, "FMZOLL", False)
        cboFirma.changeItem("1")

        MyComboBox1.Items.Clear()
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("alle", "-1"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("1. Mahnung", "0"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("2. Mahnung", "1"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("3. Mahnung", "2"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("4. Mahnung", "3"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("5. Mahnung", "4"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("6. Mahnung", "5"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("7. Mahnung", "6"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("8. Mahnung", "7"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("9. Mahnung", "8"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("10. Mahnung", "9"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("11. Mahnung", "10"))
        MyComboBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("12. Mahnung", "11"))
        MyComboBox1.changeItem("-1")

        MyComboBox2.Items.Clear()
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("1. Mahnung", "1"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("2. Mahnung", "2"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("3. Mahnung", "3"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("4. Mahnung", "4"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("5. Mahnung", "5"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("6. Mahnung", "6"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("7. Mahnung", "7"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("8. Mahnung", "8"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("9. Mahnung", "9"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("10. Mahnung", "10"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("11. Mahnung", "11"))
        MyComboBox2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("12. Mahnung", "12"))
        MyComboBox2.changeItem("")

        MyTextBox2._value = Now.ToShortDateString

    End Sub

    'Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    '    If MyDatagridview1.SelectedRows.Count = 1 Then
    '        'If MyDatagridview1.SelectedRows(0).Cells("Mahnstufe").Value < 0 Then
    '        '    MsgBox("Der ausgewählte Kunde hat einen Bankeinzug.")
    '        'Else
    '        doMahnung(3, MyDatagridview1.SelectedRows(0).Cells("Konto").Value, cboFirma._value,,, MyComboBox2._value)
    '        'End If
    '    Else
    '        MsgBox("Ein Element auswählen!")
    '    End If
    'End Sub


    Public Function isFaellig(KdNr As Integer, Firma_ID As Integer) As Boolean
        Dim sqlStr = "SELECT count(*)
                    FROM op_debitor OP
                    WHERE (OP.i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                    and OP.i_personenkonto='" & KdNr & "'    
					and isnull(si_mahnflags,0) <>(1)  
					and d_netto<=getdate() "

        Return (SQL.getValueTxtBySql(sqlStr, "FIBU",,, 0) > 0)
    End Function
    Public Function isMahnlauf(KdNr As Integer, Firma_ID As Integer) As Boolean
        Dim sqlStr = "SELECT count(*)
                    FROM op_debitor OP
                    WHERE (OP.i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                    and OP.i_personenkonto='" & KdNr & "'    
					and isnull(si_mahnstufe,0) >=0  
					and d_netto<=getdate() "

        Return (SQL.getValueTxtBySql(sqlStr, "FIBU",,, 0) > 0)
    End Function

    Public Function isFaelligAndMahnlauf(KdNr As Integer, Firma_ID As Integer) As Boolean
        Dim sqlStr = "SELECT count(*)
                    FROM op_debitor OP
                    WHERE (OP.i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                    and OP.i_personenkonto='" & KdNr & "'    
					and isnull(si_mahnflags,0) <>(1)  
                    and isnull(si_mahnstufe,0) >=0      
					and d_netto<=getdate() "

        Return (SQL.getValueTxtBySql(sqlStr, "FIBU",,, 0) > 0)
    End Function
    Public Function isMahnlauf_Betrag(KdNr As Integer, Firma_ID As Integer) As Boolean
        Dim sqlStr = "SELECT sum(dec_fremdbrutto+dec_fremdzahlung)
                    FROM op_debitor OP
                    WHERE (OP.i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                    and isnull(si_mahnflags,0) <>(1)  
                    and OP.i_personenkonto='" & KdNr & "'"

        Return (SQL.getValueTxtBySql(sqlStr, "FIBU",,, 0) > 0)
        'Wenn <0, dann Guthaben!!
    End Function


    Public Function increaseMahnstufe(KdNr As Integer, Firma_ID As Integer) As Boolean
        Dim sqlStr = "UPDATE op_debitor  SET si_mahnstufe=(isnull(si_mahnstufe,0)+1),d_mahnung=GETDATE()
                    WHERE (i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                    and i_personenkonto='" & KdNr & "'  and dec_fremdbrutto>0 and (si_mahnstufe  >=0 OR si_mahnstufe is NULL) and d_netto<=getdate()"
        Return SQL.doSQL(sqlStr, "FIBU")
    End Function

    Public Function redoMahnstufe(Firma_ID As Integer, Mahn_Datum As Date) As Boolean
        Dim sqlStr = " UPDATE op_debitor SET si_mahnstufe=(si_mahnstufe-1)
                    WHERE (i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                     and (si_mahnstufe  >0 AND si_mahnstufe is not NULL) and d_mahnung>='" & Mahn_Datum.ToShortDateString & "'  and d_netto<=getdate()"
        Return SQL.doSQL(sqlStr, "FIBU")
    End Function
    Public Function cntRedoMahnstufe(Firma_ID As Integer, Mahn_Datum As Date) As Integer
        Dim sqlStr = " SELECT COUNT(*) FROM op_debitor 
                    WHERE (i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                     and (si_mahnstufe  >0 AND si_mahnstufe is not NULL) and d_mahnung>='" & Mahn_Datum.ToShortDateString & "' and d_netto<=getdate()"
        Return SQL.getValueTxtBySql(sqlStr, "FIBU",,, 0)
    End Function
    Public Function doMahnung(Mahndruckart As Integer, KdNr As Integer, Firma_ID As Integer, Optional ByRef Path As String = "", Optional ByRef PrinterName As String = "", Optional ByRef forceMahnstufe As String = "", Optional showErr As Boolean = True, Optional hideMahnstopp As Boolean = True) As Boolean
        Dim sqlStr = "SELECT c_urbelegid OP_Typ,d_rechnung Rechnungsdatum,d_netto Faelligkeit,dec_fremdbrutto Rechnungsbetrag,c_bemerkung Bemerkung,dec_fremdzahlung Zahlung,dec_fremdbrutto+dec_fremdzahlung Ausstand,c_waehrung Währung,si_mahnstufe Mahnstufe
                    FROM op_debitor OP 
                    WHERE (OP.i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL)  
                    and i_personenkonto='" & KdNr & "'     
                    " & If(hideMahnstopp, " and isnull(si_mahnflags,0) <>(1) ", "") & " 
                    order by d_rechnung"

        Dim dtDataSource = SQL.loadDgvBySql(sqlStr, "FIBU")
        If dtDataSource Is Nothing Then
            If showErr Then MsgBox("Keine Daten vorhanden!")
            Return False
        End If
        If dtDataSource.Rows.Count = 0 Then
            If showErr Then MsgBox("Keine Daten vorhanden!")
            Return False
        End If

        Return doMahnDruck(dtDataSource, Mahndruckart, KdNr, Firma_ID, Path, PrinterName, forceMahnstufe)
    End Function

    Public Shared Function doMahnDruck(dtDataSource As DataTable, Mahndruckart As Integer, KdNr As Integer, Firma_ID As Integer, Optional ByRef Path As String = "", Optional ByRef PrinterName As String = "", Optional ByRef forceMahnstufe As String = "") As Boolean
        ' If RECHNUNG Is Nothing Then MsgBox("Fehler beim Laden der Rechnungsdaten!") : Return False

        Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
        Try

            Dim KD As New VERAG_PROG_ALLGEMEIN.cKunde(KdNr)
            Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr)
            Dim KD_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(KdNr)

            If KD Is Nothing Then MsgBox("Keine Kundendaten!") : Return False
            If AD Is Nothing Then MsgBox("Keine Kundendaten!") : Return False

            Dim Sprache = "DE"
            If KD_ERW IsNot Nothing Then
                Sprache = If(KD_ERW.kde_Fakturierung_Sprache, "DE")
            End If

            Dim rpt As New rptMahnung(Sprache)
            rpt.Document.Printer.PrinterName = ""
            Dim RG_Bezeichnung = "Mahnung.pdf"

            Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID)
            Dim KD_RG As New VERAG_PROG_ALLGEMEIN.cAdressen(AD.AdressenNr)

            If FIRMA Is Nothing Then MsgBox("Keine Firma gewählt!") : Return False


            If dtDataSource Is Nothing Then MsgBox("Keine Daten vorhanden!") : Return False
            If dtDataSource.Rows.Count = 0 Then MsgBox("Keine Daten vorhanden!") : Return False

            rpt.DataSource = dtDataSource



            Dim sum = 0
            Select Case Sprache
                Case "EN"
                    ' rpt.lblUeberschriftRG_GS.Text = "REMINDER"
                    rpt.lblSummeUeberschrift.Text = "Total:"
                    rpt.lblSteuersatz.Text = "Late payment interest of 9.5% p.a. from due date"
                    rpt.lblZwText.Text = "Dunning fee"
                    rpt.Label2.Text = "Subtotal"
            End Select


            initRgFirma(rpt, FIRMA, AD.LandKz)

            Select Case FIRMA.Firma_ID
                Case 1 ' rpt.picVERAG.Image= My.Resources.Verag_AG_Logo : rpt.Picture1.Image = My.Resources.aeo_AT_imex is eh standard
                Case 7 : rpt.picVERAG.Image = My.Resources.Atilla_big_med : rpt.Picture1.Image = Nothing
                Case 11 : rpt.picVERAG.Image = My.Resources.Verag_Customs_Service_GMBH_Logo : rpt.Picture1.Image = Nothing
                Case 20 : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Picture1.Image = My.Resources.aeo_AT_imex
                Case 21 : rpt.picVERAG.Image = My.Resources.Unisped_logo : rpt.Picture1.Image = My.Resources.unisped_aeo_AT
                Case 22 : rpt.picVERAG.Image = My.Resources.Unisped_DE_logo : rpt.Picture1.Image = My.Resources.unisped_aeo_DE
                Case 26 : rpt.picVERAG.Image = My.Resources.VERAG_UNISPED_Logo : rpt.Picture1.Image = Nothing
                Case 23 : rpt.picVERAG.Image = My.Resources.Unisped_ZS_logo : rpt.Picture1.Image = My.Resources.unisped_aeo_ZS_AT
                Case 17 : rpt.picVERAG.Image = My.Resources.FrontOfficeSUB_Horizontal : rpt.Picture1.Image = Nothing
            End Select

            Dim ZZTage = 10
            Dim ZZKdZahlungsziel = SQL.DLookup("Zahlungsziel", "Kunden", "Kundennr=" & AD.AdressenNr, "FMZOLL", 10)
            If ZZKdZahlungsziel IsNot Nothing AndAlso IsNumeric(ZZKdZahlungsziel) Then
                ZZTage = ZZKdZahlungsziel
            End If


            rpt.lblKundenNr.Text = If(AD.AdressenNr > 0, AD.AdressenNr, "")
            rpt.lblRgDatum.Text = Now.ToShortDateString

            'rpt.lblKundenAuftragsnummer.Text = If(RECHNUNG.KdAuftragsNr, "")
            'If rpt.lblKundenAuftragsnummer.Text = String.Empty Then rpt.lblKundenAuftragsnummerUeberschrift.Visible = False


            rpt.lblSachbearbeiter.Text = cFakturierung.getSBRgName(FIRMA.Firma_ID, VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) 'If(RECHNUNG.Sachbearbeiter, "")

            Dim waehrungCode As String = KD.Währungscode


            If If(AD.Name_2, "") = "" Then
                rpt.lblRechnung_Name1.Text = ""
                rpt.lblRechnung_Name2.Text = If(AD.Name_1, "")
            Else
                rpt.lblRechnung_Name1.Text = If(AD.Name_1, "")
                rpt.lblRechnung_Name2.Text = If(AD.Name_2, "")
            End If

            If AD.Ansprechpartner <> "" Then
                rpt.Label25.Text = (If(AD.Anrede, "") & " " & AD.Ansprechpartner).trim
            Else
                Select Case Sprache
                    Case "EN" : rpt.Label25.Text = "Abt.: BUCHHALTUNG/GESCHÄFTSFÜHRUNG"
                    Case Else : rpt.Label25.Text = "Dept.: ACCOUNTING/MANAGEMENT"
                End Select
            End If

            rpt.lblRechnung_Strasse.Text = If(AD.Straße, "")
            rpt.lblRechnung_Ort.Text = (If(AD.PLZ, "") & " " & If(AD.Ort, "")).trim
            rpt.lblRechnung_Land.Text = cProgramFunctions.getLandBez_fromISO1Land(AD.LandKz, "", Sprache).ToString.ToUpper

            rpt.txtVermerk.Text = ""


            Dim MAHNSTUFE As Integer = -1

            If forceMahnstufe <> "" Then
                MAHNSTUFE = CInt(forceMahnstufe)
            Else
                'MAX Mahnstufe
                For Each r In dtDataSource.Rows
                    If r("Mahnstufe") > MAHNSTUFE Then MAHNSTUFE = r("Mahnstufe")
                Next
            End If


            'Dim cnt As Integer = 0

            Dim ZWSumme As Double = 0
            Dim Mahngeb As Double = 5
            Dim VerzugszinsenGes As Double = 0
            Dim ZinssatzVerzugszinsen As Double = 0.095

            Select Case MAHNSTUFE
                Case -2 : Mahngeb = 0 : rpt.Label24.Visible = False : rpt.lblSteuersatz.Visible = False : rpt.Label23.Visible = False : rpt.lblZwText.Visible = False
                Case -1 : Mahngeb = 0
                Case 0 : Mahngeb = 5
                Case 1 : Mahngeb = 5
                Case 2 : Mahngeb = 20
                Case >= 3 : Mahngeb = 30
            End Select


            Dim MahnTEXT_VOR = ""
            Dim MahnTEXT_NACH = ""
            Dim MAHNTEXT As String = "Zahlungserinnerung"

            getMahnstufetext(Sprache, MAHNSTUFE, MahnTEXT_VOR, MahnTEXT_NACH, MAHNTEXT)


            rpt.lblUeberschriftRG_GS.Text = MAHNTEXT
            rpt.TextBox2.Text = MahnTEXT_VOR
            rpt.txtVermerk.Text = MahnTEXT_NACH

            AddHandler rpt.Detail.Format, Sub()

                                              rpt.txtLeistung.Text = cFakturierung.checkNull(rpt.Fields.Item("OP_Typ").Value)
                                              rpt.Label15.Text = cFakturierung.checkNull(rpt.Fields.Item("Rechnungsdatum").Value)

                                              If (CDate(rpt.Fields.Item("Faelligkeit").Value) > CDate(Now.ToShortDateString) And cFakturierung.checkNull(rpt.Fields.Item("Ausstand").Value, 0) > 0) Or cFakturierung.checkNull(rpt.Fields.Item("Ausstand").Value, 0) <= 0 Then
                                                  rpt.Label16.Text = ""
                                              Else
                                                  rpt.Label16.Text = cFakturierung.checkNull(rpt.Fields.Item("Faelligkeit").Value)
                                              End If

                                              rpt.Label17.Text = cFakturierung.checkNull(rpt.Fields.Item("Rechnungsbetrag").Value)
                                              rpt.Label18.Text = cFakturierung.checkNull(rpt.Fields.Item("Bemerkung").Value)
                                              rpt.Label19.Text = cFakturierung.checkNull(rpt.Fields.Item("Zahlung").Value)
                                              rpt.Label20.Text = cFakturierung.checkNull(rpt.Fields.Item("Ausstand").Value)
                                              rpt.Label21.Text = cFakturierung.checkNull(rpt.Fields.Item("Mahnstufe").Value)
                                              rpt.Label22.Text = cFakturierung.checkNull(rpt.Fields.Item("Währung").Value)

                                              Dim Ausstand As Double = 0
                                              If IsNumeric(cFakturierung.checkNull(rpt.Fields.Item("Ausstand").Value)) Then Ausstand = CDbl(rpt.Fields.Item("Ausstand").Value())
                                              rpt.Label20.Text = If(Ausstand <> 0, CDbl(Ausstand).ToString("N2", Globalization.CultureInfo.CurrentCulture), "")

                                              ZWSumme += Ausstand

                                              Dim Verzugszinsen As Double = 0
                                              Dim Verzugtage = DateDiff(DateInterval.Day, CDate(rpt.Fields.Item("Faelligkeit").Value), Now)
                                              If Verzugtage > 0 And Ausstand > 0 Then
                                                  Verzugszinsen = ZinssatzVerzugszinsen / 365 * Ausstand * Verzugtage
                                                  VerzugszinsenGes += Verzugszinsen
                                              End If
                                          End Sub

            AddHandler rpt.ReportFooter1.Format, Sub()

                                                     rpt.lblZWSumme.Text = ZWSumme.ToString("N2", CultureInfo.CurrentCulture)
                                                     rpt.Label23.Text = Mahngeb.ToString("N2", CultureInfo.CurrentCulture)
                                                     rpt.Label24.Text = VerzugszinsenGes.ToString("N2", CultureInfo.CurrentCulture)

                                                     Select Case MAHNSTUFE
                                                         Case -2 : rpt.lblSumme.Text = (ZWSumme).ToString("N2", CultureInfo.CurrentCulture)
                                                         Case Else : rpt.lblSumme.Text = (ZWSumme + Mahngeb + VerzugszinsenGes).ToString("N2", CultureInfo.CurrentCulture)
                                                     End Select
                                                 End Sub


            'Immer Exportieren, da in Therefore speichern
            Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
            Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
            rpt.Run(False)
            p.NeverEmbedFonts = ""
            p.Export(rpt.Document, tmpPath)
            Path = tmpPath

            'THEREFORE IMPORT:
            '-------------------------------------------------------------------------------
            'Try
            '    If Not Kopie And (Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM OrElse vbYes = MsgBox("TEST - in Therefore speichern?", vbYesNoCancel)) Then

            '        VERAG_PROG_ALLGEMEIN.cTherefore.saveFileTo_ImportFolder(tmpPath, RECHNUNG.FilialenNr & RECHNUNG.AbfertigungsNr, If(RECHNUNG.AvisoID, ""), RECHNUNG.Firma_ID, False)

            '    End If
            'Catch ex As Exception
            '    MsgBox("Therefore-Import fehlgeschlagen!" & ex.Message & ex.StackTrace)
            'End Try
            '-------------------------------------------------------------------------------

            ''ABRECHNUNGS API:
            ''-------------------------------------------------------------------------------
            'If Not Kopie Then
            '    Try
            '        Dim KUNDE_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(AD.AdressenNr)
            '        If KUNDE_ERW IsNot Nothing Then
            '            'TRADESHIFT:
            '            Try
            '                If KUNDE_ERW.kde_API_Tradeshift Then
            '                    Select Case RECHNUNG.Firma_ID
            '                        Case 21, 22, 23
            '                            System.IO.File.Copy(tmpPath, "\\srv01.unisu.at\Unisped\___AR_PDF\" & RG_Bezeichnung, True)
            '                    End Select
            '                End If
            '            Catch ex As Exception
            '                MsgBox("Tradeshift Export fehlgeschlagen! " & ex.Message & ex.StackTrace)
            '            End Try
            '        End If
            '    Catch ex As Exception
            '        MsgBox("API Fehler!" & ex.Message & ex.StackTrace)
            '    End Try
            'End If
            ''----------------------------------------------------- 

            Select Case Mahndruckart
                Case 0, 1 'DRUCKEN

                    Dim ret = cProgramFunctions.printRpt(rpt, PrinterName, False)

                    Return ret

                        'Case 1 'FAX
                Case 2, 5 'MAIL

                    Path = tmpPath

                    Try
                        Dim Mail_Subject = ""
                        Dim Mail_HTMLBody = ""

                        Dim Mail_To = ""
                        Dim Mail_CC = ""
                        Dim Mail_BCC = ""

                        Select Case AD.LandKz
                            Case "TR"
                                Mail_Subject = "PAYMENT REMINDER" & IIf(KdNr > 0, " - Cust.: " & KdNr, "")
                                Mail_HTMLBody = "Sayin Bayanlar ve Baylar,<br><br>ekte baslikta yazan faturayi bulabilirsinz."
                                Mail_HTMLBody &= "<br><br><br>"
                                Mail_HTMLBody &= "<i>If you are not responsible for this matter, please send us an e-mail address to <b>buchhaltung@verag.ag</b>, 
                                                 to which future reminders should be sent.<br>
                                                 In the meantime, we ask you to forward them to the responsible persons in your company.</i>"
                                Mail_HTMLBody &= "<br><br><br>Saygilarimizla<br><br>" & cFakturierung.getSignature(AD.LandKz, FIRMA.Firma_ID)
                            Case "A", "AT", "D", "DE", "CH"
                                Mail_Subject = MAHNTEXT & IIf(KdNr > 0, " - KdNr.: " & KdNr, "")
                                Mail_HTMLBody = "Sehr geehrte Damen und Herren,<br><br>im Anhang finden Sie ihre Mahnung, mit der Bitte um Bearbeitung. "
                                Mail_HTMLBody &= "<br><br><br>"
                                Mail_HTMLBody &= "<i>Sollten Sie für diesen Sachverhalt nicht zuständig sein, teilen Sie uns bitte per Mail an <b>buchhaltung@verag.ag</b> eine Mailadresse mit, 
                                                 an welche zukünftig die Mahnungen versandt werden sollen.<br>
                                                 Derweil bitten wir um Weiterleitung an die zuständigen Personen in ihrem Haus.</i>"

                                Mail_HTMLBody &= "<br><br><br>Mit freundlichen Grüßen<br><br>" & cFakturierung.getSignature(AD.LandKz, FIRMA.Firma_ID)
                            Case Else
                                Mail_Subject = "PAYMENT REMINDER" & IIf(KdNr > 0, " - Cust.: " & KdNr, "")
                                Mail_HTMLBody = "Sehr geehrte Damen und Herren,<br><br>attached we send you the invoice reminder."
                                Mail_HTMLBody &= "<br><br><br>"
                                Mail_HTMLBody &= "<i>If you are not responsible for this matter, please send us an e-mail address to <b>buchhaltung@verag.ag</b>, 
                                                 to which future reminders should be sent.<br> 
                                                 In the meantime, we ask you to forward them to the responsible persons in your company.</i>"
                                Mail_HTMLBody &= "<br><br><br>Best regards<br><br>" & cFakturierung.getSignature(AD.LandKz, FIRMA.Firma_ID)
                        End Select
                        Mail_HTMLBody = "<div style=""font-family:Calibri, Arial"">" & Mail_HTMLBody & "</div>"
                        Mail_To = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Mahnung an")
                        Mail_cc = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Mahnung an")
                        Mail_bcc = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Mahnung an")

                        '    isnull(( SELECT  TOP 1 [kkd_Email] FROM [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[tblKundenKontakt] where kkd_kkaId=10  and kkd_KundenNr=i_personenkonto ) ,'') Email,
                        'isnull(( SELECT  TOP 1 [kkd_Email] FROM [FMZOLL\SQLFMZOLL].[VERAG].[dbo].[tblKundenKontakt] where kkd_kkaId=10  and kkd_KundenNr=i_personenkonto ) ,'') Email,


                        If Mail_To = "" Then Mahndruckart = 2 ' Wenn keine Mahn-Mail hinterlegt, sollte die Mail geöffenet werden

                        Select Case Mahndruckart
                            Case 5 'MAIL_SEND
                                Dim list As New List(Of String)
                                list.Add(tmpPath)
                                Mail_BCC = "buchhaltung@verag.ag;" & Mail_BCC

                                VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mail_To, Mail_Subject, Mail_HTMLBody, "buchhaltung@verag.ag", False, False, Mail_CC, Mail_BCC, list)


                            Case Else
                                Dim outl As New Outlook.Application
                                Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
                                Mail = outl.CreateItem(0)
                                Mail.Subject = Mail_Subject
                                Mail.HTMLBody = Mail_HTMLBody

                                Mail.To = Mail_To
                                Mail.CC = Mail_CC
                                Mail.BCC = Mail_BCC
                                Mail.Attachments.Add(tmpPath, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Mahnung.pdf")

                                'Mail.Sender = "bewerbung@verag.ag"
                                Try
                                    Mail.SentOnBehalfOfName = "buchhaltung@verag.ag"
                                Catch ex2 As Exception
                                    MsgBox(ex2.Message)
                                End Try
                                Mail.Display()
                        End Select



                    Catch ex As Exception
                        MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
                        Process.Start(tmpPath)
                    End Try
                    rpt.Dispose()
                    Return True

                Case 3 'PDF + öffnen

                    Path = tmpPath
                    Process.Start(tmpPath)
                    rpt.Dispose()
                    Return True
                Case 4 'PDF

                    Path = tmpPath

                    rpt.Dispose()
                    Return True
            End Select



        Catch ex As Exception
            MsgBox(ex.Message & ex.StackTrace)
        End Try
        Return False
    End Function

    Shared Sub initRgFirma(ByRef rpt As rptMahnung, FIRMA As VERAG_PROG_ALLGEMEIN.cFirmen, LandKz As String)

        rpt.lblFirmaOrt.Text = If(FIRMA.Firma_Ort, "")
        rpt.lblFirmaStrasse.Text = If(FIRMA.Firma_Straße, "")
        rpt.lblFirmaTel.Text = If(FIRMA.Firma_Telefon, "")
        rpt.lblFirmaFax.Text = If(FIRMA.Firma_Telefax, "")
        rpt.lblFirmaEmail.Text = If(FIRMA.Firma_E_Mail, "")
        rpt.lblFirmaWeb.Text = If(FIRMA.Firma_Webadresse, "")
        rpt.lblFirma.Text = If(FIRMA.Firma_Bez, "") & ", " & If(FIRMA.Firma_Ort, "")
        rpt.lblFirmenbuch.Text = If(FIRMA.Firma_Firmenbuch, "").ToString.Replace("Firmenbuch:", "").Trim
        rpt.lblUID.Text = If(FIRMA.Firma_UID, "").ToString.Replace("UID:", "").Trim


        Select Case FIRMA.Firma_ID'VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case 21 '"UNISPED"
                rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim
                rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim
                rpt.picVERAG.Size = New SizeF(2.712, 0.61)
            Case 22 '"UNISPED DE"
                rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim
                rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim
                rpt.picVERAG.Size = New SizeF(2.712, 0.61)
                rpt.lblFirma.Text = If(FIRMA.Firma_Bez, "")  ' Ohne Ort gewünscht!
            Case 23 '"UNISPED ZS"
                rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim
                rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim
                rpt.picVERAG.Size = New SizeF(2.712, 0.61)
            Case 26
                rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim
                rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim
                rpt.picVERAG.Size = New SizeF(2.712, 0.61)
            Case 20 '"IMEX"
                If LandKz = "TR" Then
                    'rpt.txtBank1.Text = "Garanti Bank " & vbNewLine & "IBAN:TR84 0006 2001 6040 0009 0987 13 " & vbNewLine & "BLZ Sube.: 1604 - Beykent Ticari - Hesap: 9098713"
                    ' rpt.txtBank1.Text = "Garanti Bank " & vbNewLine & "IBAN:TR21 0006 2000 5440 0009 0818 67" & vbNewLine & "BLZ Sube.: 544 - Beykent Ticari - Hesap: 9081867"
                    rpt.txtBank1.Text = "Garanti Bank " & vbNewLine & "IBAN:TR21 0006 2000 5440 0009 0818 67" & vbNewLine & "BLZ Sube.: 544 - Hadimköy Ticari - Hesap: 9081867"
                    rpt.txtBank2.Text = ""
                Else

                    rpt.txtBank1.Text = "Volksbank Schärding" & vbNewLine & "IBAN:AT89 4480 0365 7822 0000" & vbNewLine & "BIC: VBOEATWWOOE"
                    rpt.txtBank2.Text = ""

                End If
            Case Else 'VERAG,ATILLA

                rpt.txtBank1.Text = If(FIRMA.Firma_Bankverbindung1, "") & vbNewLine & If(FIRMA.Firma_IBAN1, "") & vbNewLine & If(FIRMA.Firma_BIC1, "").ToString.Trim
                rpt.txtBank2.Text = If(FIRMA.Firma_Bankverbindung2, "") & vbNewLine & If(FIRMA.Firma_IBAN2, "") & vbNewLine & If(FIRMA.Firma_BIC2, "").ToString.Trim

                rpt.txtBank1.Text = rpt.txtBank1.Text.Replace("Österreich: ", "Österreich:" & vbNewLine).Replace("BRD: ", "BRD:" & vbNewLine).Replace("Deutschland: ", "Deutschland:" & vbNewLine)
                rpt.txtBank2.Text = rpt.txtBank2.Text.Replace("Österreich: ", "Österreich:" & vbNewLine).Replace("BRD: ", "BRD:" & vbNewLine).Replace("Deutschland: ", "Deutschland:" & vbNewLine)

                'TR Bankverbindung
                'Dim RgBetrag = (Rechnung.SteuerfreierGesamtbetrag + Rechnung.SteuerpflichtigerGesamtbetrag)
                'If AD.LandKz = "TR" And RgBetrag <= 500 And RgBetrag >= -500 Then
                '    rpt.txtBank2.Text = "Garanti Bank " & vbNewLine & "Eur Iban: TR 96 0006 2000 5440 0009 0672 28" & vbNewLine & "Kto: 544  Swift kodu: TGBATRISXXX"
                'End If

        End Select


    End Sub
    Private Shared Sub getMahnstufetext(Sprache, MAHNSTUFE, ByRef MahnTEXT_VOR, ByRef MahnTEXT_NACH, ByRef MAHNTEXT)

        Select Case Sprache
            Case "TR"
                Select Case MAHNSTUFE
                    Case -2
                        MahnTEXT_VOR = "Aşağıdaki faturalar henüz ödenmemiştir:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "List - öğeleri aç"
                    Case -1
                        MahnTEXT_VOR = "Aşağıdaki faturalar henüz tahsil edilmemiştir:"
                        MahnTEXT_NACH = "Yukarıdaki tutarlar, SEPA otomatik ödeme talimatı yoluyla belirttiğiniz Benk bağlantınızdan tahsil edilecektir."
                        MAHNTEXT = "List - öğeleri aç"
                    Case 0
                        MahnTEXT_VOR = "WeLütfen asagida belirilen faturalarin ödemesini yapiniz:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Ödeme hatırlatıcısı"
                    Case 1
                        MahnTEXT_VOR = "Lütfen asagida belirilen faturalarin ödemesini yapiniz:"
                        MahnTEXT_NACH = "Bu gecikmenin organizasyon acisindan olusan bir hatadan kaynaklandigini düsünüyoruz. Ödemeniz tarafimiza yapildiysa ilgili ihtari gecersiz sayabilirsiniz."
                        MAHNTEXT = "1. UYARI"
                    Case 2
                        MahnTEXT_VOR = "Bir önceki ihtarimiza ragmen asagida belirtilen faturalarin ödemesi gerceklesmemistir:"
                        MahnTEXT_NACH = "WirBu gecikmenin organizasyon acisindan olusan bir hatadan kaynaklandigini düsünüyoruz, fakat bütün sorumluluklarinizi hatirlatarak, daha fazla masrafin ve olumsuzluklarin olusmamasi adina yukarida belirtilen acik tutarin acil olarak ödenmesi gerektigini bildirmek durumundayiz."
                        MAHNTEXT = MAHNSTUFE & ". UYARI"
                    Case 3
                        MahnTEXT_VOR = "Iki kez iletilen hatirlatma ve ihtara ragmen asagida belirtilen faturalarin ödemesi gerceklesmemistir. Bu vesile ile sizleri son kez acik bakiyenin ödenmesi icin uyariyoruz. Lütfen yapilan ödemeye dair hesap dekontunu tarafimiza iletiniz."
                        MahnTEXT_NACH = "Belirtilen sürenin yine olumsuz olarak gelismesi durumunda gerekli hukuki süreci, herhangi bir ön bildirim yapmaksizin baslatmamiz gerektigini bildirmek durumundayiz."
                        MAHNTEXT = MAHNSTUFE & ". UYARI"
                    Case >= 4
                        MahnTEXT_VOR = "Defalarca iletilen hatirlatma ve ihtara ragmen asagida belirtilen faturalarin ödemesi gerceklesmemistir. Bu vesile ile sizleri son kez acik bakiyenin ödenmesi icin uyariyoruz. Lütfen yapilan ödemeye dair hesap dekontunu tarafimiza iletiniz."
                        MahnTEXT_NACH = "Belirtilen sürenin yine olumsuz olarak gelismesi durumunda gerekli hukuki süreci, herhangi bir ön bildirim yapmaksizin baslatmamiz gerektigini bildirmek durumundayiz."
                        MAHNTEXT = MAHNSTUFE & ". UYARI"
                End Select
            Case "EN"
                Select Case MAHNSTUFE
                    Case -2
                        MahnTEXT_VOR = "Subsequent invoices have not yet been paid:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "List - Open accounts"
                    Case -1
                        MahnTEXT_VOR = "The following invoices have not yet been collected:"
                        MahnTEXT_NACH = "The above amounts will be collected by SEPA direct debit mandate from your specified bank account."
                        MAHNTEXT = "List - Open accounts"
                    Case 0
                        MahnTEXT_VOR = "We request that the following invoices be settled:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "REMINDER"
                    Case 1
                        MahnTEXT_VOR = "We request that the following invoices be settled:"
                        MahnTEXT_NACH = "We assume that this is due to an organisational oversight. " & vbNewLine & "If your payment has already been sent to us, please consider the reminder as irrelevant."
                        MAHNTEXT = "1. REMINDER"
                    Case 2
                        MahnTEXT_VOR = "Despite our previous reminder, the listed invoices have still not been settled:"
                        MahnTEXT_NACH = "We assume that this is due to an organisational oversight, but we must now request you in all certainty to transfer the amount due according to the above list to us immediately in order to avoid further costs and inconvenience."
                        MAHNTEXT = MAHNSTUFE & ". REMINDER"
                    Case 3
                        MahnTEXT_VOR = "Despite two reminders, the items listed below have still not been paid. We hereby request you for the last time to pay the outstanding amount immediately. Please send us a copy of the remittance slip."
                        MahnTEXT_NACH = "After the unsuccessful expiry of this new deadline, we would then be forced either to instruct a debt collection agency to collect the debt or to take legal action without further prior notice."
                        MAHNTEXT = MAHNSTUFE & ". REMINDER"
                    Case >= 4
                        MahnTEXT_VOR = "Despite several reminders, the items listed below have still not been paid. We hereby request you for the last time to pay the outstanding amount immediately. Please send us a copy of the transfer receipt."
                        MahnTEXT_NACH = "After the unsuccessful expiry of this new deadline, we would then be forced either to instruct a debt collection agency to collect the debt or to take legal action without further prior notice."
                        MAHNTEXT = MAHNSTUFE & ". REMINDER"
                End Select
            Case Else

                Select Case MAHNSTUFE
                    Case -2
                        MahnTEXT_VOR = "Nachfolgende Rechnungen wurden noch nicht beglichen:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Liste - Offene Posten"
                    Case -1
                        MahnTEXT_VOR = "Nachfolgende Rechnungen wurden noch nicht eingezogen:"
                        MahnTEXT_NACH = "Die oben genannten Beträge werden per SEPA-Lastschriftmandat von Ihrem angegebenen Benkverbindung eingezogen."
                        MAHNTEXT = "Liste - Offene Posten"
                    Case 0
                        MahnTEXT_VOR = "Wir ersuchen um Ausgleich der nachfolgenden Rechnungen:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Zahlungserinnerung"
                    Case 1
                        MahnTEXT_VOR = "Wir ersuchen um Ausgleich der nachfolgenden Rechnungen:"
                        MahnTEXT_NACH = "Wir gehen davon aus, dass dies auf einem organisatorischen Versehen beruht. " & vbNewLine & "Sollte Ihre Zahlung bereits an uns abgegangen sein, bitten wir Sie, die Mahnung als gegenstandslos zu betrachten."
                        MAHNTEXT = "1. Mahnung"
                    Case 2
                        MahnTEXT_VOR = "Trotz unserer vorhergehenden Mahnung wurden die aufgeführten Rechnungen immer noch nicht ausgeglichen:"
                        MahnTEXT_NACH = "Wir gehen davon aus, dass dies auf einem organisatorischen Versehen beruht, müssen Sie aber nunmehr mit aller Bestimmtheit auffordern, den laut oben stehender Aufstellung fälligen Betrag zur Vermeidung weiterer Kosten und Unannehmlichkeiten unverzüglich an uns zu überweisen."
                        MAHNTEXT = MAHNSTUFE & ". MAHNUNG"
                    Case 3
                        MahnTEXT_VOR = "Trotz zweifacher Mahnung sind die unten aufgeführten Posten immer noch nicht beglichen. Wir fordern Sie hiermit letztmalig auf, den offenen Betrag unverzüglich zur Einzahlung zu bringen. Bitte senden Sie uns eine Kopie des Überweisungsbeleges."
                        MahnTEXT_NACH = "Nach erfolglosem Ablauf dieser neuerlichen Frist wären wir dann gezwungen, entweder ein Inkassounternehmen mit der Einziehung der Forderung zu beauftragen oder aber ohne weitere vorherige Ankündigung gerichtliche Schritte einzuleiten."
                        MAHNTEXT = MAHNSTUFE & ". MAHNUNG"
                    Case >= 4
                        MahnTEXT_VOR = "Trotz mehrfacher Mahnung sind die unten aufgeführten Posten immer noch nicht beglichen. Wir fordern Sie hiermit letztmalig auf, den offenen Betrag unverzüglich zur Einzahlung zu bringen. Bitte senden Sie uns eine Kopie des Überweisungsbeleges."
                        MahnTEXT_NACH = "Nach erfolglosem Ablauf dieser neuerlichen Frist wären wir dann gezwungen, entweder ein Inkassounternehmen mit der Einziehung der Forderung zu beauftragen oder aber ohne weitere vorherige Ankündigung gerichtliche Schritte einzuleiten."
                        MAHNTEXT = MAHNSTUFE & ". MAHNUNG"
                End Select
        End Select
    End Sub


    Private Sub MyDatagridview1_SelectionChanged(sender As Object, e As EventArgs) Handles MyDatagridview1.SelectionChanged
        'MyComboBox1.changeItem("")
    End Sub


    Function getAusgabe(allowMailSend As Boolean) As String
        Dim f As New frmBU_Mahnlauf_Ausgabe(allowMailSend)
        f.ShowDialog(Me)
        If f.DialogResult = DialogResult.OK Then
            Return f.AUSGABE
        End If
        Return ""
    End Function


    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click, Button4.Click
        Dim fProgBar As New frmBU_Mahnlauf_Ausgabe_Ladebalken
        Try
            Me.Cursor = Cursors.WaitCursor

            Dim oPS As New System.Drawing.Printing.PrinterSettings
            Dim srchPrinter = oPS.PrinterName


            Dim forceMahnstufe As String = -2
            Dim hideMahnstopp As String = True
            Dim gesAnz As Integer = MyDatagridview1.SelectedRows.Count
            Dim cnt = 0

            If sender Is Button5 Then forceMahnstufe = -2 : hideMahnstopp = False
            If sender Is Button4 Then forceMahnstufe = MyComboBox2._value : hideMahnstopp = True

            If MyDatagridview1.SelectedRows.Count > 0 Then
                Select Case getAusgabe(False)
                    Case "PDF"
                        If MyDatagridview1.SelectedRows.Count = 1 Then
                            doMahnung(3, MyDatagridview1.SelectedRows(0).Cells("Konto").Value, cboFirma._value, , srchPrinter, forceMahnstufe,, hideMahnstopp)
                        Else
                            Dim PDF_LIST As New List(Of String)
                            fProgBar.Show(Me)
                            fProgBar.Refresh()

                            For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
                                Dim Path = ""
                                If doMahnung(4, r.Cells("Konto").Value, cboFirma._value, Path, srchPrinter, forceMahnstufe, False, hideMahnstopp) Then
                                    PDF_LIST.Add(Path)
                                End If
                                cnt += 1
                                fProgBar.progBar.Value = cnt / gesAnz * 100
                                fProgBar.lblAnzahl.Text = cnt & "/" & gesAnz
                                'Pasuse??
                                fProgBar.Refresh()
                            Next

                            If PDF_LIST.Count > 0 Then
                                Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Mahnung_" & Now.ToShortDateString & ".pdf", ".pdf", False, False)
                                If FormularManagerNEU.MergePdfFiles(PDF_LIST, pathPDF) Then
                                    Process.Start(pathPDF)
                                End If
                            End If
                        End If

                    Case "MAIL"
                        Dim PDF_LIST As New List(Of String)
                        fProgBar.Show(Me)
                        fProgBar.Refresh()
                        For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
                            Dim Path = ""
                            doMahnung(2, r.Cells("Konto").Value, cboFirma._value, Path, srchPrinter, forceMahnstufe, False, hideMahnstopp)
                            cnt += 1
                            fProgBar.progBar.Value = cnt / gesAnz * 100
                            fProgBar.lblAnzahl.Text = cnt & "/" & gesAnz
                            fProgBar.Refresh()
                        Next
                    Case "PRINT"
                        fProgBar.Show(Me)
                        fProgBar.Refresh()
                        For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
                            doMahnung(0, r.Cells("Konto").Value, cboFirma._value, , srchPrinter, forceMahnstufe,, hideMahnstopp)
                            cnt += 1
                            fProgBar.progBar.Value = cnt / gesAnz * 100
                            fProgBar.lblAnzahl.Text = cnt & "/" & gesAnz
                            fProgBar.Refresh()
                        Next
                End Select

            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , "WiedergestellungsDatum Fehler")
        Finally
            fProgBar.Close
        End Try
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim fProgBar As New frmBU_Mahnlauf_Ausgabe_Ladebalken

        Dim bool_increaseMahnstufe = cbxMahnstufeErh.Checked
        Try
            Me.Cursor = Cursors.WaitCursor
            Dim oPS As New System.Drawing.Printing.PrinterSettings
            Dim srchPrinter = oPS.PrinterName

            If MyDatagridview1.SelectedRows.Count > 0 Then

                Dim AUSGABE = getAusgabe(True)


                Dim forceMahnstufe As String = -2
                Dim gesAnz As Integer = MyDatagridview1.SelectedRows.Count
                Dim cnt = 0

                Dim PDF_LIST As New List(Of String)
                fProgBar.Show(Me)
                fProgBar.Refresh()
                For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
                    Dim Konto = r.Cells("Konto").Value
                    Dim FirmaId = cboFirma._value

                    If isFaelligAndMahnlauf(Konto, FirmaId) And isMahnlauf_Betrag(Konto, FirmaId) Then
                        Dim Path = ""
                        Select Case AUSGABE
                            Case "PDF"
                                If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId)
                                If doMahnung(4, Konto, FirmaId, Path, srchPrinter) Then
                                    PDF_LIST.Add(Path)
                                End If
                            Case "MAIL"
                                If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId)
                                doMahnung(2, Konto, FirmaId,  , srchPrinter)
                            Case "MAIL_SEND"
                                If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId)
                                doMahnung(5, Konto, FirmaId,  , srchPrinter)
                            Case "PRINT"
                                If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId)
                                doMahnung(0, Konto, FirmaId,  , srchPrinter)
                        End Select
                    End If
                    cnt += 1
                    fProgBar.progBar.Value = cnt / gesAnz * 100
                    fProgBar.lblAnzahl.Text = cnt & "/" & gesAnz
                    'Pasuse??
                    fProgBar.Refresh()
                Next

                If PDF_LIST.Count > 0 Then 'Nur bei PDF
                    If PDF_LIST.Count > 1 Then 'Nur bei PDF
                        Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Mahnung_" & Now.ToShortDateString & ".pdf", ".pdf", False, False)
                        If FormularManagerNEU.MergePdfFiles(PDF_LIST, pathPDF) Then
                            Process.Start(pathPDF)
                        End If
                    Else
                        Process.Start(PDF_LIST(0))
                    End If
                End If
            End If

            'If MyDatagridview1.SelectedRows.Count > 0 Then
            '    For Each r In MyDatagridview1.SelectedRows

            '    Next
            'Else
            '    MsgBox("Ein Element auswählen!")
            'End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , "WiedergestellungsDatum Fehler")
        Finally
            fProgBar.Close
        End Try
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub cbxNurFaellig_CheckedChanged(sender As Object, e As EventArgs) Handles cbxNurFaellig.CheckedChanged
        Button2.Enabled = cbxNurFaellig.Checked
        CheckBox1.Enabled = cbxNurFaellig.Checked
    End Sub

    Private Sub btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click
        Me.Cursor = Cursors.WaitCursor
        btnSuche.PerformClick()
        ' cProgramFunctions.genExcelFromDGV_NEW(MyDatagridview1, False)
        'cProgramFunctions.genExcelFromDGV_NEW(MyDatagridview1, False)
        Dim dt = MyDatagridview1.DataSource
        cProgramFunctions.genExcelFromDT_NEW(dt, {"G1:G" & (dt.Rows.Count + 1), "J1:J" & (dt.Rows.Count + 1)})

        Me.Cursor = Cursors.Default
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MyDatagridview1.SelectAll()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        MyDatagridview1.ClearSelection()
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        If MyTextBox2._value <> "" Then
            Dim mahndatum As Date = MyTextBox2._value
            Dim cntRedo As Integer = cntRedoMahnstufe(cboFirma._value, mahndatum)
            If vbYes = MsgBox("Möchten Sie wirklich den Mahnzähler zurücksetzen?" & vbNewLine & "Ab Mahndatum: " & mahndatum & vbNewLine & "Betrifft '" & cntRedo & "' Mahnungen/Einträge " & mahndatum, vbYesNoCancel) Then
                If redoMahnstufe(cboFirma._value, mahndatum) Then
                    MsgBox("Der Mahnzähler wurde erfolgreich zurückgesetzt.")
                End If
            End If
        End If
    End Sub
End Class