MDM Datenverarbeitung, automailfakt.

This commit is contained in:
2025-04-18 15:37:01 +02:00
parent 9df391eebe
commit 6d48a78f84
7 changed files with 88 additions and 69 deletions

View File

@@ -1,7 +1,5 @@
 
Imports GrapeCity.DataVisualization.TypeScript
Imports Microsoft.Office.Interop Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Outlook
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
Public Class cAutomailversand Public Class cAutomailversand
@@ -117,7 +115,7 @@ Public Class cAutomailversand
If Not (MailTo = "" AndAlso MailtoCC = "" AndAlso MailtoCC = "") Then If Not (MailTo = "" AndAlso MailtoCC = "" AndAlso MailtoBCC = "") Then
Dim Mailsubject As String = "" Dim Mailsubject As String = ""
Dim HTMLMail As String = "" Dim HTMLMail As String = ""
@@ -128,9 +126,11 @@ Public Class cAutomailversand
If doRechnung(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs) Then If doRechnung(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs) Then
loadAndSetAnhaenge(SR_DT, ATTACHMENTS, listPDFs) loadAndSetAnhaenge(SR_DT, ATTACHMENTS, listPDFs)
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
If mailoeffnen Then If mailoeffnen Then
Dim Mail = createMail(Mailsubject, HTMLMail, ATTACHMENTS, MailTo, MailtoCC, MailtoBCC, FirmaID) Dim Mail = createMail(Mailsubject, HTMLMail, ATTACHMENTS, MailTo, MailtoCC, MailtoBCC, FirmaID)
If setLog(row.Item("RechnungsKundenNr"),,,,,,, Mail) Then If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum,,,,,,, Mail) Then
Mail.Display() Mail.Display()
End If End If
@@ -138,27 +138,20 @@ Public Class cAutomailversand
Dim TextHTML = "" Dim TextHTML = ""
TextHTML &= HTMLMail TextHTML &= HTMLMail
TextHTML &= "<br>" TextHTML &= cFakturierung.getSignature("DE", FirmaID, True, True,,,,, True)
TextHTML &= "<br>"
TextHTML &= "Mit freundlichen Grüßen<br>"
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br>"
TextHTML &= "<br>"
TextHTML &= cFakturierung.getSignature("DE", FirmaID, True, True)
HTMLMail = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>" HTMLMail = "<div style=""font-family:Calibri, Arial"">" & TextHTML & "</div>"
If setLog(row.Item("RechnungsKundenNr"), ATTACHMENTS, Mailsubject, HTMLMail, MailTo, MailtoCC, MailtoBCC) Then If setLog(SR_DT, row, FirmaID, SammelrechungArt, Rechnungsdatum, ATTACHMENTS, Mailsubject, HTMLMail, MailTo, MailtoCC, MailtoBCC) Then
End If End If
End If End If
End If End If
End If End If
Next Next
Catch ex As System.Exception 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) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
@@ -279,9 +272,11 @@ Public Class cAutomailversand
End Sub End Sub
Private Function setLog(kdNr As Integer, 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 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 mailcreated As Boolean = False Dim mailcreated As Boolean = False
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
Dim EMails As String = "" Dim EMails As String = ""
Dim EMails_CC As String = "" Dim EMails_CC As String = ""
@@ -307,8 +302,20 @@ Public Class cAutomailversand
End If End If
Dim AbfertigungsNr As Integer
Dim FilialenNr As Integer
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.AVISO_OUT_BELEGMAIL, "SAMMELRECHNUNG-MDM",,, kdNr) If SR_DT.Rows.Count > 0 Then
For Each r As DataRow In SR_DT.Rows
AbfertigungsNr = IIf(Not IsDBNull(r.Item("AbfertigungsNr")) AndAlso IsNumeric(r.Item("AbfertigungsNr")), CInt(r.Item("AbfertigungsNr")), 0)
FilialenNr = IIf(Not IsDBNull(r.Item("FilialenNr")) AndAlso IsNumeric(r.Item("FilialenNr")), CInt(r.Item("FilialenNr")), 0)
Next
End If
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)
API.api_EMail = EMails API.api_EMail = EMails
API.api_EMailCC = EMails_CC API.api_EMailCC = EMails_CC
@@ -334,11 +341,16 @@ Public Class cAutomailversand
mailcreated = True mailcreated = True
Else Else
API.UPDTAE_ERR() API.UPDTAE_ERR()
sql.doSQL("update Rechnungsausgang set Status = 2 where Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & Sammelrechnungsart & "' And CONVERT(DATE,Rechnungsausgang.Abfertigungsdatum,104) = '" & Rechnungsdatum.ToShortDateString & "'
And isnull(Rechnungsausgang.Automailversand,0) = 1 And RechnungsNr > 0 And RechnungsKundenNr = " & row.Item("RechnungsKundenNr") & " And Status = 4", "FMZOLL")
Return mailcreated Return mailcreated
End If End If
End If End If
Return mailcreated Return mailcreated

View File

@@ -2466,14 +2466,16 @@ Public Class cFakturierung
Return getSignature(RECHNUNG.RechnungsLandKz, RECHNUNG.Firma_ID) Return getSignature(RECHNUNG.RechnungsLandKz, RECHNUNG.Firma_ID)
End Function End Function
Shared Function getSignature(Optional landKz = "", Optional firma = -1, Optional individuell = False, Optional displayFirmenmane = True, Optional special = "", Optional additionalLine = "", Optional departmentmailadress = True, Optional fakturierung = False) As String Shared Function getSignature(Optional landKz = "", Optional firma = -1, Optional individuell = False, Optional displayFirmenmane = True, Optional special = "", Optional additionalLine = "", Optional departmentmailadress = True, Optional fakturierung = False, Optional firmenSignature = False) As String
getSignature = "" getSignature = ""
firma = getFirmaNr(firma) firma = getFirmaNr(firma)
Dim imgsrc = System.IO.Path.GetFullPath(Application.StartupPath & "\Resources\").Replace("\", "/") Dim imgsrc = System.IO.Path.GetFullPath(Application.StartupPath & "\Resources\").Replace("\", "/")
Dim emailindividuell = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email Dim emailindividuell As String = ""
If Not firmenSignature Then emailindividuell = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email
If additionalLine <> "" Then additionalLine = "<div style=""font-size:12px"">" & additionalLine & "</div>" If additionalLine <> "" Then additionalLine = "<div style=""font-size:12px"">" & additionalLine & "</div>"
@@ -2524,7 +2526,7 @@ Public Class cFakturierung
Case 19 'VERAG360 Case 19 'VERAG360
getSignature &= "<img width=""250"" height=""50"" src=""" & imgsrc & "VERAG_360.jpg""/>" getSignature &= "<img width=""250"" height=""50"" src=""" & imgsrc & "VERAG_360.jpg""/>"
If displayFirmenmane Then getSignature &= "<br><b>VERAG 360 GmbH</b><br>" If displayFirmenmane Then getSignature &= "<br><b>VERAG 360 GmbH</b><br>"
getSignature &= "<div style=""font-size:12px"">A 4975 Suben, Nr. 100 <br><b>T</b> +43 7711 2777-0 | <b>F</b> +43 7711 31 073 | <b>@</b> " & If(individuell, emailindividuell, "mmd@verag.ag") & " | www.verag.ag | FN 544732b</div>" getSignature &= "<div style=""font-size:12px"">A 4975 Suben, Nr. 100 <br><b>T</b> +43 7711 2777-0 | <b>F</b> +43 7711 31 073 | <b>@</b> " & If(individuell, If(firmenSignature, "mmdabrechnung@verag.ag", emailindividuell), "mmd@verag.ag") & " | www.verag.ag | FN 544732b</div>"
If additionalLine <> "" Then getSignature &= vbNewLine & additionalLine & vbNewLine If additionalLine <> "" Then getSignature &= vbNewLine & additionalLine & vbNewLine
Case 26 'VERAG-UNISPED Case 26 'VERAG-UNISPED
getSignature &= "<img width=""250"" height=""50"" src=""" & imgsrc & "VERAG-UNISPED-Logo.jpg""/>" getSignature &= "<img width=""250"" height=""50"" src=""" & imgsrc & "VERAG-UNISPED-Logo.jpg""/>"

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.3.8.8")> <Assembly: AssemblyVersion("1.3.8.9")>
<Assembly: AssemblyFileVersion("1.3.8.8")> <Assembly: AssemblyFileVersion("1.3.8.9")>

View File

@@ -889,10 +889,6 @@
<Compile Include="mdm\Besuchsberichte\usrCntlBesuchsberichte.vb"> <Compile Include="mdm\Besuchsberichte\usrCntlBesuchsberichte.vb">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="mdm\frmDatumsabfrage.Designer.vb">
<DependentUpon>frmDatumsabfrage.vb</DependentUpon>
</Compile>
<Compile Include="mdm\frmDatumsabfrage.vb" />
<Compile Include="mdm\frmMDMLieferantenrechnungen.Designer.vb"> <Compile Include="mdm\frmMDMLieferantenrechnungen.Designer.vb">
<DependentUpon>frmMDMLieferantenrechnungen.vb</DependentUpon> <DependentUpon>frmMDMLieferantenrechnungen.vb</DependentUpon>
</Compile> </Compile>
@@ -3419,9 +3415,6 @@
<EmbeddedResource Include="mdm\Besuchsberichte\usrCntlBesuchsberichte.resx"> <EmbeddedResource Include="mdm\Besuchsberichte\usrCntlBesuchsberichte.resx">
<DependentUpon>usrCntlBesuchsberichte.vb</DependentUpon> <DependentUpon>usrCntlBesuchsberichte.vb</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="mdm\frmDatumsabfrage.resx">
<DependentUpon>frmDatumsabfrage.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="mdm\frmMDMLieferantenrechnungen.resx"> <EmbeddedResource Include="mdm\frmMDMLieferantenrechnungen.resx">
<DependentUpon>frmMDMLieferantenrechnungen.vb</DependentUpon> <DependentUpon>frmMDMLieferantenrechnungen.vb</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

View File

@@ -77,7 +77,7 @@ Public Class frmLogin
ElseIf PARAM = "SAMMELRECHNUNG_AUTOSENT" Then ElseIf PARAM = "SAMMELRECHNUNG_AUTOSENT" Then
Dim SRT_ART As Integer = 6 Dim SRT_ART As Integer = 6
Dim REDat As Date Dim REDat As New Date(2025, 3, 15)
Dim FirmaID As Integer = 19 Dim FirmaID As Integer = 19
If (parameter.Count - 1) >= 4 Then 'Höher als 1 weil der index 0 der Pfad zum programm ist If (parameter.Count - 1) >= 4 Then 'Höher als 1 weil der index 0 der Pfad zum programm ist
@@ -91,10 +91,6 @@ Public Class frmLogin
Dim func As New cAutomailversand Dim func As New cAutomailversand
func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID) func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID)
'Dim f As New c()
'f.sendMailSammelrechnung(,,)
End If End If

