From 0771d5af285cd43675687977e7e1e5984f491360 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 10 May 2021 14:30:05 +0200 Subject: [PATCH] Jobs/ZUGFeRD: Handle Errors while moving files, send mail when unhandled exceptions occur. --- Modules.Jobs/EDMI/ZUGFeRD/EmailData.vb | 2 +- Modules.Jobs/EDMI/ZUGFeRD/EmailFunctions.vb | 10 +- Modules.Jobs/EDMI/ZUGFeRD/EmailStrings.vb | 16 ++- .../EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb | 108 ++++++++++++------ 4 files changed, 96 insertions(+), 40 deletions(-) diff --git a/Modules.Jobs/EDMI/ZUGFeRD/EmailData.vb b/Modules.Jobs/EDMI/ZUGFeRD/EmailData.vb index ed37e543..65d2ad7c 100644 --- a/Modules.Jobs/EDMI/ZUGFeRD/EmailData.vb +++ b/Modules.Jobs/EDMI/ZUGFeRD/EmailData.vb @@ -1,5 +1,5 @@ Public Class EmailData - Public Attachment As String + Public Attachment As String = "" Public Subject As String Public From As String End Class \ No newline at end of file diff --git a/Modules.Jobs/EDMI/ZUGFeRD/EmailFunctions.vb b/Modules.Jobs/EDMI/ZUGFeRD/EmailFunctions.vb index 57436c0d..79c2ab5c 100644 --- a/Modules.Jobs/EDMI/ZUGFeRD/EmailFunctions.vb +++ b/Modules.Jobs/EDMI/ZUGFeRD/EmailFunctions.vb @@ -27,7 +27,7 @@ Public Class EmailFunctions Dim oJobId = RandomValue(1, 10000) Dim oReference = MessageId Dim oEmailTo = "" - Dim oSubject = EmailStrings.EMAIL_SUBJECT + Dim oSubject = EmailStrings.EMAIL_SUBJECT_REJECTED Dim oAccountId = 1 Dim oCreatedWho = "ZUGFeRD Service" Dim oFinalBodyText = String.Format(EmailStrings.EMAIL_WRAPPING_TEXT, BodyText) @@ -63,7 +63,7 @@ Public Class EmailFunctions _logger.Error(ex) End Try End Sub - Public Sub AddToEmailQueueMSSQL(MessageId As String, BodyText As String, pEmailData As EmailData, SourceProcedure As String, pEmailAccountId As Integer, Transaction As SqlTransaction) + Public Sub AddToEmailQueueMSSQL(MessageId As String, BodyText As String, pEmailData As EmailData, SourceProcedure As String, pEmailAccountId As Integer) If pEmailData Is Nothing Then _logger.Warn("EmailData is empty. Email will not be sent!") Exit Sub @@ -73,7 +73,7 @@ Public Class EmailFunctions Dim oJobId = RandomValue(1, 10000) Dim oReference = MessageId Dim oEmailTo = "" - Dim oSubject = EmailStrings.EMAIL_SUBJECT + Dim oSubject = EmailStrings.EMAIL_SUBJECT_REJECTED Dim oCreatedWho = "ZUGFeRD Service" Dim oFinalBodyText = String.Format(EmailStrings.EMAIL_WRAPPING_TEXT, BodyText) @@ -98,7 +98,7 @@ Public Class EmailFunctions _logger.Debug("Subject: {0}", oSubject) _logger.Debug("Body {0}", oFinalBodyText) Dim osql = $"Select MAX(GUID) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{MessageId}'" - Dim oHistoryID = _mssql.GetScalarValue(osql, Transaction) + Dim oHistoryID = _mssql.GetScalarValue(osql) 'osql = $"select * from TBEMLP_EMAIL_OUT where REFERENCE_ID = {oHistoryID} and EMAIL_ADRESS = '{oEmailTo}' and EMAIL_SUBJ = '{oSubject}'" @@ -129,7 +129,7 @@ Public Class EmailFunctions ,'{SourceProcedure}' ,'{oCreatedWho}' ,'{oAttachment}')" - _mssql.ExecuteNonQuery(oInsert, Transaction) + _mssql.ExecuteNonQuery(oInsert) Else 'If oDTResult.Rows.Count = 0 Then ' _logger.Debug("Email has already been sent!!") diff --git a/Modules.Jobs/EDMI/ZUGFeRD/EmailStrings.vb b/Modules.Jobs/EDMI/ZUGFeRD/EmailStrings.vb index 9e23ef5f..2b94fb59 100644 --- a/Modules.Jobs/EDMI/ZUGFeRD/EmailStrings.vb +++ b/Modules.Jobs/EDMI/ZUGFeRD/EmailStrings.vb @@ -1,14 +1,28 @@ Public Class EmailStrings + Public Const EMAIL_WRAPPING_TEXT = "Sehr geehrte Damen und Herren,
das WISAG-Portal zur Verarbeitung der Eingangsrechnungen im ZUGFeRD-Format konnte die von Ihnen gesandte Rechnung leider nicht verarbeiten!

Grund: {0}

Bitte prüfen Sie die Datei und nehmen Sie bei Bedarf mit uns Kontakt auf.

Vielen Dank für Ihr Verständnis.
Mit freundlichen Grüßen
Ihre IT-Abteilung" - Public Const EMAIL_SUBJECT = "WISAG ZUGFeRD Portal: Beleg abgelehnt" + + Public Const EMAIL_SUBJECT_REJECTED = "WISAG ZUGFeRD Portal: Beleg abgelehnt" + Public Const EMAIL_SUBJECT_EXCEPTION = "WISAG ZUGFeRD Portal: Unbehandelte Ausnahme" + + Public Const EMAIL_UNHANDLED_EXCEPTION = """ +

Beim Verarbeiten der Datei mit der Message ID '{0}' ist ein schwerer Fehler aufgetreten.

+

Fehlerbeschreibung: {1}

+
{2}
+ """ + Public Const EMAIL_MISSINGPROPERTIES_1 = "

Die angehängte Datei entspricht nicht dem WISAG ZUGFeRD-Format: {0}

" Public Const EMAIL_MISSINGPROPERTIES_2 = "

Die folgenden Eigenschaften wurden als ERFORDERLICH eingestuft, wurden aber nicht gefunden:

" + Public Const EMAIL_MD5_ERROR = "

Die von Ihnen gesendete Rechnung wurde bereits von unserem System verarbeitet.

" + Public Const EMAIL_TOO_MUCH_FERDS = "

Ihre Email enthielt mehr als ein ZUGFeRD-Dokument.

" + Public Const EMAIL_NO_FERDS = "

Ihre Email enthielt keine ZUGFeRD-Dokumente.

" + Public Const EMAIL_INVALID_DOCUMENT = """

Ihre Email enthielt ein ZUGFeRD Dokument, welches aber inkorrekt formatiert wurde.

Mögliche Gründe für ein inkorrektes Format: