From 09b52f441b6bd5ee13ab4c77ee92a09b486d0ec0 Mon Sep 17 00:00:00 2001 From: pitzm Date: Wed, 19 Jun 2024 12:40:46 +0200 Subject: [PATCH] Wir wollen die Nummer, nicht den Text. --- Jobs/ZUGFeRD/ImportZUGFeRDFiles.vb | 83 ++++++++++++++---------------- 1 file changed, 39 insertions(+), 44 deletions(-) diff --git a/Jobs/ZUGFeRD/ImportZUGFeRDFiles.vb b/Jobs/ZUGFeRD/ImportZUGFeRDFiles.vb index 36cdde13..d4f24de7 100644 --- a/Jobs/ZUGFeRD/ImportZUGFeRDFiles.vb +++ b/Jobs/ZUGFeRD/ImportZUGFeRDFiles.vb @@ -216,12 +216,10 @@ Public Class ImportZUGFeRDFiles Catch ex As ValidationException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.ValidationException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.ValidationException) 'Dim oMessage = "REJECTED - ZUGFeRD yes but formal validation failed!" - _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString) + _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oRejectionCodeString) Dim oErrors = ex.ValidationErrors Dim oErrorList As String = "" @@ -234,97 +232,85 @@ Public Class ImportZUGFeRDFiles Dim oBody = String.Format(EmailStrings.EMAIL_VALIDATION_ERROR, oErrorList) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "ValidationException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.ValidationException, oErrorListDE, oErrorList) - AddRejectedState(oMessageId, oErrorCodeString, "Die Rechnungsvalidierung ist fehlgeschlagen!", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Die Rechnungsvalidierung ist fehlgeschlagen!", "", oSQLTransaction) Catch ex As MD5HashException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.MD5HashException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.MD5HashException) ' When MD5HashException is thrown, we don't have a MD5Hash yet. - ' That 's why we set it to String.Empty here. + ' Thats why we set it to String.Empty here. 'Dim oMessage = "REJECTED - Already processed (MD5Hash)" - _history.Update_HistoryEntry(oMessageId, String.Empty, oErrorCodeString) + _history.Update_HistoryEntry(oMessageId, String.Empty, oRejectionCodeString) Dim oBody = String.Format(EmailStrings.EMAIL_MD5_ERROR, ex.FileName) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "MD5HashException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.MD5HashException, ex.FileName, "") - AddRejectedState(oMessageId, oErrorCodeString, "Die gesendete Rechnung wurde bereits verarbeitet!", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Die gesendete Rechnung wurde bereits verarbeitet!", "", oSQLTransaction) Catch ex As UnsupportedFerdException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.UnsupportedFerdException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.UnsupportedFerdException) ' When UnsupportedFerdException is thrown, we don't have a MD5Hash yet. - ' That 's why we set it to String.Empty here. - _history.Update_HistoryEntry(oMessageId, String.Empty, oErrorCodeString) + ' Thats why we set it to String.Empty here. + _history.Update_HistoryEntry(oMessageId, String.Empty, oRejectionCodeString) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) Dim oBody As String = String.Format(EmailStrings.EMAIL_UNSUPPORTED_DOCUMENT, oEmailData.Subject, ex.XmlFile) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "UnsupportedFerdException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnsupportedFerdException, ex.XmlFile, "") - AddRejectedState(oMessageId, oErrorCodeString, "Nicht unterstütztes Datenformat", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Nicht unterstütztes Datenformat", "", oSQLTransaction) Catch ex As InvalidFerdException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.InvalidFerdException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.InvalidFerdException) ' When InvalidFerdException is thrown, we don't have a MD5Hash yet. - ' That 's why we set it to String.Empty here. - _history.Update_HistoryEntry(oMessageId, String.Empty, oErrorCodeString) + ' Thats why we set it to String.Empty here. + _history.Update_HistoryEntry(oMessageId, String.Empty, oRejectionCodeString) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) Dim oBody = String.Format(EmailStrings.EMAIL_INVALID_DOCUMENT, oEmailData.Subject) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "InvalidFerdException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.InvalidFerdException, "", "") - AddRejectedState(oMessageId, oErrorCodeString, "Inkorrektes Format", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Inkorrektes Format", "", oSQLTransaction) Catch ex As TooMuchFerdsException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.TooMuchFerdsException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.TooMuchFerdsException) - _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString) + _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oRejectionCodeString) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) Dim oBody = String.Format(EmailStrings.EMAIL_TOO_MUCH_FERDS, oEmailData.Subject) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "TooMuchFerdsException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.TooMuchFerdsException, "", "") - AddRejectedState(oMessageId, oErrorCodeString, "Email enthielt mehr als ein ZUGFeRD-Dokument", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt mehr als ein ZUGFeRD-Dokument", "", oSQLTransaction) Catch ex As NoFerdsException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.NoFerdsException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.NoFerdsException) - _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString) + _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oRejectionCodeString) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) Dim oBody = String.Format(EmailStrings.EMAIL_NO_FERDS, oEmailData.Subject) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "NoFerdsException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.NoFerdsException, "", "") - AddRejectedState(oMessageId, oErrorCodeString, "Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction) Catch ex As MissingValueException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.MissingValueException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.MissingValueException) - _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString) + _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oRejectionCodeString) Dim oMissingFieldList As String = "" For Each oMissingFieldDescription In ex.MissingProperties @@ -336,16 +322,14 @@ Public Class ImportZUGFeRDFiles Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "MissingValueException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.MissingValueException, oOrgFilename, oMissingFieldList) - AddRejectedState(oMessageId, oErrorCodeString, "Es fehlten ZugferdSpezifikationen", "", oSQLTransaction) + AddRejectedState(oMessageId, oRejectionCodeString, "Es fehlten ZugferdSpezifikationen", "", oSQLTransaction) Catch ex As FileSizeLimitReachedException _logger.Error(ex) - Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.FileSizeLimitReachedException}" - Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'" - _logger.Error(oErrorMessage) + Dim oRejectionCodeString = GetRejectionCodeString(oMessageId, ErrorCode.FileSizeLimitReachedException) - _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString) + _history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oRejectionCodeString) Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId) @@ -356,8 +340,7 @@ Public Class ImportZUGFeRDFiles Dim oBody = String.Format(EmailStrings.EMAIL_FILE_SIZE_REACHED, oArgs.MaxAttachmentSizeInMegaBytes, oOrgFilename) _email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "FileSizeLimitReachedException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.FileSizeLimitReachedException, oArgs.MaxAttachmentSizeInMegaBytes, oOrgFilename) - AddRejectedState(oMessageId, oErrorCodeString, "Erlaubte Dateigröße überschritten", "", oSQLTransaction) - + AddRejectedState(oMessageId, oRejectionCodeString, "Erlaubte Dateigröße überschritten", "", oSQLTransaction) Catch ex As NoFerdsAlternateException ' TODO: Maybe dont even log this 'error', since it's not really an error and it might happen *A LOT* @@ -456,6 +439,18 @@ Public Class ImportZUGFeRDFiles End Try End Sub + Private Function GetRejectionCodeString(pMessageId As String, pRejectionCode As ErrorCode) As String + + Dim intCode As Integer = DirectCast(pRejectionCode, Integer) + Dim oRejectionCodeString = $"{EmailStrings.ErrorCodePraefix}{intCode}" + + ' Wir wollen im error-Log den Code und die MessageID haben, um die es geht + Dim oInfoMessage = $"Rejection {oRejectionCodeString} triggered for '{pMessageId}'" + _logger.Error(oInfoMessage) + + Return oRejectionCodeString + End Function + Private Function ProcessFile(pMessageId As String, pEmailData As EmailData, pZugferdFiles As Integer, oFile As FileInfo, oConnections As DatabaseConnections, pArgs As WorkerArgs) As ProcessFileResult Dim oDocument As ZUGFeRDInterface.ZugferdResult Dim oResult As New ProcessFileResult()