diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index 581cf348..9b3d3b15 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -1,5 +1,4 @@ Imports System.IO -Imports com.sun.tools.doclets.internal.toolkit.util Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN @@ -12,7 +11,7 @@ Public Class cAutomailversand Dim rechnungenMailversand = "SELECT RechnungsNr,RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0) as keineMWST, max(Rechnungsausgang.[RechnungsLandKz]) as RechnungsLandKz, MitgliedslandEU, sum(Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Steuer FROM Rechnungsausgang LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz - WHERE Rechnungsausgang.Status IN (2) And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) = '" & Sammelrechnungsdatum.ToShortDateString & "' + WHERE Rechnungsausgang.Status IN (2) And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & Sammelrechnungsdatum.ToShortDateString & "' and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 " & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & " GROUP BY RechnungsNr, RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0),RechnungsLandKz, MitgliedslandEU ORDER BY RechnungsLandKz, RechnungsKundenNr" @@ -22,35 +21,41 @@ Public Class cAutomailversand For Each row As DataRow In dt.Rows - + Dim BelegartenNr = "70" + Dim steuerbetrag As Double = 0 Dim SR_DT As DataTable = Nothing Dim RechnungsNr As Integer = -1 Dim DruckDatumZeit As DateTime Dim Rechnungsdatum = Nothing Dim ATTACHMENTS As New List(Of cFakt_MailATTach) - 'AKTUELL IMMER MIT KOPIE - MDMKopiedrucken = True - Dim isEU As Boolean = row.Item("MitgliedslandEU") + If FirmaID = 19 Then - If isEU Then - If row.Item("keineMWST") Then - '1. Schritt: kein MWST Kunde -> ORIGINAL-RE per Mail! - MDMKopiedrucken = Not row.Item("keineMWST") + 'AKTUELL IMMER MIT KOPIE + MDMKopiedrucken = True + Dim isEU As Boolean = row.Item("MitgliedslandEU") + + If isEU Then + If row.Item("keineMWST") Then + '1. Schritt: kein MWST Kunde -> ORIGINAL-RE per Mail! + MDMKopiedrucken = Not row.Item("keineMWST") + End If + + '2. Schritt: MWST Kunde -> wenn kein MWST-BEtrag ->Original sonst Kopie per Mail! + If MDMKopiedrucken Then + MDMKopiedrucken = CDbl(row.Item("Steuer")) <> 0 + End If + + Else + 'immer KOPIE weil Ausdruck aktuell noch gesendet! End If - '2. Schritt: MWST Kunde -> wenn kein MWST-BEtrag ->Original sonst Kopie per Mail! - If MDMKopiedrucken Then - MDMKopiedrucken = CDbl(row.Item("Steuer")) <> 0 - End If - - Else - 'immer KOPIE weil Ausdruck aktuell noch gesendet! End If - SR_DT = cFakturierung.GET_SR_SQLDT(FirmaID, SammelrechungArt, Sammelrechnungsdatum, row.Item("RechnungsKundenNr"),, , , , True) + SR_DT = cFakturierung.GET_SR_SQLDT(FirmaID, SammelrechungArt, Sammelrechnungsdatum, row.Item("RechnungsKundenNr"),,,,, True) Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(row.Item("RechnungsKundenNr")) + Dim FISKAL = New cFiskal_Daten(row.Item("RechnungsKundenNr")) If RechnungsNr = -1 Then If SR_DT.Rows.Count > 0 Then @@ -60,12 +65,16 @@ Public Class cAutomailversand 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 - Dim SR As Boolean = True Dim MailTo As String = "" @@ -101,13 +110,14 @@ Public Class cAutomailversand End If + 'im TESTSYSTEM bewusst die Empfänger leeren! + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then MailTo = "" MailtoCC = "" - MailtoBCC = "mmdabrechnung@verag.ag" - + MailtoBCC = setAccountToSend(FirmaID) Else - MailtoBCC = "mmdabrechnung@verag.ag" + MailtoBCC = setAccountToSend(FirmaID) End If @@ -119,8 +129,8 @@ Public Class cAutomailversand Dim listPDFs As New List(Of String) Dim showError As Boolean = False - setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail) - If doRechnung(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError) Then + setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr) + If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError) Then loadAndSetAnhaenge(SR_DT, ATTACHMENTS, listPDFs) If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST" @@ -156,51 +166,99 @@ Public Class cAutomailversand End Sub - Sub sendMailEinzelrechnung(Rechnungsdatum As Date, RechungArt As Integer, FirmaID As Integer, Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False) + Sub sendMailEinzelrechnungen(Rechnungsdatum As Date, FirmaID As Integer, Optional Sachbearbeiter As String = "", Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False) + Dim sql As New VERAG_PROG_ALLGEMEIN.SQL + + Dim rechnungenMailversand = "SELECT RechnungsNr,RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0) as keineMWST, max(Rechnungsausgang.[RechnungsLandKz]) as RechnungsLandKz, MitgliedslandEU, sum(Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Steuer FROM Rechnungsausgang + LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr + INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz + WHERE Rechnungsausgang.Status IN (2) And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & Rechnungsdatum.ToShortDateString & "' + and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 " & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & " + GROUP BY RechnungsNr, RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0),RechnungsLandKz, MitgliedslandEU + ORDER BY RechnungsLandKz, RechnungsKundenNr" + + Dim dt As DataTable = sql.loadDgvBySql(rechnungenMailversand, "FMZOLL") + Try + + For Each r In dt.Rows + + Dim MailTo As String = "" + Dim MailtoCC As String = "" + Dim MailtoBCC As String = "" + + + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + MailTo = "" + MailtoCC = "" + MailtoBCC = setAccountToSend(FirmaID) + Else + MailtoBCC = setAccountToSend(FirmaID) + End If + + + Next + + Catch ex As System.Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL,,,,,,) + + End Try End Sub - Private Sub setEmailText(row As DataRow, Firma_ID As Integer, RechnungsNr As Integer, ByRef Subject As String, ByRef TextHTML As String) + Private Sub setEmailText(row As DataRow, Firma_ID As Integer, RechnungsNr As Integer, ByRef Subject As String, ByRef TextHTML As String, ByRef SammelrechungArt As Integer, dt As DataTable, ByRef BelegartenNr As Integer) Dim txtRgNr As String = IIf(RechnungsNr < 0, -1, RechnungsNr) Dim Mailtext As String - Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL - Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(4, "", Firma_ID) - Dim spracheRechnung As String = "EN" 'Defaultsprache + If SammelrechungArt <> 6 Then - Select Case row.Item("RechnungsLandKz") - Case "TR", "RO", "DE", "SRB" : spracheRechnung = row.Item("RechnungsLandKz") - Case "A", "AT", "D", "CH", "DE" : spracheRechnung = "DE" - Case "HR", "SLO", "BIH", "MNE", "MK", "MO" : spracheRechnung = "SRB" - End Select + Subject = "VERAG Sammel-Rechnung" + TextHTML &= getSammelRgTExt(getSelectionLandKz(dt), Firma_ID) - If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then + + Else - Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung) - If r IsNot Nothing Then - Subject = r.txt_betreff - Subject = Subject.Replace("%BelegNr%", txtRgNr) - TextHTML &= r.txt_text - If Mailtext <> "" Then TextHTML &= Mailtext - TextHTML &= vbNewLine & vbNewLine + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(4, "", Firma_ID) + + Dim spracheRechnung As String = "EN" 'Defaultsprache + + Select Case row.Item("RechnungsLandKz") + Case "TR", "RO", "DE", "SRB" : spracheRechnung = row.Item("RechnungsLandKz") + Case "A", "AT", "D", "CH", "DE" : spracheRechnung = "DE" + Case "HR", "SLO", "BIH", "MNE", "MK", "MO" : spracheRechnung = "SRB" + End Select + If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then + + + Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung) + If r IsNot Nothing Then + Subject = r.txt_betreff + Subject = Subject.Replace("%BelegNr%", txtRgNr) + TextHTML &= r.txt_text + If Mailtext <> "" Then TextHTML &= Mailtext + TextHTML &= vbNewLine & vbNewLine + + + End If End If + End If End Sub - Private Function doRechnung(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, 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) + Private Function do_SR(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, 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) Dim RechnungsNrisSet As Boolean = False - RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(19, 6, Rechnungsdatum, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit, , , ,, ,,, True, Kopie,, saveInThereFore, showError) + RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, Rechnungsdatum, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit, , , ,, ,,, True, Kopie, True, saveInThereFore, showError) Return RechnungsNrisSet End Function @@ -315,6 +373,9 @@ Public Class cAutomailversand Private Function setLog(SR_DT As DataTable, row As DataRow, FirmaID As Integer, Sammelrechnungsart As Integer, Rechnungsdatum As Date, Optional ATTACHMENTS As List(Of cFakt_MailATTach) = Nothing, Optional Mailsubject As String = "", Optional Mailhtml As String = "", Optional MailTo As String = "", Optional MailtoCC As String = "", Optional MailtoBCC As String = "", Optional Mail As Microsoft.Office.Interop.Outlook.MailItem = Nothing) As Boolean + + Dim accountToSend = setAccountToSend(FirmaID) + Dim mailcreated As Boolean = False Dim sql As New VERAG_PROG_ALLGEMEIN.SQL @@ -329,14 +390,14 @@ Public Class cAutomailversand If Mail IsNot Nothing Then EMails = Mail.To EMails_CC = Mail.CC - EMails_BCC = Mail.BCC + EMails_BCC = accountToSend 'Mail.BCC EMail_subject = Mail.Subject EMail_HTML = Mail.Body AttCount = Mail.Attachments.Count Else EMails = MailTo EMails_CC = MailtoCC - EMails_BCC = MailtoBCC + EMails_BCC = accountToSend 'MailtoBCC EMail_subject = Mailsubject EMail_HTML = Mailhtml AttCount = ATTACHMENTS.Count @@ -356,7 +417,7 @@ Public Class cAutomailversand - Dim API = VERAG_PROG_ALLGEMEIN.cAPI.INSERT_API(VERAG_PROG_ALLGEMEIN.cAPI_INOUT.OUT, VERAG_PROG_ALLGEMEIN.cAPI_Type.MAIL, VERAG_PROG_ALLGEMEIN.cAPI_ART.SDL_OUT_SAMMELRECHNUNG, "SAMMELRECHNUNG-MDM",,, row.Item("RechnungsKundenNr"), , , FilialenNr, AbfertigungsNr) + Dim API = VERAG_PROG_ALLGEMEIN.cAPI.INSERT_API(VERAG_PROG_ALLGEMEIN.cAPI_INOUT.OUT, VERAG_PROG_ALLGEMEIN.cAPI_Type.MAIL, VERAG_PROG_ALLGEMEIN.cAPI_ART.SDL_OUT_SAMMELRECHNUNG, "SAMMELRECHNUNG_" & FirmaID,,, row.Item("RechnungsKundenNr"), , , FilialenNr, AbfertigungsNr) API.api_EMail = EMails API.api_EMailCC = EMails_CC @@ -383,7 +444,7 @@ Public Class cAutomailversand Next - If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(EMails, EMail_subject, EMail_HTML, "mmdabrechnung@verag.ag", False, False, EMails_CC, EMails_BCC, attachList,, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "d.breimaier@verag.ag", "mmdabrechnung@verag.ag")) Then + If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(EMails, EMail_subject, EMail_HTML, accountToSend, False, False, EMails_CC, EMails_BCC, attachList,, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "d.breimaier@verag.ag", accountToSend)) Then API.UPDTAE_OK() mailcreated = True Else @@ -402,5 +463,130 @@ Public Class cAutomailversand Return mailcreated + End Function + + Function getSammelRgTExt(RechnungsLandKz, FIRMA_ID) As String + + If RechnungsLandKz = "" Then + + getSammelRgTExt = "Sehr geehrte Damen und Herren,
" + getSammelRgTExt &= "Dear Ladies and Gentlemen,
" + getSammelRgTExt &= "Sayin Bayanlar ve Baylar,
" + getSammelRgTExt &= "
" + getSammelRgTExt &= "im Anhang senden wir Ihnen die o.g. Rechnung.
" + getSammelRgTExt &= "attached we send you the invoice mentioned above.
" + getSammelRgTExt &= "ekte baslikta yazan faturayi bulabilirsinz.
" + getSammelRgTExt &= "
" + getSammelRgTExt &= "


