Imports System.Globalization
Imports com.sun.source.tree
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN

Public Class frmBU_Mahnlauf

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

    Sub initDGV(Optional zahlungseingaenge As Boolean = False, Optional newDGV As Boolean = False)
        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 " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].[tblKundenKontakt] where kkd_kkaId=10  and kkd_KundenNr=i_personenkonto ) ,'') Email," &
                             " isnull(( SELECT TOP 1 Vorkasse FROM " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].Kunden where  KundenNr=i_personenkonto ) ,'') VK,KTO.c_zahlziel as Zahlungsziel, " &
                             "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") & " ,  cast(isnull(si_mahnung,0) as bit) as mahnbar  
                      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, KTO.c_zahlziel, isnull(si_mahnung,0)
                      HAVING sum(eur_bruttobetrag+eur_zahlung)>'" & MyTextBox1._value & "'
                         " & If(MyComboBox1._value > 0, " and max(si_mahnstufe)>='" & MyComboBox1._value & "'", "") & "
                      ORDER BY KTO.c_name"

            Dim sqlStr_New = "WITH EmailCTE AS (
                               SELECT
                                   kkd_KundenNr" & IIf(Firma_ID = 7, ",MAX(CASE WHEN kkd_kkaId = 18 THEN kkd_Email END) AS EmailMAhnungAtilla", "") & ",MAX(CASE WHEN kkd_kkaId = 10 THEN kkd_Email END) AS EmailMahnung
                               FROM " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].[tblKundenKontakt]
                               WHERE kkd_kkaId IN (" & IIf(Firma_ID = 7, "10, 18", "10") & ")
                               GROUP BY kkd_KundenNr
                           )
                           SELECT
                               OP.i_personenkonto                     AS Konto,
                               KTO.c_name,
                               KTO.c_landid                           AS Land,
                               KTO.c_plz + ' ' + KTO.c_ort            AS Ort,
                               COALESCE(" & IIf(Firma_ID = 7, "E.EmailMAhnungAtilla,", "") & "E.EmailMahnung, '')  AS Email,
                               ISNULL(K.VK, '')                       AS VK,
                               KTO.c_zahlziel                         AS Zahlungsziel,
                               COUNT(*)                               AS Anzahl,
                               SUM(OP.eur_bruttobetrag + OP.eur_zahlung) AS Ausstand,
                               MIN(OP.d_netto)                        AS Faelligkeit,
                               MAX(OP.si_mahnstufe)                   AS Mahnstufe,
                               CAST(MAX(OP.d_mahnung) AS date)        AS Mahndatum," &
                               If(cbxNurFaellig.Checked, "", "SUM(CASE WHEN OP.d_netto<getDATE() THEN (eur_bruttobetrag+eur_zahlung) ELSE 0 END) Summe_Faellig,") & "
                               CAST(ISNULL(si_mahnung,0) AS bit)   AS mahnbar
                           FROM op_debitor OP
                           JOIN fibu_konto KTO
                               ON OP.i_personenkonto = KTO.i_konto
                              AND OP.i_firm_refid    = KTO.i_firm_refid
                           LEFT JOIN EmailCTE E ON E.kkd_KundenNr = OP.i_personenkonto
                           LEFT JOIN (
                               SELECT KundenNr, Vorkasse AS VK
                               FROM " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].Kunden
                           ) K
                               ON K.KundenNr = OP.i_personenkonto
                           WHERE OP.i_firm_refid = '" & Firma_ID & "'
                             AND OP.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
                               OP.i_personenkonto,
                               KTO.c_name,
                               KTO.c_landid,
                               KTO.c_plz,
                               KTO.c_ort,
                               KTO.c_zahlziel,
                               ISNULL(si_mahnung,0),
                               COALESCE(" & IIf(Firma_ID = 7, "E.EmailMAhnungAtilla,", "") & "E.EmailMahnung, ''),
                               ISNULL(K.VK,'')
                           HAVING SUM(OP.eur_bruttobetrag + OP.eur_zahlung) > '" & MyTextBox1._value & "'
                           ORDER BY KTO.c_name;"



            Dim sqlStringVerag360 = "SELECT i_personenkonto Konto,KTO.c_name, KTO.c_landid Land,Kunden.Abfertigungsverbot as AV,max(KTO.dec_aktuellersaldo) as Saldo,/*KTO.c_plz + ' ' + KTO.c_ort Ort,isnull(KTO.c_email,'') Email, */  " &
                             "sum(eur_bruttobetrag+eur_zahlung) as Ausstand,cast(min(d_rechnung)as date) as 'ältesteRg',/*min(op.d_netto) Faelligkeit,*/max(si_mahnstufe) as MS,max(Kunden.UStV_Summe3470BetragEUR) as '3470',max(Kunden.Versicherungssumme) as V, 
                             
                                " & If(KdNr > 0, " (select SUM(isnull(eur_bruttobetrag,0)+isnull(eur_zahlung,0)) from op_debitor as OP RIGHT join fibu_konto KTO on i_personenkonto=i_konto AND  KTO.i_firm_refid=OP.i_firm_refid Where i_personenkonto ='" & KdNr & "' AND OP.i_firm_refid = '19' AND dt_geloescht IS NULL and isnull(si_mahnflags,0) <>(1)) ", "max(KTO.dec_aktuellersaldo) ") & " 
                               
                               - isnull(CASE WHEN Max(Kunden.UStV_SummeUmsatzsteuerbetragEUR) > max(Kunden.UStV_SummeErstattungsbetragEUR) THEN max(Kunden.UStV_SummeUmsatzsteuerbetragEUR) - max(Kunden.UStV_SummeErstattungsbetragEUR) ELSE 0 END ,0) - isnull(max(Kunden.UStV_Summe3470BetragEUR),0) + isnull(max(Kunden.UStV_SummeVZBetragEUR),0) - isnull(max(Kunden.UStV_SummeVorschaubetragEUR),0) - isnull(CASE WHEN ISNULL(max(Kunden.BankgarantieGültigBis), GETDATE()) < GETDATE() THEN 0 ELSE ISNULL(max(Kunden.BankgarantieBetrag), 0) END,0) as Risiko,
                             
                             sum(case when OP.c_typ = 'g' then isnull(OP.eur_bruttobetrag, 0) + isnull(OP.eur_zahlung, 0) else 0 end) as Gutschrift, cast(MAX(d_mahnung)as date) Mahndatum,
                            case 
                            when max(si_mahnstufe) = 1 Then 'telefonisch' 
                            when max(si_mahnstufe) = 2 Then 'Freitag'
                            when max(si_mahnstufe) = 3 Then 'Donnerstag' 
                            when max(si_mahnstufe) = 4 Then 'Mittwoch' 
                            when max(si_mahnstufe) >= 5  Then 'gesperrt' 
                            else '-'
                            End as Sperre " & If(cbxNurFaellig.Checked, "", ",SUM(CASE WHEN op.d_netto<getDATE() THEN (eur_bruttobetrag+eur_zahlung) ELSE 0 END) Summe_Faellig") &
                             ", tblKundenKontakt.[kkd_Email] as Email, isnull(kde_betreuer,'') as Betreuer , cast(isnull(si_mahnung,0) as bit) as mahnbar " &
                      "FROM op_debitor OP
	                    RIGHT join fibu_konto KTO on i_personenkonto=i_konto AND  KTO.i_firm_refid=OP.i_firm_refid
                        inner join " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].[Kunden] on Kunden.KundenNr = i_personenkonto
                      inner join " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].[tblKundenErweitert] on tblKundenErweitert.kde_KundenNr = Kunden.KundenNr
                        left join " & VERAG_PROG_ALLGEMEIN.cAllgemein.FMZOLL_SERVER & ".[VERAG].[dbo].[tblKundenKontakt] on kkd_kkaId=10  and kkd_KundenNr=i_personenkonto  
                      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(cboBetreuer.Text <> "", " AND kde_betreuer ='" & cboBetreuer.Text & "'", "") & "
                        " & 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,[tblKundenKontakt].kkd_Email, Kunden.Abfertigungsverbot, isnull(si_mahnung,0), isnull([tblKundenErweitert].kde_betreuer,'')  
                      HAVING sum(eur_bruttobetrag+eur_zahlung)>'" & MyTextBox1._value & "'
                         " & If(MyComboBox1._value > 0, " and max(si_mahnstufe)>='" & MyComboBox1._value & "'", "") & "
                      ORDER BY KTO.c_name"


            Dim SQLWhere = " and (c_kennung = 'KE' or BU.i_konto in (5827, 5829) or LEFT(BU.i_konto,1) = 0 or c_kennung = 'DE')"

            Select Case cbxKontotyp._value
                Case "DE", "KE", "KO" : SQLWhere &= " and c_kennung = '" & cbxKontotyp._value & "'"
            End Select

            Dim sqlStringVerag360Zahlungseingaenge = " SELECT cast(d_beleg as Date) as d_beleg ,c_urbelegid, c_buchtext,  case when c_sollhabenkz = 'H' then eur_betrag else eur_betrag * -1 end as eur_betrag , BU.i_konto as Konto,KTO.c_landid
                                                      FROM [FIBU2].[dbo].[fibu_belegzeile] as BU
                                                      RIGHT join fibu_konto KTO on KTO.i_konto=BU.i_konto AND BU.i_firm_refid=KTO.i_firm_refid
                                                      where cast(d_beleg as date) = '" & txtZahlEingaenge._value & "' and BU.i_firm_refid=" & Firma_ID & SQLWhere & "
                                                      and (BU.i_konto in (2800, 2801, 2802, 2803, 2811, 2812, 2813, 2814, 2817, 2818, 2822 ,2826, 2827, 2828, 2831, 2832, 2833, 2837, 2845) 
                                                      or i_gegenkonto in (2800, 2801, 2802, 2803, 2811, 2812, 2813, 2814, 2817, 2818, 2822 ,2826, 2827, 2828, 2831, 2832, 2833, 2837, 2845))
                                                      order by Konto, i_beleg_refid, i_zeilen_refid"


            'MsgBox(sqlStr)
            Dim dt_OP As DataTable = SQL.loadDgvBySql(If(Firma_ID = 19, IIf(zahlungseingaenge, sqlStringVerag360Zahlungseingaenge, sqlStringVerag360), IIf(newDGV, sqlStr_New, sqlStr)), "FIBU")

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

            If zahlungseingaenge And Firma_ID = 19 Then

                .Columns("c_buchtext").HeaderText = "Buchungstext"
                .Columns("c_buchtext").AutoSizeMode = DataGridViewAutoSizeColumnsMode.Fill


                .Columns("d_beleg").Width = 75
                .Columns("d_beleg").HeaderText = "Belegdatum"

                .Columns("c_urbelegid").Width = 90
                .Columns("c_urbelegid").HeaderText = "BelegNr."

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

                .Columns("eur_betrag").Width = 75
                .Columns("eur_betrag").HeaderText = "Betrag"

                .Columns("c_landid").Width = 75
                .Columns("c_landid").HeaderText = "Land"



            Else


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

                .Columns("Land").Width = 40
                .Columns("mahnbar").Width = 50



                If Firma_ID = 19 Then
                    .Columns("ältesteRg").Width = 75
                    .Columns("MS").Width = 50
                    '.Columns("Faelligkeit").Width = 75
                    '.Columns("Faelligkeit").HeaderText = "Fälligkeit"
                    .Columns("AV").Width = 30

                    .Columns("Saldo").DefaultCellStyle.Format = "###,###.##"
                    .Columns("Saldo").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("Ausstand").DefaultCellStyle.Format = "###,###.##"
                    .Columns("Ausstand").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("3470").DefaultCellStyle.Format = "###,###.##"
                    .Columns("3470").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("Risiko").DefaultCellStyle.Format = "###,###.##"
                    .Columns("Risiko").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("V").DefaultCellStyle.Format = "###,###.##"
                    .Columns("V").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
                    .Columns("Gutschrift").DefaultCellStyle.Format = "###,###.##"
                    .Columns("Gutschrift").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

                Else
                    .Columns("Email").Width = 150
                    .Columns("Ort").Width = 150
                    .Columns("Anzahl").Width = 40
                    .Columns("Faelligkeit").Width = 75
                    .Columns("Faelligkeit").HeaderText = "Fälligkeit"
                    .Columns("Ausstand").HeaderText = "Betrag"
                    .Columns("Mahnstufe").Width = 50
                End If




                .Columns("Mahndatum").Width = 75

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


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


            End If

        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("")

        cbxKontotyp.Items.Clear()
        cbxKontotyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Alle", "A"))
        cbxKontotyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Debitoren", "DE"))
        cbxKontotyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Kreditoren", "KE"))
        'cbxKontotyp.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Sachkonten", "KO"))
        cbxKontotyp.changeItem("Alle")


        cboFilterOP.Items.Clear()
        cboFilterOP.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboFilterOP.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA-LEIHGELD (4813)", "*LG_4813*"))
        cboFilterOP.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATILLA-LEIHGELD (4806/4813)", "*LG_4806_4813*"))
        cboFilterOP.changeItem("")


        cboBetreuer.Items.Clear()
        cboBetreuer.fillWithSQL("select mit_id, mit_nname FROM [ADMIN].[dbo].[tblMitarbeiter] where tblMitarbeiter.mit_Funktion = 'VK' and mit_gekuendigt = 0 and mit_abteilung = 'MDM'", False, "ADMIN", True)

        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, ErhoehungBeiMahnsperre As Boolean) 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) " & IIf(ErhoehungBeiMahnsperre, "", "AND isnull(si_mahnflags,0) <>(1)") & " and d_netto<=getdate()"
        Return SQL.doSQL(sqlStr, "FIBU")
    End Function

    Public Function redoMahnstufe(Firma_ID As Integer, Mahn_Datum As Date, ErhoehungBeiMahnsperre As Boolean) 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, MahnsperreBeruecksichtigen As Boolean) 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) " & IIf(MahnsperreBeruecksichtigen, "", "AND isnull(si_mahnflags,0) <>(1)") & " and d_mahnung>='" & Mahn_Datum.ToShortDateString & "' and d_netto<=getdate()"
        Return SQL.getValueTxtBySql(sqlStr, "FIBU",,, 0)
    End Function
    Public Shared Function doMahnung(Mahndruckart As Integer, KdNr As Integer, Firma_ID As Integer, art As String, 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, Optional bemerkungSrch() As String = Nothing) As Boolean
        Dim bemerkungFilter As String = ""

        If bemerkungSrch IsNot Nothing AndAlso bemerkungSrch.Length > 0 Then
            bemerkungFilter = " AND ( 1 = 1 " &
                String.Join(" OR ",
                    bemerkungSrch.
                    Where(Function(x) Not String.IsNullOrWhiteSpace(x)).
                    Select(Function(x)
                               Dim val = x.Replace("*", "%").Replace("'", "''")
                               Return "c_bemerkung LIKE '" & val & "'"
                           End Function)
                ) &
            ") "
        End If
        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) ", "") & " 
                    " & bemerkungFilter & "
                    order by d_rechnung"
        Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
        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, art, Path, PrinterName, forceMahnstufe)
    End Function

    Public Shared Function doMahnDruck(dtDataSource As DataTable, Mahndruckart As Integer, KdNr As Integer, Firma_ID As Integer, art As String, 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
        Dim listOfTextconserven As cTextkonserve_LIST
        Select Case art
            Case "ZE" : listOfTextconserven = New cTextkonserve_LIST(2, "", Firma_ID)
            Case "OP" : listOfTextconserven = New cTextkonserve_LIST(3, "", Firma_ID)
        End Select


        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


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

            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 dict As New Dictionary(Of String, String)
            'dict("MITTWOCH") = Today.AddDays((DayOfWeek.Wednesday - Today.DayOfWeek + 7) Mod 7).ToShortDateString()
            'dict("DONNERSTAG") = Today.AddDays((DayOfWeek.Thursday - Today.DayOfWeek + 7) Mod 7).ToShortDateString()
            'dict("FREITAG") = Today.AddDays((DayOfWeek.Friday - Today.DayOfWeek + 7) Mod 7).ToShortDateString()
            dict("MITTWOCH") = Today.AddDays(1).ToShortDateString()
            dict("DONNERSTAG") = Today.AddDays(2).ToShortDateString()
            dict("FREITAG") = Today.AddDays(3).ToShortDateString()
            dict("HEUTE") = Today.ToShortDateString()

            Dim rpt As New rptMahnung(Sprache, IIf(MAHNSTUFE > 10, 10, MAHNSTUFE), Firma_ID, IIf(Firma_ID = 19, dict, Nothing)) '10. Mahnstufe MAX
            rpt.Document.Printer.PrinterName = ""

            rpt.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4

            Dim RG_Bezeichnung As String = ""

            Select Case art
                Case "ZE" : RG_Bezeichnung = "Mahnung.pdf"
                Case "OP" : RG_Bezeichnung = "OP-Liste.pdf"
                Case Else
                    RG_Bezeichnung = "Mahnung.pdf"
            End Select




            Dim KD_RG As New VERAG_PROG_ALLGEMEIN.cAdressen(AD.AdressenNr)
            Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID)
            If FIRMA Is Nothing Then MsgBox("Keine Firma gewählt!") : Return False


            rpt.DataSource = dtDataSource


            Dim sum = 0
            Select Case Sprache
                Case "EN"
                    rpt.lblSummeUeberschrift.Text = "Total:"
                    rpt.lblSteuersatz.Text = "Interest for late payment 9,5 %"
                    rpt.lblZwText.Text = "Reminder Fee"
                    rpt.lblZwischensumme.Text = "Subtotal"
                Case "RO"
                    rpt.lblSummeUeberschrift.Text = "Total:"
                    rpt.lblSteuersatz.Text = "Penalitati întârziere la plată 9,5 %"
                    rpt.lblZwText.Text = "Taxa somatie"
                    rpt.lblZwischensumme.Text = "Subtotal"
                Case "TR"
                    rpt.lblSummeUeberschrift.Text = "Toplam:"
                    rpt.lblSteuersatz.Text = "Gecikme faizi 9,5 %"
                    rpt.lblZwText.Text = "Hhatırlatma ücreti"
                    rpt.lblZwischensumme.Text = "Ara toplam"
            End Select


            initRgFirma(rpt, FIRMA, AD.LandKz)

            rpt.lblFirmaFax.Visible = True
            rpt.lblEmail.Visible = True
            rpt.lblFaxNr.Visible = True



            Select Case FIRMA.Firma_ID
                Case 1 : rpt.picVERAG.Image = My.Resources.Verag_AG_Logo : rpt.Picture1.Image = My.Resources.aeo 'is eh standard
                Case 7 : rpt.picVERAG.Image = My.Resources.Atilla_big_med : rpt.lblFirmaFax.Visible = False : rpt.lblFaxNr.Visible = False 'leider hardcodiert!!! ': 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
                Case 19 : rpt.picVERAG.Image = My.Resources.VERAG_360 : rpt.lblFirmaFax.Visible = False : rpt.lblEmail.Visible = False : rpt.lblFaxNr.Visible = False ': 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) '

            Select Case FIRMA.Firma_ID
                Case 19

                    rpt.lblEmail.Text = IIf(FIRMA.Firma_E_Mail_Mahnungen <> "", FIRMA.Firma_E_Mail_Mahnungen, VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email)
                    rpt.lblEmail.Visible = True


                    If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_telefonnr <> "" AndAlso VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_durchwahl <> "" Then
                        rpt.lblTelefon.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_telefonnr + "-" + VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_durchwahl
                    End If

                Case Else
                    rpt.lblEmail.Text = IIf(FIRMA.Firma_E_Mail_Mahnungen <> "", FIRMA.Firma_E_Mail_Mahnungen, "buchhaltung@verag.ag")

            End Select


            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.lblAnrede.Text = (If(AD.Anrede, "") & " " & AD.Ansprechpartner).trim
            Else
                rpt.lblAnrede.Text = "Abt.: BUCHHALTUNG/GESCHÄFTSFÜHRUNG"
            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 cnt As Integer = 0

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

            If Not Firma_ID = 19 Then

                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


            Else

                'ZinssatzVerzugszinsen pro Kunde und wenn nichts hingerlegt, dann defaultwert!
                If Not IsDBNull(KD_ERW.kde_zinssatz) AndAlso IsNumeric(KD_ERW.kde_zinssatz) Then
                    ZinssatzVerzugszinsen = CDbl(KD_ERW.kde_zinssatz) / 100
                    rpt.lblSteuersatz.Text = rpt.lblSteuersatz.Text.ToString.Replace("9,5", KD_ERW.kde_zinssatz)
                End If


                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 = 0
                    Case 1 : Mahngeb = 0 '10 keine Mahngeb bei 1. Mahnstufe laut Brigitte 29.07.2025
                    Case 2 : Mahngeb = 20
                    Case 3 : Mahngeb = 30
                    Case 4 : Mahngeb = 40
                    Case 5 : Mahngeb = 50
                    Case 6 : Mahngeb = 60
                    Case 7 : Mahngeb = 70
                    Case 8 : Mahngeb = 80
                    Case 9 : Mahngeb = 90
                    Case >= 10 : Mahngeb = 100
                End Select

            End If




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

            If Not Firma_ID = 19 Then 'über Übersetzung geregelt, alle anderen über getMahnstufe (sollte in Zukunft noch abgeändert werden!)
                getMahnstufetext(AD.LandKz, MAHNSTUFE, MahnTEXT_VOR, MahnTEXT_NACH, MAHNTEXT)
                rpt.lblUeberschriftRG_GS.Text = MAHNTEXT
                rpt.txtMahnungstextVOR.Text = MahnTEXT_VOR
                rpt.txtVermerk.Text = MahnTEXT_NACH
            Else
                getMahnstufetextMDM(MAHNSTUFE, MahnTEXT_VOR, MahnTEXT_NACH, MAHNTEXT, Sprache, dict)
                rpt.lblUeberschriftRG_GS.Text = MAHNTEXT
                rpt.txtMahnungstextVOR.Text = MahnTEXT_VOR
                rpt.txtVermerk.Text = MahnTEXT_NACH
                rpt.txtDisclaimer.Text = "Wir arbeiten ausschließlich auf Grund der Allgemeinen Spediteurbedingungen in der jeweils geltenden Fassung. Zahlungen werden zunächst auf Frachten, Spesen und Zinsen zuletzt auf Zölle angerechnet. Zahlbar und klagbar in Schärding. Steuer- Zoll- und Tarifauskünfte sind unverbindlich."
            End If





            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 Not Firma_ID = 19 Then 'Fälligkeit immer andrucken!!!
                                              '    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 = ""
                                              '        rpt.Label15.ForeColor = Color.Black
                                              '    Else
                                              '        rpt.Label16.Text = cFakturierung.checkNull(rpt.Fields.Item("Faelligkeit").Value)
                                              '        rpt.Label15.ForeColor = Color.DarkRed
                                              '    End If
                                              'Else
                                              rpt.Label16.Text = cFakturierung.checkNull(rpt.Fields.Item("Faelligkeit").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.Label15.ForeColor = Color.Black
                                                  rpt.Label16.ForeColor = Color.Black
                                              Else
                                                  rpt.Label15.ForeColor = Color.DarkRed
                                                  rpt.Label16.ForeColor = Color.DarkRed
                                              End If
                                              'End If



                                              rpt.Label17.Text = IIf(IsNumeric(cFakturierung.checkNull(rpt.Fields.Item("Rechnungsbetrag").Value)), CDbl(rpt.Fields.Item("Rechnungsbetrag").Value).ToString("N2", Globalization.CultureInfo.CurrentCulture), "")
                                              rpt.TextBox1.Text = cFakturierung.checkNull(rpt.Fields.Item("Bemerkung").Value)
                                              rpt.Label19.Text = IIf(IsNumeric(cFakturierung.checkNull(rpt.Fields.Item("Zahlung").Value)), CDbl(rpt.Fields.Item("Zahlung").Value).ToString("N2", Globalization.CultureInfo.CurrentCulture), "")
                                              rpt.Label20.Text = IIf(IsNumeric(cFakturierung.checkNull(rpt.Fields.Item("Ausstand").Value)), CDbl(rpt.Fields.Item("Ausstand").Value).ToString("N2", Globalization.CultureInfo.CurrentCulture), "")
                                              rpt.Label21.Text = cFakturierung.checkNull(rpt.Fields.Item("Mahnstufe").Value)
                                              rpt.Label22.Text = cFakturierung.checkNull(rpt.Fields.Item("Währung").Value)

                                              Dim Rechnungsbetrag As Double = 0
                                              If IsNumeric(cFakturierung.checkNull(rpt.Fields.Item("Rechnungsbetrag").Value)) Then Rechnungsbetrag = CDbl(rpt.Fields.Item("Rechnungsbetrag").Value())
                                              Dim Zahlung As Double = 0
                                              If IsNumeric(cFakturierung.checkNull(rpt.Fields.Item("Zahlung").Value)) Then Zahlung = CDbl(rpt.Fields.Item("Zahlung").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), "")

                                              ZWSBetrag += Rechnungsbetrag
                                              ZWZahlung += Zahlung
                                              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
                                                  If Firma_ID = 19 And MAHNSTUFE > 1 Then 'erst ab Mahnstufe 2 sollen bei MDM Verzugszinsen berechnet werden.
                                                      Verzugszinsen = ZinssatzVerzugszinsen / 365 * Ausstand * Verzugtage
                                                      VerzugszinsenGes += Verzugszinsen
                                                  End If

                                              End If
                                          End Sub

            AddHandler rpt.ReportFooter1.Format, Sub()

                                                     rpt.Label4.Text = ZWSBetrag.ToString("N2", CultureInfo.CurrentCulture)
                                                     rpt.Label6.Text = ZWZahlung.ToString("N2", CultureInfo.CurrentCulture)
                                                     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

            'wegen Übersetzung in Formular!
            MAHNTEXT = rpt.lblUeberschriftRG_GS.Text
            MahnTEXT_VOR = rpt.txtMahnungstextVOR.Text
            MahnTEXT_NACH = rpt.txtVermerk.Text

            '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 = ""


                        '---------------
                        If Firma_ID = 19 Then 'dynMailvorlage aktuell nur Verag360, in zukunft für alle!!

                            Dim emailMahnungen = IIf(FIRMA.Firma_E_Mail_Mahnungen <> "", FIRMA.Firma_E_Mail_Mahnungen, "buchhaltung@verag.ag")

                            Dim spracheMahnung As String = "EN" 'Defaultsprache

                            Select Case AD.LandKz
                                Case "TR" : spracheMahnung = AD.LandKz
                                Case "A", "AT", "D", "DE", "CH" : spracheMahnung = "DE"
                                Case "RO" : spracheMahnung = "RO"
                            End Select

                            If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheMahnung) Then


                                Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheMahnung)
                                If r IsNot Nothing Then

                                    Mail_Subject = r.txt_betreff

                                    Dim TextHTML = ""
                                    TextHTML &= r.txt_text
                                    Mail_Subject = Mail_Subject.Replace("%KdNr%", KdNr)
                                    Mail_Subject = Mail_Subject.Replace("%Mahntext%", MAHNTEXT)
                                    Mail_Subject = Mail_Subject.Replace("%KdName%", AD.Ordnungsbegriff)
                                    Mail_Subject = Mail_Subject.Replace("%Mahnstufe%", MAHNSTUFE)

                                    TextHTML = TextHTML.Replace("%email_mahnung%", emailMahnungen)

                                    Mail_HTMLBody = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</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")
                                    Mail_HTMLBody &= "<br><br><br>" & cFakturierung.getSignature(AD.LandKz, FIRMA.Firma_ID)

                                End If
                            End If


                            '---------------
                        Else

                            Select Case AD.LandKz
                                Case "TR"
                                    Mail_Subject = "PAYMENT REMINDER" & IIf(KdNr > 0, " - Cust.: " & KdNr, "")
                                    Mail_HTMLBody = "Sayin bayanlar ve baylar,<br><br>ekli dosyada sirketimize olan borcunuza dair acik kalem listemizi iletiyoruz.<br>Listeyi kontrol edip, eksik fatura varsa bildirmenizi rica ederiz."
                                    Mail_HTMLBody &= "<br><br>"
                                    'Mail_HTMLBody &= "Vadesi dolmus olan faturalarin, en kisa sürede asagidaki hesabimiza havale yapilmasini önemle arz ederiz. "
                                    Mail_HTMLBody &= "<br>Gecikmiş faturaları mümkün olan en kısa sürede hesabımıza aktarmanızı rica ederiz."
                                    Mail_HTMLBody &= "<br>Yapilan ödemeden sonra lütfen dekont ve detay gönderiniz."

                                    'Gecikmiş faturaları mümkün olan en kısa sürede hesabımıza aktarmanızı rica ederiz.
                                    Mail_HTMLBody &= "<br><br>"
                                    'Mail_HTMLBody &= "Garanti Bank Hadimköy/TR	TR 96 0006 2000 5440 0009 0672 28	Kto.: 544<br>Hesap Sahibi: Verag Spedition AG  EURO Hesabi<br>"
                                    'Mail_HTMLBody &= "Sizden geri dönüs beklemekteyiz."
                                    'Mail_HTMLBody &= "<br><br>"
                                    Mail_HTMLBody &= "Iyi calismalar diler, saygilarimizi sunariz"
                                    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>" & FIRMA.Firma_E_Mail_Mahnungen & "</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>" & 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>" & FIRMA.Firma_E_Mail_Mahnungen & "</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 = "Dear Sir or Madam,<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>" & FIRMA.Firma_E_Mail_Mahnungen & "</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

                        End If

                        If Firma_ID = 7 Then
                            Mail_To = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Mahnung an (ATILLA)")
                            Mail_CC = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Mahnung an (ATILLA)")
                            Mail_BCC = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Mahnung an (ATILLA)")
                            Mail_HTMLBody = Mail_HTMLBody.ToString.Replace("rechnungsversand@verag.ag", FIRMA.Firma_E_Mail_Mahnungen)

                            If Mail_To = "" AndAlso Mail_CC = "" Then 'fallback -> falls nicht korrekt hinterlegt!!
                                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")

                            End If
                        Else

                            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")

                        End If



                        Mail_HTMLBody = "<div style=""font-family:Calibri, Arial"">" & Mail_HTMLBody & "</div>"


                        If Firma_ID = 19 Then
                            Select Case AD.LandKz
                                Case "RO" : Mail_BCC &= "alex@verag.ag;maut.ro@verag.ag;ma@verag.ag;" 'immer an alle bei RO!
                                Case "AT", "BA", "BG", "CZ", "DE", "HU", "LU", "SRB", "BIH", "HR", "ME", "MKD", "SK", "SI", "RS"

                                    If KD_ERW IsNot Nothing AndAlso Not IsDBNull(KD_ERW.kde_betreuer) Then
                                        Select Case KD_ERW.kde_betreuer
                                            Case "Ljubas" : Mail_BCC &= "n.ljubas@verag.ag;"
                                            Case "Batinic" : Mail_BCC &= "z.batinic@verag.ag;"
                                            Case "Vidovic" : Mail_BCC &= "s.vidovic@verag.ag;"
                                            Case Else
                                                Mail_BCC &= "z.batinic@verag.ag;n.ljubas@verag.ag;s.vidovic@verag.ag;"
                                        End Select
                                    Else
                                        Mail_BCC &= "z.batinic@verag.ag;n.ljubas@verag.ag;s.vidovic@verag.ag;"
                                    End If

                            End Select
                        End If

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

                        Dim pdfBezeichnung As String = ""

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

                                VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mail_To, Mail_Subject, Mail_HTMLBody, IIf(FIRMA.Firma_E_Mail_Mahnungen <> "", FIRMA.Firma_E_Mail_Mahnungen, "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, , pdfBezeichnung)

                                Try
                                    'Mail.SentOnBehalfOfName = SDL.cFakturierung.getDefaultMail("AMBAR") ',"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
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
        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 7 '"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.lblFirmaEmail.Text = IIf(FIRMA.Firma_E_Mail_Mahnungen <> "", FIRMA.Firma_E_Mail_Mahnungen, "mahnung@atilla-spedition.com")
                rpt.lblTelefon.Text = IIf(FIRMA.Firma_Telefon <> "", FIRMA.Firma_Telefon, "+43 7711 2845-0")
                rpt.lblFaxNr.Visible = False
                rpt.lblFax.Visible = False

            Case 19 '"VERAG360"
                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.lblFirmaEmail.Text = IIf(FIRMA.Firma_E_Mail_Mahnungen <> "", FIRMA.Firma_E_Mail_Mahnungen, "fibu360@verag.ag")

            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 "DE", "D", "AT", "A", "CH"
                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


            Case "RO"
                Select Case MAHNSTUFE
                    Case -2
                        MahnTEXT_VOR = "Facturile ulterioare nu au fost încă plătite:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Listă - Articole deschise"
                    Case -1
                        MahnTEXT_VOR = "Facturile ulterioare nu au fost încă încasate:"
                        MahnTEXT_NACH = "Sumele menționate mai sus vor fi încasate din contul dumneavoastră bancar specificat prin mandat de debitare directă SEPA."
                        MAHNTEXT = "Listă - Articole deschise"
                    Case 0
                        MahnTEXT_VOR = "Solicităm ca următoarele facturi să fie decontate:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Reamintire de plată"
                    Case 1
                        MahnTEXT_VOR = "Solicităm ca următoarele facturi să fie decontate:"
                        MahnTEXT_NACH = "Considerand ca neefectuarea platii se bazeaza pe o mica problema organizatorica, va rugam sa efectuati platile restante in cel mai scurt timp. In cazul in care platile au fost efectuate, va rugam sa  considerati acest inscris nefondat."
                        MAHNTEXT = "1. Memento"
                    Case 2
                        MahnTEXT_VOR = "În ciuda atenționărilor noastre anterioare, facturile enumerate nu au fost încă achitate:"
                        MahnTEXT_NACH = "Presupunem că acest lucru se datorează unei inadvertențe organizaționale. " & vbNewLine & ”Dacă plata a fost deja trimisă către noi, vă rugăm să considerați că acest memento este irelevant."
                        MAHNTEXT = MAHNSTUFE & ". MENȚIUNE"
                    Case 3
                        MahnTEXT_VOR = "În ciuda a două atenționări, elementele enumerate mai jos nu au fost încă plătite. Prin prezenta, vă solicităm pentru ultima dată să achitați imediat sumele restante. Vă rugăm să ne trimiteți o copie a chitanței de plată."
                        MahnTEXT_NACH = "În cazul în care acest nou termen expiră fără succes, vom fi nevoiți fie să însărcinăm o agenție de colectare a creanțelor să recupereze datoria, fie să acționăm în justiție fără altă notificare."
                        MAHNTEXT = MAHNSTUFE & ". MENȚIUNE"
                    Case >= 4
                        MahnTEXT_VOR = "În ciuda mai multor atenționări, elementele enumerate mai jos nu au fost încă plătite. Prin prezenta, vă solicităm pentru ultima dată să achitați imediat sumele restante. Vă rugăm să ne trimiteți o copie a chitanței de remitere."
                        MahnTEXT_NACH = "În cazul în care acest nou termen expiră fără succes, vom fi nevoiți fie să instruim o agenție de colectare a creanțelor pentru a colecta datoria, fie să acționăm în justiție fără altă notificare.."
                        MAHNTEXT = MAHNSTUFE & ". MENȚIUNE"
                End Select

            Case "BG"
                Select Case MAHNSTUFE
                    Case -2
                        MahnTEXT_VOR = "Следните фактури все още не са платени:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Списък - Отворени елементи"
                    Case -1
                        MahnTEXT_VOR = "Следните фактури все още не са събрани:"
                        MahnTEXT_NACH = "Горепосочените суми ще бъдат събрани от посочената от вас банкова сметка чрез SEPA мандат за директен дебит."
                        MAHNTEXT = "Списък - Отворени елементи"
                    Case 0
                        MahnTEXT_VOR = "Искаме уреждане на следните фактури:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Напомняне за плащане"
                    Case 1
                        MahnTEXT_VOR = "Искаме уреждане на следните фактури."
                        MahnTEXT_NACH = "Предполагаме, че това се дължи на организационен пропуск. " & vbNewLine & “Ако плащането ви вече е изпратено до нас, моля, считайте напомнянето за неуместно."
                        MAHNTEXT = "Първо напомняне"
                    Case 2
                        MahnTEXT_VOR = "Въпреки предишното ни напомняне, изброените фактури все още не са уредени.:"
                        MahnTEXT_NACH = "In cazul de fata trebuie sa insistam la efectuarea platilor facturilor sus mentionate, pentru a evita alte costuri si neplaceri. Va rugam sa efectuali platile restante pana le data de" &
                        MAHNTEXT = MAHNSTUFE & ". напомняне"
                    Case 3
                        MahnTEXT_VOR = "Въпреки двете напомняния изброените по-долу елементи все още не са платени. С настоящото ви молим за последен път да платите незабавно дължимата сума. Моля, изпратете ни копие от платежното нареждане."
                        MahnTEXT_NACH = "Ако този нов срок изтече без успех, ще бъдем принудени или да възложим на агенция за събиране на вземания да събере дълга, или да предприемем правни действия без допълнително уведомление."
                        MAHNTEXT = MAHNSTUFE & ". напомняне"
                    Case >= 4
                        MahnTEXT_VOR = "Въпреки няколкото напомняния, изброените по-долу елементи все още не са платени. С настоящото ви молим за последен път да платите незабавно дължимата сума. Моля, изпратете ни копие от платежното нареждане."
                        MahnTEXT_NACH = "Ако този нов срок изтече без успех, ще бъдем принудени или да възложим на агенция за събиране на вземания да събере дълга, или да предприемем правни действия без допълнително уведомление."
                        MAHNTEXT = MAHNSTUFE & ". напомняне"
                End Select

            Case "HR", "SRB", "BIH", "MKD"
                Select Case MAHNSTUFE
                    Case -2
                        MahnTEXT_VOR = "Naknadni računi još nisu plaćeni:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Popis - Otvorene stavken"
                    Case -1
                        MahnTEXT_VOR = "Naknadni računi još nisu naplaćeni:"
                        MahnTEXT_NACH = "Gore navedeni iznosi bit će prikupljeni putem SEPA naloga za izravno terećenje s vašeg navedenog bankovnog računa."
                        MAHNTEXT = "Popis - Otvorene stavken"
                    Case 0
                        MahnTEXT_VOR = "Molimo da se podmire sljedeći računi:"
                        MahnTEXT_NACH = ""
                        MAHNTEXT = "Podsjetnik za plaćanje"
                    Case 1
                        MahnTEXT_VOR = "Molimo da se podmire sljedeći računi:"
                        MahnTEXT_NACH = "Vjerujemo da je to zbog organizacijskog propusta. " & vbNewLine & "Ako nam je vaša uplata već poslana, molimo vas da podsjetnik smatrate nevažnim."
                        MAHNTEXT = "1. upozorenje"
                    Case 2
                        MahnTEXT_VOR = "Unatoč našem prethodnom podsjećanju, navedeni računi još uvijek nisu plaćeni:"
                        MahnTEXT_NACH = "Pretpostavljamo da je to zbog organizacijskog propusta, ali sada vas moramo odlučno zamoliti da nam odmah prenesete iznos koji dugujete prema gornjem popisu kako bismo izbjegli daljnje troškove i neugodnosti."
                        MAHNTEXT = MAHNSTUFE & ". UPOZORENJE"
                    Case 3
                        MahnTEXT_VOR = "Unatoč dvama opomenama, stavke navedene u nastavku još uvijek nisu plaćene. Ovim vas posljednji put molimo da odmah položite preostali iznos. Pošaljite nam kopiju potvrde o prijenosu."
                        MahnTEXT_NACH = "Ako ovaj novi rok istekne bez uspjeha, tada bismo bili prisiljeni angažirati tvrtku za naplatu duga da naplati dug ili poduzeti pravne radnje bez daljnje prethodne obavijesti."
                        MAHNTEXT = MAHNSTUFE & ". UPOZORENJE"
                    Case >= 4
                        MahnTEXT_VOR = "Unatoč opetovanim podsjetnicima, stavke navedene u nastavku još uvijek nisu plaćene. Ovim vas posljednji put molimo da odmah položite preostali iznos. Pošaljite nam kopiju potvrde o prijenosu."
                        MahnTEXT_NACH = "Ako ovaj novi rok istekne bez uspjeha, tada bismo bili prisiljeni angažirati tvrtku za naplatu duga da naplati dug ili poduzeti pravne radnje bez daljnje prethodne obavijesti."
                        MAHNTEXT = MAHNSTUFE & ". UPOZORENJE"
                End Select


            Case Else

                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


        End Select
    End Sub


    Private Shared Sub getMahnstufetextMDM(MAHNSTUFE, ByRef MahnTEXT_VOR, ByRef MahnTEXT_NACH, ByRef MAHNTEXT, Sprache, dct)

        'nur Deutsch, weil übersetzung über tblTranslate!

        Select Case MAHNSTUFE
            Case -2
                MahnTEXT_VOR = "Nachstehend ersehen Sie die Übersicht Ihrer offenen Rechnungen:"
                MahnTEXT_NACH = "Sollten Sie Kopien der fehlenden Belege benötigen, lassen Sie es uns bitte wissen. Wir senden Sie Ihnen gerne nochmals zu."
                MAHNTEXT = "Liste - Offene Posten"

            Case -1
                MahnTEXT_VOR = "Nachstehend ersehen Sie die Übersicht Ihrer offenen Rechnungen:"
                MahnTEXT_NACH = "Die oben genannten Beträge werden per SEPA-Lastschriftmandat von Ihrer angegebenen Bankverbindung eingezogen."
                MAHNTEXT = "Liste - Offene Posten"


            Case 0
                MahnTEXT_VOR = "für nachstehende Rechnungen konnten wir bisher noch keinen Zahlungseingang verzeichnen:"
                MahnTEXT_NACH = ""
                MAHNTEXT = "Zahlungserinnerung"


            Case 1
                MahnTEXT_VOR = "für nachstehende Rechnungen konnten wir bisher noch keinen Zahlungseingang verzeichnen:"
                MahnTEXT_NACH = "Sicherlich handelt es sich dabei um ein organisatorisches Versehen und wir ersuchen die Zahlung nachzuholen." & vbNewLine & "Sollten Sie zwischenzeitlich Zahlung geleistet haben, betrachten Sie dieses Schreiben als gegenstandslos."
                MAHNTEXT = "1. Mahnung"


            Case 2
                MahnTEXT_VOR = "Trotz unserer 1. Mahnung wurden die nachstehenden Rechnungen immer noch nicht beglichen."
                MahnTEXT_NACH = "Zur Vermeidung weiterer Kosten und Unannehmlichkeiten fordern wir Sie nunmehr mit aller Bestimmtheit auf, den überfälligen Betrag bis %FREITAG% zu begleichen." & vbNewLine & "Sollten Sie zwischenzeitlich Zahlung geleistet haben, senden Sie uns bitte umgehend eine Kopie Ihres Überweisungsbelegs. "
                MAHNTEXT = MAHNSTUFE & ". MAHNUNG"


            Case 3
                MahnTEXT_VOR = "Trotz zweifacher Mahnung sind nachstehende Rechnungen immer noch nicht beglichen."
                MahnTEXT_NACH = "Wir fordern Sie hiermit letztmalig auf, den überfälligen Betrag unverzüglich bis %DONNERSTAG% zu entrichten." & vbNewLine & "Sollten wir zum Ablauf der neuerlichen Frist keine Kopie Ihres Überweisungsbelegs erhalten, müssen wir Ihre Konten sperren!"
                MAHNTEXT = MAHNSTUFE & ". MAHNUNG"


            Case >= 4 And MAHNSTUFE <= 7
                MahnTEXT_VOR = "Trotz mehrfacher Mahnung sind nachstehende Rechnungen immer noch nicht beglichen." & vbNewLine & "Wir fordern Sie hiermit letztmalig auf, den offenen Betrag unverzüglich bis %MITTWOCH% zur Einzahlung zu bringen. Bitte senden Sie uns eine Kopie des Überweisungsbelegs!"
                MahnTEXT_NACH = "Nach erfolglosem Ablauf dieser neuerlichen Frist sind wir gezwungen, ohne weitere vorherige Ankündigung rechtliche Schritte einzuleiten."
                MAHNTEXT = MAHNSTUFE & ". MAHNUNG"


            Case >= 8
                MahnTEXT_VOR = "Trotz mehrfacher Mahnung sind nachstehende Rechnungen immer noch nicht beglichen." & vbNewLine & "Wir fordern Sie hiermit letztmalig auf, den offenen Betrag unverzüglich %HEUTE% zur Einzahlung zu bringen. Bitte senden Sie uns eine Kopie des Überweisungsbelegs!"
                MahnTEXT_NACH = "Nach erfolglosem Ablauf dieser neuerlichen Frist wären wir dann gezwungen, aber ohne weitere vorherige Ankündigung rechtliche Schritte einzuleiten."
                MAHNTEXT = MAHNSTUFE & ". MAHNUNG"
        End Select

        If Sprache = "DE" Then 'weil DE nicht übersetzt wird!!!
            For Each pair In dct
                MahnTEXT_VOR = MahnTEXT_VOR.ToString.Replace("%" & pair.Key & "%", pair.Value)
                MahnTEXT_NACH = MahnTEXT_NACH.ToString.Replace("%" & pair.Key & "%", pair.Value)
                MAHNTEXT = MAHNTEXT.ToString.Replace("%" & pair.Key & "%", pair.Value)

            Next
        End If
    End Sub


    Private Sub MyDatagridview1_SelectionChanged(sender As Object, e As EventArgs) Handles MyDatagridview1.SelectionChanged
        'MyComboBox1.changeItem("")
        If MyDatagridview1.SelectedRows.Count > 0 Then
            btnKunde.Enabled = True
        End If

    End Sub


    Shared Function getAusgabe(MainForm As Control, allowMailSend As Boolean) As String
        Dim f As New frmBU_Mahnlauf_Ausgabe(allowMailSend)
        f.ShowDialog(MainForm)
        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
        Me.Cursor = Cursors.WaitCursor

        If MyDatagridview1.SelectedRows.Count > 0 Then
            Dim KontoList As New List(Of String)
            Dim i As Integer = 0
            For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
                KontoList.Add(MyDatagridview1.SelectedRows(i).Cells("Konto").Value)
                i += 1
            Next

            Dim bemerkungSrch = Nothing
            If cboFilterOP._value <> "" Then
                Select Case cboFilterOP._value
                    Case "*LG_4813*" : bemerkungSrch = {"%4813/%"}
                    Case "*LG_4806_4813*" : bemerkungSrch = {"%4806/%", "%4813/%"}
                    Case Else
                        bemerkungSrch = {"'" & cboFilterOP._value.Replace("*", "%") & "%'"}
                End Select
            End If
            If sender Is Button5 Then doZahlungserinnerung(Me, "OP", KontoList, cboFirma._value, MyComboBox2._value, bemerkungSrch)
            If sender Is Button4 Then doZahlungserinnerung(Me, "ZE", KontoList, cboFirma._value, MyComboBox2._value, bemerkungSrch)

        End If
        Me.Cursor = Cursors.Default
    End Sub

    Shared Sub doZahlungserinnerung(MainForm As Control, art As String, KontoList As List(Of String), Firma As String, Mahnstufe As String, bemerkungSrch() As String)
        Dim fProgBar As New frmBU_Mahnlauf_Ausgabe_Ladebalken
        Try

            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 = KontoList.Count
            Dim cnt = 0

            If art = "OP" Then forceMahnstufe = -2 : hideMahnstopp = False
            If art = "ZE" Then forceMahnstufe = Mahnstufe : hideMahnstopp = True

            If KontoList.Count > 0 Then
                Select Case getAusgabe(MainForm, False)
                    Case "PDF"
                        If KontoList.Count = 1 Then
                            doMahnung(3, KontoList(0), Firma, art,, srchPrinter, forceMahnstufe,, hideMahnstopp, bemerkungSrch)
                        Else
                            Dim PDF_LIST As New List(Of String)
                            fProgBar.Show(MainForm)
                            fProgBar.Refresh()

                            For Each konto In KontoList ' As DataGridViewRow In MyDatagridview1.SelectedRows
                                Dim Path = ""
                                If doMahnung(4, konto, Firma, art, Path, srchPrinter, forceMahnstufe, False, hideMahnstopp, bemerkungSrch) 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(MainForm)
                        fProgBar.Refresh()
                        For Each konto In KontoList ' As DataGridViewRow In MyDatagridview1.SelectedRows
                            Dim Path = ""
                            doMahnung(2, konto, Firma, art, Path, srchPrinter, forceMahnstufe, False, hideMahnstopp, bemerkungSrch)
                            cnt += 1
                            fProgBar.progBar.Value = cnt / gesAnz * 100
                            fProgBar.lblAnzahl.Text = cnt & "/" & gesAnz
                            fProgBar.Refresh()
                        Next
                    Case "PRINT"
                        fProgBar.Show(MainForm)
                        fProgBar.Refresh()
                        For Each konto In KontoList ' As DataGridViewRow In MyDatagridview1.SelectedRows
                            doMahnung(0, konto, Firma, art, , srchPrinter, forceMahnstufe,, hideMahnstopp, bemerkungSrch)
                            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

    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(Me, 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 mahnbar As Boolean = r.Cells("mahnbar").Value

                    If Not cbxMahnsperre.Checked Or (cbxMahnsperre.Checked And mahnbar) Then ' Mahnsperre -> Kunde mit Mahnsperre wird NICHT gemahnt!

                        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, Not cbxMahnsperre.Checked)
                                    If doMahnung(4, Konto, FirmaId, "ZE", Path, srchPrinter) Then
                                        PDF_LIST.Add(Path)
                                    End If
                                Case "MAIL"
                                    If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId, Not cbxMahnsperre.Checked)
                                    doMahnung(2, Konto, FirmaId, "ZE",, srchPrinter)
                                Case "MAIL_SEND"
                                    If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId, Not cbxMahnsperre.Checked)
                                    doMahnung(5, Konto, FirmaId, "ZE",, srchPrinter)
                                Case "PRINT"
                                    If bool_increaseMahnstufe Then increaseMahnstufe(Konto, FirmaId, Not cbxMahnsperre.Checked)
                                    doMahnung(0, Konto, FirmaId, "ZE",, srchPrinter)
                            End Select
                        End If
                        cnt += 1
                        fProgBar.progBar.Value = cnt / gesAnz * 100
                        fProgBar.lblAnzahl.Text = cnt & "/" & gesAnz
                        'Pasuse??
                        fProgBar.Refresh()
                    End If

                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()

        Dim dt = MyDatagridview1.DataSource
        If cbxZahlungseingaenge.Checked Then
            If dt.Columns.Contains("c_landid") Then dt.Columns.Remove("c_landid")
            cProgramFunctions.genExcelFromDT_NEW(dt, {"D1:D" & (dt.Rows.Count + 1)},,, "Zahlungseingänge vom " & txtZahlEingaenge._value,, True)
        Else
            If cboFirma._value = 19 Then
                cProgramFunctions.genExcelFromDT_NEW(dt, {"E1:E" & (dt.Rows.Count + 1), "F1:F" & (dt.Rows.Count + 1), "I1:I" & (dt.Rows.Count + 1), "J1:J" & (dt.Rows.Count + 1), "K1:K" & (dt.Rows.Count + 1), "L1:L" & (dt.Rows.Count + 1)})
            Else
                cProgramFunctions.genExcelFromDT_NEW(dt, {"G1:G" & (dt.Rows.Count + 1), "J1:J" & (dt.Rows.Count + 1)})
            End If


        End If


        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, Not cbxMahnsperre.Checked)
            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, Not cbxMahnsperre.Checked) Then
                    MsgBox("Der Mahnzähler wurde erfolgreich zurückgesetzt.")
                End If
            End If
        End If
    End Sub

    Private Sub btnKunde_Click(sender As Object, e As EventArgs) Handles btnKunde.Click

        If MyDatagridview1.SelectedRows.Count > 0 Then
            If MyDatagridview1.Columns("Konto") IsNot Nothing Then
                If IsNumeric(MyDatagridview1.SelectedRows(0).Cells("Konto").Value) AndAlso MyDatagridview1.SelectedRows(0).Cells("Konto").Value > 0 Then
                    cProgramFunctions.openKundenblatt(MyDatagridview1.SelectedRows(0).Cells("Konto").Value, Me.FindForm)
                End If
            End If
        End If
    End Sub

    Private Sub cbxZahlungseingaenge_CheckedChanged(sender As Object, e As EventArgs) Handles cbxZahlungseingaenge.CheckedChanged

        If cbxZahlungseingaenge.Checked Then
            txtZahlEingaenge.Visible = True
            cbxKontotyp.Visible = True
            btnMail_Intern.Visible = True
            Select Case Now.DayOfWeek
                Case 1 : txtZahlEingaenge._value = Today().AddDays(-3) 'Am Montag Daten von Freitag
                Case Else : txtZahlEingaenge._value = Today().AddDays(-1) ' Sonst daten von gestern.
            End Select
        Else
            txtZahlEingaenge.Visible = False
            cbxKontotyp.Visible = False
            btnMail_Intern.Visible = False
        End If

        Button2.Enabled = Not cbxZahlungseingaenge.Checked
        Button4.Enabled = Not cbxZahlungseingaenge.Checked
        Button5.Enabled = Not cbxZahlungseingaenge.Checked
        Button6.Enabled = Not cbxZahlungseingaenge.Checked

        btnSuche.PerformClick()

    End Sub

    Private Sub cboFirma_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboFirma.SelectedValueChanged
        If cboFirma._value <> "" AndAlso cboFirma._value = 19 Then
            cbxZahlungseingaenge.Visible = True
            cboBetreuer.Visible = True
            lblBetreuer.Visible = True
            cbxNewDGV.Visible = False

        Else
            cbxZahlungseingaenge.Visible = False
            cbxZahlungseingaenge.Checked = False
            cboBetreuer.Visible = False
            lblBetreuer.Visible = False
            cbxNewDGV.Visible = True

        End If
    End Sub

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        If cboFirma._value <> "" Then
            If vbYes = MsgBox("Sollen die OPs aus Syska für die Firma " & cboFirma.Text.Replace(cboFirma._value, "") & " aktualisiert werden?" & vbNewLine & "Dieser Vorgang dauert unter Umständen etwas!", vbYesNoCancel) Then

                If Not VERAG_PROG_ALLGEMEIN.cSyska_Interface.OP_Einlesen(cboFirma._value) Then
                    MsgBox("Fehler beim aktualisieren der OPs aus Syska!")
                Else
                    initDGV(cbxZahlungseingaenge.Checked, cbxNewDGV.Checked)
                End If



            End If
        End If


    End Sub

    Private Sub btnMail_Intern_Click(sender As Object, e As EventArgs) Handles btnMail_Intern.Click
        Try

            Me.Cursor = Cursors.WaitCursor
            btnSuche.PerformClick()


            Dim dt = MyDatagridview1.DataSource
            Dim desc = "Zahlungseingänge vom " & txtZahlEingaenge._value

            If dt.Columns.Contains("c_landid") Then dt.Columns.Remove("c_landid")

            Dim attachment = cProgramFunctions.genExcelFromDT_NEW(dt, {"D1:D" & (dt.Rows.Count + 1)},,, desc,, True,,,, False, True)

            Dim outl As New Outlook.Application

            Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
            Mail = outl.CreateItem(0)
            Mail.Subject = desc & " (" & cbxKontotyp.Text & ")"

            If cboFirma._value = 19 Then
                Dim accountToSent = "fibu360@verag.ag "


                If accountToSent <> "" Then
                    If outl.Session.Accounts.Count > 0 Then
                        For Each oAccount In outl.Session.Accounts
                            If oAccount.SmtpAddress = accountToSent Then
                                Mail.SendUsingAccount = oAccount
                                Exit For
                            End If
                        Next
                    End If
                End If
            End If

            'noch keine Unterscheidung der Abteilungen bei MDM, daher hardcodiert.
            Dim MautVertrMail = "z.batinic@verag.ag;alex@verag.ag;maut.ro@verag.ag;ma@verag.ag;n.ljubas@verag.ag;s.vidovic@verag.ag;"
            Dim MautFaktMail = "s.kriegner@verag.ag;"

            Select Case cbxKontotyp._value
                Case "A" : Mail.To = MautVertrMail & MautFaktMail
                Case "DE" : Mail.To = MautVertrMail
                Case "KE" : Mail.To = MautFaktMail
                Case "KO" : Mail.To = ""
            End Select

            Mail.Attachments.Add(attachment)

            Mail.Display()


        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler beim Ermitteln des Mail-Accounts." & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
        End Try



        Me.Cursor = Cursors.Default

    End Sub


End Class