fakt, automail, etc.

This commit is contained in:
2026-07-23 16:59:40 +02:00
parent a5c43ba6e0
commit 99f1af3f63
5 changed files with 257 additions and 208 deletions

View File

@@ -4,7 +4,7 @@ Imports VERAG_PROG_ALLGEMEIN
Public Class cAutomailversand Public Class cAutomailversand
Sub sendMailSammelrechnung(_Rechnungsdatum As Date, SammelrechungArt As Integer, FirmaID As Integer, Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False, Optional faktGruppe As String = "", Optional datumBis As Date = Nothing, Optional clearBCC As Boolean = False) Sub sendMailSammelrechnung(_Rechnungsdatum As Date, SammelrechungArt As Integer, FirmaID As Integer, avisoIDs As List(Of Integer), Optional KundenNrList As List(Of Integer) = Nothing, Optional mailoeffnen As Boolean = False, Optional faktGruppe As String = "", Optional datumBis As Date = Nothing, Optional clearBCC As Boolean = False)
Try Try
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
@@ -27,7 +27,7 @@ Public Class cAutomailversand
LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz
WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "' WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "'
and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 " & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & " and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 " & IIf(KundenNrList IsNot Nothing, getWhereKundenNr(KundenNrList), "") & "
GROUP BY RechnungsNr, RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0),RechnungsLandKz, MitgliedslandEU GROUP BY RechnungsNr, RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0),RechnungsLandKz, MitgliedslandEU
ORDER BY RechnungsLandKz, RechnungsKundenNr" ORDER BY RechnungsLandKz, RechnungsKundenNr"
@@ -37,7 +37,7 @@ Public Class cAutomailversand
LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz
WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "' WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "'
and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 and FakturierungsGruppe = '" & faktGruppe & "'" & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & IIf(IsDate(datumBis), " AND CONVERT(DATE, Rechnungsausgang.Abfertigungsdatum, 104) <= '" & datumBis.ToShortDateString & "'", "") & " and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 and FakturierungsGruppe = '" & faktGruppe & "'" & IIf(KundenNrList IsNot Nothing, getWhereKundenNr(KundenNrList), "") & IIf(IsDate(datumBis), " AND CONVERT(DATE, Rechnungsausgang.Abfertigungsdatum, 104) <= '" & datumBis.ToShortDateString & "'", "") & "
GROUP BY RechnungsNr, RechnungsKundenNr,tblKundenErweitert.kde_SR_IM_EX GROUP BY RechnungsNr, RechnungsKundenNr,tblKundenErweitert.kde_SR_IM_EX
ORDER BY RechnungsLandKz, RechnungsKundenNr" ORDER BY RechnungsLandKz, RechnungsKundenNr"
@@ -51,6 +51,9 @@ Public Class cAutomailversand
For Each row As DataRow In dt.Rows For Each row As DataRow In dt.Rows
If dt.Rows.Count = 0 Then Exit Sub
Dim BelegartenNr = "70" Dim BelegartenNr = "70"
Dim steuerbetrag As Double = 0 Dim steuerbetrag As Double = 0
Dim SR_DT As DataTable = Nothing Dim SR_DT As DataTable = Nothing
@@ -58,7 +61,7 @@ Public Class cAutomailversand
Dim DruckDatumZeit As DateTime Dim DruckDatumZeit As DateTime
Dim Rechnungsdatum = Nothing Dim Rechnungsdatum = Nothing
Dim ATTACHMENTS As New List(Of cFakt_MailATTach) Dim ATTACHMENTS As New List(Of cFakt_MailATTach)
Dim AVISOID As New List(Of Integer)
If FirmaID = 19 AndAlso SammelrechungArt = 6 Then If FirmaID = 19 AndAlso SammelrechungArt = 6 Then
@@ -89,18 +92,8 @@ Public Class cAutomailversand
End If End If
Dim LoopForSR = 1
If IM_EX Then LoopForSR = 2
For i = 1 To LoopForSR SR_DT = cFakturierung.GET_SR_SQLDT(FirmaID, SammelrechungArt, _Rechnungsdatum, row.Item("RechnungsKundenNr"),, avisoIDs,,, True, True, CInt(row.Item("RechnungsNr")))
Dim AbfertigungsNr As String = ""
If IM_EX Then
AbfertigungsNr = getAbertigungsNr(i)
End If
SR_DT = cFakturierung.GET_SR_SQLDT(FirmaID, SammelrechungArt, _Rechnungsdatum, row.Item("RechnungsKundenNr"),,,, AbfertigungsNr, True)
If SR_DT.Rows.Count = 0 Then Continue For If SR_DT.Rows.Count = 0 Then Continue For
@@ -108,10 +101,7 @@ Public Class cAutomailversand
Dim KDE_ERW = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(row.Item("RechnungsKundenNr")) Dim KDE_ERW = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(row.Item("RechnungsKundenNr"))
Dim FISKAL = New cFiskal_Daten(row.Item("RechnungsKundenNr")) Dim FISKAL = New cFiskal_Daten(row.Item("RechnungsKundenNr"))
If i = 2 Then
ATTACHMENTS.Clear() 'leeren
RechnungsNr = -1 'nochmals zurücksetzen!
End If
If RechnungsNr = -1 Then If RechnungsNr = -1 Then
If SR_DT.Rows.Count > 0 Then If SR_DT.Rows.Count > 0 Then
@@ -121,12 +111,14 @@ Public Class cAutomailversand
RechnungsNr = distinctDT_SR.Rows(0).Item("RechnungsNr") RechnungsNr = distinctDT_SR.Rows(0).Item("RechnungsNr")
DruckDatumZeit = distinctDT_SR.Rows(0).Item("DruckDatumZeit") DruckDatumZeit = distinctDT_SR.Rows(0).Item("DruckDatumZeit")
Rechnungsdatum = distinctDT_SR.Rows(0).Item("Rechnungsdatum") Rechnungsdatum = distinctDT_SR.Rows(0).Item("Rechnungsdatum")
End If
BelegartenNr = SR_DT.Rows(0)("BelegartenNr") BelegartenNr = SR_DT.Rows(0)("BelegartenNr")
For Each r In SR_DT.Rows For Each r In SR_DT.Rows
steuerbetrag += r("steuerpflichtigerGesamtbetrag") steuerbetrag += r("steuerpflichtigerGesamtbetrag")
If BelegartenNr <> r("BelegartenNr") Then BelegartenNr = "70" : Exit For If BelegartenNr <> r("BelegartenNr") Then BelegartenNr = "70" : Exit For
Next Next
End If
End If End If
End If End If
@@ -165,7 +157,7 @@ Public Class cAutomailversand
showError = mailoeffnen 'bei MailÖffnen fehler anzeigen! showError = mailoeffnen 'bei MailÖffnen fehler anzeigen!
setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr) setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr)
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, datumBis, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr, faktGruppe) Then If do_SR(RechnungsNr, row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, datumBis, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, , faktGruppe) Then
loadAndSetAnhaenge_new(RechnungsNr, BelegartenNr, AD.LandKz, SR_DT, ATTACHMENTS, listPDFs,,, KDE_ERW.kde_merge_pdf) loadAndSetAnhaenge_new(RechnungsNr, BelegartenNr, AD.LandKz, SR_DT, ATTACHMENTS, listPDFs,,, KDE_ERW.kde_merge_pdf)
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST" If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
@@ -198,7 +190,6 @@ Public Class cAutomailversand
Next
Next Next
Catch ex As System.Exception Catch ex As System.Exception
@@ -207,6 +198,17 @@ Public Class cAutomailversand
End Try End Try
End Sub End Sub
Public Shared Function getWhereKundenNr(ids As List(Of Integer)) As String
If ids Is Nothing Then Return ""
If ids.Count = 0 Then Return ""
getWhereKundenNr = " AND RechnungsKundenNr IN ("
For Each i In ids
getWhereKundenNr &= "'" & i & "',"
Next
getWhereKundenNr = getWhereKundenNr.Substring(0, getWhereKundenNr.Length - 1) ' ","
getWhereKundenNr &= ") "
End Function
Sub sendMailEinzelrechnungen(FirmaID As Integer, Rechnungsdatum As Date, clearBCC As Boolean, Optional Sachbearbeiter As String = "", Optional RK_ID As List(Of Integer) = Nothing, Optional mailoeffnen As Boolean = True) Sub sendMailEinzelrechnungen(FirmaID As Integer, Rechnungsdatum As Date, clearBCC As Boolean, Optional Sachbearbeiter As String = "", Optional RK_ID As List(Of Integer) = Nothing, Optional mailoeffnen As Boolean = True)
@@ -489,7 +491,7 @@ Public Class cAutomailversand
End Sub End Sub
Private Function do_SR(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, DatumBis As Date, Rechnungsdatum As Date, lastAktuelle_RgNr As Integer, DruckDatumZeit As Date, Kopie As Boolean, listPDFs As List(Of String), Optional EinzelAnlagen As Boolean = False, Optional Sammelbericht As Boolean = True, Optional saveInThereFore As Boolean = False, Optional showError As Boolean = True, Optional AbfertigungsArt As String = "", Optional faktGruppe As String = "") Private Function do_SR(RechnungsNr As Integer, kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, DatumBis As Date, Rechnungsdatum As Date, lastAktuelle_RgNr As Integer, DruckDatumZeit As Date, Kopie As Boolean, listPDFs As List(Of String), Optional EinzelAnlagen As Boolean = False, Optional Sammelbericht As Boolean = True, Optional saveInThereFore As Boolean = False, Optional showError As Boolean = True, Optional AbfertigungsArt As String = "", Optional faktGruppe As String = "")
Dim RechnungsNrisSet As Boolean = False Dim RechnungsNrisSet As Boolean = False
@@ -497,7 +499,7 @@ Public Class cAutomailversand
DatumBis = Rechnungsdatum DatumBis = Rechnungsdatum
End If End If
RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, DatumBis, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit,,,,,, faktGruppe, AbfertigungsArt, True, Kopie, True, saveInThereFore, showError) RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, DatumBis, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit,,,,,, faktGruppe, AbfertigungsArt, True, Kopie, True, saveInThereFore, showError,, RechnungsNr)
Return RechnungsNrisSet Return RechnungsNrisSet
End Function End Function
@@ -511,6 +513,21 @@ Public Class cAutomailversand
Mail = outl.CreateItem(0) Mail = outl.CreateItem(0)
Mail.Subject = Mailsubject Mail.Subject = Mailsubject
Dim oAccount As Outlook.Account
Dim accountToSent = ""
accountToSent = setAccountToSend(FirmaID)
If accountToSent <> "" Then
If outl.Session.Accounts.Count > 0 Then
For Each oAccount In outl.Session.Accounts
If oAccount.SmtpAddress.ToLower = accountToSent.ToLower Then
Mail.SendUsingAccount = oAccount
Exit For
End If
Next
End If
End If
Dim TextHTML = "" Dim TextHTML = ""
@@ -529,12 +546,7 @@ Public Class cAutomailversand
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br><br>"
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br>"
TextHTML &= "<br>"
TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID, True, True) TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID, True, True)
Mail.HTMLBody = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>" Mail.HTMLBody = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>"
@@ -564,8 +576,7 @@ Public Class cAutomailversand
End Function End Function
Private Sub loadAndSetAnhaenge_new(Belegnr As String, BelegartenNr As Integer, sprache As String, SR_DT As DataTable, ATTACHMENTS As List(Of cFakt_MailATTach), listPDFs As List(Of String), Optional RECHNUNG As cRechnungsausgang = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing, Optional mergeAllPDFS As Boolean = False) Private Function getAnhangbezeichnung(sprache As String, RECHNUNG As cRechnungsausgang, BelegartenNr As Integer)
Dim Anhangsbez = "" Dim Anhangsbez = ""
If RECHNUNG IsNot Nothing Then If RECHNUNG IsNot Nothing Then
@@ -587,6 +598,15 @@ Public Class cAutomailversand
End If End If
Return Anhangsbez
End Function
Private Sub loadAndSetAnhaenge_new(Belegnr As String, BelegartenNr As Integer, sprache As String, SR_DT As DataTable, ATTACHMENTS As List(Of cFakt_MailATTach), listPDFs As List(Of String), Optional RECHNUNG As cRechnungsausgang = Nothing, Optional SPEDBUCH As cSpeditionsbuch = Nothing, Optional mergeAllPDFS As Boolean = False)
Dim Anhangsbez = getAnhangbezeichnung(sprache, RECHNUNG, BelegartenNr)
Dim zielPfad_PDFZusammenfassung = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(Belegnr & "_" & Anhangsbez, ".pdf",, False, "Zusammenfassung") Dim zielPfad_PDFZusammenfassung = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(Belegnr & "_" & Anhangsbez, ".pdf",, False, "Zusammenfassung")
@@ -623,9 +643,9 @@ Public Class cAutomailversand
' Beleg + Anhänge zusammenführen ' Beleg + Anhänge zusammenführen
If mergeAllPDFS AndAlso ATTACHMENTS.Count > 1 Then If mergeAllPDFS AndAlso ATTACHMENTS.Count > 1 Then
Dim prefix = If(RECHNUNG.BelegartenKz = "AR", "Rechnungs", "Gutschrifts") Dim prefix = getAnhangbezeichnung(sprache, RECHNUNG, BelegartenNr)
Dim zielPfad = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(prefix & "anhang.pdf", ".pdf",, False, "Zusammenfassung") Dim zielPfad = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(prefix, ".pdf",, False, "Zusammenfassung")
Dim pdfs As New List(Of String) Dim pdfs As New List(Of String)
pdfs = ATTACHMENTS.Select(Function(a) a.Pfad.ToString).ToList() pdfs = ATTACHMENTS.Select(Function(a) a.Pfad.ToString).ToList()

View File

@@ -4213,17 +4213,19 @@ Public Class cFakturierung
' 3-_> Sammel-Rg gedruckt ' 3-_> Sammel-Rg gedruckt
' 4-_> ? irgendwas mit SR 6 Maut/Diesel?? ' 4-_> ? irgendwas mit SR 6 Maut/Diesel??
Public Shared Function GET_SR_SQLDT(Firma_ID As Integer, SammelrechungArt As Integer, DatumBis As Date, Optional whereKdNr As String = "", Optional SB As String = "", Optional AvisoIds As List(Of Integer) = Nothing, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional AUTOMailversand As String = "") As DataTable Public Shared Function GET_SR_SQLDT(Firma_ID As Integer, SammelrechungArt As Integer, DatumBis As Date, Optional whereKdNr As String = "", Optional SB As String = "", Optional AvisoIds As List(Of Integer) = Nothing, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional AUTOMailversand As String = "", Optional RechnungsNrAlreadySet As Boolean = False, Optional RechnungNr As Integer = -1) As DataTable
If whereKdNr <> "" Then whereKdNr = " AND RechnungsKundenNr IN(" & whereKdNr & ") " If whereKdNr <> "" Then whereKdNr = " AND RechnungsKundenNr IN(" & whereKdNr & ") "
Dim whereAbfArt = "" Dim whereAbfArt = ""
If Abfertigungsart <> "" Then whereAbfArt = " AND (SELECT TOP 1 Abfertigungsart FROM Speditionsbuch WHERE Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr) IN (" & Abfertigungsart & ") " If Abfertigungsart <> "" Then whereAbfArt = " AND (SELECT TOP 1 Abfertigungsart FROM Speditionsbuch WHERE Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr) IN (" & Abfertigungsart & ") "
Dim whereAutoMailversand = "" Dim whereAutoMailversand = ""
If AUTOMailversand <> "" Then whereAutoMailversand = " AND isnull(Rechnungsausgang.Automailversand,0) = 1 " If AUTOMailversand <> "" Then whereAutoMailversand = " AND isnull(Rechnungsausgang.Automailversand,0) = 1 "
Dim whereRechnungsNr = ""
If RechnungNr > 0 AndAlso RechnungsNrAlreadySet Then whereRechnungsNr = " AND isnull(Rechnungsausgang.RechnungsNr,0) =" & RechnungNr
Dim sqlStr = " SELECT Rechnungsausgang.RK_ID, Rechnungsausgang.Firma_ID, Rechnungsausgang.FilialenNr, Rechnungsausgang.RechnungsKundenNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.[Steuersatz %], Rechnungsausgang.Lastschrift, Rechnungsausgang.Währungscode, Rechnungsausgang.AvisoID, Rechnungsausgang.RechnungsNr, Rechnungsausgang.RechnungsDatum, Rechnungsausgang.DruckDatumZeit, Rechnungsausgang.Status, Rechnungsausgang.Sammelrechnung, Rechnungsausgang.Abfertigungsdatum, Rechnungsausgang.Buchungsjahr,Rechnungsausgang.AbfertigungsNr,Rechnungsausgang.SpeditionsbuchUnterNr,[SteuerpflichtigerGesamtbetrag],[SteuerfreierGesamtbetrag],Rechnungsausgang.Rechnungsart Dim sqlStr = " SELECT Rechnungsausgang.RK_ID, Rechnungsausgang.Firma_ID, Rechnungsausgang.FilialenNr, Rechnungsausgang.RechnungsKundenNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.[Steuersatz %], Rechnungsausgang.Lastschrift, Rechnungsausgang.Währungscode, Rechnungsausgang.AvisoID, Rechnungsausgang.RechnungsNr, Rechnungsausgang.RechnungsDatum, Rechnungsausgang.DruckDatumZeit, Rechnungsausgang.Status, Rechnungsausgang.Sammelrechnung, Rechnungsausgang.Abfertigungsdatum, Rechnungsausgang.Buchungsjahr,Rechnungsausgang.AbfertigungsNr,Rechnungsausgang.SpeditionsbuchUnterNr,[SteuerpflichtigerGesamtbetrag],[SteuerfreierGesamtbetrag],Rechnungsausgang.Rechnungsart
From Rechnungsausgang From Rechnungsausgang
WHERE Rechnungsausgang.Status IN(0, 2) And Rechnungsausgang.Firma_ID = " & Firma_ID & " And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And Rechnungsausgang.FakturierungsGruppe = '" & FakturierungsGruppe & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) <= '" & DatumBis.ToShortDateString & "' " & whereKdNr & whereAbfArt & " WHERE Rechnungsausgang.Status IN(0, 2) And Rechnungsausgang.Firma_ID = " & Firma_ID & " And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And Rechnungsausgang.FakturierungsGruppe = '" & FakturierungsGruppe & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) <= '" & DatumBis.ToShortDateString & "' " & whereKdNr & whereAbfArt & "
" & If(SammelrechungArt = 7 And SB <> "", " AND Sachbearbeiter='" & SB & "' ", "") & "" & getWhereAvisoId(AvisoIds) & whereAutoMailversand " & If(SammelrechungArt = 7 And SB <> "", " AND Sachbearbeiter='" & SB & "' ", "") & getWhereAvisoId(AvisoIds) & whereAutoMailversand & whereRechnungsNr
'Rechnungsausgang.Status IN(0, 2) --> vorher nur 2, da Anlagen vor der SR gedruckt wurden... 'Rechnungsausgang.Status IN(0, 2) --> vorher nur 2, da Anlagen vor der SR gedruckt wurden...
If SammelrechungArt = 7 Then If SammelrechungArt = 7 Then
sqlStr &= " ORDER BY Rechnungsausgang.AvisoID,Rechnungsausgang.Firma_ID,Rechnungsausgang.RechnungsKundenNr,Rechnungsausgang.FilialenNr, Rechnungsausgang.AbfertigungsNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.[Steuersatz %], Rechnungsausgang.Lastschrift, Rechnungsausgang.Währungscode, CASE Rechnungsausgang.Rechnungsart WHEN 'RK' THEN 1 WHEN 'RU' THEN 2 WHEN 'RG' THEN 3 ELSE 4 END " sqlStr &= " ORDER BY Rechnungsausgang.AvisoID,Rechnungsausgang.Firma_ID,Rechnungsausgang.RechnungsKundenNr,Rechnungsausgang.FilialenNr, Rechnungsausgang.AbfertigungsNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.[Steuersatz %], Rechnungsausgang.Lastschrift, Rechnungsausgang.Währungscode, CASE Rechnungsausgang.Rechnungsart WHEN 'RK' THEN 1 WHEN 'RU' THEN 2 WHEN 'RG' THEN 3 ELSE 4 END "
@@ -4289,7 +4291,7 @@ Public Class cFakturierung
End Function End Function
Public Shared Function doSAMMELRechnungsDruck(Firma_ID As Integer, SammelrechungArt As Integer, DatumBis As Date, Rechnungsdatum As Date, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional whereKdNr As String = "", Optional RechnungsdruckArt As Integer = -1, Optional ByRef listPDFs As List(Of String) = Nothing, Optional SB As String = "", ByRef Optional lastAktuelle_RgNr As Integer = -1, ByRef Optional DruckdatumUhrzeit As DateTime = Nothing, Optional AvisoIds As List(Of Integer) = Nothing, Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional vorschau As Boolean = False, Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional RENralreadySet As Boolean = False, Optional MDMREkopie As Boolean = False, Optional setAutoMailversand As Boolean = False, Optional saveInThereFore As Boolean = True, Optional showError As Boolean = True, Optional onlySetRENRforAUTOMAIL As Boolean = False) As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean Public Shared Function doSAMMELRechnungsDruck(Firma_ID As Integer, SammelrechungArt As Integer, DatumBis As Date, Rechnungsdatum As Date, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional whereKdNr As String = "", Optional RechnungsdruckArt As Integer = -1, Optional ByRef listPDFs As List(Of String) = Nothing, Optional SB As String = "", ByRef Optional lastAktuelle_RgNr As Integer = -1, ByRef Optional DruckdatumUhrzeit As DateTime = Nothing, Optional AvisoIds As List(Of Integer) = Nothing, Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional vorschau As Boolean = False, Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional RENralreadySet As Boolean = False, Optional MDMREkopie As Boolean = False, Optional setAutoMailversand As Boolean = False, Optional saveInThereFore As Boolean = True, Optional showError As Boolean = True, Optional onlySetRENRforAUTOMAIL As Boolean = False, Optional RechnungsNr As Integer = -1) As Boolean
Try Try
Dim VorschauID = "" Dim VorschauID = ""
@@ -4299,25 +4301,28 @@ Public Class cFakturierung
If SammelrechungArt = 7 And (AvisoIds IsNot Nothing AndAlso AvisoIds.Count = 0) Then Return False 'Prüfung, ob Daten vorhanden; Abbruch ZB wenn keine AvisoId If SammelrechungArt = 7 And (AvisoIds IsNot Nothing AndAlso AvisoIds.Count = 0) Then Return False 'Prüfung, ob Daten vorhanden; Abbruch ZB wenn keine AvisoId
Dim dt = GET_SR_SQLDT(Firma_ID, SammelrechungArt, DatumBis, whereKdNr, SB, AvisoIds, FakturierungsGruppe, Abfertigungsart) 'SQL.loadDgvBySql(sqlStr, "FMZOLL") Dim dt = GET_SR_SQLDT(Firma_ID, SammelrechungArt, DatumBis, whereKdNr, SB, AvisoIds, FakturierungsGruppe, Abfertigungsart,, RENralreadySet, RechnungsNr)
If dt Is Nothing Then MsgBox("ERR01: Keine Daten") : Return True
If dt.Rows.Count = 0 Then MsgBox("ERR02: Keine Daten") : Return True If dt.Rows.Count = 0 Then MsgBox("ERR02: Keine Daten") : Return True
If Not CHECK_SR_SQLDT(dt) Then MsgBox("ERR03: Es wurden Rechnungen mit einem 0-Betrag gefunden. Bitte prüfen Sie die Eingaben und starten Sie die Sammelabrechnung erneut.") : Return True If Not CHECK_SR_SQLDT(dt) Then MsgBox("ERR03: Es wurden Rechnungen mit einem 0-Betrag gefunden. Bitte prüfen Sie die Eingaben und starten Sie die Sammelabrechnung erneut.") : Return True
If Not CHECK_SR_GESSUM_SQLDT(dt) Then MsgBox("ERR04: Summe der Rechnungen in Sammelrechnung ist '0'. Bitte prüfen Sie die Eingaben und starten Sie die Sammelabrechnung erneut.") : Return True If Not CHECK_SR_GESSUM_SQLDT(dt) Then MsgBox("ERR04: Summe der Rechnungen in Sammelrechnung ist '0'. Bitte prüfen Sie die Eingaben und starten Sie die Sammelabrechnung erneut.") : Return True
'Rechnungsart prüfen, ob Sammelrechnung oder unvollständige SRG / 'Rechnungsart prüfen, ob Sammelrechnung oder unvollständige SRG /
If Not CHECK_SR_RU_RK_SQLDT(dt) Then MsgBox("ERR05: Bei Kopf-Sammelrechnung müssen Kopfdaten und unvollständige Rg-Einträge vorhanden sein. Bitte prüfen Sie die Eingaben und starten Sie die Sammelabrechnung erneut.") : Return True If Not CHECK_SR_RU_RK_SQLDT(dt) Then MsgBox("ERR05: Bei Kopf-Sammelrechnung müssen Kopfdaten und unvollständige Rg-Einträge vorhanden sein. Bitte prüfen Sie die Eingaben und starten Sie die Sammelabrechnung erneut.") : Return True
Dim Buchungsjahr = cRKSV.getGJ(Rechnungsdatum, Firma_ID) 'IIf(Rechnungsdatum.Month = 1, Rechnungsdatum.Year - 1, Rechnungsdatum.Year) Dim Buchungsjahr = cRKSV.getGJ(Rechnungsdatum, Firma_ID)
Dim Aktuelle_RgNr As Integer = -1 Dim Aktuelle_RgNr As Integer = -1
Dim RgNrSetFirstTime As Boolean = False
If Not vorschau Then If Not vorschau Then
If Not RENralreadySet Then If RechnungsNr > 0 AndAlso RENralreadySet Then
Aktuelle_RgNr = RechnungsNr
Else
Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) 'Nimmt die aktuelle RgNr und zählt eine Pos. hoch. nur wenn keine Vorschau oder keine Re.Nr vergeben!!! Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) 'Nimmt die aktuelle RgNr und zählt eine Pos. hoch. nur wenn keine Vorschau oder keine Re.Nr vergeben!!!
RgNrSetFirstTime = True
End If End If
End If End If
DruckdatumUhrzeit = Now.ToString("dd.MM.yyyy HH:mm:ss.fff") DruckdatumUhrzeit = Now.ToString("dd.MM.yyyy HH:mm:ss.fff")
If listPDFs Is Nothing Then listPDFs = New List(Of String) If listPDFs Is Nothing Then listPDFs = New List(Of String)
@@ -4335,13 +4340,13 @@ Public Class cFakturierung
If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr 'erstes Mal If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr 'erstes Mal
If AvisoIdTmp < 0 Then AvisoIdTmp = RG.AvisoID 'erstes Mal If AvisoIdTmp < 0 Then AvisoIdTmp = RG.AvisoID 'erstes Mal
If FIRMATmp < 0 Then FIRMATmp = RG.Firma_ID 'erstes Mal If FIRMATmp < 0 Then FIRMATmp = RG.Firma_ID 'erstes Mal
If kdTmp <> RG.RechnungsKundenNr Or AvisoIdTmp <> RG.AvisoID Or FIRMATmp <> RG.Firma_ID Then 'Or FilialeTmp <> RG.FilialenNr If kdTmp <> RG.RechnungsKundenNr Or AvisoIdTmp <> RG.AvisoID Or FIRMATmp <> RG.Firma_ID Then
Dim path = "" Dim path = ""
If Not onlySetRENRforAUTOMAIL Then doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,,,,,, saveInThereFore) 'hier wird auch die RG Nr erhöht! If Not onlySetRENRforAUTOMAIL Then doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,,,,,, saveInThereFore) 'hier wird auch die RG Nr erhöht!
If Not RENralreadySet AndAlso Aktuelle_RgNr > 0 AndAlso setAutoMailversand Then 'nächste SR bei AUTOMAIL -> ReNr erhöhen! If Not RENralreadySet AndAlso Aktuelle_RgNr > 0 AndAlso setAutoMailversand AndAlso Not RgNrSetFirstTime Then 'nächste SR bei AUTOMAIL -> ReNr erhöhen, weil pro AVISO-ID neu NR.
Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr)
End If End If
@@ -4354,7 +4359,7 @@ Public Class cFakturierung
Case 6 'MDM Abrechnung Case 6 'MDM Abrechnung
If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr 'erstes Mal If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr 'erstes Mal
If FIRMATmp < 0 Then FIRMATmp = RG.Firma_ID 'erstes Mal If FIRMATmp < 0 Then FIRMATmp = RG.Firma_ID 'erstes Mal
If kdTmp <> RG.RechnungsKundenNr Or FIRMATmp <> RG.Firma_ID Then 'Or FilialeTmp <> RG.FilialenNr If kdTmp <> RG.RechnungsKundenNr Or FIRMATmp <> RG.Firma_ID Then
' KEIN doSAMMELRechnungsDruck_Abschnitt!!!! ' KEIN doSAMMELRechnungsDruck_Abschnitt!!!!
If (Not RENralreadySet AndAlso Aktuelle_RgNr < 0) Then Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) If (Not RENralreadySet AndAlso Aktuelle_RgNr < 0) Then Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr)
@@ -4363,14 +4368,14 @@ Public Class cFakturierung
Case Else Case Else
If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr 'erstes Mal If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr 'erstes Mal
If FIRMATmp < 0 Then FIRMATmp = RG.Firma_ID 'erstes Mal If FIRMATmp < 0 Then FIRMATmp = RG.Firma_ID 'erstes Mal
If kdTmp <> RG.RechnungsKundenNr Or FIRMATmp <> RG.Firma_ID Then 'Or FilialeTmp <> RG.FilialenNr If kdTmp <> RG.RechnungsKundenNr Or FIRMATmp <> RG.Firma_ID Then
Dim path = "" Dim path = ""
If Not onlySetRENRforAUTOMAIL Then doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,,,,,, saveInThereFore) If Not onlySetRENRforAUTOMAIL Then doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,,,,,, saveInThereFore)
If Not RENralreadySet AndAlso Aktuelle_RgNr > 0 AndAlso setAutoMailversand Then 'nächste SR bei AUTOMAIL -> ReNr erhöhen! 'If Not RENralreadySet AndAlso Aktuelle_RgNr > 0 AndAlso setAutoMailversand Then 'nächste SR bei AUTOMAIL -> ReNr erhöhen!
Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) ' Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr)
End If 'End If
If path <> "" Then listPDFs.Add(path) If path <> "" Then listPDFs.Add(path)
@@ -4383,7 +4388,10 @@ Public Class cFakturierung
FIRMATmp = RG.Firma_ID FIRMATmp = RG.Firma_ID
RG.Automailversand = setAutoMailversand RG.Automailversand = setAutoMailversand
If Aktuelle_RgNr > 0 Then RG.[RechnungsNr] = Aktuelle_RgNr If Aktuelle_RgNr > 0 Then
RG.[RechnungsNr] = Aktuelle_RgNr
RgNrSetFirstTime = False
End If
If vorschau Then If vorschau Then
@@ -4413,21 +4421,6 @@ Public Class cFakturierung
If RG.RechnungsNr >= 0 Then Aktuelle_RgNr = RG.RechnungsNr If RG.RechnungsNr >= 0 Then Aktuelle_RgNr = RG.RechnungsNr
End Select End Select
'If SammelrechungArt = 6 OrElse (onlySetRENRforAUTOMAIL AndAlso SammelrechungArt <> 6) Then
' If RechnungsdruckArt = 7 Then 'RechnungsdruckArt = 7 ist die Erstellung per MDM-Sammelabrechnung bzw. der Sammelrechnung für Mailversand!!
' RG.[Status] = 2 'Bei MDM Abrechnung; Druck später!!
' Else
' RG.[Status] = 4 ' Beim finalen Versenden der Sammelrechnung keine neue ReNr vergeben.
' If RG.RechnungsNr >= 0 Then Aktuelle_RgNr = RG.RechnungsNr
' End If
'Else
' RG.[Status] = 3
'End If
RG.[RechnungsDatum] = Rechnungsdatum.ToShortDateString RG.[RechnungsDatum] = Rechnungsdatum.ToShortDateString
RG.[Buchungsjahr] = Buchungsjahr RG.[Buchungsjahr] = Buchungsjahr
RG.[DruckDatumZeit] = DruckdatumUhrzeit.ToString("dd.MM.yyyy HH:mm:ss.fff") RG.[DruckDatumZeit] = DruckdatumUhrzeit.ToString("dd.MM.yyyy HH:mm:ss.fff")
@@ -4788,11 +4781,7 @@ Public Class cFakturierung
Shared Function doSAMMELRechnungDruck_Rechnungsdruck_Sammelrechnungsbericht_ExcelTransFerry360(RechnungsNr As Integer, DruckdatumUhrzeit As Date, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional PrinterName As String = "", Optional VorschauID As String = "") As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean Shared Function doSAMMELRechnungDruck_Rechnungsdruck_Sammelrechnungsbericht_ExcelTransFerry360(RechnungsNr As Integer, DruckdatumUhrzeit As Date, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional PrinterName As String = "", Optional VorschauID As String = "") As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean
Try Try
'Dim sqlStr = " SELECT [RechnungsName 1],[AbsenderName 1],[EmpfängerName 1],Abfertigungsarten.Abfertigungsart,RechnungsNr,RechnungsDatum,RechnungsKundenNr,Rechnungsausgang.Abfertigungsdatum,Rechnungsausgang.KdAuftragsNr,Rechnungsausgang.AbfertigungsNr,Rechnungsausgang.FilialenNr,Rechnungsausgang.SpeditionsbuchUnterNr,Rechnungsausgang.[LKW Kennzeichen] as Kennzeichen,Abfertigungsarten.Abfertigungsbezeichnung, (SELECT SUM([SteuerpflichtigerBetrag]+[SteuerfreierBetrag]) FROM RechnungsausgangPositionen where RechnungsausgangPositionen.RK_ID=Rechnungsausgang.RK_ID) as Betrag
' ,isnull((SELECT cast(Sum(Anzahl)as varchar(5)) FROM RechnungsausgangPositionen AS POS2 where POS2.RK_ID=Rechnungsausgang.RK_ID and POS2.[BerechnungsartNr]=10),'') As POSAnz
' FROM Rechnungsausgang INNER JOIN Speditionsbuch on Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr
' INNER JOIN Abfertigungsarten ON Abfertigungsarten .Abfertigungsart=Speditionsbuch.Abfertigungsart
' WHERE 1=1 "
Dim sqlStr = " SELECT [RechnungsName 1],[AbsenderName 1],[EmpfängerName 1],Abfertigungsarten.Abfertigungsart,RechnungsNr,RechnungsDatum,RechnungsKundenNr,Rechnungsausgang.Abfertigungsdatum,Rechnungsausgang.KdAuftragsNr, Dim sqlStr = " SELECT [RechnungsName 1],[AbsenderName 1],[EmpfängerName 1],Abfertigungsarten.Abfertigungsart,RechnungsNr,RechnungsDatum,RechnungsKundenNr,Rechnungsausgang.Abfertigungsdatum,Rechnungsausgang.KdAuftragsNr,
Rechnungsausgang.AbfertigungsNr,Rechnungsausgang.FilialenNr,Rechnungsausgang.SpeditionsbuchUnterNr,Rechnungsausgang.[LKW Kennzeichen] as Kennzeichen,POS.LeistungsBez,([SteuerpflichtigerBetrag]+[SteuerfreierBetrag]) Betrag Rechnungsausgang.AbfertigungsNr,Rechnungsausgang.FilialenNr,Rechnungsausgang.SpeditionsbuchUnterNr,Rechnungsausgang.[LKW Kennzeichen] as Kennzeichen,POS.LeistungsBez,([SteuerpflichtigerBetrag]+[SteuerfreierBetrag]) Betrag
,CASE WHEN [BerechnungsartNr]=10 THEN '' ELSE pos.Anzahl END as [Count],CASE WHEN [BerechnungsartNr]=10 THEN pos.Anzahl ELSE '' END as POSCnt ,CASE WHEN [BerechnungsartNr]=10 THEN '' ELSE pos.Anzahl END as [Count],CASE WHEN [BerechnungsartNr]=10 THEN pos.Anzahl ELSE '' END as POSCnt
@@ -4805,7 +4794,7 @@ Public Class cFakturierung
Else Else
sqlStr &= " AND RechnungsNr is null AND VorschauID='" & VorschauID & "' " sqlStr &= " AND RechnungsNr is null AND VorschauID='" & VorschauID & "' "
End If End If
'sqlStr &= " ORDER BY Rechnungsausgang.FilialenNr, Rechnungsausgang.AbfertigungsNr"
sqlStr &= " order by Rechnungsausgang.AvisoID desc, FilialenNr,AbfertigungsNr,POS.[BerechnungsartNr]" sqlStr &= " order by Rechnungsausgang.AvisoID desc, FilialenNr,AbfertigungsNr,POS.[BerechnungsartNr]"

