Datenserver, faktmail, a

This commit is contained in:
2026-09-10 11:53:56 +02:00
parent 1a726d351e
commit c717b3278a
5 changed files with 271 additions and 23 deletions

View File

@@ -1414,7 +1414,7 @@ Public Class cAutomailversand
End Function
Private Function setAccountToSend(FIRMA_ID As Integer) As String
Public Function setAccountToSend(FIRMA_ID As Integer) As String
Dim tmpFirma = New VERAG_PROG_ALLGEMEIN.cFirmen(FIRMA_ID)

View File

@@ -4466,16 +4466,18 @@ Public Class cFakturierung
End Function
Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsanhangPDF As Boolean = False, Optional RechnugnskopieMDMSammelrechnung As Boolean = False, Optional AnhList As List(Of String) = Nothing, Optional RechnungsanhangCSV As Boolean = False, Optional onlyAsfinagAnhang As Boolean = False, Optional saveInTherefore As Boolean = True) As Boolean
Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsanhangPDF As Boolean = False, Optional RechnugnskopieMDMSammelrechnung As Boolean = False, Optional AnhList As List(Of String) = Nothing, Optional RechnungsanhangCSV As Boolean = False, Optional onlyAsfinagAnhang As Boolean = False, Optional saveInTherefore As Boolean = True, Optional dt_temp As DataTable = Nothing) As Boolean
'SB Nicht mehr benötigt, da RG-Nr und DruckdatumUhrzeit
Dim dt As DataTable
If SRDruckWiederholen Then
dt = getSAMMELRechnung_Dt(RechnungsNr, DruckdatumUhrzeit, "3,4,5", ) ' 3,4,5-_> irgendebbs
dt_temp = dt
Else
'Dim RG_NR = New VERAG_PROG_ALLGEMEIN.cRechnungsnummern(Firma_ID, Buchungsjahr)
'RG_NR.INCREASE_RGNR() 'für die nächste Rechnung
dt = getSAMMELRechnung_Dt(RechnungsNr, DruckdatumUhrzeit, IIf(RechnungsdruckArt = 7, "2", "2, 3, 4"), [VorschauID])
dt_temp = dt
End If
' 3-_> Anlagen gedruckt

View File

