diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index 78f72300..e14cad41 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -4,7 +4,7 @@ Imports VERAG_PROG_ALLGEMEIN 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 Dim sql As New VERAG_PROG_ALLGEMEIN.SQL @@ -27,7 +27,7 @@ Public Class cAutomailversand LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr 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 & "' - 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 ORDER BY RechnungsLandKz, RechnungsKundenNr" @@ -37,7 +37,7 @@ Public Class cAutomailversand LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr 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 & "' - 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 ORDER BY RechnungsLandKz, RechnungsKundenNr" @@ -51,6 +51,9 @@ Public Class cAutomailversand For Each row As DataRow In dt.Rows + + If dt.Rows.Count = 0 Then Exit Sub + Dim BelegartenNr = "70" Dim steuerbetrag As Double = 0 Dim SR_DT As DataTable = Nothing @@ -58,7 +61,7 @@ Public Class cAutomailversand Dim DruckDatumZeit As DateTime Dim Rechnungsdatum = Nothing Dim ATTACHMENTS As New List(Of cFakt_MailATTach) - + Dim AVISOID As New List(Of Integer) If FirmaID = 19 AndAlso SammelrechungArt = 6 Then @@ -89,116 +92,104 @@ Public Class cAutomailversand 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 SR_DT.Rows.Count = 0 Then Continue For + + Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(row.Item("RechnungsKundenNr")) + Dim KDE_ERW = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(row.Item("RechnungsKundenNr")) + Dim FISKAL = New cFiskal_Daten(row.Item("RechnungsKundenNr")) + + + + If RechnungsNr = -1 Then + If SR_DT.Rows.Count > 0 Then + Dim displayView = New DataView(SR_DT, "RechnungsNr is not null", "RechnungsNr", DataViewRowState.CurrentRows) + Dim distinctDT_SR As DataTable = displayView.ToTable(True, "RechnungsNr", "DruckDatumZeit", "Rechnungsdatum") + If distinctDT_SR.Rows.Count = 1 Then + RechnungsNr = distinctDT_SR.Rows(0).Item("RechnungsNr") + DruckDatumZeit = distinctDT_SR.Rows(0).Item("DruckDatumZeit") + Rechnungsdatum = distinctDT_SR.Rows(0).Item("Rechnungsdatum") + + End If + + BelegartenNr = SR_DT.Rows(0)("BelegartenNr") + For Each r In SR_DT.Rows + steuerbetrag += r("steuerpflichtigerGesamtbetrag") + If BelegartenNr <> r("BelegartenNr") Then BelegartenNr = "70" : Exit For + Next - If IM_EX Then - AbfertigungsNr = getAbertigungsNr(i) End If + 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 - Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(row.Item("RechnungsKundenNr")) - Dim KDE_ERW = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(row.Item("RechnungsKundenNr")) - Dim FISKAL = New cFiskal_Daten(row.Item("RechnungsKundenNr")) + Dim SR As Boolean = True - If i = 2 Then - ATTACHMENTS.Clear() 'leeren - RechnungsNr = -1 'nochmals zurücksetzen! - End If + Dim MailTo As String = "" + Dim MailtoCC As String = "" + Dim MailtoBCC As String = "" + + + setEmpfaengerMail_SR(SR_DT, AD, MailTo, MailtoCC, MailtoBCC, FirmaID, SammelrechungArt) + + 'im TESTSYSTEM bewusst die Empfänger leeren! + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + MailTo = "" + MailtoCC = "" + MailtoBCC = setAccountToSend(FirmaID) + Else + If Not clearBCC Then MailtoBCC = setAccountToSend(FirmaID) + End If + + + + If Not (MailTo = "" AndAlso MailtoCC = "" AndAlso MailtoBCC = "") Then + + Dim Mailsubject As String = "" + Dim HTMLMail As String = "" + + Dim listPDFs As New List(Of String) + Dim showError As Boolean = False + + showError = mailoeffnen 'bei MailÖffnen fehler anzeigen! + + setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr) + 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) + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST" + + If mailoeffnen Then + Dim Mail = createMail(AD, Mailsubject, HTMLMail, ATTACHMENTS, MailTo, MailtoCC, MailtoBCC, FirmaID) + If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum,,,,,,, Mail) Then + Mail.Display() + End If + + Else + + Dim TextHTML = "" + TextHTML &= HTMLMail + TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID, True, True,,,,, True) + HTMLMail = "
" & TextHTML & "
" + + If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum, ATTACHMENTS, Mailsubject, HTMLMail, MailTo, MailtoCC, MailtoBCC,,, FISKAL) Then - If RechnungsNr = -1 Then - If SR_DT.Rows.Count > 0 Then - Dim displayView = New DataView(SR_DT, "RechnungsNr is not null", "RechnungsNr", DataViewRowState.CurrentRows) - Dim distinctDT_SR As DataTable = displayView.ToTable(True, "RechnungsNr", "DruckDatumZeit", "Rechnungsdatum") - If distinctDT_SR.Rows.Count = 1 Then - RechnungsNr = distinctDT_SR.Rows(0).Item("RechnungsNr") - DruckDatumZeit = distinctDT_SR.Rows(0).Item("DruckDatumZeit") - Rechnungsdatum = distinctDT_SR.Rows(0).Item("Rechnungsdatum") - BelegartenNr = SR_DT.Rows(0)("BelegartenNr") - For Each r In SR_DT.Rows - steuerbetrag += r("steuerpflichtigerGesamtbetrag") - If BelegartenNr <> r("BelegartenNr") Then BelegartenNr = "70" : Exit For - Next End If End If End If + Else + MsgBox("Es konnte kein Email-Empfänger ermittelt werden!") - Dim SR As Boolean = True - - Dim MailTo As String = "" - Dim MailtoCC As String = "" - Dim MailtoBCC As String = "" - - - setEmpfaengerMail_SR(SR_DT, AD, MailTo, MailtoCC, MailtoBCC, FirmaID, SammelrechungArt) - - 'im TESTSYSTEM bewusst die Empfänger leeren! - - If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then - MailTo = "" - MailtoCC = "" - MailtoBCC = setAccountToSend(FirmaID) - Else - If Not clearBCC Then MailtoBCC = setAccountToSend(FirmaID) - End If + End If - If Not (MailTo = "" AndAlso MailtoCC = "" AndAlso MailtoBCC = "") Then - - Dim Mailsubject As String = "" - Dim HTMLMail As String = "" - - Dim listPDFs As New List(Of String) - Dim showError As Boolean = False - - showError = mailoeffnen 'bei MailÖffnen fehler anzeigen! - - 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 - 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 mailoeffnen Then - Dim Mail = createMail(AD, Mailsubject, HTMLMail, ATTACHMENTS, MailTo, MailtoCC, MailtoBCC, FirmaID) - If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum,,,,,,, Mail) Then - Mail.Display() - End If - - Else - - Dim TextHTML = "" - TextHTML &= HTMLMail - TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID, True, True,,,,, True) - HTMLMail = "
" & TextHTML & "
" - - If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum, ATTACHMENTS, Mailsubject, HTMLMail, MailTo, MailtoCC, MailtoBCC,,, FISKAL) Then - - End If - - End If - End If - - Else - - MsgBox("Es konnte kein Email-Empfänger ermittelt werden!") - - End If - - - - Next Next Catch ex As System.Exception @@ -207,6 +198,17 @@ Public Class cAutomailversand End Try 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) @@ -489,7 +491,7 @@ Public Class cAutomailversand 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 @@ -497,7 +499,7 @@ Public Class cAutomailversand DatumBis = Rechnungsdatum 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 End Function @@ -511,6 +513,21 @@ Public Class cAutomailversand Mail = outl.CreateItem(0) 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 = "" @@ -529,12 +546,7 @@ Public Class cAutomailversand - - - - - TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" - TextHTML &= "
" + TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "

" TextHTML &= cFakturierung.getSignature(AD.LandKz, FirmaID, True, True) Mail.HTMLBody = "
" & TextHTML & "
" @@ -564,8 +576,7 @@ Public Class cAutomailversand 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 = "" If RECHNUNG IsNot Nothing Then @@ -587,6 +598,15 @@ Public Class cAutomailversand 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") @@ -623,9 +643,9 @@ Public Class cAutomailversand ' Beleg + Anhänge zusammenführen 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) pdfs = ATTACHMENTS.Select(Function(a) a.Pfad.ToString).ToList() @@ -1522,54 +1542,54 @@ Public Class cAutomailversand Subject = "Meldung innergemeinschaftlicher Erwerb - " & AD.Ordnungsbegriff - Select Case RechnungsLandKz - Case "A", "AT", "D", "DE", "CH" : Sprache = "DE" - End Select + Select Case RechnungsLandKz + Case "A", "AT", "D", "DE", "CH" : Sprache = "DE" + End Select - Select Case Sprache - Case "DE" + Select Case Sprache + Case "DE" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "
EORI-Nr.:" & If(KD.EORITIN, "") & "
UID-Nr.:" & If(AD.UstIdKz, "") & If(AD.UstIdNr, "") & "
Firma:" & If(AD.Name_1, "") & If(AD.Name_2, "") & "
" & If(AD.Straße, "") & "
" & If(AD.LandKz, "") & " " & If(AD.PLZ, "") & " " & If(AD.Ort, "") & "
" - TextHTML &= "
" - TextHTML &= "
" - TextHTML &= "Sehr geehrte Damen & Herren!" & "
" - TextHTML &= "
" - TextHTML &= "Wir teilen Ihnen mit, dass wir für oben genanntes Unternehmen eine Zollabfertigung mit anschließender" & "
" - TextHTML &= "innergemeinschaftlicher Lieferung (Verfahren 4200) lt. beiliegenden Unterlagen durchgeführt haben." & "
" - TextHTML &= "
" - TextHTML &= "Dies muss dem Finanzamt als ""innergemeinschaftlicher Erwerb"" gemeldet werden." & "
" - TextHTML &= "

" - TextHTML &= "Freundliche Grüße" - TextHTML &= "

" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "
EORI-Nr.:" & If(KD.EORITIN, "") & "
UID-Nr.:" & If(AD.UstIdKz, "") & If(AD.UstIdNr, "") & "
Firma:" & If(AD.Name_1, "") & If(AD.Name_2, "") & "
" & If(AD.Straße, "") & "
" & If(AD.LandKz, "") & " " & If(AD.PLZ, "") & " " & If(AD.Ort, "") & "
" + TextHTML &= "
" + TextHTML &= "
" + TextHTML &= "Sehr geehrte Damen & Herren!" & "
" + TextHTML &= "
" + TextHTML &= "Wir teilen Ihnen mit, dass wir für oben genanntes Unternehmen eine Zollabfertigung mit anschließender" & "
" + TextHTML &= "innergemeinschaftlicher Lieferung (Verfahren 4200) lt. beiliegenden Unterlagen durchgeführt haben." & "
" + TextHTML &= "
" + TextHTML &= "Dies muss dem Finanzamt als ""innergemeinschaftlicher Erwerb"" gemeldet werden." & "
" + TextHTML &= "

" + TextHTML &= "Freundliche Grüße" + TextHTML &= "

" - Case "EN" + Case "EN" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "" - TextHTML &= "
EORI-Nr.:" & If(KD.EORITIN, "") & "
VAT-ID.:" & If(AD.UstIdKz, "") & If(AD.UstIdNr, "") & "
Company:" & If(AD.Name_1, "") & If(AD.Name_2, "") & "
" & If(AD.Straße, "") & "
" & If(AD.LandKz, "") & " " & If(AD.PLZ, "") & " " & If(AD.Ort, "") & "
" - TextHTML &= "
" - TextHTML &= "
" - TextHTML &= "Dear Sir or Madam!" & "
" - TextHTML &= "
" - TextHTML &= "We would like to inform you, that we made the customs clearance and subsequent intra-community supply of goods for the company above-mentioned (Code 4200).
" - TextHTML &= "The documents are attached." & "
" - TextHTML &= "
" - TextHTML &= "This intra-community acquisition has to be reported to the tax office." & "
" - TextHTML &= "