View File

@@ -149,7 +149,7 @@ Public Class frmFaktSammelRgDrucken
sqlStr = " sqlStr = "
SELECT SELECT
max(Rechnungsausgang.RechnungsNr) as RENR, Rechnungsausgang.RechnungsNr as RENR,
Rechnungsausgang.RechnungsKundenNr, Rechnungsausgang.RechnungsKundenNr,
MAX(Rechnungsausgang.[RechnungsName 1]) AS Firma, MAX(Rechnungsausgang.[RechnungsName 1]) AS Firma,
" & If(Sammelrechung = 7, "AvisoId", "0") & " AS AvisoId, " & If(Sammelrechung = 7, "AvisoId", "0") & " AS AvisoId,
@@ -175,7 +175,7 @@ Public Class frmFaktSammelRgDrucken
" & whereAbfArt & whereAutoMail & SQLAUTOMAIL_RECHNUNGSDATuM & " " & whereAbfArt & whereAutoMail & SQLAUTOMAIL_RECHNUNGSDATuM & "
AND Rechnungsausgang.FakturierungsGruppe='" & cboFaktGrp._value & "' AND Rechnungsausgang.FakturierungsGruppe='" & cboFaktGrp._value & "'
GROUP BY GROUP BY
RechnungsKundenNr,tblKundenErweitert.kde_SR_IM_EX " & If(Sammelrechung = 7, ", AvisoId", "") & " RechnungsNr,RechnungsKundenNr,tblKundenErweitert.kde_SR_IM_EX " & If(Sammelrechung = 7, ", AvisoId", "") & "
ORDER BY ORDER BY
Rechnungsausgang.RechnungsKundenNr" Rechnungsausgang.RechnungsKundenNr"
@@ -202,6 +202,10 @@ Public Class frmFaktSammelRgDrucken
.Columns("LKW").Width = 80 .Columns("LKW").Width = 80
End If End If
If .Columns("RENR").Visible = Visible Then
.Columns("RENR").Width = 60
End If
If .Columns.Contains("IM_EX") And .Columns.Count >= 8 Then If .Columns.Contains("IM_EX") And .Columns.Count >= 8 Then
.Columns("IM_EX").Width = 45 .Columns("IM_EX").Width = 45
End If End If
@@ -476,6 +480,20 @@ Public Class frmFaktSammelRgDrucken
Return AvisoIds Return AvisoIds
End Function End Function
Function getKundenNr() As List(Of Integer)
Dim KundenNr As New List(Of Integer)
If MyDatagridview1.SelectedRows.Count > 0 Then
For Each r In MyDatagridview1.SelectedRows
If r.cells("RechnungsKundenNr").value Is DBNull.Value Then
Return (New List(Of Integer))
End If
KundenNr.Add(r.cells("RechnungsKundenNr").value)
Next
End If
Return KundenNr
End Function
Sub doSammelrechnung(ausgabeArt As Integer, Optional vorschau As Boolean = False) Sub doSammelrechnung(ausgabeArt As Integer, Optional vorschau As Boolean = False)
Try Try
If cboFirma._value = "" Then MsgBox("Bitte Firma angeben!") : Exit Sub If cboFirma._value = "" Then MsgBox("Bitte Firma angeben!") : Exit Sub
@@ -659,7 +677,8 @@ Public Class frmFaktSammelRgDrucken
Dim abfertigungsarten = getValues() Dim abfertigungsarten = getValues()
For Each r In MyDatagridview1.SelectedRows.Cast(Of DataGridViewRow)().Where(Function(x) x.Cells("RENR").Value Is Nothing OrElse IsDBNull(x.Cells("RENR").Value)) For Each r In MyDatagridview1.SelectedRows.Cast(Of DataGridViewRow)().Where(Function(x) x.Cells("RENR").Value Is Nothing OrElse IsDBNull(x.Cells("RENR").Value))
Me.Enabled = False
Me.Cursor = Cursors.WaitCursor
If IsDate(txtRechnungsdatum.Text) AndAlso IsDate(txtZeitraumBis.Text) AndAlso Not IsDBNull(r.Cells("RechnungsLandKz").Value) AndAlso Not IsDBNull(r.Cells("RechnungsKundenNr").Value) AndAlso IsNumeric(r.Cells("RechnungsKundenNr").Value) Then If IsDate(txtRechnungsdatum.Text) AndAlso IsDate(txtZeitraumBis.Text) AndAlso Not IsDBNull(r.Cells("RechnungsLandKz").Value) AndAlso Not IsDBNull(r.Cells("RechnungsKundenNr").Value) AndAlso IsNumeric(r.Cells("RechnungsKundenNr").Value) Then
Dim RENRExisting As Boolean = False Dim RENRExisting As Boolean = False
@@ -667,32 +686,35 @@ Public Class frmFaktSammelRgDrucken
If Not RENRExisting Then If Not RENRExisting Then
Dim IM_EX As Boolean = False Dim IM_EX As Boolean = False
IM_EX = r.Cells("IM_EX").Value IsNot Nothing AndAlso Not IsDBNull(r.Cells("IM_EX").Value) AndAlso Not IsDBNull(r.Cells("RENR").Value) AndAlso r.Cells("RENR").Value <> "" If r.Cells("IM_EX").Value IsNot Nothing AndAlso Not IsDBNull(r.Cells("IM_EX").Value) Then
IM_EX = r.Cells("IM_EX").Value
End If 'AndAlso Not IsDBNull(r.Cells("RENR").Value) AndAlso r.Cells("RENR").Value <> ""
If abfertigungsarten = "" AndAlso IM_EX Then If abfertigungsarten = "" AndAlso IM_EX Then
MsgBox("Achtung, RechnungNr für Kunde " & r.Cells("RechnungsKundenNr").Value & " konnte nicht gesetzt, weil keine Abfertigungsart ausgewählt wurde!") MsgBox("Achtung, RechnungNr für Kunde " & r.Cells("RechnungsKundenNr").Value & " konnte nicht gesetzt, weil keine Abfertigungsart ausgewählt wurde!")
Continue For
Else
If Sammelrechung <> 7 Then
createsSammelRechungsNr(r.Cells("RechnungsKundenNr").Value, abfertigungsarten)
End If
End If End If
Me.Enabled = True Me.Enabled = True
Me.Cursor = Cursors.Default
End If End If
End If End If
Next Next
If Sammelrechung = 7 Then
Me.Enabled = False Me.Enabled = False
Me.Cursor = Cursors.WaitCursor Me.Cursor = Cursors.WaitCursor
createsSammelRechungsNr(getSelectionKdNr, abfertigungsarten)
Dim SonstAnlagen As New List(Of String)
Dim listPDFs 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, 7, listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, , cbxTransFerry.Checked, cboFaktGrp._value, abfertigungsarten,,, True,,, True)
If Not RechnungsNrisSet Then
MsgBox("Fehler bei RechnungsNr-Erzeugung!")
End If
Me.Enabled = True Me.Enabled = True
Me.Cursor = Cursors.Default Me.Cursor = Cursors.Default
End If
End If End If
@@ -714,6 +736,15 @@ Public Class frmFaktSammelRgDrucken
End Sub End Sub
Private Function createsSammelRechungsNr(KundenNr As String, abfertigungsarten As String) As Boolean
Dim SonstAnlagen As New List(Of String)
Dim listPDFs 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, KundenNr, 7, listPDFs, cboSB._value,,, getAvisoIds, cbxEVOLOG.Checked, SonstAnlagen, , cbxTransFerry.Checked, cboFaktGrp._value, abfertigungsarten,,, True,,, True)
Return RechnungsNrisSet
End Function
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
If MyDatagridview1.SelectedRows.Count > 0 Then If MyDatagridview1.SelectedRows.Count > 0 Then
@@ -977,19 +1008,26 @@ Public Class frmFaktSammelRgDrucken
If MyDatagridview1.SelectedRows.Count > 0 Then If MyDatagridview1.SelectedRows.Count > 0 Then
' If Not IsNumeric(getSelectionKdNr_Simple) Then MsgBox("Es muss eine eindeutige KundenNr ausgewählt werden!") : Exit Sub
If Not cAutomailversand.automRechnungsversand_durchführen Then Exit Sub If Not cAutomailversand.automRechnungsversand_durchführen Then Exit Sub
For Each r In MyDatagridview1.SelectedRows For Each r In MyDatagridview1.SelectedRows
Dim fun As New cAutomailversand
fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), Sammelrechung, Firma, r.Cells("RechnungsKundenNr").Value, cbxMailoeffnen.Checked,, CDate(txtZeitraumBis.Text), cbxMailoeffnen.Checked)
Next Next
Dim fun As New cAutomailversand
fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), Sammelrechung, Firma, getAvisoIds(), getKundenNr(), cbxMailoeffnen.Checked,, CDate(txtZeitraumBis.Text), cbxMailoeffnen.Checked)
initDGV() initDGV()
End If End If
End Sub End Sub
Private Sub btnNurAbf_Click(sender As Object, e As EventArgs) Handles btnNurImport.Click, btnNurExport.Click Private Sub btnNurAbf_Click(sender As Object, e As EventArgs) Handles btnNurImport.Click, btnNurExport.Click
Dim where As String = "" Dim where As String = ""

View File

@@ -112,7 +112,7 @@ Public Class frmLogin
Dim func As New cAutomailversand Dim func As New cAutomailversand
func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID) func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID, Nothing)
Application.Exit() Application.Exit()
End 'immediately terminates further execution End 'immediately terminates further execution

View File

@@ -990,8 +990,10 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object(
Catch ex As Exception Catch ex As Exception
Try Try
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("MAIL ERROR - VOR SENDEN" & ex.Message, "FROM: " & eMailfrom & vbNewLine & "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL,,,,, furtherMailAdress) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("MAIL ERROR - VOR SENDEN" & ex.Message, "FROM: " & eMailfrom & vbNewLine & "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL,,,,, furtherMailAdress)
Return False
Catch ex2 As Exception Catch ex2 As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("MAIL ERROR - VOR SENDEN LOG! " & ex2.Message, "FROM: " & eMailfrom & vbNewLine & "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex2.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.LOG) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("MAIL ERROR - VOR SENDEN LOG! " & ex2.Message, "FROM: " & eMailfrom & vbNewLine & "TO: " & eMailTo & vbNewLine & "SUBJ: " & betreff & vbNewLine & "TXT: " & text, ex2.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.LOG)
Return False
End Try End Try
End Try End Try