@@ -1,6 +1,8 @@
Imports System.IO
Imports GrapeCity.ActiveReports.PageReportModel
Imports iText.IO.Util
Imports Microsoft.Office.Interop
Imports sun.net.www.protocol
Imports VERAG_PROG_ALLGEMEIN
Public Class frmAbrechnungsMaske
@@ -62,13 +64,13 @@ Public Class frmAbrechnungsMaske
txtRechnungsdatumAutomail.Visible = setDefaultAutoMailversand
dtp_RD_automail.Visible = setDefaultAutoMailversand
lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand
dtp_RD_automail.Visible = setDefaultAutoMailversand
lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand
'FirmaTmp = "AMBAR"
'FirmaTmp = "AMBAR"
cboSachbearbeiter.Items.Clear()
cboSachbearbeiter.Items.Clear()
Select Case FirmaTmp
@@ -918,15 +920,17 @@ Public Class frmAbrechnungsMaske
If IsNumeric(RK_ID) Then
Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID)
Dim sammelrechnungskopieMDM As Boolean = False
Dim sammelrechnungMDMmitAnhang As Boolean = False
Dim sammelrechnungmitAnhang As Boolean = False
If RG_TMP IsNot Nothing Then
'id mitübergeben (1_> drucken, 2 Email, 3 PDF)
Dim tempPDF As String = ""
Dim listOfCSV As New List(Of String)
If RG_TMP.Sammelrechnung = 6 Then
If RG_TMP.Status = 4 Then sammelrechnungskopieMDM = True
Dim tempPDF As String = ""
Dim listOfCSV As New List(Of String)
sammelrechnungMDMmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNoCancel)
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungMDMmitAnhang, sammelrechnungskopieMDM, listOfCSV, True)
sammelrechnungmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNo)
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungmitAnhang, sammelrechnungskopieMDM, listOfCSV, True)
Select Case id
Case 1
@@ -957,16 +961,246 @@ Public Class frmAbrechnungsMaske
Else
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, id,, True,,,,,,,,,)
'sammelrechnungmitAnhang = MsgBox("Soll die Sammelrechnung mit Anhang angezeigt werden?", vbYesNo)
Select Case id
Case 1
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 3, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,)
Case 2
Try
Dim dt_temp As New DataTable
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,, listOfCSV,,,, dt_temp)
Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(RG_TMP.RechnungsKundenNr)
Dim outl As New Outlook.Application
Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
Mail = outl.CreateItem(0)
Dim auto As New cAutomailversand
Dim oAccount As Outlook.Account
Dim accountToSent = ""
accountToSent = auto.setAccountToSend(RG_TMP.Firma_ID)
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
setEmailText(RG_TMP.RechnungsLandKz, RG_TMP.Firma_ID, RG_TMP.RechnungsNr, Mail.Subject, Mail.HTMLBody, RG_TMP.Sammelrechnung, RG_TMP.BelegartenNr)
setandcheckEmpfaengerMail_SR(dt_temp, AD, Mail.To, Mail.CC, Mail.BCC, RG_TMP.Firma_ID, RG_TMP.Sammelrechnung)
Dim anhangbezeichnung = getAnhangbezeichnung(AD.LandKz, RG_TMP, RG_TMP.BelegartenNr)
Mail.Attachments.Add(tempPDF, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , RG_TMP.RechnungsNr & "_" & anhangbezeichnung)
If listOfCSV.Count > 0 Then
For Each r In listOfCSV
Dim file As New FileInfo(r)
Mail.Attachments.Add(r, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , file.Name)
Next
End If
Mail.Display()
Catch ex As Exception
MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
Process.Start(tempPDF)
End Try
Case 3 'PDF + öffnen
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,)
Process.Start(tempPDF)
End Select
End If
End If
Else
MsgBox("Bei " & cboFirma.SelectedItem.Text & " existiert keine Sammelrechnung mit der Nr: " & SR_RechnungsNr & "")
End If
End If
End Sub
Private Sub setEmailText(RechnungsLandKz As String, Firma_ID As Integer, RechnungsNr As Integer, ByRef Subject As String, ByRef TextHTML As String, ByRef SammelrechungArt As Integer, 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
Dim belegtyp As String = If(BelegartenNr = 71, "credit note", "invoice")
Select Case RechnungsLandKz
Case "TR" : spracheRechnung = "TR" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "Kredi", "Fatura")
Case "RO"
If Firma_ID = 19 Then
spracheRechnung = "RO" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "nota de credit", "factura")
End If
Case "DE", "A", "AT", "D", "CH" : spracheRechnung = "DE" : belegtyp = If(BelegartenNr = 71, "Gutschrift", "Rechnung")
Case "SRB", "HR", "SLO", "BIH", "MNE", "MK", "MO"
If Firma_ID = 19 Then
spracheRechnung = "SRB" : belegtyp = If(BelegartenNr = 71, "credit note", "invoice") 'Belegarten auf Englisch!
End If
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)
Subject = Subject.Replace("%Belegtyp%", belegtyp)
TextHTML &= r.txt_text
If Mailtext <> "" Then TextHTML &= Mailtext
TextHTML &= vbNewLine & vbNewLine
TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp)
End If
End If
TextHTML &= "<br>"
TextHTML &= "<br>"
Select Case RechnungsLandKz
Case "TR"
TextHTML &= "Saygilarimizla<br>"
Case "A", "AT", "D", "DE", "CH"
TextHTML &= "Mit freundlichen Grüßen<br>"
Case Else
TextHTML &= "Best regards<br>"
End Select
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br><br>"
TextHTML &= cFakturierung.getSignature(RechnungsLandKz, Firma_ID, True, True,,,,,, True)
End Sub
Private Function getAnhangbezeichnung(sprache As String, RECHNUNG As cRechnungsausgang, BelegartenNr As Integer, Optional onlyBelegsuebersetzung As Boolean = False)
Dim Anhangsbez = ""
If RECHNUNG IsNot Nothing Then
Select Case sprache
Case "A", "AT", "D", "DE", "CH"
If BelegartenNr = 71 Then
If onlyBelegsuebersetzung Then
Anhangsbez = "Gutschrift.pdf"
Else
Anhangsbez = "Gutschriftsanhaenge.pdf"
End If
Else
If onlyBelegsuebersetzung Then
Anhangsbez = "Rechnung.pdf"
Else
Anhangsbez = "Rechnungsanhaenge.pdf"
End If
End If
Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Kredi.pdf" Else Anhangsbez = "Fatura.pdf"
Case Else : If BelegartenNr = 71 Then Anhangsbez = "Creditnote.pdf" Else Anhangsbez = "Invoice.pdf"
End Select
Else
Select Case sprache
Case "A", "AT", "D", "DE", "CH" : If BelegartenNr = 71 Then Anhangsbez = "Sammelgutschrift.pdf" Else Anhangsbez = "Sammelrechnung.pdf"
Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Toplukredi.pdf" Else Anhangsbez = "Toplufatura.pdf"
Case Else : If BelegartenNr = 71 Then Anhangsbez = "Collectivecreditnote.pdf" Else Anhangsbez = "Collectiveinvoice.pdf"
End Select
End If
Return Anhangsbez
End Function
Public Shared Function setandcheckEmpfaengerMail_SR(ByRef SR_DT As DataTable, ByRef AD As cAdressen, ByRef EMAILTMP As String, ByRef EMAILTMPCC As String, ByRef EMAILTMPBCC As String, ByRef FirmaID As Integer, ByRef SammelrechungArt As String) As String
If SammelrechungArt <> 6 Then
Dim email_receipt As String = ""
Dim allAtilla = IIf(FirmaID = 7, True, False)
If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then
For Each r In SR_DT.Rows
If "4801" <> r("FilialenNr") And "4802" <> r("FilialenNr") Then
allAtilla = False
Exit For
End If
Next
End If
email_receipt = IIf(allAtilla, VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)"), "")
EMAILTMP = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an"), email_receipt) 'VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an")
EMAILTMPCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an (ATILLA)"))
EMAILTMPBCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an (ATILLA)"))
Else
If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";"
If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";"
End If
If EMAILTMP = "" And EMAILTMPCC = "" And EMAILTMPBCC = "" Then
If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";"
If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";"
End If
Return EMAILTMP & EMAILTMPCC
End Function
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim f As New frmFaktAufschubSuche(False)
f.Show(Me)