" - TextHTML &= "Yours faithfully," - TextHTML &= "

" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "" + TextHTML &= "
EORI-Nr.:" & If(KD.EORITIN, "") & "
VAT-ID.:" & If(AD.UstIdKz, "") & If(AD.UstIdNr, "") & "
Company:" & If(AD.Name_1, "") & If(AD.Name_2, "") & "
" & If(AD.Straße, "") & "
" & If(AD.LandKz, "") & " " & If(AD.PLZ, "") & " " & If(AD.Ort, "") & "
" + TextHTML &= "
" + TextHTML &= "
" + TextHTML &= "Dear Sir or Madam!" & "
" + TextHTML &= "
" + TextHTML &= "We would like to inform you, that we made the customs clearance and subsequent intra-community supply of goods for the company above-mentioned (Code 4200).
" + TextHTML &= "The documents are attached." & "
" + TextHTML &= "
" + TextHTML &= "This intra-community acquisition has to be reported to the tax office." & "
" + TextHTML &= "

" + TextHTML &= "Yours faithfully," + TextHTML &= "

" - End Select + End Select @@ -1634,7 +1654,7 @@ Public Class cAutomailversand - End If + End If diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index f25f11dc..46fa463c 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -4213,17 +4213,19 @@ Public Class cFakturierung ' 3-_> Sammel-Rg gedruckt ' 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 & ") " 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 & ") " Dim whereAutoMailversand = "" 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 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 & " - " & 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... 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 " @@ -4289,7 +4291,7 @@ Public Class cFakturierung 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 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 - Dim dt = GET_SR_SQLDT(Firma_ID, SammelrechungArt, DatumBis, whereKdNr, SB, AvisoIds, FakturierungsGruppe, Abfertigungsart) 'SQL.loadDgvBySql(sqlStr, "FMZOLL") - If dt Is Nothing Then MsgBox("ERR01: Keine Daten") : Return True + Dim dt = GET_SR_SQLDT(Firma_ID, SammelrechungArt, DatumBis, whereKdNr, SB, AvisoIds, FakturierungsGruppe, Abfertigungsart,, RENralreadySet, RechnungsNr) 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_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 / 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 RgNrSetFirstTime As Boolean = False + 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!!! + RgNrSetFirstTime = True End If End If - DruckdatumUhrzeit = Now.ToString("dd.MM.yyyy HH:mm:ss.fff") 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 AvisoIdTmp < 0 Then AvisoIdTmp = RG.AvisoID '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 = "" 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) End If @@ -4354,7 +4359,7 @@ Public Class cFakturierung Case 6 'MDM Abrechnung If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr '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!!!! If (Not RENralreadySet AndAlso Aktuelle_RgNr < 0) Then Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) @@ -4363,14 +4368,14 @@ Public Class cFakturierung Case Else If kdTmp < 0 Then kdTmp = RG.RechnungsKundenNr '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 = "" 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! - Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) - End If + 'If Not RENralreadySet AndAlso Aktuelle_RgNr > 0 AndAlso setAutoMailversand Then 'nächste SR bei AUTOMAIL -> ReNr erhöhen! + ' Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) + 'End If If path <> "" Then listPDFs.Add(path) @@ -4383,7 +4388,10 @@ Public Class cFakturierung FIRMATmp = RG.Firma_ID 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 @@ -4413,21 +4421,6 @@ Public Class cFakturierung If RG.RechnungsNr >= 0 Then Aktuelle_RgNr = RG.RechnungsNr 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.[Buchungsjahr] = Buchungsjahr 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 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, 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 @@ -4805,7 +4794,7 @@ Public Class cFakturierung Else sqlStr &= " AND RechnungsNr is null AND VorschauID='" & VorschauID & "' " End If - 'sqlStr &= " ORDER BY Rechnungsausgang.FilialenNr, Rechnungsausgang.AbfertigungsNr" + sqlStr &= " order by Rechnungsausgang.AvisoID desc, FilialenNr,AbfertigungsNr,POS.[BerechnungsartNr]" diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb index 896d9387..8e2f9af2 100644 --- a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb +++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb @@ -149,7 +149,7 @@ Public Class frmFaktSammelRgDrucken sqlStr = " SELECT - max(Rechnungsausgang.RechnungsNr) as RENR, + Rechnungsausgang.RechnungsNr as RENR, Rechnungsausgang.RechnungsKundenNr, MAX(Rechnungsausgang.[RechnungsName 1]) AS Firma, " & If(Sammelrechung = 7, "AvisoId", "0") & " AS AvisoId, @@ -175,7 +175,7 @@ Public Class frmFaktSammelRgDrucken " & whereAbfArt & whereAutoMail & SQLAUTOMAIL_RECHNUNGSDATuM & " AND Rechnungsausgang.FakturierungsGruppe='" & cboFaktGrp._value & "' 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 Rechnungsausgang.RechnungsKundenNr" @@ -202,6 +202,10 @@ Public Class frmFaktSammelRgDrucken .Columns("LKW").Width = 80 End If + If .Columns("RENR").Visible = Visible Then + .Columns("RENR").Width = 60 + End If + If .Columns.Contains("IM_EX") And .Columns.Count >= 8 Then .Columns("IM_EX").Width = 45 End If @@ -476,6 +480,20 @@ Public Class frmFaktSammelRgDrucken Return AvisoIds 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) Try If cboFirma._value = "" Then MsgBox("Bitte Firma angeben!") : Exit Sub @@ -659,7 +677,8 @@ Public Class frmFaktSammelRgDrucken 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)) - + 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 Dim RENRExisting As Boolean = False @@ -667,33 +686,36 @@ Public Class frmFaktSammelRgDrucken If Not RENRExisting Then 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 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 Me.Enabled = True + Me.Cursor = Cursors.Default End If End If Next - - Me.Enabled = False - Me.Cursor = Cursors.WaitCursor - - 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!") + If Sammelrechung = 7 Then + Me.Enabled = False + Me.Cursor = Cursors.WaitCursor + createsSammelRechungsNr(getSelectionKdNr, abfertigungsarten) + Me.Enabled = True + Me.Cursor = Cursors.Default End If - Me.Enabled = True - Me.Cursor = Cursors.Default - End If End If @@ -714,6 +736,15 @@ Public Class frmFaktSammelRgDrucken 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 If MyDatagridview1.SelectedRows.Count > 0 Then @@ -977,19 +1008,26 @@ Public Class frmFaktSammelRgDrucken 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 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 + Dim fun As New cAutomailversand + fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), Sammelrechung, Firma, getAvisoIds(), getKundenNr(), cbxMailoeffnen.Checked,, CDate(txtZeitraumBis.Text), cbxMailoeffnen.Checked) + + initDGV() End If End Sub + Private Sub btnNurAbf_Click(sender As Object, e As EventArgs) Handles btnNurImport.Click, btnNurExport.Click Dim where As String = "" diff --git a/SDL/frmLogin.vb b/SDL/frmLogin.vb index 489f5c1a..2add7a16 100644 --- a/SDL/frmLogin.vb +++ b/SDL/frmLogin.vb @@ -112,7 +112,7 @@ Public Class frmLogin Dim func As New cAutomailversand - func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID) + func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID, Nothing) Application.Exit() End 'immediately terminates further execution diff --git a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb index 44612024..d67f3d1f 100644 --- a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb +++ b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb @@ -990,8 +990,10 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object( Catch ex As Exception 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) + Return False 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) + Return False End Try End Try