Files
SDL/SDL/Fakturierung/frmFaktSammelRgDrucken.vb
2025-08-05 11:13:30 +02:00

713 lines
36 KiB
VB.net

Imports com.sun.tools.javadoc
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
Public Class frmFaktSammelRgDrucken
Dim Sammelrechung = -1
Dim Firma = 1
Dim loaded = False
Dim dTLANDEU As New DataTable
Sub New()
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Sub New(Firma)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Me.Firma = Firma
End Sub
Private Sub RadioButton_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton.CheckedChanged, RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged, RadioButton6.CheckedChanged, RadioButton5.CheckedChanged
lblSB.Visible = False : cboSB.Visible = False : btn.Enabled = True : Button9.Enabled = True : Button8.Enabled = True : cbxMWST.Visible = False : pnlAUTOMailversand.Visible = False : cbxAUTOMail.Visible = False
cboSB.changeItem("")
If DirectCast(sender, RadioButton).Checked Then Sammelrechung = sender.tag
Select Case Sammelrechung
Case 1 : txtZeitraumBis.Text = Now.AddDays(-1).ToShortDateString
Case 2 'txtZeitraumBis.Text = CDate(Now.ToString("01.MM.yyyy")).AddDays(-1)
If Now.Day > 15 Then
txtZeitraumBis.Text = CDate(Now.ToString("15.MM.yyyy"))
Else
txtZeitraumBis.Text = CDate(Now.ToString("01.MM.yyyy")).AddDays(-1)
End If
Case 3 : txtZeitraumBis.Text = CDate(Now.ToString("01.MM.yyyy")).AddDays(-1)
Case 4 ': txtZeitraumBis.Text = CDate(Now.ToString("01.MM.yyyy")).AddDays(-1) '???
If Now.Day >= 20 Then
txtZeitraumBis.Text = CDate(Now.ToString("20.MM.yyyy"))
ElseIf Now.Day >= 10 Then
txtZeitraumBis.Text = CDate(Now.ToString("10.MM.yyyy")).AddDays(-1)
Else
txtZeitraumBis.Text = CDate(Now.ToString("01.MM.yyyy")).AddDays(-1)
End If
Case 5 : txtZeitraumBis.Text = Now.AddDays((Now.DayOfWeek) * -1).ToShortDateString
Case 6 : txtZeitraumBis.Text = Now.AddDays(-1).ToShortDateString : lblSB.Visible = True : cboSB.Visible = True
cboSB.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) : btn.Enabled = False : Button9.Enabled = False : Button2.Enabled = False
cbxMWST.Visible = True : pnlAUTOMailversand.Visible = True : cbxAUTOMail.Visible = True : Label5.Visible = False : cboFaktGrp.Visible = False
Case 7 : txtZeitraumBis.Text = Now.ToShortDateString : lblSB.Visible = True : cboSB.Visible = True : cboSB.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
End Select
initDGV()
End Sub
Sub initDGV()
With MyDatagridview1
Dim whereAbfArt = ""
Dim whereMWST = ""
If cboAbfertigungsart._value <> "" AndAlso Sammelrechung <> 6 Then whereAbfArt = " AND (SELECT Abfertigungsart FROM Speditionsbuch WHERE Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr)='" & cboAbfertigungsart._value & "' "
If cbxMWST.CheckState.Indeterminate Then
whereMWST = ""
Else
whereMWST = "AND isnull(tblKundenErweitert.kde_keineMWSt,0) = " & IIf(cbxMWST.Checked, "1", "0")
End If
If cbxAUTOMail.Checked Or Not cbxAUTOMail.Checked Then
whereMWST = " AND isnull(Rechnungsausgang.Automailversand,0) = " & IIf(cbxAUTOMail.Checked, "1", "0")
End If
Dim sqlStr = ""
Select Case Sammelrechung
Case 6 ' Maut Sammelrechnung
sqlStr = " SELECT Rechnungsausgang.RechnungsKundenNr, max(Rechnungsausgang.[RechnungsName 1]) as [RechnungsName 1],0 as AvisoId,max(Rechnungsausgang.[RechnungsLandKz]) as [RechnungsLandKz] , count(*) as Anzahl, SUM(Rechnungsausgang.SteuerfreierGesamtbetrag + Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Summe,sum(Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Steuer, isnull(tblKundenErweitert.kde_keineMWSt,0) as keineMWST
,(SELECT CASE WHEN Rechnungsdruck =0 THEN 'POST' WHEN Rechnungsdruck=1 THEN 'FAX' WHEN Rechnungsdruck=2 THEN 'E-MAIL' ELSE '-' END FROM Adressen WHERE AdressenNr=Rechnungsausgang.RechnungsKundenNr ) as Rechnungsdruck
FROM Rechnungsausgang left join tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
WHERE Rechnungsausgang.Status IN (2) And Rechnungsausgang.Firma_ID = '" & cboFirma._value & "' And Rechnungsausgang.Sammelrechnung = 6 And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) = '" & txtRechnungsdatum._value & "'
" & If(cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "' ", "") & "
" & whereAbfArt & " " & whereMWST & "
GROUP BY RechnungsKundenNr, isnull(tblKundenErweitert.kde_keineMWSt,0)
ORDER BY RechnungsLandKz, RechnungsKundenNr "
Case Else
sqlStr = " SELECT Rechnungsausgang.RechnungsKundenNr, max(Rechnungsausgang.[RechnungsName 1]) as [RechnungsName 1]," & If(Sammelrechung = 7, "AvisoId", "0") & " as AvisoId,max(Rechnungsausgang.[RechnungsLandKz]) as [RechnungsLandKz] , count(*) as Anzahl, SUM(Rechnungsausgang.SteuerfreierGesamtbetrag + Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Summe" & If(Sammelrechung = 7, ",max([LKW Kennzeichen]) as LKW", "") & "
,(SELECT CASE WHEN Rechnungsdruck =0 THEN 'POST' WHEN Rechnungsdruck=1 THEN 'FAX' WHEN Rechnungsdruck=2 THEN 'E-MAIL' ELSE '-' END FROM Adressen WHERE AdressenNr=Rechnungsausgang.RechnungsKundenNr ) as Rechnungsdruck
FROM Rechnungsausgang
WHERE Rechnungsausgang.Status IN (0,2) And Rechnungsausgang.Firma_ID = '" & cboFirma._value & "' And Rechnungsausgang.Sammelrechnung = '" & Sammelrechung & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) <= '" & txtZeitraumBis._value & "'
" & If(Sammelrechung = 7 And cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "' ", "") & "
" & whereAbfArt & "
AND Rechnungsausgang.FakturierungsGruppe='" & cboFaktGrp._value & "'
GROUP BY RechnungsKundenNr " & If(Sammelrechung = 7, ",AvisoId", "") & "
ORDER BY Rechnungsausgang.RechnungsKundenNr "
End Select
'Rechnungsausgang.Status IN (0,2) --> vormals nur 2
.SET_SQL(sqlStr, "FMZOLL")
.LOAD()
.Columns("RechnungsKundenNr").Width = 120
.Columns("RechnungsKundenNr").HeaderText = "KundenNr"
.Columns("RechnungsName 1").HeaderText = "Firma"
.Columns("Summe").HeaderText = "Summe"
.Columns("Summe").DefaultCellStyle.Format = "#,##0.00 €"
.Columns("Summe").Width = 80
.Columns("RechnungsLandKz").Visible = False
.Columns("RechnungsLandKz").HeaderText = "Land"
.Columns("Anzahl").Width = 42
.Columns("Rechnungsdruck").Width = 80
.Columns("Rechnungsdruck").HeaderText = "Rg.Art"
.Columns("Rechnungsdruck").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("Anzahl").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).Visible = False
If .Columns.Contains("LKW") And .Columns.Count = 8 Then
.Columns("LKW").Width = 80
End If
If .Columns.Contains("RechnungsLandKz") AndAlso Sammelrechung = 6 Then
.Columns("RechnungsLandKz").Visible = True
End If
If .Columns.Contains("keineMWST") Then
.Columns("keineMWST").Visible = False
End If
If .Columns.Contains("Steuer") Then
.Columns("Steuer").Visible = False
End If
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
.ClearSelection()
If MyDatagridview1.RowCount > 0 Then
Button4.Enabled = cbxAUTOMail.Checked
Button7.Enabled = cbxAUTOMail.Checked
Button3.Enabled = Not cbxAUTOMail.Checked
Else
Button7.Enabled = False
Button4.Enabled = False
Button3.Enabled = False
End If
End With
End Sub
Private Sub frmFaktSammelRgDrucken_Load(sender As Object, e As EventArgs) Handles Me.Load
txtZeitraumBis.Text = Now.ToShortDateString
txtRechnungsdatum.Text = Now.ToShortDateString
cboAbfertigungsart.fillWithSQL("SELECT Abfertigungsart,[Abfertigungsbezeichnung] FROM [Abfertigungsarten] ORDER BY Abfertigungsart ", True, "FMZOLL", True)
Dim FirmaTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Then
FirmaTmp = "VERAGIMEX"
End If
Label5.Visible = True
cboFaktGrp.Visible = True
If Not IsDBNull(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) AndAlso (CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firmaFMZoll) = 19 Or VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_username = "ADMIN" Or VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_username = "DANIEL") Then
FirmaTmp = "VERAG360"
RadioButton5.Enabled = True
cboAbfertigungsart.changeItem("10")
Else
RadioButton5.Enabled = False
End If
Select Case FirmaTmp
Case "VERAG"
cboFirma.fillWithSQL("Select [Firma_ID], [Firma_Bez] FROM [tblFirma] WHERE Firma_ID<>20", False, "FMZOLL")
cboFirma.changeItem("1")
cboSB.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR [mit_id] IN (SELECT [beroz_bergrId] FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND beroz_art='B')) order by mit_username", False, "ADMIN", True)
Case "IMEX"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=20", False, "FMZOLL")
cboFirma.changeItem("20")
cboSB.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='IMEX' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
Case "UNISPED"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID IN (21,22,23) ", False, "FMZOLL")
cboFirma.changeItem("20")
cboSB.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='UNISPED' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
Case "VERAGIMEX"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] ", False, "FMZOLL")
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "VERAG" : cboFirma.changeItem("1")
Case "IMEX" : cboFirma.changeItem("20")
End Select
cboSB.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('IMEX','VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR [mit_id] IN (SELECT [beroz_bergrId] FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND beroz_art='B')) order by mit_username", False, "ADMIN", True)
Case "AMBAR"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE FIRMENGRUPPE IN ('AMBAR') ", False, "FMZOLL")
cboFirma.changeItem("24")
cboSB.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma='AMBAR' and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
Label5.Visible = False
cboFaktGrp.Visible = False
Case "VERAG360"
cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID=19", False, "FMZOLL")
cboFirma.changeItem("19")
cboSB.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where isnull(mit_firmaFMZoll,0)=19 and mit_gekuendigt=0 AND (mit_abteilung IN ('VRR','BH') OR (SELECT COUNT(*) FROM [tblBerechtigungsObjekteZuordnung] where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then cboSB.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DANIEL", "DANIEL"))
End Select
' cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] WHERE Firma_ID NOT IN(3) ORDER BY Firma_ID ", True, "FMZOLL")
cboFirma.changeItem(Firma)
cboSB.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
cboFaktGrp.Items.Clear()
If FirmaTmp <> "VERAG360" Then
cboFaktGrp.fillWithSQL("SELECT [Code],[Bezeichnung] FROM tblFakturierungsgruppe", False, "ADMIN", False)
cboFaktGrp.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_fakturierungsgruppe)
End If
cProgramFunctions.initDrucker(cboPrinter)
RadioButton.Checked = True
loaded = True
initDGV()
dTLANDEU = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL")
Dim R As DataRow = dTLANDEU.NewRow
R("LandKz") = "MK"
R("MitgliedslandEU") = False
dTLANDEU.Rows.Add(R)
End Sub
Private Sub txtRechnungsdatum_TextChanged(sender As Object, e As EventArgs) Handles txtRechnungsdatum.Leave, cboFirma.SelectedIndexChanged, txtZeitraumBis.Leave, cboSB.SelectedIndexChanged
initDGV()
End Sub
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
doSammelrechnung(1)
End Sub
Function getSelectionKdNr() As String
getSelectionKdNr = ""
If MyDatagridview1.SelectedRows.Count > 0 Then
If MyDatagridview1.SelectedRows.Count = MyDatagridview1.Rows.Count Then Return "" ' Alle ausgewählt
For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
getSelectionKdNr &= r.Cells("RechnungsKundenNr").Value & ","
Next
getSelectionKdNr = getSelectionKdNr.Substring(0, getSelectionKdNr.Length - 1)
End If
End Function
Function getSelectionKdNr_Simple() As String
If MyDatagridview1.Rows.Count = 1 Then Return MyDatagridview1.Rows(0).Cells("RechnungsKundenNr").Value
If MyDatagridview1.SelectedRows.Count = 1 Then Return MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value
If MyDatagridview1.Rows.Count > 0 Then ' Wenn alle gliech sind, dann wir die KdNr zurückgegben
Dim kdTmp = MyDatagridview1.Rows(0).Cells("RechnungsKundenNr").Value
For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
If r.Cells("RechnungsKundenNr").Value <> kdTmp Then Return ""
Next
Return kdTmp
End If
Return ""
End Function
Function getSelectionLandKz() As String
getSelectionLandKz = ""
If MyDatagridview1.Rows.Count > 0 Then
If MyDatagridview1.SelectedRows.Count > 0 Then
For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
If r.Cells("RechnungsLandKz").Value IsNot DBNull.Value Then
If getSelectionLandKz = "" Then
getSelectionLandKz = r.Cells("RechnungsLandKz").Value
Else
If getSelectionLandKz <> r.Cells("RechnungsLandKz").Value Then
Return ""
End If
End If
End If
Next
Else
For Each r As DataGridViewRow In MyDatagridview1.Rows
If r.Cells("RechnungsLandKz").Value IsNot DBNull.Value Then
If getSelectionLandKz = "" Then
getSelectionLandKz = r.Cells("RechnungsLandKz").Value
Else
If getSelectionLandKz <> r.Cells("RechnungsLandKz").Value Then
Return ""
End If
End If
End If
Next
End If
End If
End Function
Private Sub MyDatagridview1_SelectionChanged(sender As Object, e As EventArgs) Handles MyDatagridview1.SelectionChanged
' MyDatagridview1.ClearSelection()
End Sub
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
doSammelrechnung(3)
End Sub
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click, Button2.Click
If Not IsNumeric(getSelectionKdNr_Simple) Then MsgBox("Es muss eine eindeutige KundenNr ausgewählt werden!") : Exit Sub
'RG-Druck - Mail (+Kopie)
Dim RG_DRUCK = 2
If sender Is Button2 Then
RG_DRUCK = 5
End If
Dim MDMKopiedrucken As Boolean = False
If Sammelrechung = 6 Then 'MDMSammelrechnung
'AKTUELL IMMER MIT KOPIE
MDMKopiedrucken = True
Dim reLandKZ As String = MyDatagridview1.SelectedRows(0).Cells("RechnungsLandKz").Value
Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = reLandKZ).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault()
If isEU Then
If MyDatagridview1.Columns.Contains("keineMWST") Then
If MyDatagridview1.SelectedRows.Count = 1 Then
'1. Schritt: kein MWST Kunde -> ORIGINAL-RE per Mail!
MDMKopiedrucken = Not MyDatagridview1.SelectedRows(0).Cells("keineMWST").Value
End If
End If
'2. Schritt: MWST Kunde -> wenn kein MWST-BEtrag ->Original sonst Kopie per Mail!
If MDMKopiedrucken Then
MDMKopiedrucken = CDbl(MyDatagridview1.SelectedRows(0).Cells("Steuer").Value) <> 0
End If
Else
End If
End If
Dim f As New frmFaktEmail(cboFirma._value, Sammelrechung, CDate(txtZeitraumBis.Text), CDate(txtRechnungsdatum.Text), cboPrinter.Text, RG_DRUCK, cbxEinzelAnlagen.Checked, cbxSammelbericht.Checked, getSelectionKdNr_Simple, -1, Nothing, cboSB._value,, getAvisoIds, cbxEVOLOG.Checked, cbxTransFerry.Checked, cboFaktGrp._value, cboAbfertigungsart._value, MDMKopiedrucken)
f.ShowDialog(Me)
MyDatagridview1.GetOrder()
initDGV()
MyDatagridview1.SetOrder()
'Else
' doSammelrechnung(2)
'End If
End Sub
Function getAvisoIds() As List(Of Integer)
If Sammelrechung <> 7 Then Return Nothing
Dim AvisoIds As New List(Of Integer)
If MyDatagridview1.SelectedRows.Count > 0 Then
For Each r In MyDatagridview1.SelectedRows
If r.cells("AvisoId").value Is DBNull.Value Then
MsgBox("Nich alle Speditionsbucheinträge haben eine Aviso-Id. LKW Abrechnung wird abgebrochen.") : Return (New List(Of Integer))
End If
AvisoIds.Add(r.cells("AvisoId").value)
Next
End If
Return AvisoIds
End Function
Sub doSammelrechnung(ausgabeArt As Integer, Optional vorschau As Boolean = False)
Try
If cboFirma._value = "" Then MsgBox("Bitte Firma angeben!") : Exit Sub
If txtZeitraumBis.Text = "" Then MsgBox("Bitte Zeitraum-Bis angeben!") : Exit Sub
If txtRechnungsdatum.Text = "" Then MsgBox("Bitte Rechnungsdatum angeben!") : Exit Sub
Me.Enabled = False
Me.Cursor = Cursors.WaitCursor
Dim listPDFs As New List(Of String)
Dim SonstAnlagen As New List(Of String)
Dim RechnungsNrisSet As Boolean = False
RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(cboFirma._value, Sammelrechung, CDate(txtZeitraumBis.Text), CDate(txtRechnungsdatum.Text), cboPrinter.Text, cbxEinzelAnlagen.Checked, cbxSammelbericht.Checked, getSelectionKdNr, If(ausgabeArt = 1, -1, 4), listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, vorschau, cbxTransFerry.Checked, cboFaktGrp._value, cboAbfertigungsart._value)
'-------------- für PDF-Sammel-Rechnung --------------
If Not RechnungsNrisSet Then
initDGV()
Me.Enabled = True
Me.Cursor = Cursors.Default
Exit Sub
End If
If cbxZusammenfassen.Checked Then ' Gibt an, ob mehrere Sammelrechnung zusammengefasst werden sollten
Select Case ausgabeArt
Case 2 'MAIL
If listPDFs.Count > 0 Then
Try
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
Mail.Subject = "VERAG Sammel-Rechnung"
Mail.HTMLBody = getSammelRgTExt(getSelectionLandKz)
If IsNumeric(getSelectionKdNr) Then
Dim email_receipt As String = ""
If cboFirma._value = "7" Then email_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(CInt(getSelectionKdNr()), "Rechnung an (ATILLA)Then")
Mail.To = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(CInt(getSelectionKdNr()), "Rechnung an"), email_receipt)
End If
For Each pdf In listPDFs
Mail.Attachments.Add(pdf, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
Next
For Each pdf In SonstAnlagen
Mail.Attachments.Add(pdf, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
Next
Mail.Display()
Catch ex As Exception
MsgBox("Fehler beim Öffnen des Mail-Programmes.") ' PDF wird geöffnet!")
' Process.Start(pdf)
End Try
End If
Case 3 'PDF + öffnen
Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("VERAG_Sammelrechnung.pdf", ".pdf", False, False)
If FormularManagerNEU.MergePdfFiles(listPDFs, pathPDF) Then
Process.Start(pathPDF)
Else
MsgBox("Fehler beim zusammenführen der PDFs.")
End If
End Select
Else 'nein (Standard)
Select Case ausgabeArt
Case 2 'MAIL
If listPDFs.Count > 0 Then
For Each pdf In listPDFs
Try
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
Mail.Subject = "VERAG Sammel-Rechnung"
If IsNumeric(getSelectionKdNr) Then
Dim email_receipt As String = ""
If cboFirma._value = "7" Then email_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(CInt(getSelectionKdNr()), "Rechnung an (ATILLA)")
Mail.To = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(CInt(getSelectionKdNr()), "Rechnung an"), email_receipt)
End If
Mail.HTMLBody = getSammelRgTExt(getSelectionLandKz) ' Sehr geehrte Damen und Herren,<br><br>anbei erhalten Sie Ihre Sammel-Rechnung."
Mail.Attachments.Add(pdf, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
Mail.Display()
Catch ex As Exception
MsgBox("Fehler beim Öffnen des Mail-Programmes. PDF wird geöffnet!")
Process.Start(pdf)
End Try
Next
End If
Case 3 'PDF + öffnen
For Each pdf In listPDFs
Process.Start(pdf)
Next
For Each pdf In SonstAnlagen
Process.Start(pdf)
Next
End Select
End If
'-------------- ENDE --------------
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
initDGV()
Me.Enabled = True
Me.Cursor = Cursors.Default
End Sub
Function getSammelRgTExt(RechnungsLandKz) As String
If RechnungsLandKz = "" Then
getSammelRgTExt = "Sehr geehrte Damen und Herren,<br>"
getSammelRgTExt &= "Dear Ladies and Gentlemen,<br>"
getSammelRgTExt &= "Sayin Bayanlar ve Baylar,<br>"
getSammelRgTExt &= "<br>"
getSammelRgTExt &= "im Anhang senden wir Ihnen die o.g. Rechnung.<br>"
getSammelRgTExt &= "attached we send you the invoice mentioned above.<br>"
getSammelRgTExt &= "ekte baslikta yazan faturayi bulabilirsinz.<br>"
getSammelRgTExt &= "<br>"
getSammelRgTExt &= "<br><br><br>Mit freundlichen Grüßen / Best regards / Saygilarimizla<br><br>VERAG Spedition AG<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
Return "<div style=""font-family:Calibri, Arial"">" & getSammelRgTExt & "</div>"
End If
Select Case RechnungsLandKz
Case "TR"
getSammelRgTExt = "Sayin Bayanlar ve Baylar,<br><br>ekte baslikta yazan faturayi bulabilirsinz."
getSammelRgTExt &= "<br><br><br>Saygilarimizla<br><br>VERAG Spedition AG<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
Case "A", "AT", "D", "DE", "CH"
getSammelRgTExt = "Sehr geehrte Damen und Herren,<br><br>im Anhang senden wir Ihnen die o.g. Rechnung."
getSammelRgTExt &= "<br><br><br>Mit freundlichen Grüßen<br><br>VERAG Spedition AG<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
Case Else
getSammelRgTExt = "Dear Ladies and Gentlemen,<br><br>attached we send you the invoice mentioned above."
getSammelRgTExt &= "<br><br><br>Best regards<br><br>VERAG Spedition AG<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
End Select
getSammelRgTExt = "<div style=""font-family:Calibri, Arial"">" & getSammelRgTExt & "</div>"
End Function
Private Sub lkl_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles lkl.LinkClicked
MyDatagridview1.ClearSelection()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
doSammelrechnung(3, True)
End Sub
Private Sub cboFaktGrp_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFaktGrp.SelectedIndexChanged
initDGV()
End Sub
Private Sub cboAbfertigungsart_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboAbfertigungsart.SelectedIndexChanged
initDGV()
End Sub
Private Sub cbxMWST_Click(sender As Object, e As EventArgs) Handles cbxMWST.Click
initDGV()
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If MyDatagridview1.SelectedRows.Count > 0 Then
If vbYes = MsgBox("Möchten Sie alle markieren Rechnungen den automatischen Emailversand aktivieren?" & vbNewLine & "Die Rechnungen werden automatisch im Nachtlauf per EMail verschickt!", vbYesNoCancel) Then
setMailversand(True, 19, 6, 2)
End If
End If
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
If MyDatagridview1.SelectedRows.Count > 0 Then
If vbYes = MsgBox("Möchten Sie für alle markieren Rechnungen den automatischen Emailversand deaktiveren?" & vbNewLine & "Die Rechnungen müssen dann manuell per Mail verschickt werden!", vbYesNoCancel) Then
setMailversand(False, 19, 6, 2)
End If
End If
End Sub
Private Function setMailversand(Mailversand As Boolean, FirmaID As Integer, Sammelrechnung As Integer, Status As Integer) As Boolean
Dim count = 0
Dim mailversandString As String = IIf(Mailversand, "1", "0")
Dim whereMWST = ""
If cbxMWST.CheckState.Indeterminate Then
whereMWST = ""
Else
whereMWST = " AND isnull(tblKundenErweitert.kde_keineMWSt,0) = " & IIf(cbxMWST.Checked, "1", "0")
End If
For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
If IsDate(txtRechnungsdatum.Text) AndAlso r.Cells("RechnungsLandKz").Value <> "" AndAlso IsNumeric(r.Cells("RechnungsKundenNr").Value) Then
If (New SQL).doSQL("UPDATE Rechnungsausgang set Automailversand = " & mailversandString &
" from Rechnungsausgang left join tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr where Rechnungsausgang.Status In (" & Status & ") And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & Sammelrechnung & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) = '" &
CDate(txtRechnungsdatum.Text).ToShortDateString & "' and RechnungsKundenNr = " & r.Cells("RechnungsKundenNr").Value & " and RechnungsLandKz = '" & r.Cells("RechnungsLandKz").Value & " ' and isnull(Automailversand, 0) <> " & mailversandString &
If(cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "' ", "") & whereMWST, "FMZOLL") Then
count += 1
End If
End If
Next
If count <> MyDatagridview1.SelectedRows.Count Then MsgBox("ACHTUNG" & vbNewLine & "Der automatische Mailversand wurde nur bei " & count & " Rechnungen " & IIf(Mailversand, "aktiviert!", "deaktiviert!") & vbNewLine & "Markiert waren " & MyDatagridview1.SelectedRows.Count & " Rechnungen!")
initDGV()
End Function
Private Sub cbxAUTOMail_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAUTOMail.CheckedChanged
initDGV()
If MyDatagridview1.RowCount > 0 Then
Button4.Enabled = cbxAUTOMail.Checked
Button7.Enabled = cbxAUTOMail.Checked
Button3.Enabled = Not cbxAUTOMail.Checked
Else
Button7.Enabled = False
Button4.Enabled = False
Button3.Enabled = False
End If
End Sub
Private Sub Button6_Click_1(sender As Object, e As EventArgs) Handles Button6.Click
If MyDatagridview1.SelectedRows.Count > 0 Then
If IsNumeric(MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value) AndAlso IsNumeric(MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value) AndAlso IsNumeric(MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value) Then
Dim dtRE As DataTable = (New SQL).loadDgvBySql("select RK_ID, RechnungsNr, FilialenNr from Rechnungsausgang where RechnungsKundenNr = " & MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value & " AND cast(RechnungsDatum as Date) = '" & txtRechnungsdatum._value & "' AND Sammelrechnung = 6" & IIf(Firma > 0, " AND Firma_ID =" & Firma, ""), "FMZOLL")
If dtRE.Rows.Count > 0 Then
Dim RK_ID As String = ""
If dtRE.Rows.Count = 1 Then
RK_ID = dtRE.Rows(0).Item("RK_ID")
If RK_ID <> "" AndAlso IsNumeric(RK_ID) Then
Dim f As New SDL.frmAbrechnungsMaskeEinzeln(RK_ID)
f.Show(Me)
End If
Else
ContextMenuStrip1.Items.Clear()
For Each r As DataRow In dtRE.Rows
Dim re = New ToolStripMenuItem() With {.Text = r.Item("FilialenNr") & " - " & r.Item("RechnungsNr"), .Name = r.Item("RK_ID"), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
ContextMenuStrip1.Items.Add(re)
AddHandler re.Click, AddressOf mnuItem_Clicked
Next
ContextMenuStrip1.Show(Cursor.Position)
End If
End If
End If
End If
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
If MyDatagridview1.SelectedRows.Count > 0 Then
If IsNumeric(MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value) Then
cProgramFunctions.openKundenblatt(MyDatagridview1.SelectedRows(0).Cells("RechnungsKundenNr").Value, Me.FindForm, True)
End If
End If
End Sub
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
If MyDatagridview1.SelectedRows.Count > 0 Then
If Not vbYes = MsgBox("Möchten Sie für alle markieren Rechnungen den automatischen Emailversand JETZT versenden?" & vbNewLine & "Ansonten werden sie im Nachtlauf automatisch versendet!", vbYesNoCancel) Then Exit Sub
Dim fun As New cAutomailversand
For Each r In MyDatagridview1.SelectedRows
fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), 6, 19, r.Cells("RechnungsKundenNr").Value, cbxMailoeffnen.Checked)
Next
initDGV()
End If
End Sub
Private Sub mnuItem_Clicked(sender As Object, e As EventArgs)
ContextMenuStrip1.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
If item.Name <> "" AndAlso IsNumeric(item.Name) Then
Dim f As New SDL.frmAbrechnungsMaskeEinzeln(item.Name)
f.Show(Me)
End If
End If
End Sub
End Class