View File

@@ -195,7 +195,9 @@ Public Class frmFaktEmail
If RECHNUNG.FilialenNr = "4801" Or RECHNUNG.FilialenNr = "4802" Then email_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)")
End If
If Firma_ID = 24 Then
cbxMergeRg.Checked = False
End If
Dim EMAILTMP = ""
Dim EMAILTMPCC = ""

View File

@@ -2428,17 +2428,27 @@ Public Class DATENVERVER_OPTIONS
kdnr_path = kdnr
End If
If kategorie <> "" Then
Dim dir = ""
dir &= rootDir
dir &= kategorie & "\"
dir &= If(ordner IsNot Nothing AndAlso ordner <> "", ordner & "\", "")
dir &= If(kdnr_path <> "", kdnr_path & "\", "")
dir &= If(da_uOrdner1 IsNot Nothing AndAlso da_uOrdner1 <> "", da_uOrdner1 & "\", "")
dir &= If(da_uOrdner2 IsNot Nothing AndAlso da_uOrdner2 <> "", da_uOrdner2 & "\", "")
dir &= If(da_uOrdner3 IsNot Nothing AndAlso da_uOrdner3 <> "", da_uOrdner3 & "\", "")
Dim dir As String = Path.Combine(
rootDir,
kategorie,
If(String.IsNullOrWhiteSpace(ordner), "", ordner),
If(String.IsNullOrWhiteSpace(kdnr_path), "", kdnr_path),
If(String.IsNullOrWhiteSpace(da_uOrdner1), "", da_uOrdner1),
If(String.IsNullOrWhiteSpace(da_uOrdner2), "", da_uOrdner2),
If(String.IsNullOrWhiteSpace(da_uOrdner3), "", da_uOrdner3))
If Not onlyordner Then
If Not System.IO.Directory.Exists(dir) Then
System.IO.Directory.CreateDirectory(dir)
Try
If Not Directory.Exists(dir) Then
Directory.CreateDirectory(dir)
End If
Catch ex As UnauthorizedAccessException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & "Keine Berechtigung für den Ordner: " & dir & Environment.NewLine & "Windows-Benutzer: " & System.Security.Principal.WindowsIdentity.GetCurrent().Name & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Catch ex As IOException
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler beim Zugriff auf den Ordner: " & dir & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End If
Dim zusatz = "" : Dim zusatzcnt = 1
While System.IO.File.Exists(dir & dateiName & zusatz & If(bezeichnung.ToString.EndsWith(endung), "", endung))