Original-Dateiname aus TBEMLP_HISTORY_ATTACHMENT auslesen für Ablehnungsmails
This commit is contained in:
parent
d54001d73b
commit
03b374ba17
@ -72,12 +72,7 @@ Public Class HashFunctions
|
||||
|
||||
End Try
|
||||
|
||||
' Try to get the original filename from Attachment table
|
||||
' If this fails, falls back to the new filename (<msgid>~Attm<i>.ext)
|
||||
Dim oSQL = $"SELECT EMAIL_ATTMT FROM TBEMLP_HISTORY_ATTACHMENT WHERE EMAIL_ATTMT_INDEX = '{pFile.Name}'"
|
||||
Dim oEmailAttachment = Database.GetScalarValue(oSQL, MSSQLServer.TransactionMode.NoTransaction)
|
||||
Dim oOriginalName = ObjectEx.NotNull(oEmailAttachment, pFile.Name)
|
||||
|
||||
Dim oOriginalName As Object = GetOriginalFilename(pFile.Name)
|
||||
Logger.Info("File with MessageId [{0}] and Filename [{1}] has already been processed.", pMessageId, oOriginalName)
|
||||
|
||||
' If the file was already rejected, it is allowed to be processed again,
|
||||
@ -101,6 +96,15 @@ Public Class HashFunctions
|
||||
Return oMD5CheckSum
|
||||
End Function
|
||||
|
||||
Public Function GetOriginalFilename(pFilename As String) As String
|
||||
' Try to get the original filename from Attachment table
|
||||
' If this fails, falls back to the new filename (<msgid>~Attm<i>.ext)
|
||||
Dim oSQL = $"SELECT EMAIL_ATTMT FROM TBEMLP_HISTORY_ATTACHMENT WHERE EMAIL_ATTMT_INDEX = '{pFilename}'"
|
||||
Dim oEmailAttachment = Database.GetScalarValue(oSQL, MSSQLServer.TransactionMode.NoTransaction)
|
||||
Dim oOriginalName = ObjectEx.NotNull(oEmailAttachment, pFilename)
|
||||
Return oOriginalName
|
||||
End Function
|
||||
|
||||
Private Function CreateMD5(pFilename As String) As String
|
||||
Try
|
||||
Dim oMD5 As New MD5CryptoServiceProvider
|
||||
|
||||
@ -216,11 +216,14 @@ Public Class ImportZUGFeRDFiles
|
||||
Catch ex As ValidationException
|
||||
_logger.Error(ex)
|
||||
|
||||
Dim oErrors = ex.ValidationErrors
|
||||
'Dim oMessage = "REJECTED - ZUGFeRD yes but formal validation failed!"
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.ValidationException}"
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oMessage)
|
||||
Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.ValidationException}"
|
||||
Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'"
|
||||
_logger.Error(oErrorMessage)
|
||||
|
||||
'Dim oMessage = "REJECTED - ZUGFeRD yes but formal validation failed!"
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString)
|
||||
|
||||
Dim oErrors = ex.ValidationErrors
|
||||
Dim oErrorList As String = ""
|
||||
Dim oErrorListDE As String = ""
|
||||
For Each oError In oErrors
|
||||
@ -231,113 +234,129 @@ 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, oMessage, "Die Rechnungsvalidierung ist fehlgeschlagen!", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "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)
|
||||
|
||||
' When MD5HashException is thrown, we don't have a MD5Hash yet.
|
||||
' That 's why we set it to String.Empty here.
|
||||
'Dim oMessage = "REJECTED - Already processed (MD5Hash)"
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.MD5HashException}"
|
||||
_history.Update_HistoryEntry(oMessageId, String.Empty, oMessage)
|
||||
_history.Update_HistoryEntry(oMessageId, String.Empty, oErrorCodeString)
|
||||
|
||||
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, oMessage, "Die gesendete Rechnung wurde bereits verarbeitet!", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "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)
|
||||
|
||||
' When UnsupportedFerdException is thrown, we don't have a MD5Hash yet.
|
||||
' That 's why we set it to String.Empty here.
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.UnsupportedFerdException}"
|
||||
_history.Update_HistoryEntry(oMessageId, String.Empty, oMessage)
|
||||
_history.Update_HistoryEntry(oMessageId, String.Empty, oErrorCodeString)
|
||||
|
||||
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, oMessage, "Nicht unterstütztes Datenformat", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "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)
|
||||
|
||||
' When InvalidFerdException is thrown, we don't have a MD5Hash yet.
|
||||
' That 's why we set it to String.Empty here.
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.InvalidFerdException}"
|
||||
_history.Update_HistoryEntry(oMessageId, String.Empty, oMessage)
|
||||
_history.Update_HistoryEntry(oMessageId, String.Empty, oErrorCodeString)
|
||||
|
||||
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, oMessage, "Inkorrektes Format", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "Inkorrektes Format", "", oSQLTransaction)
|
||||
|
||||
Catch ex As TooMuchFerdsException
|
||||
_logger.Error(ex)
|
||||
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.TooMuchFerdsException}"
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oMessage)
|
||||
Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.TooMuchFerdsException}"
|
||||
Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'"
|
||||
_logger.Error(oErrorMessage)
|
||||
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString)
|
||||
|
||||
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, oMessage, "Email enthielt mehr als ein ZUGFeRD-Dokument", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "Email enthielt mehr als ein ZUGFeRD-Dokument", "", oSQLTransaction)
|
||||
|
||||
Catch ex As NoFerdsException
|
||||
_logger.Error(ex)
|
||||
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.NoFerdsException}"
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oMessage)
|
||||
Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.NoFerdsException}"
|
||||
Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'"
|
||||
_logger.Error(oErrorMessage)
|
||||
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString)
|
||||
|
||||
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, oMessage, "Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction)
|
||||
|
||||
Catch ex As MissingValueException
|
||||
_logger.Error(ex)
|
||||
|
||||
'Dim oMessage As String = ""
|
||||
'For Each prop In ex.MissingProperties
|
||||
' oMessage &= $"- {prop}"
|
||||
'Next
|
||||
Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.MissingValueException}"
|
||||
Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'"
|
||||
_logger.Error(oErrorMessage)
|
||||
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.MissingValueException}"
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oMessage)
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString)
|
||||
|
||||
Dim oMissingFieldList As String = ""
|
||||
For Each oMissingFieldDescription In ex.MissingProperties
|
||||
oMissingFieldList += $"<li>{oMissingFieldDescription}</li>"
|
||||
Next
|
||||
|
||||
Dim oOrgFilename = _hash.GetOriginalFilename(ex.File.Name)
|
||||
Dim oBody = _email.CreateBodyForMissingProperties(ex.File.Name, ex.MissingProperties)
|
||||
Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId)
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "MissingValueException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.MissingValueException, ex.File.Name, oMissingFieldList)
|
||||
AddRejectedState(oMessageId, oMessage, "Es fehlten ZugferdSpezifikationen", "", oSQLTransaction)
|
||||
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "MissingValueException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.MissingValueException, oOrgFilename, oMissingFieldList)
|
||||
AddRejectedState(oMessageId, oErrorCodeString, "Es fehlten ZugferdSpezifikationen", "", oSQLTransaction)
|
||||
|
||||
Catch ex As FileSizeLimitReachedException
|
||||
_logger.Error(ex)
|
||||
|
||||
Dim oMessage = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.FileSizeLimitReachedException}"
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oMessage)
|
||||
Dim oErrorCodeString = $"{EmailStrings.ErrorCodePraefix}{ErrorCode.FileSizeLimitReachedException}"
|
||||
Dim oErrorMessage = $"Error {oErrorCodeString} occured for '{oMessageId}'"
|
||||
_logger.Error(oErrorMessage)
|
||||
|
||||
_history.Update_HistoryEntry(oMessageId, oMD5CheckSum, oErrorCodeString)
|
||||
|
||||
Dim oEmailData = _file.MoveAndRenameEmailToRejected(oArgs, oMessageId)
|
||||
|
||||
Dim oKey = FileSizeLimitReachedException.KEY_FILENAME
|
||||
Dim oFileExceedingThreshold As String = IIf(ex.Data.Contains(oKey), ex.Data.Item(oKey), "")
|
||||
Dim oFileWithoutMessageId = oFileExceedingThreshold.
|
||||
Replace(oMessageId, "").
|
||||
Replace("~", "")
|
||||
Dim oOrgFilename = _hash.GetOriginalFilename(oFileExceedingThreshold)
|
||||
|
||||
Dim oBody = String.Format(EmailStrings.EMAIL_FILE_SIZE_REACHED, oArgs.MaxAttachmentSizeInMegaBytes, oFileWithoutMessageId)
|
||||
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, oFileWithoutMessageId)
|
||||
AddRejectedState(oMessageId, oMessage, "Erlaubte Dateigröße überschritten", "", oSQLTransaction)
|
||||
_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)
|
||||
|
||||
|
||||
Catch ex As NoFerdsAlternateException
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user