View File

@@ -1,5 +1,6 @@
Imports System.Data.OleDb Imports System.Data.OleDb
Imports System.IO Imports System.IO
Imports com.sun.xml.internal.ws.api.message
Imports itextsharp.text.pdf Imports itextsharp.text.pdf
Imports MDM_Worker Imports MDM_Worker
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
@@ -1127,7 +1128,7 @@ Public Class frmMDMDatenverarbetiung
INNER JOIN (((Adressen INNER JOIN tblUTAImportNew ON Adressen.UTAKundenNr = tblUTAImportNew.Kundennummer) INNER JOIN (((Adressen INNER JOIN tblUTAImportNew ON Adressen.UTAKundenNr = tblUTAImportNew.Kundennummer)
INNER JOIN Offertenpositionen ON Adressen.AdressenNr = Offertenpositionen.KundenNr) INNER JOIN Offertenpositionen ON Adressen.AdressenNr = Offertenpositionen.KundenNr)
INNER JOIN tblUTALeistungen ON (tblUTALeistungen.VERAG_LeistungsNr = Offertenpositionen.LeistungsNr) AND (tblUTALeistungen.VERAG_OffertenNr = Offertenpositionen.OffertenNr) AND (tblUTAImportNew.Lieferland = tblUTALeistungen.Lieferland) AND (tblUTAImportNew.Fakturierwarenart = tblUTALeistungen.Fakturierwarenart)) ON tblUTAFakturierwarenarten.Fakturierwarenart = tblUTALeistungen.Fakturierwarenart INNER JOIN tblUTALeistungen ON (tblUTALeistungen.VERAG_LeistungsNr = Offertenpositionen.LeistungsNr) AND (tblUTALeistungen.VERAG_OffertenNr = Offertenpositionen.OffertenNr) AND (tblUTAImportNew.Lieferland = tblUTALeistungen.Lieferland) AND (tblUTAImportNew.Fakturierwarenart = tblUTALeistungen.Fakturierwarenart)) ON tblUTAFakturierwarenarten.Fakturierwarenart = tblUTALeistungen.Fakturierwarenart
where isnull(charged,0) = 0 and cast([Rechnungsdatum] as date) = '" & DateTimePicker2.Text & "' and Adressen.AdressenNr not in(756150, 711104) " & IIf(test, " and KundenNr = 450018 ", "") & where isnull(charged,0) = 0 and cast([Rechnungsdatum] as date) = '" & DateTimePicker2.Text & "' and Adressen.AdressenNr not in(756150, 711104) " & IIf(test, " and KundenNr = 402352 or KundenNr = 402421 ", "") &
" group by Kundennummer, KundenNr, UTAExportCSV,Rechnungsdruck" " group by Kundennummer, KundenNr, UTAExportCSV,Rechnungsdruck"
Dim dt_Main As DataTable = SQL.loadDgvBySql_Param(SQLStr, "FMZOLL", 1200) Dim dt_Main As DataTable = SQL.loadDgvBySql_Param(SQLStr, "FMZOLL", 1200)
@@ -1203,44 +1204,58 @@ Public Class frmMDMDatenverarbetiung
If Not gen_RECHNUNG_BySPEDBUCH(uta("Customer Nr"), SPEDBUCH, "UTA",,,, RECHNUNG) Then verarbOK = False If Not gen_RECHNUNG_BySPEDBUCH(uta("Customer Nr"), SPEDBUCH, "UTA",,,, RECHNUNG) Then verarbOK = False
Dim pathFile = genUTAAttachmentByKdNr(uta("Customer Nr"), uta("Customer ID"), dir, datPloseAnhang.Value) Dim pathFile = genUTAAttachmentByKdNr(uta("Customer Nr"), uta("Customer ID"), dir, datPloseAnhang.Value)
If Not AddAttachementToRE(pathFile, uta("Customer Nr"), RECHNUNG, "UTA") Then verarbOK = False If Not AddAttachementToRE(pathFile, uta("Customer Nr"), RECHNUNG, "UTA") Then verarbOK = False
Dim customerNrwithCSV As Integer = distinctDT_CSV.AsEnumerable().Where(Function(res) res.Field(Of Integer)("Customer ID") = uta("Customer ID")).Select(Function(res) res.Field(Of Integer)("Customer Nr")).FirstOrDefault()
If customerNrwithCSV > 0 Then
For Each f In Directory.GetFiles(dir)
If f.Contains(customerNrwithCSV & "_Maut_UTA.csv") Then
Dim FileCSV = New FileInfo(f)
If Not AddAttachementToRE(FileCSV.FullName, uta("Customer Nr"), RECHNUNG, "UTA") Then
verarbOK = False
Else
Exit For
End If
End If
Next
End If
If verarbOK Then If verarbOK Then
'UPDATE Fakturiert 'UPDATE Fakturiert
SQL.doSQL("UPDATE [tblUTAImportNew] set chargedDatetime=GETDATE() where chargedDatetime is null and [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & uta("Customer ID"), "FMZOLL") SQL.doSQL("UPDATE [tblUTAImportNew] set chargedDatetime=GETDATE() where chargedDatetime is null and [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & uta("Customer ID"), "FMZOLL")
End If End If
If True Then 'cnt Mod 10 = 0 Then If True Then 'cnt Mod 10 = 0 Then
txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt_Main.Rows.Count txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt_Main.Rows.Count
Dim proz As Double = (cnt / dt_Main.Rows.Count) * 100 Dim proz As Double = (cnt / dt_Main.Rows.Count) * 100
pbPloseAnh_Proz.Value = proz pbPloseAnh_Proz.Value = proz
lblPloseAnh_Proz.Text = proz.ToString("N2") & " %" lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
'GroupBox12.Refresh() 'GroupBox12.Refresh()
My.Application.DoEvents() My.Application.DoEvents()
End If End If
cnt += 1 cnt += 1
Next Next
If test Then Return True
If test Then Return True ' ANHÄNGE WERDEN NCIHT BENÖTIGT::
'Alle Alangen im foglenden VZ löschen und die aktuellen kopieren
' ANHÄNGE WERDEN NCIHT BENÖTIGT:: Dim dirAnhang = IIf(test, utaParam.ANLAGEN & "TEST\", utaParam.ANLAGEN)
'Alle Alangen im foglenden VZ löschen und die aktuellen kopieren If Directory.Exists(dirAnhang) Then 'Directory.Delete(dirAnhang, True)
Dim dirAnhang = IIf(test, utaParam.ANLAGEN & "TEST\", utaParam.ANLAGEN) For Each f In Directory.GetFiles(dirAnhang)
If Directory.Exists(dirAnhang) Then 'Directory.Delete(dirAnhang, True) File.Delete(f)
For Each f In Directory.GetFiles(dirAnhang) Next
File.Delete(f) End If
Next If Not Directory.Exists(dirAnhang) Then Directory.CreateDirectory(dirAnhang)
End If For Each f In Directory.GetFiles(dir)
If Not Directory.Exists(dirAnhang) Then Directory.CreateDirectory(dirAnhang) File.Copy(f, dirAnhang & (New FileInfo(f)).Name, True)
For Each f In Directory.GetFiles(dir) Next
File.Copy(f, dirAnhang & (New FileInfo(f)).Name, True) pbPloseAnh_Proz.Value = 100
Next txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count
pbPloseAnh_Proz.Value = 100 lblPloseAnh_Proz.Text = "100.00 %"
txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count Return True
lblPloseAnh_Proz.Text = "100.00 %" End If
Return True Return False
End If
Return False
End Function End Function
Function genRGAtt_MSE(mseParam As cMSEAPI) As Boolean Function genRGAtt_MSE(mseParam As cMSEAPI) As Boolean
Dim top = "" Dim top = ""

View File

@@ -26,6 +26,7 @@ Public Enum cAPI_ART
AVISO_IN_MSE = 80 AVISO_IN_MSE = 80
SDL_OUT_FA = 81 SDL_OUT_FA = 81
SDL_OUT_SAMMELRECHNUNG = 82
End Enum End Enum