Mit freundlichen Grüßen / Best regards / Saygilarimizla

VERAG Spedition AG

" & cFakturierung.getSignature(RechnungsLandKz, FIRMA_ID) + Return "
" & getSammelRgTExt & "
" + End If + + + + getSammelRgTExt = "
" & getSammelRgTExt & "
" + End Function + + Function getSelectionLandKz(dt As DataTable) As String + getSelectionLandKz = "" + If dt.Rows.Count > 0 Then + + If dt.Rows.Count > 0 Then + + For Each r As DataRow In dt.Rows + + If Not IsDBNull(r("RechnungsLandKz")) Then + + Dim landKz As String = r("RechnungsLandKz").ToString() + + If getSelectionLandKz = "" Then + getSelectionLandKz = landKz + ElseIf getSelectionLandKz <> landKz Then + Return "" + End If + + End If + + Next + + End If + End If + + + End Function + + Private Function setAccountToSend(FIRMA_ID) As String + Dim accountToSend = "" + + Select Case FIRMA_ID + + Case 24 + accountToSend = SDL.cFakturierung.getDefaultMail("AMBAR",, True) + Case 19 + accountToSend = "mmdabrechnung@verag.ag" 'bewusst falsch geschrieben!!!! + Case 7 + accountToSend = "rechnung@atilla-spedition.com" + Case Else + accountToSend = "rechnungsversand@verag.ag" + End Select + + Return accountToSend + End Function + + Function addRgData_ZF_Passau(RechnungsLandKz As String, RECHNUNG As cRechnungsausgang, SPEDBUCH As cSpeditionsbuch) As String ' NUR EINZELRECHNUNG + addRgData_ZF_Passau = vbNewLine & vbNewLine + Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung + + Select Case RechnungsLandKz + Case "TR" + addRgData_ZF_Passau &= "Sender: " & RECHNUNG.AbsenderName_1 & ", " & If(RECHNUNG.AbsenderOrt, "") & vbNewLine + If ZOLLANMELDUNG.getDataByBezugsnummer(RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr, SPEDBUCH.Abfertigungsart, "", SPEDBUCH.Grenzstelle, SPEDBUCH.Zollsystem_Land) Then + addRgData_ZF_Passau &= "Invoice-No.: " & ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) & vbNewLine + addRgData_ZF_Passau &= "Invoice-Total: " & ZOLLANMELDUNG.Rechnungspreis & vbNewLine + End If + Case "A", "AT", "D", "DE", "CH" + addRgData_ZF_Passau &= "Absender: " & RECHNUNG.AbsenderName_1 & ", " & If(RECHNUNG.AbsenderOrt, "") & vbNewLine + If ZOLLANMELDUNG.getDataByBezugsnummer(RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr, SPEDBUCH.Abfertigungsart, "", SPEDBUCH.Grenzstelle, SPEDBUCH.Zollsystem_Land) Then + addRgData_ZF_Passau &= "Handelsrechnungs-Nr.: " & ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) & vbNewLine + addRgData_ZF_Passau &= "Handelsrechnungs-Betrag: " & ZOLLANMELDUNG.Rechnungspreis & vbNewLine + End If + Case Else + addRgData_ZF_Passau &= "Sender: " & RECHNUNG.AbsenderName_1 & ", " & If(RECHNUNG.AbsenderOrt, "") & vbNewLine + If ZOLLANMELDUNG.getDataByBezugsnummer(RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr, SPEDBUCH.Abfertigungsart, "", SPEDBUCH.Grenzstelle, SPEDBUCH.Zollsystem_Land) Then + addRgData_ZF_Passau &= "Invoice-No.: " & ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) & vbNewLine + addRgData_ZF_Passau &= "Invoice-Total: " & ZOLLANMELDUNG.Rechnungspreis & vbNewLine + End If + End Select + + ' addRgData_ZF_Passau = RichTextBox.Text.Replace("Mit freundlichen Grüßen", "") + + + End Function + Function addRgData_Parsan(RechnungsLandKz As String, RECHNUNG As cRechnungsausgang, SPEDBUCH As cSpeditionsbuch) As String 'NUR EINZELRECHNUNG + addRgData_Parsan = vbNewLine & vbNewLine + Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung + + Select Case RechnungsLandKz + Case "TR" + ' addRgData_Parsan &= "Sender: " & RECHNUNG.AbsenderName_1 & ", " & If(RECHNUNG.AbsenderOrt, "") & vbNewLine + If ZOLLANMELDUNG.getDataByBezugsnummer(RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr, SPEDBUCH.Abfertigungsart, "", SPEDBUCH.Grenzstelle, SPEDBUCH.Zollsystem_Land) Then + addRgData_Parsan &= "Invoice-No.: " & ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) & vbNewLine + addRgData_Parsan &= "Invoice-Total: " & ZOLLANMELDUNG.Rechnungspreis & vbNewLine + End If + Case "A", "AT", "D", "DE", "CH" + ' addRgData_Parsan &= "Absender: " & RECHNUNG.AbsenderName_1 & ", " & If(RECHNUNG.AbsenderOrt, "") & vbNewLine + If ZOLLANMELDUNG.getDataByBezugsnummer(RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr, SPEDBUCH.Abfertigungsart, "", SPEDBUCH.Grenzstelle, SPEDBUCH.Zollsystem_Land) Then + addRgData_Parsan &= "Handelsrechnungs-Nr.: " & ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) & vbNewLine + addRgData_Parsan &= "Handelsrechnungs-Betrag: " & ZOLLANMELDUNG.Rechnungspreis & vbNewLine + End If + Case Else + 'addRgData_Parsan &= "Sender: " & RECHNUNG.AbsenderName_1 & ", " & If(RECHNUNG.AbsenderOrt, "") & vbNewLine + If ZOLLANMELDUNG.getDataByBezugsnummer(RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr, SPEDBUCH.Abfertigungsart, "", SPEDBUCH.Grenzstelle, SPEDBUCH.Zollsystem_Land) Then + addRgData_Parsan &= "Invoice-No.: " & ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) & vbNewLine + addRgData_Parsan &= "Invoice-Total: " & ZOLLANMELDUNG.Rechnungspreis & vbNewLine + End If + End Select + + + End Function End Class diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 4c6a779d..a36a2496 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -4348,12 +4348,8 @@ Public Class cFakturierung ' If FilialeTmp < 0 Then FilialeTmp = RG.FilialenNr '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 - ' KEIN doSAMMELRechnungsDruck_Abschnitt!!!! If Not MDMRENrvoarhanden Then Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) - - - End If kdTmp = RG.RechnungsKundenNr FilialeTmp = RG.FilialenNr @@ -4363,12 +4359,16 @@ Public Class cFakturierung ' If FilialeTmp < 0 Then FilialeTmp = RG.FilialenNr '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 - Dim path = "" - doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,,,,,, saveInThereFore) - Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) - If path <> "" Then listPDFs.Add(path) + If Not setAutoMailversand Then + Dim path = "" + doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,,,,,, saveInThereFore) + Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) + If path <> "" Then listPDFs.Add(path) + Else + If Not MDMRENrvoarhanden Then Aktuelle_RgNr = getNewRgNr(Firma_ID, Buchungsjahr) + End If End If - kdTmp = RG.RechnungsKundenNr + kdTmp = RG.RechnungsKundenNr FilialeTmp = RG.FilialenNr FIRMATmp = RG.Firma_ID End Select @@ -4377,8 +4377,8 @@ Public Class cFakturierung RG.[VorschauID] = VorschauID Else - If SammelrechungArt = 6 Then - If RechnungsdruckArt = 7 Then 'RechnungsdruckArt = 7 ist die Erstellung per MDM-Sammelabrechnung! + If SammelrechungArt = 6 Or (setAutoMailversand And 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!! RG.Automailversand = setAutoMailversand Else @@ -4413,7 +4413,9 @@ Public Class cFakturierung 'Letzter Abschnitt: If found Then Dim path = "" - If Not (SammelrechungArt = 6 And RechnungsdruckArt = 7) Then doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,, MDMREkopie,,,, saveInThereFore) + If Not (SammelrechungArt = 6 And RechnungsdruckArt = 7) Then + doSAMMELRechnungsDruck_Abschnitt(Aktuelle_RgNr, Firma_ID, Buchungsjahr, DruckdatumUhrzeit, PrinterName, AnlageEinzelRg, Sammelrechnungsbericht, RechnungsdruckArt, path,, SB, AnlageExcelEvolog, SonstAnlagen, VorschauID, AnlageExcelTransferry360, FakturierungsGruppe, Abfertigungsart,,, MDMREkopie,,,, saveInThereFore) + End If If path <> "" Then listPDFs.Add(path) End If lastAktuelle_RgNr = Aktuelle_RgNr @@ -4874,7 +4876,7 @@ Public Class cFakturierung RG_Bezeichnung = "Provisionsabrechnung_" & Now.ToString("yyyyMMdd_HHmmss") & ".pdf" End If - If isMDMRechnungsdruck Then + If isMDMRechnungsdruck AndAlso FIRMA.Firma_ID = 19 Then rpt = SammelRechnungAnlagenDruck_MDM(ROW, isMDMRechnungsdruck, dt, FIRMA, Rechnugnsdruck, KD_RG, RechnungsNr, VorschauID, Sammelrechnungskopie, RG_Bezeichnung, SammelrechnungsDT, tmpPath) Else rpt = SammelRechnungAnlagenDruck(ROW, isMDMRechnungsdruck, dt, FIRMA, Rechnugnsdruck, KD_RG, RechnungsNr, VorschauID, Sammelrechnungskopie, RG_Bezeichnung, SammelrechnungsDT, tmpPath) diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb index 4b393959..11875af0 100644 --- a/SDL/Fakturierung/frmFaktEmail.vb +++ b/SDL/Fakturierung/frmFaktEmail.vb @@ -2,8 +2,6 @@ Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN - - Public Class frmFaktEmail Dim RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang @@ -78,23 +76,8 @@ Public Class frmFaktEmail End Sub - - Private Sub frmFaktEmail_Load(sender As Object, e As EventArgs) Handles MyBase.Load - 'Select Case RECHNUNG.RechnungsLandKz - ' Case "TR" - ' txtSubject.Text = "Rechnung Nr. " & RECHNUNG.RechnungsNr - ' TextHTML = "Sayin Bayanlar ve Baylar,

ekte baslikta yazan faturayi bulabilirsinz." - ' TextHTML &= "


Saygilarimizla

" & cFakturierung.getSignature(RECHNUNG) - ' Case "A", "AT", "D", "DE", "CH" - ' txtSubject.Text = "Rechnung Nr. " & RECHNUNG.RechnungsNr - ' TextHTML = "Sehr geehrte Damen und Herren,

im Anhang senden wir Ihnen die o.g. Rechnung." - ' TextHTML &= "


Mit freundlichen Grüßen

" & cFakturierung.getSignature(RECHNUNG) - ' Case Else - ' txtSubject.Text = "Rechnung Nr. " & RECHNUNG.RechnungsNr - ' TextHTML = "Sehr geehrte Damen und Herren,

attached we send you the invoice mentioned above." - ' TextHTML &= "


Best regards

" & cFakturierung.getSignature(RECHNUNG) - 'End Select + cboFaStb_Sprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE", "DE")) cboFaStb_Sprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EN", "EN")) diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.Designer.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.Designer.vb index e168f871..2a71cda1 100644 --- a/SDL/Fakturierung/frmFaktSammelRgDrucken.Designer.vb +++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.Designer.vb @@ -401,7 +401,7 @@ Partial Class frmFaktSammelRgDrucken 'cbxAUTOMail ' Me.cbxAUTOMail.AutoSize = True - Me.cbxAUTOMail.Location = New System.Drawing.Point(555, 44) + Me.cbxAUTOMail.Location = New System.Drawing.Point(532, 66) Me.cbxAUTOMail.Name = "cbxAUTOMail" Me.cbxAUTOMail.Size = New System.Drawing.Size(116, 17) Me.cbxAUTOMail.TabIndex = 30 diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb index bf9a5f82..39617ca5 100644 --- a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb +++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb @@ -58,6 +58,8 @@ Public Class frmFaktSammelRgDrucken Case 7 : txtZeitraumBis.Text = Now.ToShortDateString : lblSB.Visible = True : cboSB.Visible = True : cboSB.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) End Select + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then cbxAUTOMail.Visible = True : pnlAUTOMailversand.Visible = True + initDGV() End Sub @@ -65,53 +67,153 @@ Public Class frmFaktSammelRgDrucken Sub initDGV() With MyDatagridview1 - Dim whereAbfArt = "" - Dim whereMWST = "" + 'Dim whereAbfArt = "" + 'Dim whereMWST = "" + 'Dim abfertigungsarten = getValues() + + 'If Sammelrechung <> 6 AndAlso abfertigungsarten <> "" Then + ' whereAbfArt = " AND (SELECT Abfertigungsart FROM Speditionsbuch WHERE Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr) IN (" & abfertigungsarten & ") " + 'End If + '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") + ' whereAbfArt &= " 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 + + + Dim whereAbfArt As String = "" + Dim whereMWST As String = "" + Dim whereAutoMail As String = "" + Dim abfertigungsarten = getValues() + ' Abfertigungsarten If Sammelrechung <> 6 AndAlso abfertigungsarten <> "" Then - whereAbfArt = " AND (SELECT Abfertigungsart FROM Speditionsbuch WHERE Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr) IN (" & abfertigungsarten & ") " - End If - If cbxMWST.CheckState.Indeterminate Then - whereMWST = "" - Else - whereMWST = "AND isnull(tblKundenErweitert.kde_keineMWSt,0) = " & IIf(cbxMWST.Checked, "1", "0") + whereAbfArt = " AND (SELECT Abfertigungsart + FROM Speditionsbuch + WHERE Speditionsbuch.FilialenNr = Rechnungsausgang.FilialenNr + AND Speditionsbuch.AbfertigungsNr = Rechnungsausgang.AbfertigungsNr + AND Speditionsbuch.UnterNr = Rechnungsausgang.SpeditionsbuchUnterNr + ) IN (" & abfertigungsarten & ") " End If - If cbxAUTOMail.Checked Or Not cbxAUTOMail.Checked Then - whereMWST = " AND isnull(Rechnungsausgang.Automailversand,0) = " & IIf(cbxAUTOMail.Checked, "1", "0") + ' MWST + If Not cbxMWST.CheckState = CheckState.Indeterminate Then + whereMWST = " AND ISNULL(tblKundenErweitert.kde_keineMWSt,0) = " & If(cbxMWST.Checked, "1", "0") End If - Dim sqlStr = "" + whereAutoMail = " AND ISNULL(Rechnungsausgang.Automailversand,0) = " & If(cbxAUTOMail.Checked, "1", "0") + + Dim sqlStr As String = "" 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 " + 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 = 2 + AND Rechnungsausgang.Firma_ID = '" & cboFirma._value & "' + AND Rechnungsausgang.Sammelrechnung = " & Sammelrechung & " + AND CONVERT(DATE, Rechnungsausgang.Abfertigungsdatum, 104) = '" & txtRechnungsdatum._value & "' + " & If(cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "'", "") & " + " & whereAbfArt & whereMWST & whereAutoMail & " + 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 " + sqlStr = " + SELECT + min(Rechnungsausgang.RechnungsNr) as RENR, + 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 AndAlso cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "'", "") & " + " & whereAbfArt & whereAutoMail & " + 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() @@ -137,8 +239,12 @@ Public Class frmFaktSammelRgDrucken .Columns("RechnungsLandKz").Visible = True End If - If .Columns.Contains("keineMWST") Then - .Columns("keineMWST").Visible = False + If .Columns.Contains("keineMWST") Then + .Columns("keineMWST").Visible = False + End If + + If .Columns.Contains("RENR") Then + .Columns("RENR").Visible = False End If If .Columns.Contains("Steuer") Then @@ -558,21 +664,73 @@ Public Class frmFaktSammelRgDrucken 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) + Dim noRENRExisting As Boolean = False + + If MyDatagridview1.Columns.Contains("RENR") Then + noRENRExisting = MyDatagridview1.SelectedRows.Cast(Of DataGridViewRow)().Any(Function(r) r.Cells("RENR").Value Is Nothing OrElse IsDBNull(r.Cells("RENR").Value)) + + If noRENRExisting Then + + 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 + + If vbYes = MsgBox("Es wird eine Belegsnummer vergeben, die Belege gelten somit als gedruckt und können nicht mehr bearbeitet werden.", vbYesNoCancel) Then + + For Each r In MyDatagridview1.SelectedRows.Cast(Of DataGridViewRow)().Where(Function(x) x.Cells("RENR").Value Is Nothing OrElse IsDBNull(x.Cells("RENR").Value)) + + 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 + + + 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 + + Dim abfertigungsarten = getValues() + + 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) + If Not RechnungsNrisSet Then + MsgBox("Fehler bei RechnungsNrErzeugung!") + End If + Me.Enabled = True + End If + + Next + Me.Enabled = True + Me.Cursor = Cursors.Default + + + Else + + + End If + End If + End If + + setMailversand_ALL(True, Firma, Sammelrechung, 2) + Me.Enabled = True + Me.Cursor = Cursors.Default 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) + 'setMailversand(false, Firma, Sammelrechung, 2) + setMailversand_ALL(False, Firma, Sammelrechung, 2) End If End If @@ -593,6 +751,7 @@ Public Class frmFaktSammelRgDrucken 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 & @@ -609,6 +768,60 @@ Public Class frmFaktSammelRgDrucken + + End Function + + Private Function setMailversand_ALL(Mailversand As Boolean, FirmaID As Integer, Sammelrechnung As Integer, Status As Integer) As Boolean + + Dim count As Integer = 0 + Dim mailversandString As String = If(Mailversand, "1", "0") + + Dim whereMWST As String = "" + Dim whereAutoMail As String = "" + + ' MWST Filter + If cbxMWST.CheckState <> CheckState.Indeterminate Then + whereMWST = " AND ISNULL(tblKundenErweitert.kde_keineMWSt,0) = " & If(cbxMWST.Checked, "1", "0") + End If + + ' Automail Filter (nur ändern wenn unterschiedlich) + whereAutoMail = " AND ISNULL(Rechnungsausgang.Automailversand,0) <> " & mailversandString + + For Each r As DataGridViewRow In MyDatagridview1.SelectedRows + + Dim sql As String = "" + + If IsDate(txtRechnungsdatum.Text) AndAlso Not IsDBNull(r.Cells("RechnungsLandKz").Value) AndAlso Not IsDBNull(r.Cells("RechnungsKundenNr").Value) AndAlso IsNumeric(r.Cells("RechnungsKundenNr").Value) Then + + sql = "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.Rechnungsdatum, 104) = '" & CDate(txtRechnungsdatum.Text).ToShortDateString & "' + AND Rechnungsausgang.RechnungsKundenNr = " & r.Cells("RechnungsKundenNr").Value & " + AND Rechnungsausgang.RechnungsLandKz = '" & r.Cells("RechnungsLandKz").Value.ToString.Trim & "' + " & whereAutoMail & " + " & If(cboSB._value <> "", " AND Rechnungsausgang.Sachbearbeiter='" & cboSB._value & "'", "") & " + " & whereMWST + + End If + + If (New SQL).doSQL(sql, "FMZOLL") Then + count += 1 + End If + + Next + + If count <> MyDatagridview1.SelectedRows.Count Then + MsgBox("ACHTUNG" & vbNewLine & + "Der automatische Mailversand wurde nur bei " & count & " Rechnungen " & + If(Mailversand, "aktiviert!", "deaktiviert!") & vbNewLine & + "Markiert waren " & MyDatagridview1.SelectedRows.Count & " Rechnungen!") + End If + + + End Function Private Sub cbxAUTOMail_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAUTOMail.CheckedChanged @@ -638,7 +851,7 @@ Public Class frmFaktSammelRgDrucken 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") + 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 = " & Sammelrechung & IIf(Firma > 0, " AND Firma_ID =" & Firma, ""), "FMZOLL") If dtRE.Rows.Count > 0 Then Dim RK_ID As String = "" @@ -696,11 +909,11 @@ Public Class frmFaktSammelRgDrucken If MyDatagridview1.SelectedRows.Count > 0 Then - If Not vbYes = MsgBox("Möchten Sie für alle markieren Rechnungen den automatischen Emailversand JETZT durchführen?" & vbNewLine & "Ansonten werden sie im Nachtlauf automatisch versendet!", vbYesNoCancel) Then Exit Sub + If Not vbYes = MsgBox("Möchten Sie für alle markieren Rechnungen den automatischen Emailversand JETZT durchführen?" & vbNewLine & "Ansonsten 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) + fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), Sammelrechung, Firma, r.Cells("RechnungsKundenNr").Value, cbxMailoeffnen.Checked) Next initDGV() diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.Designer.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.Designer.vb index d529c6e1..fcc48cfd 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.Designer.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.Designer.vb @@ -288,6 +288,7 @@ Partial Class usrCntlFaktAbrechnung Me.GutschriftAnVeragToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.VeragAGToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.VeragCSToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.cbxAUTOMailversand = New System.Windows.Forms.CheckBox() Me.pnlTop.SuspendLayout() Me.Panel3.SuspendLayout() Me.Panel1.SuspendLayout() @@ -804,6 +805,7 @@ Partial Class usrCntlFaktAbrechnung 'Panel1 ' Me.Panel1.AutoScroll = True + Me.Panel1.Controls.Add(Me.cbxAUTOMailversand) Me.Panel1.Controls.Add(Me.Button17) Me.Panel1.Controls.Add(Me.txtTextZZ) Me.Panel1.Controls.Add(Me.dgvAnhaenge) @@ -4057,6 +4059,17 @@ Partial Class usrCntlFaktAbrechnung Me.VeragCSToolStripMenuItem.Size = New System.Drawing.Size(122, 22) Me.VeragCSToolStripMenuItem.Text = "Verag CS" ' + 'cbxAUTOMailversand + ' + Me.cbxAUTOMailversand.AutoSize = True + Me.cbxAUTOMailversand.Location = New System.Drawing.Point(697, 142) + Me.cbxAUTOMailversand.Name = "cbxAUTOMailversand" + Me.cbxAUTOMailversand.Size = New System.Drawing.Size(116, 17) + Me.cbxAUTOMailversand.TabIndex = 241 + Me.cbxAUTOMailversand.Text = "AUTO Mailversand" + Me.cbxAUTOMailversand.UseVisualStyleBackColor = True + Me.cbxAUTOMailversand.Visible = False + ' 'usrCntlFaktAbrechnung ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -4351,4 +4364,5 @@ Partial Class usrCntlFaktAbrechnung Friend WithEvents cboVorauskasse As VERAG_PROG_ALLGEMEIN.MyComboBox Friend WithEvents cboRgArt As VERAG_PROG_ALLGEMEIN.MyComboBox Friend WithEvents Label57 As Label + Friend WithEvents cbxAUTOMailversand As CheckBox End Class diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb index a759c96b..1b3119dd 100644 --- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb +++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb @@ -142,6 +142,7 @@ Public Class usrCntlFaktAbrechnung Label40.Visible = False sbLeistung._value = "" cbxOriginalPrint.Checked = False + cbxAUTOMailversand.Checked = False If RK_ID_TMP > 0 Then RECHNUNG = New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID_TMP) @@ -302,6 +303,7 @@ Public Class usrCntlFaktAbrechnung txtErfassungsnummer.Text = If(RECHNUNG.ErfassungsNr, "") cboRechnungNotiz.Text = If(RECHNUNG.Notiz, "") + cbxAUTOMailversand.Checked = RECHNUNG.Automailversand initRgArt() cboRgArt._value = RECHNUNG.Rechnungsart @@ -544,6 +546,10 @@ Public Class usrCntlFaktAbrechnung FirmaTmp = "VERAG360" End If + If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then + cbxAUTOMailversand.Visible = True + End If + cboVorauskasse.Items.Clear() cboVorauskasse.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("NEIN", 0)) cboVorauskasse.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("JA", 1)) @@ -2496,6 +2502,8 @@ Public Class usrCntlFaktAbrechnung RECHNUNG.KdAuftragsNr = cProgramFunctions.isLeerNothing(txtKdAuftragsNr.Text) + RECHNUNG.Automailversand = cbxAUTOMailversand.Checked + If RECHNUNG.Abfertigungsdatum < CDate("01.01.2000") Then RECHNUNG.Abfertigungsdatum = Now If dgvOffertenSperrliste.SelectedRows.Count > 0 Then RECHNUNG.OffertenNr = dgvOffertenSperrliste.SelectedRows(0).Cells("OffertenNr").Value 'Wenn mehrfachauswahl möcglich-> Ändern diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb index e8973501..b69d4dc0 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb @@ -130,7 +130,7 @@ Public Class cSyska_Interface 'DATEIPFAD für Stammdaten '------------------------------------------------------------------------------------------- Dim pathArchivKD = "\\datenarchiv\Datenarchiv\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\" - Dim pathKD = "\\syncluster01.verag.ost.dmn\F\BUCHHALTUNG\FIBU\Syska\" & FIRMA.Firma_ID & "\" + Dim pathKD = "\\syncluster01.verag.ost.dmn\F\FIBU\Syska\" & FIRMA.Firma_ID & "\" 'pathKD = pathArchivKD 'TEST If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then @@ -296,7 +296,7 @@ Public Class cSyska_Interface 'DATEIPFAD für Buchungsdaten '------------------------------------------------------------------------------------------- Dim pathArchiv = "\\datenarchiv\Datenarchiv\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\" - Dim path = "\\syncluster01.verag.ost.dmn\F\BUCHHALTUNG\FIBU\Syska\" & FIRMA.Firma_ID & "\" + Dim path = "\\syncluster01.verag.ost.dmn\F\FIBU\Syska\" & FIRMA.Firma_ID & "\" 'pathKD = pathArchivKD 'TEST If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then