Compare commits
85 Commits
Update-Net
...
fcfd44a773
| Author | SHA1 | Date | |
|---|---|---|---|
| fcfd44a773 | |||
|
|
7377a9176e | ||
|
|
aca6bcbc2b | ||
| cf485edb18 | |||
| 5585aef9b5 | |||
|
|
85bbceae0a | ||
|
|
c914ddeb6f | ||
|
|
b8e6c69654 | ||
|
|
cac5116588 | ||
|
|
3b9c9d457d | ||
|
|
e5567412a0 | ||
|
|
d03efbe3b3 | ||
|
|
7d91b973ce | ||
| d58bb2302b | |||
|
|
57298369a6 | ||
|
|
b4f0a5ce0b | ||
|
|
4213121b67 | ||
| f3b7a6725c | |||
| 801bb9c5b3 | |||
| 65bb0fce58 | |||
| ff11ae963d | |||
| e8982d1c65 | |||
| d631f0e0ff | |||
| d9f9755d2a | |||
| cae41fbbd3 | |||
| 2d4575cb1f | |||
|
|
c39b4bc2e7 | ||
|
|
ec42ec78ae | ||
|
|
bea3ccf45f | ||
| 061c7d9ec0 | |||
| d008d12ef0 | |||
| db59bfc7dc | |||
| ad9cb46354 | |||
| 32015e5439 | |||
|
|
06e796f54f | ||
|
|
bbe372377a | ||
|
|
7b91aac5e9 | ||
|
|
ceb688fc3f | ||
|
|
aa5742a529 | ||
|
|
79267e6bd9 | ||
|
|
cf63fd8c39 | ||
|
|
ec3a677ca8 | ||
|
|
48406884ca | ||
| 204aaaeb4e | |||
| ec378ba3b4 | |||
| 35b19cde82 | |||
|
|
f7c0a29676 | ||
| 9ae5465c48 | |||
| 82139fc30d | |||
| f4ba4d9e1d | |||
| 0aabc12f49 | |||
| adbd0fe99b | |||
| 2d6a2df48a | |||
| e7ccb74828 | |||
| 05355c93a5 | |||
| 2007bb91f3 | |||
| d7d2ecf8a0 | |||
| 447c7ea600 | |||
| 32bb14db06 | |||
| a5226a8101 | |||
| b534c4c799 | |||
| dc80138311 | |||
| 477bb511c4 | |||
| 0b66b80591 | |||
| 5fd924d413 | |||
| e8ebc30225 | |||
| 262805d112 | |||
| 623807c55d | |||
| aee7997cb3 | |||
| 82a95faaaf | |||
| af7534df48 | |||
| fa2c2a6417 | |||
| 390a524736 | |||
| 0ed996100d | |||
| 2e0ae13a77 | |||
| 267e038725 | |||
| 2673755b14 | |||
| 5052ce4f14 | |||
| 717909d7e8 | |||
| 04a408ab97 | |||
| face3c76fb | |||
| 2d3a1cd25c | |||
| 43e95a20b9 | |||
| 05d0bd60ab | |||
| 7e70c059b6 |
@@ -49,9 +49,6 @@
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
@@ -82,6 +79,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Base\BaseClass.vb" />
|
||||
<Compile Include="Base\BaseUtils.vb" />
|
||||
<Compile Include="DocumentPathHandler.vb" />
|
||||
<Compile Include="ECM\ECM.vb" />
|
||||
<Compile Include="Encryption\Compression.vb" />
|
||||
<Compile Include="Encryption\Encryption.vb" />
|
||||
@@ -92,6 +90,7 @@
|
||||
<Compile Include="FileWatcher\FileWatcherFilters.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcherProperties.vb" />
|
||||
<Compile Include="IDB\Constants.vb" />
|
||||
<Compile Include="Map_Drive.vb" />
|
||||
<Compile Include="MimeEx.vb" />
|
||||
<Compile Include="StringFunctions.vb" />
|
||||
<Compile Include="WindowsEx.vb" />
|
||||
@@ -138,12 +137,20 @@
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="README.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<PackageReference Include="NLog">
|
||||
<Version>5.0.5</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NuGet.CommandLine">
|
||||
<Version>6.13.2</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
392
Base/DocumentPathHandler.vb
Normal file
392
Base/DocumentPathHandler.vb
Normal file
@@ -0,0 +1,392 @@
|
||||
Imports System.IO
|
||||
Imports DigitalData.Modules.Logging
|
||||
''' <summary>
|
||||
''' Zentrale Klasse für Dokumentenpfad-Verwaltung mit optionalem Laufwerks-Mapping und Temp-Kopie
|
||||
''' </summary>
|
||||
Public Class DocumentPathHandler
|
||||
|
||||
Private ReadOnly _Logger As Logger
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
Private _mappedDrive As String = ""
|
||||
Private _clsmapDrive As Map_Drive
|
||||
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
_LogConfig = LogConfig
|
||||
_Logger = LogConfig.GetLogger()
|
||||
_clsmapDrive = New Map_Drive(LogConfig)
|
||||
End Sub
|
||||
|
||||
Private Function EnsureTempFolder(ByRef tempFolder As String, ByRef errorMessage As String) As Boolean
|
||||
Try
|
||||
_Logger.Debug($"📂 Überprüfe Temp-Ordner: [{tempFolder}]")
|
||||
If String.IsNullOrWhiteSpace(tempFolder) Then
|
||||
_Logger.Debug("⚠️ Temp-Ordner nicht konfiguriert, verwende TEMP_DOCUMENT_FOLDER aus AppSettings")
|
||||
tempFolder = TEMP_DOCUMENT_FOLDER
|
||||
End If
|
||||
|
||||
' Fallback, falls global nichts konfiguriert ist
|
||||
If String.IsNullOrWhiteSpace(tempFolder) Then
|
||||
tempFolder = Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||||
"Digital Data",
|
||||
"taskFLOW",
|
||||
"DocumentViewer",
|
||||
"Temp")
|
||||
_Logger.Info($"⚠️ TEMP_DOCUMENT_FOLDER war leer - verwende Fallback: [{tempFolder}]")
|
||||
TEMP_DOCUMENT_FOLDER = tempFolder
|
||||
End If
|
||||
|
||||
If Not Directory.Exists(tempFolder) Then
|
||||
Directory.CreateDirectory(tempFolder)
|
||||
_Logger.Info($"📁 Temp-Ordner erstellt: [{tempFolder}]")
|
||||
End If
|
||||
|
||||
If Not Directory.Exists(tempFolder) Then
|
||||
errorMessage = $"Temp-Ordner konnte nicht erstellt werden: [{tempFolder}]"
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
errorMessage = $"Fehler bei Temp-Ordner-Initialisierung: {ex.Message}"
|
||||
_Logger.Error($"❌ {errorMessage}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Public Sub CleanupTempFolder()
|
||||
Try
|
||||
If String.IsNullOrEmpty(TEMP_DOCUMENT_FOLDER) Then
|
||||
_Logger.Debug("TEMP_DOCUMENT_FOLDER ist nicht gesetzt → Kein Cleanup erforderlich")
|
||||
Return
|
||||
End If
|
||||
|
||||
If Not System.IO.Directory.Exists(TEMP_DOCUMENT_FOLDER) Then
|
||||
_Logger.Debug($"Temp-Ordner [{TEMP_DOCUMENT_FOLDER}] existiert nicht → Kein Cleanup erforderlich")
|
||||
Return
|
||||
End If
|
||||
|
||||
' Alle Dateien im Ordner ermitteln
|
||||
Dim files As String() = System.IO.Directory.GetFiles(TEMP_DOCUMENT_FOLDER)
|
||||
|
||||
If files.Length = 0 Then
|
||||
_Logger.Debug($"Temp-Ordner [{TEMP_DOCUMENT_FOLDER}] ist bereits leer")
|
||||
Return
|
||||
End If
|
||||
|
||||
' Alle Dateien löschen
|
||||
Dim deletedCount As Integer = 0
|
||||
Dim errorCount As Integer = 0
|
||||
|
||||
For Each filePath As String In files
|
||||
Try
|
||||
System.IO.File.Delete(filePath)
|
||||
deletedCount += 1
|
||||
_Logger.Debug($"Datei gelöscht: [{System.IO.Path.GetFileName(filePath)}]")
|
||||
Catch fileEx As Exception
|
||||
errorCount += 1
|
||||
_Logger.Warn($"⚠️ Datei konnte nicht gelöscht werden: [{System.IO.Path.GetFileName(filePath)}] - {fileEx.Message}")
|
||||
End Try
|
||||
Next
|
||||
|
||||
If errorCount = 0 Then
|
||||
_Logger.Debug($"✓ Temp-Ordner bereinigt: {deletedCount} Datei(en) gelöscht")
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Temp-Ordner teilweise bereinigt: {deletedCount} gelöscht, {errorCount} Fehler")
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"❌ Fehler beim Bereinigen des Temp-Ordners: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Verarbeitet einen Dokumentenpfad: Optional Mapping, dann Temp-Kopie
|
||||
''' </summary>
|
||||
''' <param name="sourcePath">Quell-Pfad der Datei (UNC oder lokal)</param>
|
||||
''' <param name="options">Optionen für die Verarbeitung</param>
|
||||
''' <returns>DocumentPathResult mit finalem Pfad und Mapping-Info</returns>
|
||||
Public Function ProcessDocumentPath(sourcePath As String, options As DocumentPathOptions) As DocumentPathResult
|
||||
Dim result As New DocumentPathResult With {
|
||||
.SourcePath = sourcePath,
|
||||
.FinalPath = sourcePath,
|
||||
.Success = False,
|
||||
.WasMapped = False,
|
||||
.WasCopiedToTemp = False
|
||||
}
|
||||
|
||||
Try
|
||||
' Validierung
|
||||
If String.IsNullOrEmpty(sourcePath) Then
|
||||
result.ErrorMessage = "Quell-Pfad ist leer"
|
||||
_Logger.Error("❌ ProcessDocumentPath: Quell-Pfad ist leer")
|
||||
Return result
|
||||
End If
|
||||
|
||||
Dim workingPath As String = sourcePath
|
||||
|
||||
' ========== SCHRITT 1: OPTIONALES LAUFWERKS-MAPPING ==========
|
||||
If options.EnableMapping AndAlso Not String.IsNullOrEmpty(options.WMSuffix) Then
|
||||
Dim mappingResult = TryMapNetworkDrive(sourcePath, options)
|
||||
If mappingResult.Success Then
|
||||
workingPath = mappingResult.MappedPath
|
||||
_mappedDrive = mappingResult.DriveLetter
|
||||
result.WasMapped = True
|
||||
result.MappedDrive = _mappedDrive
|
||||
_Logger.Info($"✓ Laufwerk gemappt: {_mappedDrive}")
|
||||
Else
|
||||
_Logger.Warn("⚠️ Laufwerks-Mapping fehlgeschlagen - verwende Original-UNC-Pfad")
|
||||
workingPath = sourcePath
|
||||
End If
|
||||
End If
|
||||
|
||||
' ========== SCHRITT 2: PRÜFEN OB DATEI EXISTIERT ==========
|
||||
If Not File.Exists(workingPath) Then
|
||||
result.ErrorMessage = $"Datei nicht gefunden: [{workingPath}]"
|
||||
_Logger.Error($"❌ {result.ErrorMessage}")
|
||||
|
||||
' Cleanup bei Fehler
|
||||
If result.WasMapped Then
|
||||
UnmapDrive()
|
||||
End If
|
||||
|
||||
Return result
|
||||
End If
|
||||
|
||||
' ========== SCHRITT 3: OPTIONALE TEMP-KOPIE ==========
|
||||
If options.CopyToTemp Then
|
||||
_Logger.Debug($"📂 Starte Temp-Kopie für: [{workingPath}]")
|
||||
Dim tempResult = CopyToTempFolder(workingPath, options.TempFolder)
|
||||
If tempResult.Success Then
|
||||
result.FinalPath = tempResult.TempPath
|
||||
result.WasCopiedToTemp = True
|
||||
result.TempPath = tempResult.TempPath
|
||||
_Logger.Info($"✓ Datei in Temp kopiert: [{Path.GetFileName(tempResult.TempPath)}]")
|
||||
|
||||
' Laufwerk unmappen nach erfolgreicher Kopie
|
||||
If result.WasMapped AndAlso options.UnmapAfterCopy Then
|
||||
UnmapDrive()
|
||||
result.WasMapped = False
|
||||
End If
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Temp-Kopie fehlgeschlagen: {tempResult.ErrorMessage}")
|
||||
|
||||
' WICHTIG: Nicht den gemappten Pfad behalten, wenn danach ungemappt wird.
|
||||
' Fallback immer auf stabilen Originalpfad (UNC).
|
||||
result.FinalPath = sourcePath
|
||||
result.WasCopiedToTemp = False
|
||||
result.TempPath = String.Empty
|
||||
|
||||
If result.WasMapped Then
|
||||
UnmapDrive()
|
||||
result.WasMapped = False
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
result.FinalPath = workingPath
|
||||
_Logger.Debug($"📄 Verwende Pfad ohne Temp-Kopie: [{workingPath}]")
|
||||
End If
|
||||
|
||||
result.Success = True
|
||||
Return result
|
||||
|
||||
Catch ex As Exception
|
||||
result.ErrorMessage = $"Unerwarteter Fehler: {ex.Message}"
|
||||
_Logger.Error($"❌ ProcessDocumentPath: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
|
||||
' Cleanup bei Exception
|
||||
If result.WasMapped Then
|
||||
UnmapDrive()
|
||||
End If
|
||||
|
||||
Return result
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Versucht ein Netzlaufwerk zu mappen
|
||||
''' </summary>
|
||||
Private Function TryMapNetworkDrive(sourcePath As String, options As DocumentPathOptions) As MappingResult
|
||||
Dim result As New MappingResult With {.Success = False}
|
||||
|
||||
Try
|
||||
' Prüfen ob Pfad mit WMSUFFIX beginnt
|
||||
If Not sourcePath.StartsWith(options.WMSuffix, StringComparison.OrdinalIgnoreCase) Then
|
||||
_Logger.Debug($"📄 Pfad beginnt nicht mit WMSUFFIX - kein Mapping erforderlich")
|
||||
Return result
|
||||
End If
|
||||
|
||||
_Logger.Debug($"📂 WMSUFFIX erkannt - starte Laufwerks-Mapping")
|
||||
|
||||
' Laufwerk mappen
|
||||
Dim mappedDrive As String = ""
|
||||
|
||||
If Not String.IsNullOrEmpty(options.SpecificDrive) AndAlso options.SpecificDrive.Length = 1 Then
|
||||
' Spezifisches Laufwerk
|
||||
If _clsmapDrive.MapSpecificDrive(options.SpecificDrive, options.DriveBlacklist, options.WMSuffix) Then
|
||||
mappedDrive = options.SpecificDrive & ":"
|
||||
End If
|
||||
Else
|
||||
' Automatisches Mapping
|
||||
mappedDrive = _clsmapDrive.MapDriveAutomatic(options.DriveBlacklist, options.WMSuffix)
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(mappedDrive) Then
|
||||
_Logger.Warn("⚠️ Kein Laufwerk gemappt")
|
||||
Return result
|
||||
End If
|
||||
|
||||
' Pfad umschreiben
|
||||
Dim relativePath As String = sourcePath.Substring(options.WMSuffix.Length)
|
||||
If relativePath.StartsWith("\") Then
|
||||
relativePath = relativePath.Substring(1)
|
||||
End If
|
||||
|
||||
Dim mappedPath As String = mappedDrive.TrimEnd(":"c, "\"c) & ":\" & relativePath
|
||||
|
||||
_Logger.Debug($"📄 Original: [{sourcePath}]")
|
||||
_Logger.Debug($"📄 Gemappt: [{mappedPath}]")
|
||||
|
||||
result.Success = True
|
||||
result.DriveLetter = mappedDrive
|
||||
result.MappedPath = mappedPath
|
||||
Return result
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Mapping: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return result
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function CopyToTempFolder(sourcePath As String, tempFolder As String) As TempCopyResult
|
||||
Dim result As New TempCopyResult With {.Success = False}
|
||||
|
||||
Try
|
||||
Dim configuredTempFolder As String = tempFolder
|
||||
Dim globalTempFolder As String = TEMP_DOCUMENT_FOLDER
|
||||
|
||||
' Temp-Ordner validieren/initialisieren (kann tempFolder per ByRef setzen)
|
||||
If Not EnsureTempFolder(tempFolder, result.ErrorMessage) Then
|
||||
_Logger.Warn($"⚠️ {result.ErrorMessage}")
|
||||
_Logger.Warn($"[TempCopy] InputTemp=[{If(String.IsNullOrWhiteSpace(configuredTempFolder), "<leer>", configuredTempFolder)}], GlobalTemp=[{If(String.IsNullOrWhiteSpace(globalTempFolder), "<leer>", globalTempFolder)}]")
|
||||
Return result
|
||||
End If
|
||||
|
||||
' NEU: Effektiven Zielordner immer transparent loggen
|
||||
_Logger.Info($"[TempCopy] Effektiver Temp-Ordner: [{tempFolder}]")
|
||||
_Logger.Debug($"[TempCopy] InputTemp=[{If(String.IsNullOrWhiteSpace(configuredTempFolder), "<leer>", configuredTempFolder)}], GlobalTemp=[{If(String.IsNullOrWhiteSpace(globalTempFolder), "<leer>", globalTempFolder)}]")
|
||||
|
||||
' Eindeutigen Dateinamen generieren
|
||||
Dim originalFileName As String = Path.GetFileName(sourcePath)
|
||||
Dim fileNameWithoutExt As String = Path.GetFileNameWithoutExtension(originalFileName)
|
||||
Dim extension As String = Path.GetExtension(originalFileName)
|
||||
Dim timestamp As String = DateTime.Now.ToString("yyyyMMdd_HHmmss_fff")
|
||||
Dim uniqueFileName As String = $"{fileNameWithoutExt}_{timestamp}{extension}"
|
||||
Dim targetPath As String = Path.Combine(tempFolder, uniqueFileName)
|
||||
|
||||
_Logger.Debug($"📄 Kopiere nach Temp:")
|
||||
_Logger.Debug($" Von: [{sourcePath}]")
|
||||
_Logger.Debug($" Nach: [{targetPath}]")
|
||||
|
||||
File.Copy(sourcePath, targetPath, overwrite:=True)
|
||||
|
||||
result.Success = True
|
||||
result.TempPath = targetPath
|
||||
result.TempFileName = uniqueFileName
|
||||
Return result
|
||||
|
||||
Catch ex As Exception
|
||||
result.ErrorMessage = $"Fehler beim Kopieren: {ex.Message}"
|
||||
_Logger.Error($"❌ {result.ErrorMessage}")
|
||||
_Logger.Error(ex)
|
||||
Return result
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Trennt das gemappte Laufwerk
|
||||
''' </summary>
|
||||
Public Sub UnmapDrive()
|
||||
If Not String.IsNullOrEmpty(_mappedDrive) Then
|
||||
Try
|
||||
If _clsmapDrive.DisconnectNetworkDrive(_mappedDrive, force:=True) Then
|
||||
_Logger.Info($"🔌 Laufwerk {_mappedDrive} getrennt")
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Warnung beim Trennen von {_mappedDrive}")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"Fehler beim Trennen von {_mappedDrive}: {ex.Message}")
|
||||
Finally
|
||||
_mappedDrive = ""
|
||||
End Try
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Cleanup-Methode (z.B. beim Schließen des Forms)
|
||||
''' </summary>
|
||||
Public Sub Cleanup()
|
||||
UnmapDrive()
|
||||
End Sub
|
||||
|
||||
#Region "Nested Classes für Optionen und Ergebnisse"
|
||||
|
||||
''' <summary>
|
||||
''' Optionen für die Dokumentenpfad-Verarbeitung
|
||||
''' </summary>
|
||||
Public Class DocumentPathOptions
|
||||
''' <summary>Soll Laufwerks-Mapping versucht werden?</summary>
|
||||
Public Property EnableMapping As Boolean = False
|
||||
|
||||
''' <summary>WMSUFFIX für Mapping-Erkennung (z.B. "\\windream\objects")</summary>
|
||||
Public Property WMSuffix As String = ""
|
||||
|
||||
''' <summary>Spezifischer Laufwerksbuchstabe (z.B. "V") oder leer für automatisch</summary>
|
||||
Public Property SpecificDrive As String = ""
|
||||
|
||||
''' <summary>Blacklist für Laufwerksbuchstaben (z.B. "Y,M,V")</summary>
|
||||
Public Property DriveBlacklist As String = ""
|
||||
|
||||
''' <summary>Soll Datei in Temp kopiert werden?</summary>
|
||||
Public Property CopyToTemp As Boolean = False
|
||||
|
||||
''' <summary>Temp-Ordner-Pfad</summary>
|
||||
Public Property TempFolder As String = ""
|
||||
|
||||
''' <summary>Laufwerk nach erfolgreicher Temp-Kopie unmappen?</summary>
|
||||
Public Property UnmapAfterCopy As Boolean = True
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' Ergebnis der Dokumentenpfad-Verarbeitung
|
||||
''' </summary>
|
||||
Public Class DocumentPathResult
|
||||
Public Property Success As Boolean
|
||||
Public Property SourcePath As String
|
||||
Public Property FinalPath As String
|
||||
Public Property ErrorMessage As String
|
||||
Public Property WasMapped As Boolean
|
||||
Public Property MappedDrive As String
|
||||
Public Property WasCopiedToTemp As Boolean
|
||||
Public Property TempPath As String
|
||||
End Class
|
||||
|
||||
Private Class MappingResult
|
||||
Public Property Success As Boolean
|
||||
Public Property DriveLetter As String
|
||||
Public Property MappedPath As String
|
||||
End Class
|
||||
|
||||
Private Class TempCopyResult
|
||||
Public Property Success As Boolean
|
||||
Public Property TempPath As String
|
||||
Public Property TempFileName As String
|
||||
Public Property ErrorMessage As String
|
||||
End Class
|
||||
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
559
Base/Map_Drive.vb
Normal file
559
Base/Map_Drive.vb
Normal file
@@ -0,0 +1,559 @@
|
||||
Imports System.IO
|
||||
Imports System.Runtime.InteropServices
|
||||
Imports DigitalData.Modules.Logging
|
||||
Public Class Map_Drive
|
||||
Private ReadOnly _Logger As Logger
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
#Region "Windows API Deklarationen"
|
||||
<DllImport("mpr.dll", CharSet:=CharSet.Auto)>
|
||||
Private Shared Function WNetAddConnection2(ByRef lpNetResource As NETRESOURCE,
|
||||
ByVal lpPassword As String,
|
||||
ByVal lpUsername As String,
|
||||
ByVal dwFlags As Integer) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("mpr.dll", CharSet:=CharSet.Auto)>
|
||||
Private Shared Function WNetCancelConnection2(ByVal lpName As String,
|
||||
ByVal dwFlags As Integer,
|
||||
ByVal fForce As Boolean) As Integer
|
||||
End Function
|
||||
|
||||
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)>
|
||||
Private Structure NETRESOURCE
|
||||
Public dwScope As Integer
|
||||
Public dwType As Integer
|
||||
Public dwDisplayType As Integer
|
||||
Public dwUsage As Integer
|
||||
Public lpLocalName As String
|
||||
Public lpRemoteName As String
|
||||
Public lpComment As String
|
||||
Public lpProvider As String
|
||||
End Structure
|
||||
|
||||
Private Const RESOURCETYPE_DISK As Integer = 1
|
||||
Private Const CONNECT_UPDATE_PROFILE As Integer = 1
|
||||
Private Const ERROR_SUCCESS As Integer = 0
|
||||
Private Const ERROR_ALREADY_ASSIGNED As Integer = 85
|
||||
#End Region
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
_LogConfig = LogConfig
|
||||
_Logger = LogConfig.GetLogger()
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' Struktur für Netzlaufwerk-Informationen
|
||||
''' </summary>
|
||||
Public Structure NetworkDriveInfo
|
||||
Public DriveLetter As String
|
||||
Public NetworkPath As String
|
||||
Public DriveType As IO.DriveType
|
||||
Public IsReady As Boolean
|
||||
Public TotalSize As Long
|
||||
Public FreeSpace As Long
|
||||
End Structure
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt den nächsten freien Laufwerksbuchstaben (alphabetisch absteigend von Z bis A)
|
||||
''' </summary>
|
||||
''' <param name="blacklist">Liste der nicht erlaubten Laufwerksbuchstaben (z.B. "Y,M,V")</param>
|
||||
''' <returns>Nächster freier Laufwerksbuchstabe mit Doppelpunkt (z.B. "Z:") oder String.Empty wenn keiner frei</returns>
|
||||
Public Function GetNextFreeDriveLetter(Optional blacklist As String = "") As String
|
||||
Try
|
||||
' Blacklist verarbeiten (Großbuchstaben ohne Doppelpunkte)
|
||||
Dim blacklistArray As New List(Of Char)
|
||||
If Not String.IsNullOrEmpty(blacklist) Then
|
||||
For Each item In blacklist.Split(","c)
|
||||
Dim letter = item.Trim().ToUpper().Replace(":", "")
|
||||
If letter.Length = 1 AndAlso Char.IsLetter(letter(0)) Then
|
||||
blacklistArray.Add(letter(0))
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
' Alle aktuell verwendeten Laufwerksbuchstaben ermitteln
|
||||
Dim usedDrives As New List(Of Char)
|
||||
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives()
|
||||
Dim letter As Char = drive.Name(0)
|
||||
usedDrives.Add(Char.ToUpper(letter))
|
||||
Next
|
||||
|
||||
' Alphabetisch absteigend von Z bis A durchgehen
|
||||
For i As Integer = Asc("Z"c) To Asc("A"c) Step -1
|
||||
Dim currentLetter As Char = Chr(i)
|
||||
|
||||
' Prüfen ob Buchstabe verfügbar ist
|
||||
If Not usedDrives.Contains(currentLetter) AndAlso Not blacklistArray.Contains(currentLetter) Then
|
||||
_Logger.Debug($"Nächster freier Laufwerksbuchstabe gefunden: {currentLetter}:")
|
||||
Return currentLetter & ":"
|
||||
End If
|
||||
Next
|
||||
|
||||
_Logger.Warn("Kein freier Laufwerksbuchstabe gefunden!")
|
||||
Return String.Empty
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Ermitteln des nächsten freien Laufwerksbuchstabens: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Prüft ob ein Laufwerksbuchstabe verfügbar ist (nicht verwendet und nicht in Blacklist)
|
||||
''' </summary>
|
||||
''' <param name="driveLetter">Zu prüfender Laufwerksbuchstabe</param>
|
||||
''' <param name="blacklist">Liste der nicht erlaubten Laufwerksbuchstaben</param>
|
||||
''' <returns>True wenn verfügbar, False wenn bereits verwendet oder in Blacklist</returns>
|
||||
Public Function IsDriveLetterAvailable(driveLetter As String, Optional blacklist As String = "") As Boolean
|
||||
Try
|
||||
' Formatierung sicherstellen
|
||||
driveLetter = driveLetter.Trim().ToUpper().Replace(":", "")
|
||||
If driveLetter.Length <> 1 OrElse Not Char.IsLetter(driveLetter(0)) Then
|
||||
_Logger.Warn($"Ungültiger Laufwerksbuchstabe: {driveLetter}")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim letter As Char = driveLetter(0)
|
||||
|
||||
' Blacklist prüfen
|
||||
If Not String.IsNullOrEmpty(blacklist) Then
|
||||
For Each item In blacklist.Split(","c)
|
||||
Dim blacklistedLetter = item.Trim().ToUpper().Replace(":", "")
|
||||
If blacklistedLetter.Length = 1 AndAlso blacklistedLetter(0) = letter Then
|
||||
_Logger.Debug($"Laufwerk {letter}: ist in der Blacklist")
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
' Prüfen ob bereits verwendet
|
||||
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives()
|
||||
If Char.ToUpper(drive.Name(0)) = letter Then
|
||||
_Logger.Debug($"Laufwerk {letter}: ist bereits verwendet")
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Prüfen der Laufwerksverfügbarkeit: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Mappt ein Netzlaufwerk mit automatischer Laufwerksbuchstabenwahl oder spezifischem Buchstaben
|
||||
''' </summary>
|
||||
''' <param name="driveLetter">Gewünschter Laufwerksbuchstabe (leer = automatisch den nächsten freien wählen)</param>
|
||||
''' <param name="networkPath">UNC-Pfad des Netzwerkshares</param>
|
||||
''' <param name="blacklist">Komma-getrennte Liste verbotener Laufwerksbuchstaben (z.B. "Y,M,V")</param>
|
||||
''' <param name="userName">Optionaler Benutzername für Authentifizierung</param>
|
||||
''' <param name="password">Optionales Passwort für Authentifizierung</param>
|
||||
''' <param name="persistent">Soll das Mapping persistent sein?</param>
|
||||
''' <returns>Verwendeter Laufwerksbuchstabe bei Erfolg, String.Empty bei Fehler</returns>
|
||||
Public Function MapNetworkDrive(driveLetter As String,
|
||||
networkPath As String,
|
||||
Optional blacklist As String = "",
|
||||
Optional userName As String = Nothing,
|
||||
Optional password As String = Nothing,
|
||||
Optional persistent As Boolean = True) As String
|
||||
Try
|
||||
Dim targetDriveLetter As String = ""
|
||||
|
||||
' Szenario 1: Kein Laufwerksbuchstabe angegeben -> Automatische Auswahl
|
||||
If String.IsNullOrEmpty(driveLetter) Then
|
||||
_Logger.Info("Kein Laufwerksbuchstabe angegeben - suche nächsten freien Buchstaben...")
|
||||
targetDriveLetter = GetNextFreeDriveLetter(blacklist)
|
||||
|
||||
If String.IsNullOrEmpty(targetDriveLetter) Then
|
||||
_Logger.Error("❌ Kein freier Laufwerksbuchstabe verfügbar!")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
_Logger.Info($"Automatisch gewählter Laufwerksbuchstabe: {targetDriveLetter}")
|
||||
Else
|
||||
' Szenario 2: Spezifischer Laufwerksbuchstabe angegeben
|
||||
targetDriveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not targetDriveLetter.EndsWith(":") Then
|
||||
targetDriveLetter &= ":"
|
||||
End If
|
||||
|
||||
' ========== NEU: Prüfen ob Laufwerk verfügbar ist ==========
|
||||
If Not IsDriveLetterAvailable(targetDriveLetter, blacklist) Then
|
||||
_Logger.Warn($"⚠️ Laufwerk {targetDriveLetter} ist nicht verfügbar (bereits verwendet oder in Blacklist)")
|
||||
' NICHT abbrechen - weiter versuchen (alte Logik beibehalten)
|
||||
End If
|
||||
' ========== ENDE NEU ==========
|
||||
End If
|
||||
|
||||
' ========== NEU: Prüfung ob Laufwerk bereits existiert ==========
|
||||
Dim driveExists As Boolean = False
|
||||
Try
|
||||
Dim driveInfo As New System.IO.DriveInfo(targetDriveLetter)
|
||||
driveExists = driveInfo.IsReady
|
||||
Catch
|
||||
' Laufwerk existiert nicht - das ist OK
|
||||
driveExists = False
|
||||
End Try
|
||||
|
||||
' Nur trennen wenn Laufwerk wirklich existiert
|
||||
If driveExists Then
|
||||
_Logger.Debug($"ℹ️ Laufwerk {targetDriveLetter} existiert bereits - wird getrennt")
|
||||
DisconnectNetworkDrive(targetDriveLetter, force:=True)
|
||||
Else
|
||||
_Logger.Debug($"✓ Laufwerk {targetDriveLetter} existiert noch nicht - kein Disconnect nötig")
|
||||
End If
|
||||
' ========== ENDE NEU ==========
|
||||
|
||||
' Laufwerk mappen (bestehende Logik)
|
||||
If MapNetworkDriveInternal(targetDriveLetter, networkPath, userName, password, persistent) Then
|
||||
_Logger.Info($"✓ Netzlaufwerk {targetDriveLetter} erfolgreich gemappt zu {networkPath}")
|
||||
Return targetDriveLetter
|
||||
Else
|
||||
_Logger.Error($"❌ Fehler beim Mappen von {targetDriveLetter}")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"❌ Fehler in MapNetworkDrive: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Interne Methode zum tatsächlichen Mappen eines Netzlaufwerks
|
||||
''' </summary>
|
||||
Private Function MapNetworkDriveInternal(driveLetter As String,
|
||||
networkPath As String,
|
||||
userName As String,
|
||||
password As String,
|
||||
persistent As Boolean) As Boolean
|
||||
Try
|
||||
' Erst trennen falls vorhanden (ohne Fehler wenn nicht vorhanden)
|
||||
DisconnectNetworkDrive(driveLetter, True)
|
||||
|
||||
' NETRESOURCE-Struktur vorbereiten
|
||||
Dim netResource As New NETRESOURCE With {
|
||||
.dwType = RESOURCETYPE_DISK,
|
||||
.lpLocalName = driveLetter,
|
||||
.lpRemoteName = networkPath
|
||||
}
|
||||
|
||||
Dim flags As Integer = If(persistent, CONNECT_UPDATE_PROFILE, 0)
|
||||
|
||||
' WICHTIG: Credentials als Nothing übergeben = Verwende aktuelle Windows-Credentials
|
||||
' Wenn der Share öffentlich oder mit aktuellen Credentials erreichbar ist, funktioniert es
|
||||
Dim result As Integer = WNetAddConnection2(netResource, password, userName, flags)
|
||||
|
||||
Select Case result
|
||||
Case ERROR_SUCCESS
|
||||
_Logger.Debug($"✓ Laufwerk {driveLetter} erfolgreich gemappt")
|
||||
Return True
|
||||
|
||||
Case 1326 ' ERROR_LOGON_FAILURE
|
||||
_Logger.Error($"❌ Authentifizierungsfehler (1326): Anmeldung fehlgeschlagen für [{networkPath}]")
|
||||
_Logger.Error($" → Der UNC-Pfad erfordert möglicherweise spezielle Credentials")
|
||||
_Logger.Error($" → Oder der aktuelle Benutzer hat keine Berechtigung")
|
||||
Return False
|
||||
|
||||
Case 53 ' ERROR_BAD_NETPATH
|
||||
_Logger.Error($"❌ Netzwerkpfad nicht gefunden (53): [{networkPath}]")
|
||||
Return False
|
||||
|
||||
Case 67 ' ERROR_BAD_NET_NAME
|
||||
_Logger.Error($"❌ Netzwerkname ungültig (67): [{networkPath}]")
|
||||
Return False
|
||||
|
||||
Case 85 ' ERROR_ALREADY_ASSIGNED
|
||||
_Logger.Warn($"⚠️ Laufwerk {driveLetter} ist bereits zugewiesen (85)")
|
||||
' Versuche es zu trennen und erneut zu verbinden
|
||||
DisconnectNetworkDrive(driveLetter, force:=True)
|
||||
System.Threading.Thread.Sleep(500) ' Kurze Pause
|
||||
result = WNetAddConnection2(netResource, password, userName, flags)
|
||||
If result = ERROR_SUCCESS Then
|
||||
_Logger.Info($"✓ Laufwerk {driveLetter} nach erneutem Versuch erfolgreich gemappt")
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
Case Else
|
||||
_Logger.Error($"❌ WNetAddConnection2 Error Code: {result}")
|
||||
Return False
|
||||
End Select
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler in MapNetworkDriveInternal: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Test-Funktion um UNC-Pfad-Zugriff zu prüfen
|
||||
''' </summary>
|
||||
Public Function TestUNCAccess(uncPath As String) As Boolean
|
||||
Try
|
||||
_Logger.Info($"🔍 Teste Zugriff auf UNC-Pfad: [{uncPath}]")
|
||||
|
||||
' Teste ob Pfad existiert und erreichbar ist
|
||||
If System.IO.Directory.Exists(uncPath) Then
|
||||
_Logger.Info($"✓ UNC-Pfad ist direkt erreichbar ohne Mapping")
|
||||
|
||||
' Teste Lese-Berechtigung
|
||||
Try
|
||||
Dim files = System.IO.Directory.GetFiles(uncPath)
|
||||
_Logger.Info($"✓ Lese-Berechtigung vorhanden ({files.Length} Dateien gefunden)")
|
||||
Return True
|
||||
Catch permEx As UnauthorizedAccessException
|
||||
_Logger.Error($"❌ Keine Lese-Berechtigung: {permEx.Message}")
|
||||
Return False
|
||||
End Try
|
||||
Else
|
||||
_Logger.Error($"❌ UNC-Pfad nicht erreichbar oder existiert nicht")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"❌ Fehler beim Testen des UNC-Zugriffs: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Trennt ein Netzlaufwerk mit Windows-API
|
||||
''' </summary>
|
||||
Public Function DisconnectNetworkDrive(driveLetter As String, Optional force As Boolean = True) As Boolean
|
||||
Try
|
||||
' Formatierung sicherstellen
|
||||
driveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not driveLetter.EndsWith(":") Then
|
||||
driveLetter &= ":"
|
||||
End If
|
||||
Dim driveExists As Boolean = False
|
||||
Try
|
||||
Dim driveInfo As New System.IO.DriveInfo(driveLetter)
|
||||
driveExists = driveInfo.IsReady
|
||||
Catch
|
||||
driveExists = False
|
||||
End Try
|
||||
|
||||
If Not driveExists Then
|
||||
_Logger.Debug($"ℹ️ Laufwerk {driveLetter} existiert nicht - Disconnect übersprungen")
|
||||
Return True ' Kein Fehler, da das gewünschte Ergebnis erreicht ist (Laufwerk ist nicht verbunden)
|
||||
End If
|
||||
|
||||
Dim flags As Integer = CONNECT_UPDATE_PROFILE
|
||||
Dim result As Integer = WNetCancelConnection2(driveLetter, flags, force)
|
||||
|
||||
If result = ERROR_SUCCESS Then
|
||||
_Logger.Debug($"✓ Netzlaufwerk {driveLetter} erfolgreich getrennt")
|
||||
Return True
|
||||
ElseIf result = 2250 Then ' ERROR_NOT_CONNECTED
|
||||
' Von WARN auf DEBUG herabgestuft, da es kein echter Fehler ist
|
||||
_Logger.Debug($"ℹ️ Laufwerk {driveLetter} war nicht verbunden (Code 2250)")
|
||||
Return True
|
||||
ElseIf result = ERROR_ALREADY_ASSIGNED Then
|
||||
_Logger.Debug($"ℹ️ Netzlaufwerk {driveLetter} war nicht verbunden")
|
||||
Return True
|
||||
Else
|
||||
_Logger.Warn($"⚠️ Warnung beim Trennen von {driveLetter}: Error Code {result}")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"⚠️ Fehler beim Trennen von {driveLetter} (ignoriert): {ex.Message}")
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt alle gemappten Netzlaufwerke
|
||||
''' </summary>
|
||||
Public Function GetMappedNetworkDrives() As List(Of NetworkDriveInfo)
|
||||
Dim mappedDrives As New List(Of NetworkDriveInfo)
|
||||
|
||||
Try
|
||||
For Each drive As IO.DriveInfo In IO.DriveInfo.GetDrives()
|
||||
If drive.DriveType = IO.DriveType.Network Then
|
||||
Dim driveInfo As New NetworkDriveInfo With {
|
||||
.DriveLetter = drive.Name,
|
||||
.NetworkPath = GetNetworkPath(drive.Name),
|
||||
.DriveType = drive.DriveType,
|
||||
.IsReady = drive.IsReady
|
||||
}
|
||||
|
||||
If drive.IsReady Then
|
||||
Try
|
||||
driveInfo.TotalSize = drive.TotalSize
|
||||
driveInfo.FreeSpace = drive.AvailableFreeSpace
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"Konnte Größeninformationen für {drive.Name} nicht ermitteln: {ex.Message}")
|
||||
End Try
|
||||
End If
|
||||
|
||||
mappedDrives.Add(driveInfo)
|
||||
End If
|
||||
Next
|
||||
|
||||
_Logger.Debug($"Insgesamt {mappedDrives.Count} Netzlaufwerk(e) gefunden")
|
||||
Return mappedDrives
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler beim Ermitteln der Netzlaufwerke: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return mappedDrives
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt den UNC-Pfad eines gemappten Laufwerks
|
||||
''' </summary>
|
||||
Public Function GetNetworkPath(driveLetter As String) As String
|
||||
Try
|
||||
driveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not driveLetter.EndsWith(":") Then
|
||||
driveLetter &= ":"
|
||||
End If
|
||||
|
||||
Dim network As Object = CreateObject("WScript.Network")
|
||||
Dim enumDrives As Object = network.EnumNetworkDrives()
|
||||
|
||||
For i As Integer = 0 To enumDrives.Count - 1 Step 2
|
||||
If enumDrives.Item(i).ToString.Equals(driveLetter, StringComparison.OrdinalIgnoreCase) Then
|
||||
Return enumDrives.Item(i + 1).ToString()
|
||||
End If
|
||||
Next
|
||||
|
||||
Return String.Empty
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Debug($"Fehler beim Ermitteln des Netzwerkpfads für {driveLetter}: {ex.Message}")
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Prüft ob ein bestimmtes Laufwerk als Netzlaufwerk gemappt ist
|
||||
''' </summary>
|
||||
Public Shared Function IsDriveMapped(driveLetter As String) As Boolean
|
||||
Try
|
||||
driveLetter = driveLetter.Trim().ToUpper()
|
||||
If Not driveLetter.EndsWith(":") Then
|
||||
driveLetter &= ":"
|
||||
End If
|
||||
If Not driveLetter.EndsWith("\") Then
|
||||
driveLetter &= "\"
|
||||
End If
|
||||
|
||||
Dim driveInfo As New IO.DriveInfo(driveLetter)
|
||||
Return driveInfo.DriveType = IO.DriveType.Network AndAlso driveInfo.IsReady
|
||||
|
||||
Catch ex As Exception
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Gibt eine formatierte Übersicht aller gemappten Netzlaufwerke zurück
|
||||
''' </summary>
|
||||
Public Function GetMappedDrivesInfo() As String
|
||||
Dim result As New System.Text.StringBuilder()
|
||||
Dim drives = GetMappedNetworkDrives()
|
||||
|
||||
If drives.Count = 0 Then
|
||||
Return "Keine Netzlaufwerke gefunden."
|
||||
End If
|
||||
|
||||
result.AppendLine($"Gemappte Netzlaufwerke ({drives.Count}):")
|
||||
result.AppendLine(New String("-"c, 60))
|
||||
|
||||
For Each drive In drives
|
||||
result.AppendLine($"Laufwerk: {drive.DriveLetter}")
|
||||
result.AppendLine($" Pfad: {drive.NetworkPath}")
|
||||
result.AppendLine($" Status: {If(drive.IsReady, "Verfügbar", "Nicht verfügbar")}")
|
||||
|
||||
If drive.IsReady AndAlso drive.TotalSize > 0 Then
|
||||
Dim totalGB As Double = drive.TotalSize / (1024.0 ^ 3)
|
||||
Dim freeGB As Double = drive.FreeSpace / (1024.0 ^ 3)
|
||||
result.AppendLine($" Größe: {totalGB:N2} GB (Frei: {freeGB:N2} GB)")
|
||||
End If
|
||||
|
||||
result.AppendLine()
|
||||
Next
|
||||
|
||||
Return result.ToString()
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Mappt ein spezifisches Laufwerk (z.B. "V") mit Blacklist-Prüfung
|
||||
''' </summary>
|
||||
Public Function MapSpecificDrive(driveLetter As String, blacklist As String, networkPath As String) As Boolean
|
||||
Try
|
||||
' Formatierung sicherstellen
|
||||
driveLetter = driveLetter.Trim().ToUpper().Replace(":", "")
|
||||
|
||||
If String.IsNullOrEmpty(driveLetter) OrElse driveLetter.Length <> 1 Then
|
||||
_Logger.Warn($"⚠️ Ungültiger Laufwerksbuchstabe: [{driveLetter}]")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim driveWithColon As String = driveLetter & ":"
|
||||
|
||||
' Prüfen ob Laufwerk verfügbar ist
|
||||
If Not IsDriveLetterAvailable(driveWithColon, blacklist) Then
|
||||
_Logger.Warn($"⚠️ Laufwerk {driveWithColon} ist nicht verfügbar (bereits verwendet oder in Blacklist)")
|
||||
Return False
|
||||
End If
|
||||
|
||||
' UNC-Pfad vorbereiten (ohne abschließenden Backslash)
|
||||
Dim uncPath As String = networkPath.TrimEnd("\"c)
|
||||
|
||||
' Laufwerk mappen (OHNE Credentials, persistent=False für temporäres Mapping)
|
||||
Dim result = MapNetworkDrive(driveWithColon, uncPath, blacklist, userName:=Nothing, password:=Nothing, persistent:=False)
|
||||
|
||||
If Not String.IsNullOrEmpty(result) Then
|
||||
_Logger.Debug($"✓ Laufwerk {driveWithColon} erfolgreich gemappt zu [{uncPath}]")
|
||||
Return True
|
||||
Else
|
||||
_Logger.Error($"❌ Fehler beim Mappen von {driveWithColon}")
|
||||
Return False
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler in MapSpecificDrive: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Mappt automatisch den nächsten freien Laufwerksbuchstaben (Z→A)
|
||||
''' </summary>
|
||||
Public Function MapDriveAutomatic(blacklist As String, networkPath As String) As String
|
||||
Try
|
||||
' UNC-Pfad vorbereiten (ohne abschließenden Backslash)
|
||||
Dim uncPath As String = networkPath.TrimEnd("\"c)
|
||||
|
||||
_Logger.Debug($"🔍 Suche automatisch freien Laufwerksbuchstaben...")
|
||||
_Logger.Debug($" Blacklist: [{blacklist}]")
|
||||
_Logger.Debug($" Netzwerkpfad: [{uncPath}]")
|
||||
|
||||
' Automatisches Mapping (leer = automatische Auswahl, persistent=False)
|
||||
Dim result = MapNetworkDrive("", uncPath, blacklist, userName:=Nothing, password:=Nothing, persistent:=False)
|
||||
|
||||
If Not String.IsNullOrEmpty(result) Then
|
||||
_Logger.Debug($"✓ Automatisch gewähltes Laufwerk: {result}")
|
||||
Return result
|
||||
Else
|
||||
_Logger.Error($"❌ Kein freier Laufwerksbuchstabe verfügbar")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error($"Fehler in MapDriveAutomatic: {ex.Message}")
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
End Class
|
||||
@@ -2,6 +2,7 @@
|
||||
Imports System.Web
|
||||
|
||||
Public Module ModuleExtensions
|
||||
Public TEMP_DOCUMENT_FOLDER As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "Documents")
|
||||
Const UnixEraStartTicks As Long = 621355968000000000
|
||||
|
||||
' ======================================================
|
||||
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("basisfunktionalitäten für DigitalData Anwendungen")>
|
||||
<Assembly: AssemblyCompany("Digital Data GmbH")>
|
||||
<Assembly: AssemblyProduct("Modules.")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("1.3.9.0")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' indem Sie "*" wie unten gezeigt eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.3.9.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.9.0")>
|
||||
<Assembly: AssemblyVersion("2.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.0.0.0")>
|
||||
|
||||
@@ -17,6 +17,14 @@
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -47,16 +47,7 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
@@ -148,6 +139,16 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Database\Database.vbproj">
|
||||
<Project>{eaf0ea75-5fa7-485d-89c7-b2d843b03a96}</Project>
|
||||
<Name>Database</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
@@ -36,8 +36,9 @@ Public Class ConfigDbFunct
|
||||
Dim oDatabase As MSSQLServer = New MSSQLServer(pLogConfig, oDecryptedConnectionString)
|
||||
|
||||
Dim oSql As String = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = '" + pProductName + "' AND ACTIVE = 1 AND VERSION = '" + pVersion + "'"
|
||||
Dim oLicenseString As String = oDatabase.GetScalarValue(oSql)
|
||||
oLogger.Debug(String.Format("oSql in GetProductLicense: {0}", oSql))
|
||||
|
||||
Dim oLicenseString As String = oDatabase.GetScalarValue(oSql)
|
||||
Return oLicenseString
|
||||
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("Stellt Module für die Konfiguration von Produkten bereit")>
|
||||
<Assembly: AssemblyCompany("Digital Data GmbH, Heuchelheim")>
|
||||
<Assembly: AssemblyProduct("Modules.Config")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("1.4.0.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.3.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.0.0")>
|
||||
<Assembly: AssemblyVersion("1.4.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.4.0.0")>
|
||||
|
||||
2
Config/My Project/Settings.Designer.vb
generated
2
Config/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Threading
|
||||
Imports DigitalData.Modules.Encryption
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
@@ -313,6 +314,19 @@ Public Class MSSQLServer
|
||||
End Using
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(pSqlCommand As String, Optional pTimeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Using oSqlConnection = GetSQLConnection()
|
||||
Return GetDatatableWithConnectionObject(pSqlCommand, oSqlConnection, TransactionMode.NoTransaction, Nothing, pTimeout)
|
||||
End Using
|
||||
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(pSqlCommand As SqlCommand, Optional pTimeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Using oSqlConnection = GetSQLConnection()
|
||||
Return GetDatatableWithConnectionObject(pSqlCommand, oSqlConnection, TransactionMode.NoTransaction, Nothing, pTimeout)
|
||||
End Using
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Returns a datatable for a SQL Statement
|
||||
''' </summary>
|
||||
@@ -340,6 +354,10 @@ Public Class MSSQLServer
|
||||
Return Await Task.Run(Function() GetDatatable(pSqlCommandObject, pTimeout))
|
||||
End Function
|
||||
|
||||
Public Async Function GetDatatableWithoutTransactionAsync(pSqlCommand As String, Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable)
|
||||
Return Await Task.Run(Function() GetDatatableWithoutTransaction(pSqlCommand, pTimeout))
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithConnection(pSqlCommand As String, pConnectionString As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
Using oConnection = GetConnection(pConnectionString)
|
||||
Return GetDatatableWithConnectionObject(pSqlCommand, oConnection, pTimeout:=Timeout)
|
||||
@@ -470,7 +488,6 @@ Public Class MSSQLServer
|
||||
Dim oTransaction As SqlTransaction = MaybeGetTransaction(pSqlConnection, pTransactionMode, pTransaction)
|
||||
|
||||
Try
|
||||
|
||||
Logger.Debug("ExecuteNonQueryWithConnectionObject: Running Command [{0}] and Parameters [{1}]", pSqlCommandObject.CommandText, GetParameterListAsString(pSqlCommandObject))
|
||||
|
||||
pSqlCommandObject.Connection = pSqlConnection
|
||||
@@ -652,10 +669,13 @@ Public Class MSSQLServer
|
||||
Cast(Of SqlParameter).
|
||||
Select(Function(p) $"({p.ParameterName}={p.Value})").
|
||||
ToList()
|
||||
|
||||
Dim oParamString = String.Join(",", oList)
|
||||
If oParamString.Length > 1000 Then
|
||||
oParamString = oParamString.Substring(1, 1000)
|
||||
End If
|
||||
Return oParamString
|
||||
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
@@ -151,7 +151,7 @@ Public Class Oracle
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetDatatable(SqlCommand As SqlClient.SqlCommand, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatable
|
||||
Public Function GetDatatable(SqlCommand As System.Data.SqlClient.SqlCommand, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatable
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
|
||||
@@ -251,5 +251,11 @@ Public Class Oracle
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(SqlCommand As String, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
|
||||
Public Function GetDatatableWithoutTransaction(SqlCommand As SqlClient.SqlCommand, Optional Timeout As Integer = 120) As DataTable Implements IDatabase.GetDatatableWithoutTransaction
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
End Class
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
|
||||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
|
||||
</configSections>
|
||||
<entityFramework>
|
||||
<defaultConnectionFactory type="EntityFramework.Firebird.FbConnectionFactory, EntityFramework.Firebird" />
|
||||
@@ -11,13 +12,29 @@
|
||||
<provider invariantName="FirebirdSql.Data.FirebirdClient" type="EntityFramework.Firebird.FbProviderServices, EntityFramework.Firebird" />
|
||||
</providers>
|
||||
</entityFramework>
|
||||
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
|
||||
</startup>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<remove invariant="Oracle.ManagedDataAccess.Client" />
|
||||
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
</configuration>
|
||||
@@ -47,10 +47,8 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Encryption">
|
||||
<HintPath>..\Encryption\bin\Debug\DigitalData.Modules.Encryption.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
@@ -65,24 +63,55 @@
|
||||
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Oracle.ManagedDataAccess">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\Oracle.ManagedDataAccess.dll</HintPath>
|
||||
<Reference Include="Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Oracle.ManagedDataAccess.21.15.0\lib\net462\Oracle.ManagedDataAccess.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.Odbc, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Data.Odbc.6.0.1\lib\net461\System.Data.Odbc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Formats.Asn1, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.8.0.0\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.6.0.0\lib\net461\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.6.0.1\lib\net461\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -149,8 +178,20 @@
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="Oracle.DataAccess.Common.Configuration.Section.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="Oracle.ManagedDataAccess.Client.Configuration.Section.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Encryption\Encryption.vbproj">
|
||||
<Project>{8a8f20fc-c46e-41ac-bee7-218366cfff99}</Project>
|
||||
<Name>Encryption</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
@@ -158,9 +199,11 @@
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
|
||||
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets" Condition="Exists('..\packages\System.Text.Json.6.0.1\build\System.Text.Json.targets')" />
|
||||
</Project>
|
||||
@@ -11,6 +11,9 @@ Public Interface IDatabase
|
||||
Function GetDatatable(SqlCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
Function GetDatatable(SqlCommand As SqlCommand, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
|
||||
Function GetDatatableWithoutTransaction(SqlCommand As String, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
Function GetDatatableWithoutTransaction(SqlCommand As SqlCommand, Optional Timeout As Integer = Constants.DEFAULT_TIMEOUT) As DataTable
|
||||
|
||||
Function ExecuteNonQuery(SQLCommand As String, Timeout As Integer) As Boolean
|
||||
Function ExecuteNonQuery(SQLCommand As String) As Boolean
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("Modules.Database")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
<Assembly: AssemblyTrademark("2.3.7.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.3.6.0")>
|
||||
<Assembly: AssemblyFileVersion("2.3.6.0")>
|
||||
<Assembly: AssemblyVersion("2.3.7.0")>
|
||||
<Assembly: AssemblyFileVersion("2.3.7.0")>
|
||||
|
||||
2
Database/My Project/Settings.Designer.vb
generated
2
Database/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
138
Database/Oracle.DataAccess.Common.Configuration.Section.xsd
Normal file
138
Database/Oracle.DataAccess.Common.Configuration.Section.xsd
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
<xs:simpleType name="parameterDirection">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Output"/>
|
||||
<xs:enumeration value="InputOutput"/>
|
||||
<xs:enumeration value="ReturnValue"/>
|
||||
<xs:enumeration value="Implicit"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="customBoolean">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="true"/>
|
||||
<xs:enumeration value="false"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ONSParameters">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="nodeList"/>
|
||||
<!--<xs:enumeration value="walletFile"/>
|
||||
<xs:enumeration value="walletPassword"/>-->
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ONSModeValues">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="local"/>
|
||||
<xs:enumeration value="remote"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="datatype">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="System.Binary"/>
|
||||
<xs:enumeration value="System.Boolean"/>
|
||||
<xs:enumeration value="System.Byte"/>
|
||||
<xs:enumeration value="System.Byte[]"/>
|
||||
<xs:enumeration value="System.Char"/>
|
||||
<xs:enumeration value="System.DateTime"/>
|
||||
<xs:enumeration value="System.DateTimeOffset"/>
|
||||
<xs:enumeration value="System.Decimal"/>
|
||||
<xs:enumeration value="System.Double"/>
|
||||
<xs:enumeration value="System.Guid"/>
|
||||
<xs:enumeration value="System.Int16"/>
|
||||
<xs:enumeration value="System.Int32"/>
|
||||
<xs:enumeration value="System.Int64"/>
|
||||
<xs:enumeration value="System.SByte"/>
|
||||
<xs:enumeration value="System.Single"/>
|
||||
<xs:enumeration value="System.String"/>
|
||||
<xs:enumeration value="System.TimeSpan"/>
|
||||
<xs:enumeration value="System.UInt16"/>
|
||||
<xs:enumeration value="System.UInt32"/>
|
||||
<xs:enumeration value="System.UInt64"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="providerType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="BFile"/>
|
||||
<xs:enumeration value="BinaryFloat"/>
|
||||
<xs:enumeration value="BinaryDouble"/>
|
||||
<xs:enumeration value="Blob"/>
|
||||
<xs:enumeration value="Byte"/>
|
||||
<xs:enumeration value="Char"/>
|
||||
<xs:enumeration value="Clob"/>
|
||||
<xs:enumeration value="Date"/>
|
||||
<xs:enumeration value="Decimal"/>
|
||||
<xs:enumeration value="Double"/>
|
||||
<xs:enumeration value="Int16"/>
|
||||
<xs:enumeration value="Int32"/>
|
||||
<xs:enumeration value="Int64"/>
|
||||
<xs:enumeration value="IntervalDS"/>
|
||||
<xs:enumeration value="IntervalYM"/>
|
||||
<xs:enumeration value="Long"/>
|
||||
<xs:enumeration value="LongRaw"/>
|
||||
<xs:enumeration value="NChar"/>
|
||||
<xs:enumeration value="NClob"/>
|
||||
<xs:enumeration value="NVarchar2"/>
|
||||
<xs:enumeration value="Object"/>
|
||||
<xs:enumeration value="Raw"/>
|
||||
<xs:enumeration value="Single"/>
|
||||
<xs:enumeration value="TimeStamp"/>
|
||||
<xs:enumeration value="TimeStampLTZ"/>
|
||||
<xs:enumeration value="TimeStampTZ"/>
|
||||
<xs:enumeration value="Varchar2"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="nativeDataType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="BFile"/>
|
||||
<xs:enumeration value="Binary_Float"/>
|
||||
<xs:enumeration value="Binary_Double"/>
|
||||
<xs:enumeration value="Blob"/>
|
||||
<xs:enumeration value="Char"/>
|
||||
<xs:enumeration value="Clob"/>
|
||||
<xs:enumeration value="Date"/>
|
||||
<xs:enumeration value="Number"/>
|
||||
<xs:enumeration value="Interval Day To Second"/>
|
||||
<xs:enumeration value="Interval Year To Month"/>
|
||||
<xs:enumeration value="Long"/>
|
||||
<xs:enumeration value="Long Raw"/>
|
||||
<xs:enumeration value="NChar"/>
|
||||
<xs:enumeration value="NClob"/>
|
||||
<xs:enumeration value="NVarchar2"/>
|
||||
<xs:enumeration value="Raw"/>
|
||||
<xs:enumeration value="Rowid"/>
|
||||
<xs:enumeration value="Timestamp"/>
|
||||
<xs:enumeration value="Timestamp With Local Time Zone"/>
|
||||
<xs:enumeration value="Timestamp With Time Zone"/>
|
||||
<xs:enumeration value="URowid"/>
|
||||
<xs:enumeration value="UserDefinedType"/>
|
||||
<xs:enumeration value="Varchar2"/>
|
||||
<xs:enumeration value="XmlType"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
|
||||
<xs:simpleType name="providerDBType">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="AnsiString"/>
|
||||
<xs:enumeration value="AnsiStringFixedLength"/>
|
||||
<xs:enumeration value="Binary"/>
|
||||
<xs:enumeration value="Byte"/>
|
||||
<xs:enumeration value="Date"/>
|
||||
<xs:enumeration value="DateTime"/>
|
||||
<xs:enumeration value="DateTimeOffset"/>
|
||||
<xs:enumeration value="Decimal"/>
|
||||
<xs:enumeration value="Double"/>
|
||||
<xs:enumeration value="Int16"/>
|
||||
<xs:enumeration value="Int32"/>
|
||||
<xs:enumeration value="Int64"/>
|
||||
<xs:enumeration value="Object"/>
|
||||
<xs:enumeration value="Single"/>
|
||||
<xs:enumeration value="String"/>
|
||||
<xs:enumeration value="StringFixedLength"/>
|
||||
<xs:enumeration value="Time"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,221 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
||||
<xs:include schemaLocation="Oracle.DataAccess.Common.Configuration.Section.xsd"/>
|
||||
<xs:element name="oracle.manageddataaccess.client" >
|
||||
<xs:complexType>
|
||||
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:element name="version" type="odpmversiontype" minOccurs="0" />
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:complexType name="odpmversiontype">
|
||||
<xs:complexContent>
|
||||
<xs:extension base="odpmparameters">
|
||||
<xs:attribute name="number" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="odpmparameters">
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" name="settings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="setting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="udtMappings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="udtMapping">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="typeName" type="xs:string" use="required" />
|
||||
<xs:attribute name="factoryName" type="xs:string" use="required" />
|
||||
<xs:attribute name="dataSource" type="xs:string" use="required" />
|
||||
<xs:attribute name="schemaName" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="LDAPsettings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="LDAPsetting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="distributedTransaction">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="setting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="dataSources">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="dataSource">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="alias" type="xs:string" use="required" />
|
||||
<xs:attribute name="descriptor" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element minOccurs="0" name="connectionPools">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="connectionPool">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="connectionString" type="xs:string" use="required" />
|
||||
<xs:attribute name="poolName" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element minOccurs="0" name="edmMappings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="edmMapping">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="add">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="precision" type="xs:int" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="dataType" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="edmNumberMapping">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="add">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="NETType" type="xs:string" use="required" />
|
||||
<xs:attribute name="MinPrecision" type="xs:int" use="required" />
|
||||
<xs:attribute name="MaxPrecision" type="xs:int" use="required" />
|
||||
<xs:attribute name="DBType" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="implicitRefCursor">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="storedProcedure">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="1" name="refCursor">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="1" minOccurs="1" name="bindInfo">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="mode" type="parameterDirection" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element maxOccurs="unbounded" minOccurs="0" name="metadata">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="columnOrdinal" type="xs:int" use="required" />
|
||||
<xs:attribute name="columnName" type="xs:string" use="required" />
|
||||
<xs:attribute name="baseColumnName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="baseSchemaName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="baseTableName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="providerType" type="providerType" use="optional" />
|
||||
<xs:attribute name="columnSize" type="xs:int" use="optional" />
|
||||
<xs:attribute name="numericPrecision" type="xs:int" use="optional" />
|
||||
<xs:attribute name="numericScale" type="xs:int" use="optional" />
|
||||
<xs:attribute name="isUnique" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isKey" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isRowID" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="dataType" type="datatype" use="optional" />
|
||||
<xs:attribute name="allowDBNull" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isAliased" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isByteSemantic" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isExpression" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isHidden" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isReadOnly" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="isLong" type="customBoolean" use="optional" />
|
||||
<xs:attribute name="udtTypeName" type="xs:string" use="optional" />
|
||||
<xs:attribute name="nativeDataType" type="nativeDataType" use="optional" />
|
||||
<xs:attribute name="providerDBType" type="providerDBType" use="optional" />
|
||||
<xs:attribute name="objectName" type="xs:string" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="name" type="xs:string" use="optional" />
|
||||
<xs:attribute name="position" type="xs:int" use="optional" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="schema" type="xs:string" use="optional" />
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" name="onsConfig">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element minOccurs="0" name="settings">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="2" minOccurs="0" name="setting">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="xs:string" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="ons">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="3" minOccurs="1" name="add">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="name" type="ONSParameters" use="required" />
|
||||
<xs:attribute name="value" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="database" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="configFile" type="xs:string" use="optional" />
|
||||
<xs:attribute name="mode" type="ONSModeValues" use="required" />
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
||||
@@ -1,10 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Encryption" version="1.3.1" targetFramework="net462" />
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net462" />
|
||||
<package id="EntityFramework" version="6.4.4" targetFramework="net461" />
|
||||
<package id="EntityFramework.Firebird" version="6.4.0" targetFramework="net461" />
|
||||
<package id="FirebirdSql.Data.FirebirdClient" version="7.5.0" targetFramework="net461" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="Oracle.ManagedDataAccess" version="21.15.0" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
|
||||
<package id="System.Data.Odbc" version="6.0.1" targetFramework="net461" />
|
||||
<package id="System.Formats.Asn1" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="6.0.1" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -44,15 +44,6 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
@@ -304,6 +295,24 @@
|
||||
<LastGenOutput>Reference.vb</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Config\Config.vbproj">
|
||||
<Project>{44982f9b-6116-44e2-85d0-f39650b1ef99}</Project>
|
||||
<Name>Config</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Database\Database.vbproj">
|
||||
<Project>{eaf0ea75-5fa7-485d-89c7-b2d843b03a96}</Project>
|
||||
<Name>Database</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
@@ -44,6 +44,14 @@
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /></startup></configuration>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -45,8 +45,7 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
|
||||
2
Encryption/My Project/Settings.Designer.vb
generated
2
Encryption/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -45,7 +45,8 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
|
||||
2
Filesystem/My Project/Settings.Designer.vb
generated
2
Filesystem/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net48" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net48" />
|
||||
<package id="NuGet.CommandLine" version="6.13.2" targetFramework="net48" developmentDependency="true" />
|
||||
<package id="protobuf-net" version="2.4.0" targetFramework="net461" />
|
||||
|
||||
@@ -49,16 +49,13 @@
|
||||
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\BouncyCastle.Cryptography.2.5.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DocumentFormat.OpenXml, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||
@@ -67,74 +64,95 @@
|
||||
<Reference Include="DocumentFormat.OpenXml.Framework, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DocumentFormat.OpenXml.Framework.3.2.0\lib\net46\DocumentFormat.OpenXml.Framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Markdown, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Markdown.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.wia.gateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6973b5c22dcf45f7, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.33.2.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.33.2\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.5\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.Cryptography, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.Cryptography.10.0.5\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.HashCode.6.0.0\lib\net462\Microsoft.Bcl.HashCode.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NativeSDK.Exceptions, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Exceptions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings.Edition, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.Edition.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -144,8 +162,8 @@
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenMcdf, Version=2.4.1.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.2.4.1\lib\net40\OpenMcdf.dll</HintPath>
|
||||
<Reference Include="OpenMcdf, Version=3.1.4.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.3.1.4\lib\netstandard2.0\OpenMcdf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="protobuf-net, Version=3.0.0.0, Culture=neutral, PublicKeyToken=257b51d87d2e4d67, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\protobuf-net.3.2.46\lib\net462\protobuf-net.dll</HintPath>
|
||||
@@ -157,55 +175,64 @@
|
||||
<HintPath>..\packages\RtfPipe.2.0.7677.4303\lib\net45\RtfPipe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
|
||||
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.CodeDom.8.0.0\lib\net462\System.CodeDom.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
<Reference Include="System.Collections.Immutable, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.10.0.5\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.DirectoryServices.AccountManagement" />
|
||||
<Reference Include="System.Formats.Asn1, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.10.0.5\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Packaging, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.8.0.1\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
<Reference Include="System.IO.Packaging, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.10.0.5\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Pipelines, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Pipelines.10.0.5\lib\net462\System.IO.Pipelines.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
|
||||
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http.Formatting, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.6.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.8.0.1\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.10.0.5\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
<Reference Include="System.Text.Encodings.Web, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.10.0.5\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.8.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
<Reference Include="System.Text.Json, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.10.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
<Reference Include="System.Threading.Channels, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Channels.10.0.5\lib\net462\System.Threading.Channels.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
<Reference Include="System.ValueTuple, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.6.1\lib\net462\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
@@ -238,6 +265,7 @@
|
||||
<Compile Include="GrapQLInterface\LoginData.vb" />
|
||||
<Compile Include="GrapQLInterface\LogoutData.vb" />
|
||||
<Compile Include="GrapQLInterface\QueryData.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Enums\ErrorCodes.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Enums\Item_Types.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Exceptions.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
@@ -259,6 +287,7 @@
|
||||
<Compile Include="ZUGFeRDInterface\PDFConverter.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Peppol_UBL2.1\CreditNoteType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Peppol_UBL2.1\InvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\RejectionStringRow.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Validator.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version1.0\CrossIndustryDocumentType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface.vb" />
|
||||
@@ -270,6 +299,8 @@
|
||||
<Compile Include="ZUGFeRDInterface\Version2.2_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.3_3_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.3_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.4_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\Version2.5_FacturX\CrossIndustryInvoiceType.vb" />
|
||||
<Compile Include="ZUGFeRDInterface\XmlItemProperty.vb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -298,11 +329,11 @@
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("Modules.Interfaces")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("2.4.4.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.3.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.3.0.0")>
|
||||
<Assembly: AssemblyVersion("2.4.4.0")>
|
||||
<Assembly: AssemblyFileVersion("2.4.4.0")>
|
||||
|
||||
@@ -19,6 +19,7 @@ Public Class ZUGFeRDInterface
|
||||
Public Const ZUGFERD_SPEC_DEFAULT = "DEFAULT"
|
||||
Public Const ZUGFERD_SPEC_10 = "ZUGFERD_10"
|
||||
Public Const ZUGFERD_SPEC_2x = "ZUGFERD_2x"
|
||||
Public Const ZUGFERD_SPEC_2_3x = "ZUGFERD_2_3x"
|
||||
|
||||
Public Const UBL_SPEC_21 = "UBL_21"
|
||||
|
||||
@@ -28,6 +29,8 @@ Public Class ZUGFeRDInterface
|
||||
Public Const XMLSCHEMA_ZUGFERD_22 = "Version2_2_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_23 = "Version2_3_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_233 = "Version2_3_3_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_24 = "Version2_4_FacturX"
|
||||
Public Const XMLSCHEMA_ZUGFERD_25 = "Version2_5_FacturX"
|
||||
Public Const XMLSCHEMA_UBL_21_INVOICE = "UBL2_1_INVOICE"
|
||||
Public Const XMLSCHEMA_UBL_21_CREDITNOTE = "UBL2_1_CREDITNOTE"
|
||||
|
||||
@@ -50,16 +53,19 @@ Public Class ZUGFeRDInterface
|
||||
UnsupportedFormat
|
||||
FileTooBig
|
||||
UnknownError
|
||||
NotInUse
|
||||
End Enum
|
||||
|
||||
Public ReadOnly Property FileGroup As FileGroups
|
||||
Public ReadOnly Property PropertyValues As PropertyValues
|
||||
|
||||
|
||||
Public Class ZugferdOptions
|
||||
Public Property AllowFacturX_Filename As Boolean = True
|
||||
Public Property AllowXRechnung_Filename As Boolean = True
|
||||
Public Property AllowZugferd_1_0_Schema As Boolean = True
|
||||
Public Property AllowZugferd_2_x_Schema As Boolean = True
|
||||
Public Property AllowZugferd_2_3_x_Schema As Boolean = True
|
||||
Public Property AllowPeppol_3_x_Schema As Boolean = False
|
||||
End Class
|
||||
|
||||
@@ -81,6 +87,7 @@ Public Class ZUGFeRDInterface
|
||||
Public ElementValue As String
|
||||
Public ErrorMessage As String
|
||||
Public ErrorMessageDE As String
|
||||
Public ErrorMessageToken As String
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
@@ -130,24 +137,46 @@ Public Class ZUGFeRDInterface
|
||||
AllowedFilenames = oAllowedFilenames
|
||||
End Sub
|
||||
|
||||
Public Function FilterPropertyMap(pPropertyMap As Dictionary(Of String, XmlItemProperty), pSpecification As String) As Dictionary(Of String, XmlItemProperty)
|
||||
_logger.Debug("Filtering Property map for Specification [{0}]", pSpecification)
|
||||
Public Function FilterPropertyMap(pPropertyMapList As List(Of XmlItemProperty), pSpecification As String) As Dictionary(Of String, XmlItemProperty)
|
||||
_logger.Debug("Filtering Property map list for Specification [{0}]", pSpecification)
|
||||
|
||||
If pSpecification = ZUGFERD_SPEC_10 Then
|
||||
_logger.Debug("Special Case [{0}], including [{1}]", ZUGFERD_SPEC_10, ZUGFERD_SPEC_DEFAULT)
|
||||
Return pPropertyMap.
|
||||
Where(Function(kv) kv.Value.Specification = pSpecification Or kv.Value.Specification = ZUGFERD_SPEC_DEFAULT).
|
||||
ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)
|
||||
Try
|
||||
|
||||
_logger.Debug("Special Case [{0}], including [{1}]", ZUGFERD_SPEC_10, ZUGFERD_SPEC_DEFAULT)
|
||||
|
||||
Dim countElements As Integer = pPropertyMapList.Where(Function(x) x.Specification = pSpecification Or x.Specification = ZUGFERD_SPEC_DEFAULT).Count
|
||||
_logger.Debug("Property map list contains [{0}] elements for specification [{1}]", countElements, pSpecification)
|
||||
|
||||
Return pPropertyMapList.
|
||||
Where(Function(kv) kv.Specification = pSpecification Or kv.Specification = ZUGFERD_SPEC_DEFAULT).
|
||||
ToDictionary(Function(kv) kv.XMLPath, Function(kv) kv)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
Else
|
||||
_logger.Debug("Using Specification [{0}]", pSpecification)
|
||||
Return pPropertyMap.
|
||||
Where(Function(kv) kv.Value.Specification = pSpecification).
|
||||
ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value)
|
||||
|
||||
Try
|
||||
|
||||
Dim countElements As Integer = pPropertyMapList.Where(Function(x) x.Specification = pSpecification).Count
|
||||
_logger.Debug("Property map list contains [{0}] elements for specification [{1}]", countElements, pSpecification)
|
||||
|
||||
Return pPropertyMapList.
|
||||
Where(Function(kv) kv.Specification = pSpecification).
|
||||
ToDictionary(Function(kv) kv.XMLPath, Function(kv) kv)
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End If
|
||||
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Public Function GetSerializedXMLContentFromFile(oFileInfo As FileInfo) As ZugferdResult
|
||||
Dim oResult = New ZugferdResult()
|
||||
Dim oMessage As String = String.Empty
|
||||
|
||||
Try
|
||||
Dim oFileSize As Integer = oFileInfo.Length
|
||||
@@ -172,7 +201,7 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige XML Datei.")
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.UnsupportedFerdException, "Datei ist eine ungültige XML Datei.")
|
||||
End Try
|
||||
|
||||
If oResult.ValidationErrors.Any() Then
|
||||
@@ -188,7 +217,6 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="Path"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
Public Function ExtractZUGFeRDFileWithGDPicture(Path As String) As ZugferdResult
|
||||
Dim oResult = ValidateZUGFeRDFileWithGDPicture(Path)
|
||||
oResult = ValidateZUGFeRDDocument(oResult)
|
||||
@@ -206,7 +234,6 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="Stream"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
Public Function ExtractZUGFeRDFileWithGDPicture(Stream As Stream) As ZugferdResult
|
||||
Dim oResult = ValidateZUGFeRDFileWithGDPicture(Stream)
|
||||
oResult = ValidateZUGFeRDDocument(oResult)
|
||||
@@ -229,7 +256,6 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="pStream"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
''' <returns>The embedded xml data as an XPath document</returns>
|
||||
Public Function ValidateZUGFeRDFileWithGDPicture(pStream As Stream) As ZugferdResult
|
||||
Dim oEmbedExtractor = New PDFEmbeds(_logConfig)
|
||||
@@ -248,7 +274,7 @@ Public Class ZUGFeRDInterface
|
||||
Throw ex
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Error while validating ZUGFeRD file with GDPicture")
|
||||
_logger.Warn("Error while validating eInvoice file with GDPicture")
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
@@ -258,18 +284,23 @@ Public Class ZUGFeRDInterface
|
||||
''' Validates a ZUGFeRD File and extracts the XML Document from it
|
||||
''' </summary>
|
||||
''' <param name="pPath"></param>
|
||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||
''' <returns>The embedded xml data as an XPath document</returns>
|
||||
Public Function ValidateZUGFeRDFileWithGDPicture(pPath As String) As ZugferdResult
|
||||
Public Function ValidateZUGFeRDFileWithGDPicture(pPath As String, Optional Validate As Boolean = False) As ZugferdResult
|
||||
Dim oEmbedExtractor = New PDFEmbeds(_logConfig)
|
||||
|
||||
Try
|
||||
' Extract XML attachments only!
|
||||
Dim oFiles = oEmbedExtractor.Extract(pPath, New List(Of String) From {"xml"})
|
||||
If Validate Then
|
||||
Dim oZugferdResult = HandleEmbeddedFiles(oFiles)
|
||||
Return _Validator.ValidateZUGFeRDDocument(oZugferdResult)
|
||||
Else
|
||||
' Attachments are in this case the files that are embedded into a pdf file,
|
||||
' like for example the zugferd-invoice.xml file
|
||||
Return HandleEmbeddedFiles(oFiles)
|
||||
End If
|
||||
|
||||
|
||||
' Attachments are in this case the files that are embedded into a pdf file,
|
||||
' like for example the zugferd-invoice.xml file
|
||||
Return HandleEmbeddedFiles(oFiles)
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
' Don't log ZUGFeRD Exceptions here, they should be handled by the calling code.
|
||||
@@ -277,19 +308,15 @@ Public Class ZUGFeRDInterface
|
||||
Throw ex
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Error while validating ZUGFeRD file with GDPicture")
|
||||
_logger.Warn("Error while validating eInvoice file with GDPicture")
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function HandleEmbeddedFiles(pResults As List(Of PDFEmbeds.EmbeddedFile)) As ZugferdResult
|
||||
If pResults Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil die Attachments nicht gelesen werden konnten.")
|
||||
End If
|
||||
|
||||
If pResults.Count = 0 Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil sie keine Attachments enthält.")
|
||||
If pResults Is Nothing OrElse pResults.Count = 0 Then
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdNoXMLAttachmentFound, "Die Datei ist keine gültige ZUGFeRD-Datei, es wurde kein passender XML-Anhang gefunden.")
|
||||
End If
|
||||
|
||||
' Find the first file which filename matches the valid filenames for embedded invoice files
|
||||
@@ -298,7 +325,7 @@ Public Class ZUGFeRDInterface
|
||||
FirstOrDefault()
|
||||
|
||||
If oValidResult Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil keine entsprechende XML-Datei gefunden wurde.")
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdNoXMLAttachmentFound, "Die Datei ist keine ZUGFeRD Datei, weil keine passende XML-Datei gefunden wurde.")
|
||||
End If
|
||||
|
||||
' Search the embedded files for the ones which are allowed as per the configuration.
|
||||
@@ -308,7 +335,7 @@ Public Class ZUGFeRDInterface
|
||||
FirstOrDefault()
|
||||
|
||||
If oAllowedResult Is Nothing Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.UnsupportedFormat, "Datei ist eine ZUGFeRD Datei, aber das Format wird nicht unterstützt.", oAllowedResult.FileName)
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdNoXMLAttachmentFound, "Datei enthält einen XML-Anhang mit einem ungültigen Dateinamen.", oAllowedResult.FileName)
|
||||
End If
|
||||
|
||||
Try
|
||||
@@ -326,7 +353,7 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige ZUGFeRD Datei.")
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.InvalidFerdException, "XML-Datei konnte nicht gelesen werden.")
|
||||
End Try
|
||||
End Function
|
||||
|
||||
@@ -358,6 +385,33 @@ Public Class ZUGFeRDInterface
|
||||
})
|
||||
End If
|
||||
|
||||
'' Reihenfolge ab 2.3 geändert. Neuste Version immer zuerst bzw. oben
|
||||
If _Options.AllowZugferd_2_3_x_Schema Then
|
||||
oAllowedTypes.AddRange(New List(Of AllowedType) From {
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_5_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_25
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_4_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_24
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_233
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2_3x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_23
|
||||
}
|
||||
})
|
||||
End If
|
||||
|
||||
'' Reihenfolge 2.0 muss unverändert bleiben. Älteste Version immer zuerst!
|
||||
If _Options.AllowZugferd_2_x_Schema Then
|
||||
oAllowedTypes.AddRange(New List(Of AllowedType) From {
|
||||
New AllowedType With {
|
||||
@@ -374,16 +428,6 @@ Public Class ZUGFeRDInterface
|
||||
.SchemaType = GetType(Version2_2_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_22
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_23
|
||||
},
|
||||
New AllowedType With {
|
||||
.SchemaType = GetType(Version2_3_3_FacturX.CrossIndustryInvoiceType),
|
||||
.Specification = ZUGFERD_SPEC_2x,
|
||||
.XMLSchema = XMLSCHEMA_ZUGFERD_233
|
||||
}
|
||||
})
|
||||
End If
|
||||
@@ -426,8 +470,7 @@ Public Class ZUGFeRDInterface
|
||||
Next
|
||||
|
||||
If oObject Is Nothing Then
|
||||
'Throw New ApplicationException("No Types matched the given document. Document could not be serialized.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.UnsupportedFormat, "Unsupported Format")
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.UnsupportedFerdException, "Unsupported Format")
|
||||
End If
|
||||
|
||||
pResult.Specification = oSpecification
|
||||
@@ -442,8 +485,8 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Dim oMessage = "Datei ist eine ungültige ZUGFeRD Datei oder das Format wird nicht unterstüzt, oder das Format ist deaktiviert."
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, oMessage)
|
||||
Dim oMessage = "Datei ist eine ungültige Datei oder das Format wird nicht unterstüzt, oder das Format ist deaktiviert."
|
||||
Throw New ZUGFeRDExecption(ErrorCodes.UnsupportedFerdException, oMessage)
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
14
Interfaces/ZUGFeRDInterface/Enums/ErrorCodes.vb
Normal file
14
Interfaces/ZUGFeRDInterface/Enums/ErrorCodes.vb
Normal file
@@ -0,0 +1,14 @@
|
||||
Public Enum ErrorCodes
|
||||
NotInUse = 0
|
||||
ValidationException = 20001
|
||||
MD5HashException = 20002
|
||||
UnsupportedFerdException = 20003
|
||||
InvalidFerdException = 20004
|
||||
TooMuchFerdsException = 20005
|
||||
InvalidFerdNoXMLAttachmentFound = 20006
|
||||
MissingValueException = 20007
|
||||
FileSizeLimitReachedException = 20008
|
||||
OutOfMemoryException = 20009
|
||||
UnhandledException = 20010
|
||||
FileMoveException = 200011
|
||||
End Enum
|
||||
@@ -3,5 +3,6 @@
|
||||
DateType '1
|
||||
MoneyType '2
|
||||
FileType '3
|
||||
ListType '4 - vgl. Währung
|
||||
|
||||
End Enum
|
||||
|
||||
@@ -4,7 +4,11 @@ Public Class Exceptions
|
||||
Public Class ZUGFeRDExecption
|
||||
Inherits ApplicationException
|
||||
|
||||
Public ReadOnly Property ErrorType() As ZUGFeRDInterface.ErrorType
|
||||
Public ReadOnly Property ErrorCode() As ErrorCodes
|
||||
|
||||
Public ReadOnly Property Param1 As String = String.Empty
|
||||
|
||||
Public ReadOnly Property Param2 As String = String.Empty
|
||||
|
||||
''' <summary>
|
||||
''' Contains the name of the extracted xml file if already extracted.
|
||||
@@ -12,18 +16,37 @@ Public Class Exceptions
|
||||
''' <returns>A filename like zugferd-invoice.xml</returns>
|
||||
Public ReadOnly Property XmlFile As String = String.Empty
|
||||
|
||||
Public Sub New(ErrorType As ZUGFeRDInterface.ErrorType, Message As String)
|
||||
Public Sub New(pErrorCode As ErrorCodes, Message As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorType = ErrorType
|
||||
_ErrorCode = pErrorCode
|
||||
End Sub
|
||||
|
||||
Public Sub New(ErrorType As ZUGFeRDInterface.ErrorType, Message As String, pXmlFileName As String)
|
||||
Public Sub New(pErrorCode As ErrorCodes, Message As String, pXmlFileName As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorType = ErrorType
|
||||
_ErrorCode = pErrorCode
|
||||
_XmlFile = pXmlFileName
|
||||
End Sub
|
||||
|
||||
Public Sub New(pErrorCode As ErrorCodes, Param1 As String, Param2 As String, Message As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorCode = pErrorCode
|
||||
_Param1 = Param1
|
||||
_Param2 = Param2
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub New(pErrorCode As ErrorCodes, Param1 As String, Param2 As String, Message As String, pXmlFileName As String)
|
||||
MyBase.New(Message)
|
||||
|
||||
_ErrorCode = pErrorCode
|
||||
_Param1 = Param1
|
||||
_Param2 = Param2
|
||||
_XmlFile = pXmlFileName
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Public Class ValidationException
|
||||
@@ -31,8 +54,13 @@ Public Class Exceptions
|
||||
|
||||
Public ValidationErrors As List(Of ZugferdValidationError)
|
||||
|
||||
Public ReadOnly Property ErrorCode() As ErrorCodes
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New("ZUGFeRD document found but validation failed!")
|
||||
|
||||
_ErrorCode = ErrorCodes.ValidationException
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
End Class
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports System.Reflection
|
||||
Imports System.Globalization
|
||||
Imports System.Reflection
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
@@ -27,6 +28,7 @@ Public Class PropertyValues
|
||||
Public IsRequired As Boolean
|
||||
Public GroupCounter As Integer = -1
|
||||
|
||||
Public EN16931_ID As String
|
||||
Public Description As String
|
||||
Public Value As String
|
||||
Public XMLPath As String
|
||||
@@ -35,6 +37,7 @@ Public Class PropertyValues
|
||||
End Class
|
||||
|
||||
Public Class MissingProperty
|
||||
Public EN16931_ID As String
|
||||
Public Description As String
|
||||
Public XMLPath As String
|
||||
|
||||
@@ -54,7 +57,7 @@ Public Class PropertyValues
|
||||
ToDictionary(Function(Item) Item.Key,
|
||||
Function(Item) Item.Value)
|
||||
|
||||
_logger.Debug("Found {0} default properties.", oDefaultProperties.Count)
|
||||
_logger.Debug("Found {0} ungrouped properties.", oDefaultProperties.Count)
|
||||
|
||||
' PropertyMap items with `IsGrouped = True` are grouped by group scope
|
||||
Dim oGroupedProperties = PropertyMap.
|
||||
@@ -68,7 +71,7 @@ Public Class PropertyValues
|
||||
Dim oGroupScope As String = oGroup.Key
|
||||
|
||||
Dim oPropertyList As New Dictionary(Of XmlItemProperty, List(Of Object))
|
||||
Dim oRowCount = 0
|
||||
Dim oRowCount = 0 ' TODO - Es wird anhand der Anzahl XML-Knoten ermittelt wieviele Rows gelesen werden???????
|
||||
|
||||
_logger.Debug($"Fetching Property values for group [{oGroupScope}].")
|
||||
|
||||
@@ -112,13 +115,14 @@ Public Class PropertyValues
|
||||
Dim oPropertyDescription As String = oColumn.Key.Description
|
||||
Dim oPropertyPath As String = oColumn.Key.XMLPath
|
||||
Dim oItemType As Integer = oColumn.Key.ItemType
|
||||
Dim oEN16931Value As String = oColumn.Key.EN16931_ID
|
||||
|
||||
Dim oRowCounter = oRowIndex + oGlobalGroupCounter + 1
|
||||
|
||||
' Returns nothing if oColumn.Value contains an empty list
|
||||
Dim oPropertyValue = oColumn.Value.ElementAtOrDefault(oRowIndex)
|
||||
|
||||
_logger.Debug("Processing itemSpecification *TableColumn* [{0}].", oTableColumn)
|
||||
_logger.Debug("Processing itemColumn *TableColumn* [{0}].", oTableColumn)
|
||||
If oTableColumn = "INVOICE_SELLER_EMAIL" Then
|
||||
Console.WriteLine("INVOICE_SELLER_EMAIL")
|
||||
ElseIf oTableColumn = "INVOICE_POSITION_ARTICLE" Then
|
||||
@@ -126,20 +130,40 @@ Public Class PropertyValues
|
||||
End If
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If oColumn.Key.IsRequired Then
|
||||
_logger.Warn($"{MessageId} # oPropertyValue for specification [{oTableColumn}] is empty or not found but is required. Continuing with Empty String.")
|
||||
_logger.Warn($"{MessageId} - oPropertyValue for column [{oTableColumn}] is empty or not found but is required. Continuing with Empty String.")
|
||||
Dim oMissingProperty = New MissingProperty() With {
|
||||
.EN16931_ID = oEN16931Value,
|
||||
.Description = oPropertyDescription,
|
||||
.XMLPath = oPropertyPath
|
||||
}
|
||||
oResult.MissingProperties.Add(oMissingProperty)
|
||||
Else
|
||||
_logger.Debug($"{MessageId} # oPropertyValue for specification [{oTableColumn}] is empty or not found. Continuing with Empty String.")
|
||||
_logger.Debug($"{MessageId} - oPropertyValue for column [{oTableColumn}] is empty or not found. Continuing with Empty String.")
|
||||
End If
|
||||
|
||||
oPropertyValue = String.Empty
|
||||
End If
|
||||
|
||||
_logger.Debug("ItemSpecification [{0}] has value '{1}'", oTableColumn, oPropertyValue)
|
||||
If (oPropertyValue IsNot Nothing) Then
|
||||
Dim logValue As String = oPropertyValue.ToString()
|
||||
If logValue.Length > 50 Then
|
||||
_logger.Debug("Item [{0}] has value '{1}...'", oTableColumn, logValue.Substring(1, 50))
|
||||
Else
|
||||
_logger.Debug("Item [{0}] has value '{1}'", oTableColumn, oPropertyValue)
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
If oTableColumn = "INVOICE_CURRENCY" Or oItemType = 4 Then
|
||||
Dim oValuestring = oPropertyValue.ToString()
|
||||
|
||||
' Bei Listenelementen entfernen wir den String Item, um den Wert zu erhalten
|
||||
If oValuestring.Contains("Item") Then
|
||||
oValuestring = oValuestring.Replace("Item", "")
|
||||
End If
|
||||
|
||||
oPropertyValue = oValuestring
|
||||
End If
|
||||
|
||||
oResult.ValidProperties.Add(New ValidProperty() With {
|
||||
.MessageId = MessageId,
|
||||
@@ -150,7 +174,8 @@ Public Class PropertyValues
|
||||
.TableColumn = oTableColumn,
|
||||
.IsRequired = oIsRequired,
|
||||
.XMLPath = oPropertyPath,
|
||||
.ItemType = oItemType
|
||||
.ItemType = oItemType,
|
||||
.EN16931_ID = oEN16931Value
|
||||
})
|
||||
Next
|
||||
Next
|
||||
@@ -169,11 +194,12 @@ Public Class PropertyValues
|
||||
Dim oIsRequired = oItem.Value.IsRequired
|
||||
Dim oDescription = oItem.Value.Description
|
||||
Dim oItemType = oItem.Value.ItemType
|
||||
Dim oEN16931_ID = oItem.Value.EN16931_ID
|
||||
|
||||
Try
|
||||
oPropertyValueList = GetPropValue(pDocument, oItem.Key)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("{2} # Unknown error occurred while fetching specification [{0}] in group [{1}]:", oPropertyDescription, oItem.Value.GroupScope, MessageId)
|
||||
_logger.Warn("{2} - Unknown error occurred while fetching specification [{0}] in group [{1}]:", oTableColumn, oItem.Value.GroupScope, MessageId)
|
||||
_logger.Warn("ERROR-MESSAGE [{0}]", ex.Message)
|
||||
_logger.Error(ex)
|
||||
oPropertyValueList = New List(Of Object)
|
||||
@@ -192,37 +218,45 @@ Public Class PropertyValues
|
||||
|
||||
' This should hopefully show config errors
|
||||
If TypeOf oPropertyValue Is List(Of Object) Then
|
||||
_logger.Warn("Item with specification [{0}] may be configured incorrectly", oPropertyDescription)
|
||||
_logger.Warn("Item with specification [{0}] may be configured incorrectly", oTableColumn)
|
||||
oPropertyValue = Nothing
|
||||
End If
|
||||
End Select
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Unknown error occurred while processing specification [{0}]:", oPropertyDescription)
|
||||
_logger.Warn("Unknown error occurred while processing specification [{0}]:", oTableColumn)
|
||||
_logger.Error(ex)
|
||||
oPropertyValue = Nothing
|
||||
End Try
|
||||
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If oItem.Value.IsRequired Then
|
||||
_logger.Warn("{0} # Specification [{1}] is empty, but marked as required! Skipping.", MessageId, oPropertyDescription)
|
||||
_logger.Warn("Specification [{0}] is empty, but marked as required! Skipping.", oTableColumn)
|
||||
Dim oMissingProperty = New MissingProperty With
|
||||
{
|
||||
.EN16931_ID = oEN16931_ID,
|
||||
.Description = oPropertyDescription,
|
||||
.XMLPath = oPropertyPath
|
||||
}
|
||||
oResult.MissingProperties.Add(oMissingProperty)
|
||||
Continue For
|
||||
Else
|
||||
_logger.Debug("{0} # oPropertyValue for specification [{1}] is empty or not found. Skipping.", MessageId, oPropertyDescription)
|
||||
_logger.Debug("oPropertyValue for specification [{0}] is empty or not found. Skipping.", oTableColumn)
|
||||
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
|
||||
' Statt dem Zahlenwert des Enums, wollen wir die Währunsgbezeichnung
|
||||
If oTableColumn = "INVOICE_CURRENCY" Then
|
||||
oPropertyValue = oPropertyValue.ToString()
|
||||
' Statt dem Zahlenwert des Enums, wollen wir die Währungsbezeichnung
|
||||
If oTableColumn = "INVOICE_CURRENCY" Or oItemType = 4 Then
|
||||
Dim oValuestring = oPropertyValue.ToString()
|
||||
|
||||
' Bei Listenelementen entfernen wir den String Item, um den Wert zu erhalten
|
||||
If oValuestring.Contains("Item") Then
|
||||
oValuestring = oValuestring.Replace("Item", "")
|
||||
End If
|
||||
|
||||
oPropertyValue = oValuestring
|
||||
End If
|
||||
|
||||
oResult.ValidProperties.Add(New ValidProperty() With {
|
||||
@@ -233,7 +267,8 @@ Public Class PropertyValues
|
||||
.TableColumn = oTableColumn,
|
||||
.IsRequired = oIsRequired,
|
||||
.XMLPath = oPropertyPath,
|
||||
.ItemType = oItemType
|
||||
.ItemType = oItemType,
|
||||
.EN16931_ID = oEN16931_ID
|
||||
})
|
||||
Next
|
||||
|
||||
@@ -280,17 +315,11 @@ Public Class PropertyValues
|
||||
|
||||
Obj = oInfo.GetValue(Obj, Nothing)
|
||||
|
||||
' TODO: This code should check for array properties by itself
|
||||
' and should not rely on the user to
|
||||
'If oInfo.PropertyType.IsArray Then
|
||||
' Obj = Obj(0)
|
||||
'End If
|
||||
|
||||
If oHasIndex Then
|
||||
Obj = Obj(0)
|
||||
End If
|
||||
|
||||
If IsArray(Obj) And Not oHasIndex Then
|
||||
If IsArray(Obj) And Not oHasIndex And oPart <> "Value" Then
|
||||
Dim oCurrentPart As String = oPart
|
||||
Dim oSplitString As String() = New String() {oCurrentPart & "."}
|
||||
Dim oPathFragments = PropertyName.Split(oSplitString, StringSplitOptions.None)
|
||||
@@ -310,8 +339,56 @@ Public Class PropertyValues
|
||||
Next
|
||||
|
||||
Return oResults
|
||||
End If
|
||||
Else
|
||||
If oPart = "Value" AndAlso Obj IsNot Nothing Then
|
||||
' Der Name des gefundenen Datentyps
|
||||
Dim oObjType = oInfo.PropertyType.FullName
|
||||
|
||||
If oObjType.Equals("System.DateTime", StringComparison.OrdinalIgnoreCase) Then
|
||||
|
||||
Dim d As Date
|
||||
Dim s As String
|
||||
Dim oResult As String
|
||||
|
||||
s = Convert.ToString(Obj)
|
||||
|
||||
If IsDate(s) = True Then
|
||||
' Hier wird das DEFAULT-Format auf yyyyMMdd gesetzt
|
||||
Dim dtfi As DateTimeFormatInfo = CultureInfo.CreateSpecificCulture(CultureInfo.InvariantCulture.Name).DateTimeFormat
|
||||
dtfi.DateSeparator = ""
|
||||
dtfi.ShortDatePattern = "yyyyMMdd"
|
||||
|
||||
d = CDate(s)
|
||||
oResult = d.ToString("d", dtfi)
|
||||
|
||||
'Return New List(Of Object) From {oResult}
|
||||
Dim oRetValue As List(Of Object) = New List(Of Object) From {
|
||||
oResult
|
||||
}
|
||||
|
||||
Return oRetValue
|
||||
|
||||
End If
|
||||
ElseIf oObjType.Equals("System.Decimal", StringComparison.OrdinalIgnoreCase) Then
|
||||
|
||||
Dim oResult As String
|
||||
|
||||
If IsNumeric(Obj) = True Then
|
||||
Dim decValue As Decimal = CDec(Obj)
|
||||
' Es wird immer ein . als Dezimaltrenner verwendet, falls nötig
|
||||
oResult = decValue.ToString(CultureInfo.InvariantCulture)
|
||||
|
||||
'Return New List(Of Object) From {oResult}
|
||||
Dim oRetValue As List(Of Object) = New List(Of Object) From {
|
||||
oResult
|
||||
}
|
||||
|
||||
Return oRetValue
|
||||
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
Return New List(Of Object) From {Obj}
|
||||
@@ -339,8 +416,20 @@ Public Class PropertyValues
|
||||
Select Case oCount
|
||||
Case 0
|
||||
Return Nothing
|
||||
Case 1
|
||||
Dim firstElement As Object
|
||||
firstElement = oList.FirstOrDefault()
|
||||
If firstElement IsNot Nothing AndAlso IsArray(firstElement) Then
|
||||
|
||||
' Attachments sind Byte-Arrays und müssen umgewandelt werden
|
||||
Return Convert.ToBase64String(firstElement)
|
||||
|
||||
Else
|
||||
Return DoGetFinalPropValue(oList.First())
|
||||
End If
|
||||
Case Else
|
||||
Return DoGetFinalPropValue(oList.First())
|
||||
|
||||
End Select
|
||||
|
||||
Return DoGetFinalPropValue(Value)
|
||||
|
||||
8
Interfaces/ZUGFeRDInterface/RejectionStringRow.vb
Normal file
8
Interfaces/ZUGFeRDInterface/RejectionStringRow.vb
Normal file
@@ -0,0 +1,8 @@
|
||||
Public Class RejectionStringRow
|
||||
Public ModuleName As String
|
||||
Public Title As String
|
||||
Public Caption As String
|
||||
Public Language As String
|
||||
Public String1 As String
|
||||
|
||||
End Class
|
||||
@@ -14,6 +14,7 @@ Public Class Validator
|
||||
ValidateDecimalNodes(pResult)
|
||||
ValidateCurrencyNodes(pResult)
|
||||
|
||||
'TODO Validate Datumsfelder
|
||||
Return pResult
|
||||
End Function
|
||||
|
||||
@@ -29,7 +30,8 @@ Public Class Validator
|
||||
.ElementName = oNode.Name.LocalName,
|
||||
.ElementValue = oNode.Value,
|
||||
.ErrorMessage = "Value could not be parsed as Decimal.",
|
||||
.ErrorMessageDE = "Der Wert konnte nicht in eine Dezimalzahl umgewandelt werden."
|
||||
.ErrorMessageDE = "Der Wert ist keine Dezimalzahl.",
|
||||
.ErrorMessageToken = "NoDecimalText"
|
||||
})
|
||||
End If
|
||||
Next
|
||||
@@ -52,7 +54,8 @@ Public Class Validator
|
||||
.ElementName = oNode.Name.LocalName,
|
||||
.ElementValue = oNode.Value,
|
||||
.ErrorMessage = "Invalid CurrencyCode. Only 3-Character codes are allowed.",
|
||||
.ErrorMessageDE = "Ungültiger Währungscode. Es sind nur 3-stellige Codes erlaubt."
|
||||
.ErrorMessageDE = "Ungültiger Währungscode. Es sind nur 3-stellige Codes erlaubt.",
|
||||
.ErrorMessageToken = "WrongCurrencyCodeText"
|
||||
})
|
||||
End If
|
||||
Next
|
||||
@@ -79,7 +82,8 @@ Public Class Validator
|
||||
.ElementName = oNode.Name.LocalName,
|
||||
.ElementValue = oCurrencyID,
|
||||
.ErrorMessage = "Invalid currencyID. Only 3-Character codes or empty values are allowed.",
|
||||
.ErrorMessageDE = "Ungültige WährungsID. Es sind nur 3-Zeichen lange Codes oder ein leerer Wert erlaubt."
|
||||
.ErrorMessageDE = "Ungültige WährungsID. Es sind nur 3-Zeichen lange Codes oder ein leerer Wert erlaubt.",
|
||||
.ErrorMessageToken = "WrongCurrencyIDText"
|
||||
})
|
||||
End If
|
||||
Next
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,14 @@
|
||||
''' 0 = Default / Text
|
||||
''' 1 = Datum
|
||||
''' 2 = Gleitkomma
|
||||
''' 3 = Memo-Feld
|
||||
''' 3 = Attachment-Felder
|
||||
''' 4 = Elemente einer Liste, vgl Currency
|
||||
''' </summary>
|
||||
Public ItemType As Integer
|
||||
|
||||
''' <summary>
|
||||
''' BT-Feld-Bezeichnung
|
||||
''' </summary>
|
||||
Public EN16931_ID As String
|
||||
|
||||
End Class
|
||||
@@ -12,19 +12,19 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
@@ -32,15 +32,27 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Packaging" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
@@ -3,30 +3,36 @@
|
||||
<package id="BouncyCastle.Cryptography" version="2.5.0" targetFramework="net462" />
|
||||
<package id="DocumentFormat.OpenXml" version="3.2.0" targetFramework="net462" />
|
||||
<package id="DocumentFormat.OpenXml.Framework" version="3.2.0" targetFramework="net462" />
|
||||
<package id="GdPicture" version="14.3.3" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.3.3" targetFramework="net462" />
|
||||
<package id="GdPicture" version="14.4.4" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.4.4" targetFramework="net462" />
|
||||
<package id="Google.Protobuf" version="3.33.2" targetFramework="net462" />
|
||||
<package id="Microsoft.AspNet.WebApi.Client" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.Cryptography" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.HashCode" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net462" />
|
||||
<package id="Microsoft.VisualBasic" version="10.3.0" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="OpenMcdf" version="2.4.1" targetFramework="net462" />
|
||||
<package id="OpenMcdf" version="3.1.4" targetFramework="net462" />
|
||||
<package id="protobuf-net" version="3.2.46" targetFramework="net462" />
|
||||
<package id="protobuf-net.Core" version="3.2.46" targetFramework="net462" />
|
||||
<package id="RtfPipe" version="2.0.7677.4303" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.CodeDom" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Formats.Asn1" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Pipelines" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Management" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="8.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Channels" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.6.1" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -5,25 +5,27 @@
|
||||
</startup>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity name="GdPicture.NET.14" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-14.3.9.0" newVersion="14.3.9.0" />
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="FirebirdSql.Data.FirebirdClient" publicKeyToken="3750abcc3150b00c" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-7.5.0.0" newVersion="7.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||
@@ -35,15 +37,35 @@
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.IO.Packaging" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.5" newVersion="8.0.0.5" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="GdPicture.NET.14.Common" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-14.4.4.0" newVersion="14.4.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="GdPicture.NET.14" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-14.4.4.0" newVersion="14.4.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.5" newVersion="10.0.0.5" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
34
Jobs/DEX_API/DEX_API.vb
Normal file
34
Jobs/DEX_API/DEX_API.vb
Normal file
@@ -0,0 +1,34 @@
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Data
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Interfaces
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Public Class DEX_API
|
||||
Inherits JobBase
|
||||
Implements IJob(Of ADSyncArgs)
|
||||
|
||||
Public Sub New(LogConfig As LogConfig, MSSQL As MSSQLServer)
|
||||
MyBase.New(LogConfig, MSSQL)
|
||||
End Sub
|
||||
|
||||
Public Sub StartDex_API(Arguments As ADSyncArgs) Implements IJob(Of ADSyncArgs).Start
|
||||
Dim oJobName As String = [GetType]().Name
|
||||
|
||||
Try
|
||||
_Logger.Info("Running job {0}", oJobName)
|
||||
|
||||
|
||||
_Logger.Info("Job {0} completed!", oJobName)
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("Job {0} failed!", oJobName)
|
||||
_Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Function ShouldStart(Arguments As ADSyncArgs) As Boolean Implements IJob(Of ADSyncArgs).ShouldStart
|
||||
Return Arguments.Enabled
|
||||
End Function
|
||||
End Class
|
||||
198
Jobs/Jobs.vbproj
198
Jobs/Jobs.vbproj
@@ -66,19 +66,10 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Interfaces\Interfaces.vbproj">
|
||||
<Project>{ab6f09bf-e794-4f6a-94bb-c97c0ba84d64}</Project>
|
||||
<Name>Interfaces</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ADSync\ADSyncArgs.vb" />
|
||||
<Compile Include="ADSync\ADSyncJob.vb" />
|
||||
<Compile Include="DEX_API\DEX_API.vb" />
|
||||
<Compile Include="GraphQL\GraphQLArgs.vb" />
|
||||
<Compile Include="GraphQL\GraphQLConfig.vb" />
|
||||
<Compile Include="GraphQL\GraphQLJob.vb" />
|
||||
@@ -113,18 +104,21 @@
|
||||
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\BouncyCastle.Cryptography.2.5.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Base">
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Config, Version=1.3.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Config">
|
||||
<HintPath>..\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="DigitalData.Modules.Database">
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Interfaces">
|
||||
<HintPath>..\Interfaces\bin\Debug\DigitalData.Modules.Interfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DocumentFormat.OpenXml, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DocumentFormat.OpenXml.3.2.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -134,74 +128,95 @@
|
||||
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.1d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.1d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.barcode.2d.writer, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.barcode.2d.writer.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.CAD.DWG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.CAD.DWG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Common, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Document, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Document.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Email, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Email.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.HTML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.HTML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Formats.Conversion, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Formats.Conversion.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Imaging.Rendering, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Imaging.Rendering.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.Markdown, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.Markdown.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.MSOfficeBinary, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.MSOfficeBinary.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenDocument, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenDocument.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.OpenXML.Templating, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.OpenXML.Templating.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.PDF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.PDF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.3.3.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
<Reference Include="GdPicture.NET.14.RTF, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.RTF.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.SVG, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.SVG.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14.wia.gateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6973b5c22dcf45f7, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.3.3\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\GdPicture.NET.14.wia.gateway.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
<Reference Include="Google.Protobuf, Version=3.33.2.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Google.Protobuf.3.33.2\lib\net45\Google.Protobuf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.5\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.Cryptography, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.Cryptography.10.0.5\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Bcl.HashCode.6.0.0\lib\net462\Microsoft.Bcl.HashCode.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NativeSDK.Exceptions, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Exceptions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NativeSDK.Settings.Edition, Version=14.4.4.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\GdPicture.14.4.4\lib\net462\NativeSDK.Settings.Edition.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -211,8 +226,8 @@
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenMcdf, Version=2.4.1.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.2.4.1\lib\net40\OpenMcdf.dll</HintPath>
|
||||
<Reference Include="OpenMcdf, Version=3.1.4.0, Culture=neutral, PublicKeyToken=fdbb1629d7c00800, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\OpenMcdf.3.1.4\lib\netstandard2.0\OpenMcdf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="protobuf-net, Version=3.0.0.0, Culture=neutral, PublicKeyToken=257b51d87d2e4d67, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\protobuf-net.3.2.46\lib\net462\protobuf-net.dll</HintPath>
|
||||
@@ -224,69 +239,82 @@
|
||||
<HintPath>..\packages\RtfPipe.2.0.7677.4303\lib\net45\RtfPipe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
|
||||
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.CodeDom.8.0.0\lib\net462\System.CodeDom.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.8.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
<Reference Include="System.Collections.Immutable, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Collections.Immutable.10.0.5\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Formats.Asn1, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Formats.Asn1.10.0.5\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.IO.Packaging, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.8.0.1\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
<Reference Include="System.IO.Packaging, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Packaging.10.0.5\lib\net462\System.IO.Packaging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.IO.Pipelines, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.IO.Pipelines.10.0.5\lib\net462\System.IO.Pipelines.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
|
||||
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Net.Http.Formatting, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.6.0.0\lib\net45\System.Net.Http.Formatting.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=8.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.8.0.1\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
<Reference Include="System.Security.Cryptography.Pkcs, Version=10.0.0.5, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Security.Cryptography.Pkcs.10.0.5\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.8.0.0\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
<Reference Include="System.Text.Encodings.Web, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Encodings.Web.10.0.5\lib\net462\System.Text.Encodings.Web.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.8.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
<Reference Include="System.Text.Json, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Text.Json.10.0.5\lib\net462\System.Text.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
<Reference Include="System.Threading.Channels, Version=10.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Channels.10.0.5\lib\net462\System.Threading.Channels.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
<Reference Include="System.ValueTuple, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\System.ValueTuple.4.6.1\lib\net462\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.XML.Linq" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="logParser.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Import Project="..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.3.3\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.4.4\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("Digital Data")>
|
||||
<Assembly: AssemblyProduct("Modules.Jobs")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2025")>
|
||||
<Assembly: AssemblyTrademark("2.9.3.0")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2026")>
|
||||
<Assembly: AssemblyTrademark("3.7.0")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -30,5 +30,5 @@ Imports System.Runtime.InteropServices
|
||||
' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
|
||||
<Assembly: AssemblyVersion("2.9.4.0")>
|
||||
<Assembly: AssemblyFileVersion("2.9.4.0")>
|
||||
<Assembly: AssemblyVersion("3.7.0.0")>
|
||||
<Assembly: AssemblyFileVersion("3.7.0.0")>
|
||||
|
||||
@@ -33,11 +33,6 @@ Public Class HashFunctions
|
||||
End If
|
||||
|
||||
' Check if Checksum exists in History Table
|
||||
'Dim oCheckCommand = $"SELECT * FROM TBEDM_ZUGFERD_HISTORY_IN WHERE GUID = (SELECT MAX(GUID) FROM TBEDM_ZUGFERD_HISTORY_IN WHERE UPPER(MD5HASH) = UPPER('{oMD5CheckSum}'))"
|
||||
'Dim oTable As DataTable = _firebird.GetDatatable(oCheckCommand, Firebird.TransactionMode.NoTransaction)
|
||||
|
||||
' Check if Checksum exists in History Table
|
||||
' TODO: WHAT THE FUCK IS THIS
|
||||
Dim oCheckCommand = $"SELECT * FROM TBEMLP_HISTORY WHERE GUID = (SELECT MAX(GUID) FROM TBEMLP_HISTORY WHERE UPPER(MD5HASH) = UPPER('{oMD5CheckSum}'))"
|
||||
Dim oTable As DataTable = Database.GetDatatable(oCheckCommand, MSSQLServer.TransactionMode.NoTransaction)
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ Imports DigitalData.Modules.Interfaces.Exceptions
|
||||
Imports DigitalData.Modules.Interfaces.PropertyValues
|
||||
Imports DigitalData.Modules.Jobs.Exceptions
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports GdPicture14
|
||||
|
||||
Public Class ImportZUGFeRDFiles
|
||||
Implements IJob
|
||||
@@ -27,10 +28,35 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Private Const DIRECTORY_DONT_MOVE = "DIRECTORY_DONT_MOVE"
|
||||
|
||||
Private Const MIME_TYPE_PDF = "application/pdf"
|
||||
Private Const MIME_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
Private Const MIME_TYPE_ODT = "application/vnd.oasis.opendocument.spreadsheet"
|
||||
|
||||
' List of allowed extensions for PDF/A Attachments
|
||||
' This list should not contain xml so the zugferd xml file will be filtered out
|
||||
Private ReadOnly AllowedExtensions As New List(Of String) From {"docx", "doc", "pdf", "xls", "xlsx", "ppt", "pptx", "txt"}
|
||||
|
||||
' List of the Columns we need to store embedded files on disk and database
|
||||
Private ReadOnly EmbeddedFilesColumnNames As List(Of String) = New List(Of String) From {
|
||||
"ATTACHMENT_FILE_FILENAME", "ATTACHMENT_FILE_VALUE", "ATTACHMENT_FILE_MIMECODE"
|
||||
}
|
||||
|
||||
' List of the allowed MIME-Codes
|
||||
' Allowed Values are:
|
||||
'- application/pdf
|
||||
'- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx)
|
||||
'- application/vnd.oasis.opendocument.spreadsheet (odt)
|
||||
'- image/jpeg
|
||||
'- image/png
|
||||
'- image/tiff (UBL)
|
||||
'- text/csv
|
||||
'- text/xml (UBL)
|
||||
Private ReadOnly AllowedMimeTypesInEmbeddedFiles As List(Of String) = New List(Of String) From {
|
||||
MIME_TYPE_PDF,
|
||||
MIME_TYPE_XLSX,
|
||||
MIME_TYPE_ODT
|
||||
}
|
||||
|
||||
Private ReadOnly _logger As Logger
|
||||
Private ReadOnly _logConfig As LogConfig
|
||||
Private ReadOnly _filesystem As FilesystemEx
|
||||
@@ -100,7 +126,7 @@ Public Class ImportZUGFeRDFiles
|
||||
_logger.Debug("Starting Job {0}", [GetType].Name)
|
||||
If oArgs.AllowXRechnung Then
|
||||
' TODO - Config-Schalter hat NIX mit XRechnung-Dateien u. Sichtbelegen zu tun, sondern nur mit Dateinamen zu tun.
|
||||
Dim oSQL = "SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WHERE TITLE = 'VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS'"
|
||||
Dim oSQL = "SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WITH (NOLOCK) WHERE TITLE = 'VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS'"
|
||||
SQL_xRechnung_ItemTemplate = _mssql.GetScalarValue(oSQL)
|
||||
End If
|
||||
|
||||
@@ -140,8 +166,6 @@ Public Class ImportZUGFeRDFiles
|
||||
' Start a new transaction for each file group.
|
||||
' This way we can rollback database changes for the whole filegroup in case something goes wrong.
|
||||
Dim oSQLConnection As SqlConnection = _mssql.GetConnection()
|
||||
|
||||
|
||||
Dim oSQLTransaction As SqlTransaction = oSQLConnection?.BeginTransaction()
|
||||
|
||||
Dim oConnections As New DatabaseConnections() With {
|
||||
@@ -194,7 +218,7 @@ Public Class ImportZUGFeRDFiles
|
||||
End If
|
||||
|
||||
If oResult.ZugferdFileFound = True Then
|
||||
_logger.Debug("Zugferd File found")
|
||||
_logger.Debug("eInvoice File found")
|
||||
oMD5CheckSum = oResult.MD5Checksum
|
||||
oZUGFeRDCount = oResult.ZugferdFileCount
|
||||
oEmailAttachmentFiles.AddRange(oResult.EmailAttachmentFiles)
|
||||
@@ -311,7 +335,7 @@ Public Class ImportZUGFeRDFiles
|
||||
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, oRejectionCodeString, "Email enthielt mehr als ein ZUGFeRD-Dokument", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt mehr als ein eInvoice-Dokument", "", oSQLTransaction)
|
||||
|
||||
Catch ex As NoFerdsException
|
||||
_logger.Error(ex)
|
||||
@@ -324,7 +348,7 @@ Public Class ImportZUGFeRDFiles
|
||||
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, oRejectionCodeString, "Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Email enthielt keine eInvoice-Dokumente", "", oSQLTransaction)
|
||||
|
||||
Catch ex As MissingValueException
|
||||
_logger.Error(ex)
|
||||
@@ -343,7 +367,7 @@ 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, oRejectionCodeString, "Es fehlten ZugferdSpezifikationen", "", oSQLTransaction)
|
||||
AddRejectedState(oMessageId, oRejectionCodeString, "Es fehlten eInvoice-Spezifikationen", "", oSQLTransaction)
|
||||
|
||||
Catch ex As FileSizeLimitReachedException
|
||||
_logger.Error(ex)
|
||||
@@ -376,7 +400,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = _email.CreateBodyForUnhandledException(oMessageId, ex)
|
||||
Dim oEmailData As New EmailData With {
|
||||
.From = oArgs.ExceptionEmailAddress,
|
||||
.Subject = $"OutOfMemoryException im ZUGFeRD-Parser @ {oMessageId}"
|
||||
.Subject = $"OutOfMemoryException im eInvoice-Parser @ {oMessageId}"
|
||||
}
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "OutOfMemoryException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnhandledException, ex.Message, ex.StackTrace)
|
||||
|
||||
@@ -399,7 +423,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = _email.CreateBodyForUnhandledException(oMessageId, ex)
|
||||
Dim oEmailData As New EmailData With {
|
||||
.From = oArgs.ExceptionEmailAddress,
|
||||
.Subject = $"UnhandledException im ZUGFeRD-Parser @ {oMessageId}"
|
||||
.Subject = $"UnhandledException im eInvoice-Parser @ {oMessageId}"
|
||||
}
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "UnhandledException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnhandledException, ex.Message, ex.StackTrace)
|
||||
|
||||
@@ -415,7 +439,8 @@ Public Class ImportZUGFeRDFiles
|
||||
If oMoveDirectory = DIRECTORY_DONT_MOVE Then
|
||||
_logger.Info("Application Error occurred. Files for message Id {0} will not be moved.", oMessageId)
|
||||
|
||||
ElseIf oArgs.AllowXRechnung And oIsSuccess And oEInvoiceFileGroup.Item(0).Extension = ".xml" Then
|
||||
ElseIf oArgs.AllowXRechnung And oIsSuccess And
|
||||
oEInvoiceFileGroup.Item(0).Extension.Equals(".xml", StringComparison.OrdinalIgnoreCase) = True Then
|
||||
_logger.Debug("Before Creating the PDF-File from XML data / Before Commit")
|
||||
|
||||
oxRechnungHandle = True
|
||||
@@ -455,7 +480,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = _email.CreateBodyForUnhandledException(oMessageId, ex)
|
||||
Dim oEmailData As New EmailData With {
|
||||
.From = oArgs.ExceptionEmailAddress,
|
||||
.Subject = $"FileMoveException im ZUGFeRD-Parser @ {oMessageId}"
|
||||
.Subject = $"FileMoveException im eInvoice-Parser @ {oMessageId}"
|
||||
}
|
||||
_email.AddToEmailQueueMSSQL(oMessageId, oSQLTransaction, oBody, oEmailData, "FileMoveException", _EmailOutAccountId, oArgs.NamePortal, oArgs.RejectionTemplateId, ErrorCode.UnhandledException, ex.Message, ex.StackTrace)
|
||||
|
||||
@@ -534,36 +559,46 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Try
|
||||
oDocument = _zugferd.GetSerializedXMLContentFromFile(pFile)
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_XML
|
||||
|
||||
Catch ex As ValidationException
|
||||
Throw ex
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
Select Case ex.ErrorType
|
||||
Case ZUGFeRDInterface.ErrorType.NoZugferd
|
||||
_logger.Info("File [{0}] is not a valid ZUGFeRD document. Skipping.", pFile.Name)
|
||||
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
If ex.ErrorCode > 0 Then
|
||||
_logger.Info("New Rejection Logik")
|
||||
|
||||
Case ZUGFeRDInterface.ErrorType.UnsupportedFormat
|
||||
_logger.Info("File [{0}/{1}] is an unsupported ZUFeRD document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
Select Case ex.ErrorCode
|
||||
Case ErrorCode.NoFerdsException
|
||||
_logger.Info("File [{0}] is not a valid eInvoice document. Skipping.", pFile.Name)
|
||||
|
||||
Case ZUGFeRDInterface.ErrorType.NoValidZugferd
|
||||
_logger.Info("File [{0}] is an Incorrectly formatted ZUGFeRD document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting ZUGFeRD Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
End Select
|
||||
Case ErrorCode.UnsupportedFerdException
|
||||
_logger.Info("File [{0}/{1}] is an unsupported eInvoice document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
|
||||
Case ErrorCode.InvalidFerdException
|
||||
_logger.Info("File [{0}] is an incorrectly formatted eInvoice document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting eInvoice Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
|
||||
End Select
|
||||
End If
|
||||
End Try
|
||||
|
||||
Try
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_XML
|
||||
Dim sqlResult As Boolean = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs)
|
||||
Dim sqlResult As Boolean = False
|
||||
|
||||
If oDocument IsNot Nothing Then
|
||||
sqlResult = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs, oResult)
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
Throw ex
|
||||
End Try
|
||||
@@ -606,30 +641,37 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Try
|
||||
oDocument = _zugferd.ExtractZUGFeRDFileWithGDPicture(pFile.FullName)
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_PDF
|
||||
|
||||
Catch ex As ValidationException
|
||||
Throw ex
|
||||
|
||||
Catch ex As ZUGFeRDExecption
|
||||
Select Case ex.ErrorType
|
||||
Case ZUGFeRDInterface.ErrorType.NoZugferd
|
||||
_logger.Info("File [{0}] is not a valid ZUGFeRD document. Skipping.", pFile.Name)
|
||||
If ex.ErrorCode > 0 Then
|
||||
_logger.Info("New Rejection Logik")
|
||||
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
Select Case ex.ErrorCode
|
||||
Case ErrorCode.NoFerdsException
|
||||
_logger.Info("File [{0}] is not a valid eInvoice document. Skipping.", pFile.Name)
|
||||
|
||||
Case ZUGFeRDInterface.ErrorType.UnsupportedFormat
|
||||
_logger.Info("File [{0}/{1}] is an unsupported ZUFeRD document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
oResult.EmailAttachmentFiles.Add(pFile)
|
||||
Return oResult
|
||||
|
||||
Case ZUGFeRDInterface.ErrorType.NoValidZugferd
|
||||
_logger.Info("File [{0}] is an Incorrectly formatted ZUGFeRD document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
Case ErrorCode.UnsupportedFerdException
|
||||
_logger.Info("File [{0}/{1}] is an unsupported eInvoice document format!", pFile.Name, ex.XmlFile)
|
||||
Throw New UnsupportedFerdException(ex.XmlFile)
|
||||
|
||||
Case ErrorCode.InvalidFerdException
|
||||
_logger.Info("File [{0}] is an incorrectly formatted eInvoice document!", pFile.Name)
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting eInvoice Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
|
||||
End Select
|
||||
End If
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting ZUGFeRD Information from file {0}", pFile.Name)
|
||||
Throw ex
|
||||
End Select
|
||||
End Try
|
||||
|
||||
' Check if there are more than one ZUGFeRD files
|
||||
@@ -652,8 +694,7 @@ Public Class ImportZUGFeRDFiles
|
||||
End If
|
||||
|
||||
Try
|
||||
oDocument.ReceiptFileType = ZUGFeRDInterface.RECEIPT_TYPE_PDF
|
||||
Dim sqlResult As Boolean = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs)
|
||||
Dim sqlResult As Boolean = StoreXMLItemsInDatabase(pMessageId, oDocument, pFile, pConnections, pArgs, oResult)
|
||||
Catch ex As Exception
|
||||
Throw ex
|
||||
End Try
|
||||
@@ -670,12 +711,12 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
End Function
|
||||
|
||||
Private Function StoreXMLItemsInDatabase(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pFile As FileInfo, pConnections As DatabaseConnections, pArgs As WorkerArgs) As Boolean
|
||||
Private Function StoreXMLItemsInDatabase(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pFile As FileInfo, pConnections As DatabaseConnections, pArgs As WorkerArgs, pProcessFileResult As ProcessFileResult) As Boolean
|
||||
' Check the document against the configured property map and return:
|
||||
' - a List of valid properties
|
||||
' - a List of missing properties
|
||||
|
||||
Dim oPropertyMap = _zugferd.FilterPropertyMap(pArgs.PropertyMap, pDocument.Specification)
|
||||
Dim oPropertyMap As Dictionary(Of String, XmlItemProperty) = _zugferd.FilterPropertyMap(pArgs.PropertyMapList, pDocument.Specification)
|
||||
Dim oCheckResult = _zugferd.PropertyValues.CheckPropertyValues(pDocument.SchemaObject, oPropertyMap, pMessageId)
|
||||
|
||||
_logger.Info("Properties checked: [{0}] missing properties / [{1}] valid properties found.", oCheckResult.MissingProperties.Count, oCheckResult.ValidProperties.Count)
|
||||
@@ -693,39 +734,359 @@ Public Class ImportZUGFeRDFiles
|
||||
Throw New Exception("Bulk Insert failed! Exiting.")
|
||||
End If
|
||||
|
||||
' TODO hier BAUSTELLE
|
||||
' Eingebettete Dateien speichern
|
||||
'If CreateEmbeddedFilesOnDisk(pMessageId, pDocument, pConnections, oCheckResult) = False Then
|
||||
' _logger.Debug("Files saving for MessageId [{0}] failed!", pMessageId)
|
||||
'End If
|
||||
If HandleEmbeddedAttachments(pMessageId, pDocument, pConnections, oCheckResult, pArgs, pProcessFileResult) = False Then
|
||||
_logger.Debug("Files saving for MessageId [{0}] failed!", pMessageId)
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function CreateEmbeddedFilesOnDisk(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pConnections As DatabaseConnections, pCheckResult As CheckPropertyValuesResult) As Boolean
|
||||
''' <summary>
|
||||
''' Hier werden die Dateianhänge behandelt, die im XML als base64 eingetragen wurden.
|
||||
''' Die zusammengehörigen Knoten müssen über "FILES" gruppiert werden!
|
||||
'''
|
||||
''' Die erwarteten Knoten-Namen sind in der List EmbeddedFilesColumnNames enthalten!
|
||||
''' </summary>
|
||||
Private Function HandleEmbeddedAttachments(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pConnections As DatabaseConnections,
|
||||
pCheckResult As CheckPropertyValuesResult, pArgs As WorkerArgs, pProcessFileResult As ProcessFileResult) As Boolean
|
||||
|
||||
' Finde alle Eintraege in pCheckResult mit Item_Type=3
|
||||
' Finde Dateinamen (Index nach ~attm) und Dateityp. Wir speichern nur PDF.
|
||||
' TODO Funktion aufrufen
|
||||
'SaveBase64ToDisk("", "") = False Then
|
||||
If (pCheckResult Is Nothing) Then
|
||||
_logger.Debug("pCheckResult is empty!")
|
||||
Return True
|
||||
End If
|
||||
|
||||
If (CheckEmbeddedAttachmentEntries(pCheckResult) = False) Then
|
||||
_logger.Debug("No embedded Files in XML found!")
|
||||
Return True
|
||||
End If
|
||||
|
||||
Dim embAttachmentList As List(Of ValidProperty) = pCheckResult.ValidProperties.Where(
|
||||
Function(z)
|
||||
Return EmbeddedFilesColumnNames.Contains(z.TableColumn)
|
||||
End Function
|
||||
).ToList()
|
||||
|
||||
If embAttachmentList Is Nothing OrElse embAttachmentList.Count <= 0 Then
|
||||
_logger.Debug("No Fields for Embedded Files configured!")
|
||||
Return True
|
||||
End If
|
||||
|
||||
' GroupCounter Werte in Hashset eintragen, um distinct Werte zu erhalten
|
||||
Dim oIndexList As HashSet(Of Integer) = New HashSet(Of Integer)
|
||||
For Each resultItem In embAttachmentList
|
||||
oIndexList.Add(resultItem.GroupCounter)
|
||||
Next
|
||||
|
||||
Dim oOutputPath As String = GetOutputPathForEmbeddedAttachments(pArgs)
|
||||
Dim nextAttachmentIndex As Integer = 0
|
||||
nextAttachmentIndex = GetNextAttachmentIndex(pMessageId)
|
||||
If nextAttachmentIndex <= 0 Then
|
||||
nextAttachmentIndex = 1
|
||||
End If
|
||||
|
||||
For Each groupIndex In oIndexList
|
||||
|
||||
Dim oMimeCodeString As String = String.Empty
|
||||
Dim oOrgFilename As String = String.Empty
|
||||
Dim oBase64String As String = String.Empty
|
||||
|
||||
Dim oMimeTypeProperty As ValidProperty = GetIndexProperty(embAttachmentList, groupIndex, "ATTACHMENT_FILE_MIMECODE")
|
||||
|
||||
If oMimeTypeProperty IsNot Nothing AndAlso oMimeTypeProperty.Value.IsNotNullOrEmpty() Then
|
||||
oMimeCodeString = oMimeTypeProperty.Value.ToLower()
|
||||
Else
|
||||
_logger.Debug("Empty MIME-Code! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim oFilenameProperty As ValidProperty = GetIndexProperty(embAttachmentList, groupIndex, "ATTACHMENT_FILE_FILENAME")
|
||||
If oFilenameProperty IsNot Nothing AndAlso oFilenameProperty.Value.IsNotNullOrEmpty() Then
|
||||
oOrgFilename = oFilenameProperty.Value
|
||||
Else
|
||||
_logger.Debug("Empty Filename! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim oBase64ValueProperty As ValidProperty = GetIndexProperty(embAttachmentList, groupIndex, "ATTACHMENT_FILE_VALUE")
|
||||
If oBase64ValueProperty IsNot Nothing AndAlso oBase64ValueProperty.Value.IsNotNullOrEmpty() Then
|
||||
oBase64String = oBase64ValueProperty.Value
|
||||
Else
|
||||
_logger.Error("Empty base64 String! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim newAttachmentFilename = pMessageId + "~attm" + nextAttachmentIndex.ToString
|
||||
|
||||
Dim oFileExtension = GetEmbeddedFileExtension(oMimeTypeProperty.Value)
|
||||
If oFileExtension.IsNotNullOrEmpty() Then
|
||||
newAttachmentFilename += "." + oFileExtension
|
||||
Else
|
||||
_logger.Warn("No extension found! File can not be stored!")
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim embeddedFilePath = Path.Combine(oOutputPath, newAttachmentFilename)
|
||||
_logger.Debug("Next Attachment File is [{0}]", embeddedFilePath)
|
||||
If SaveBase64ToDisk(embeddedFilePath, oBase64String) = True Then
|
||||
_logger.Debug("Saved file [{0}] to disk", embeddedFilePath)
|
||||
pProcessFileResult.EmailAttachmentFiles.Add(New FileInfo(embeddedFilePath))
|
||||
Else
|
||||
_logger.Error("Could not save File to Disk!")
|
||||
Dim oReasonString = "Could not save file " + newAttachmentFilename + " to disk."
|
||||
AddRejectedState(pMessageId, oReasonString, "EMBEDDED FILE CONSISTENCY NOT OK", "Info GUI", pConnections.SQLServerTransaction)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If TestFileOnDisk(embeddedFilePath, oMimeCodeString) = False Then
|
||||
_logger.Error("Could not save File to Disk!")
|
||||
Dim oReasonString = "Validation of file " + newAttachmentFilename + " on disk was NOT succesfully."
|
||||
AddRejectedState(pMessageId, oReasonString, "EMBEDDED FILE CONSISTENCY NOT OK", "Info GUI", pConnections.SQLServerTransaction)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
If InsertAttachmentHistoryEntry(pMessageId, oOrgFilename, embeddedFilePath) = False Then
|
||||
_logger.Error("Could not save attachment Data to DB!")
|
||||
Return False
|
||||
End If
|
||||
|
||||
If InsertEmbeddedFileDataToDB(pMessageId, oBase64String, oOrgFilename, oMimeCodeString, groupIndex) = False Then
|
||||
_logger.Error("Could not save attachment Data to DB!")
|
||||
Return False
|
||||
End If
|
||||
|
||||
nextAttachmentIndex += 1
|
||||
Next
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function SaveBase64ToDisk(pExportFilePath As String, pBase64String As String) As Boolean
|
||||
Private Function TestFileOnDisk(pEmbeddedFilePath As String, pMimeCodeString As String) As Boolean
|
||||
Try
|
||||
Dim base64BinaryDataString As String = pBase64String ' Hier Base64-String einfügen
|
||||
Dim binaryDataString As Byte() = System.Convert.FromBase64String(base64BinaryDataString)
|
||||
Dim oFilename As String = pExportFilePath
|
||||
Dim Stream As System.IO.FileStream = New System.IO.FileStream(oFilename, System.IO.FileMode.Create)
|
||||
Stream.Write(binaryDataString, 0, binaryDataString.Length)
|
||||
Stream.Close()
|
||||
Catch ex As Exception
|
||||
_logger.Error("Could NOT save File to Disk for MessageId [{0}] !", pExportFilePath)
|
||||
If pMimeCodeString = MIME_TYPE_PDF Then
|
||||
Dim oGdPicturePDF As New GdPicturePDF
|
||||
Dim oStatus As GdPictureStatus = oGdPicturePDF.LoadFromFile(pEmbeddedFilePath, True)
|
||||
If oStatus <> GdPictureStatus.OK Then
|
||||
_logger.Error("File [{0}] has no proper state!", pEmbeddedFilePath)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Else
|
||||
' Test other files
|
||||
Dim fileInfo As FileInfo = New FileInfo(pEmbeddedFilePath)
|
||||
If fileInfo.Exists = False Then
|
||||
_logger.Error("Could not find File [{0}] on Disk!", pEmbeddedFilePath)
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetEmbeddedFileExtension(pMimeTypeValue As String) As String
|
||||
|
||||
If pMimeTypeValue.IsNullOrEmpty() Then
|
||||
_logger.Warn("Empty MimeCode is not allowed!")
|
||||
Return String.Empty
|
||||
End If
|
||||
|
||||
Select Case pMimeTypeValue.ToLower()
|
||||
Case MIME_TYPE_PDF
|
||||
Return "pdf"
|
||||
Case MIME_TYPE_XLSX
|
||||
Return "xlsx"
|
||||
Case MIME_TYPE_ODT
|
||||
Return "odt"
|
||||
Case "image/jpeg"
|
||||
Return "jpg"
|
||||
Case "image/png"
|
||||
Return "png"
|
||||
Case "image/tiff"
|
||||
Return "tif"
|
||||
Case "text/csv"
|
||||
Return "csv"
|
||||
Case "text/xml"
|
||||
Return "xml"
|
||||
Case Else
|
||||
Return String.Empty
|
||||
End Select
|
||||
|
||||
End Function
|
||||
|
||||
Private Shared Function GetIndexProperty(pListResult As List(Of ValidProperty), pGroupIndex As Integer, pTableColumn As String) As ValidProperty
|
||||
Return pListResult.Where(
|
||||
Function(z)
|
||||
Return z.GroupCounter = pGroupIndex AndAlso z.TableColumn = pTableColumn
|
||||
End Function
|
||||
).FirstOrDefault
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Speichert die Daten inkl. base64-String in die Datenbank
|
||||
''' </summary>
|
||||
Private Function InsertEmbeddedFileDataToDB(pMessageId As String, pItemValue As String, pOrgFilename As String, pMimeType As String, pGroupIndex As Integer) As Boolean
|
||||
Try
|
||||
Dim oCommand = New SqlCommand(
|
||||
"INSERT INTO TBEDMI_ITEM_FILES (
|
||||
REFERENCE_GUID,
|
||||
ITEM_VALUE,
|
||||
ORG_FILENAME,
|
||||
MIME_TYPE,
|
||||
GROUP_INDEX,
|
||||
CREATED_WHO
|
||||
) VALUES (
|
||||
@MESSAGE_ID,
|
||||
@ITEM_VALUE,
|
||||
@ORG_FILENAME,
|
||||
@MIME_TYPE,
|
||||
@GROUP_INDEX,
|
||||
@CREATED_WHO
|
||||
)")
|
||||
|
||||
Dim fileBytes As Byte() = Convert.FromBase64String(pItemValue)
|
||||
|
||||
oCommand.Parameters.Add("MESSAGE_ID", SqlDbType.VarChar, 250).Value = pMessageId
|
||||
oCommand.Parameters.Add("ITEM_VALUE", SqlDbType.VarBinary).Value = fileBytes
|
||||
oCommand.Parameters.Add("ORG_FILENAME", SqlDbType.VarChar, 256).Value = pOrgFilename
|
||||
oCommand.Parameters.Add("MIME_TYPE", SqlDbType.VarChar, 256).Value = pMimeType
|
||||
oCommand.Parameters.Add("GROUP_INDEX", SqlDbType.Int).Value = pGroupIndex
|
||||
oCommand.Parameters.Add("CREATED_WHO", SqlDbType.VarChar, 100).Value = "eInvoice Parser"
|
||||
|
||||
_mssql.ExecuteNonQuery(oCommand)
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Ermittelt den Ausgabepfad für die eingebetteten Anhänge
|
||||
''' </summary>
|
||||
Private Function GetOutputPathForEmbeddedAttachments(pArgs As WorkerArgs) As String
|
||||
Return pArgs.WatchDirectory
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Prüft, ob Embedded Attachments in den XML-Ergebnissen enthalten sind,
|
||||
''' in dem geprüft wird, ob bestimmte MIME-Codes vorhanden sind.
|
||||
''' </summary>
|
||||
''' <param name="pCheckResult"></param>
|
||||
''' <returns></returns>
|
||||
Private Function CheckEmbeddedAttachmentEntries(pCheckResult As CheckPropertyValuesResult) As Boolean
|
||||
|
||||
Try
|
||||
Dim resultList = pCheckResult.ValidProperties.Where(
|
||||
Function(z)
|
||||
Return (z.TableColumn = "ATTACHMENT_FILE_MIMECODE" AndAlso AllowedMimeTypesInEmbeddedFiles.Contains(z.Value.ToLower()))
|
||||
End Function
|
||||
).ToList()
|
||||
|
||||
If resultList.Count > 0 Then
|
||||
_logger.Info("Found [{0}] embedded XML-Attachments.", resultList.Count)
|
||||
Return True
|
||||
Else
|
||||
_logger.Info("No embedded XML-Attachments found.")
|
||||
Return False
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Error("Error searching pCheckResult! {0}", ex.Message)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' Speichere base64 als Datei auf der Platte ab.
|
||||
''' </summary>
|
||||
Private Function SaveBase64ToDisk(pExportFilePath As String, pBase64String As String) As Boolean
|
||||
|
||||
Try
|
||||
Dim oFilename As String = pExportFilePath
|
||||
Dim base64BinaryDataString As String = pBase64String
|
||||
Dim binaryDataString As Byte() = Convert.FromBase64String(base64BinaryDataString)
|
||||
|
||||
' Using verwenden, um blockieren der Datei zu verhindern
|
||||
Using fs = New FileStream(oFilename, FileMode.Create, FileAccess.ReadWrite)
|
||||
fs.Write(binaryDataString, 0, binaryDataString.Length)
|
||||
fs.Flush()
|
||||
fs.Close()
|
||||
End Using
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error("Could NOT save File [{0}] to Disk! Exception: [{1}]", pExportFilePath, ex.Message)
|
||||
Return False
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Die Methode lädt die bisherigen Dateinamen zu einer MessageID
|
||||
''' Die Datei mit dem höchsten Index gibt den folgenden Index vor.
|
||||
''' </summary>
|
||||
''' <returns>Nächster Attachment Index</returns>
|
||||
Private Function GetNextAttachmentIndex(pMessageId As String) As Integer
|
||||
Try
|
||||
Dim oSQL = $"SELECT count(*) FROM TBEMLP_HISTORY_ATTACHMENT WITH (NOLOCK) WHERE EMAIL_MSGID = '{pMessageId}'"
|
||||
|
||||
Dim sqlResult = _mssql.GetScalarValue(oSQL)
|
||||
If sqlResult = 0 Then
|
||||
sqlResult = 1 ' Kleinster Index = 1
|
||||
End If
|
||||
|
||||
Return sqlResult
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Speichert die Infos zu einem embedded Dateianhang in die DB.
|
||||
''' Mangels EMail-Daten werden die EMail-Felder (FROM, BODY, usw.) nicht gefüllt
|
||||
''' </summary>
|
||||
''' <returns>true, wenn erfolgreich</returns>
|
||||
Private Function InsertAttachmentHistoryEntry(pMessageId As String, pFileName As String, pNewFileName As String) As Boolean
|
||||
|
||||
Try
|
||||
Dim oCommand = New SqlCommand(
|
||||
"INSERT INTO TBEMLP_HISTORY_ATTACHMENT (
|
||||
WORK_PROCESS,
|
||||
EMAIL_MSGID,
|
||||
EMAIL_ATTMT,
|
||||
EMAIL_ATTMT_INDEX,
|
||||
EMAIL_FROM,
|
||||
EMAIL_BODY
|
||||
) VALUES (
|
||||
@WORK_PROCESS,
|
||||
@MESSAGE_ID,
|
||||
@ATTACHMENT,
|
||||
@ATTACHMENT_INDEX,
|
||||
'-',
|
||||
'-'
|
||||
)")
|
||||
|
||||
oCommand.Parameters.Add("WORK_PROCESS", SqlDbType.VarChar, 100).Value = "Attachment Sniffer (Embedded Files)"
|
||||
oCommand.Parameters.Add("MESSAGE_ID", SqlDbType.VarChar, 500).Value = pMessageId
|
||||
oCommand.Parameters.Add("ATTACHMENT", SqlDbType.VarChar, 500).Value = pFileName
|
||||
oCommand.Parameters.Add("ATTACHMENT_INDEX", SqlDbType.VarChar, 500).Value = pNewFileName
|
||||
|
||||
_mssql.ExecuteNonQuery(oCommand)
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function BulkInsertDataToDatabase(pMessageId As String, pDocument As ZUGFeRDInterface.ZugferdResult, pConnections As DatabaseConnections, pCheckResults As CheckPropertyValuesResult) As Boolean
|
||||
@@ -771,7 +1132,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Erste Zeile enthält die Spezifikation
|
||||
Dim oFirstRow As DataRow = oDataTable.NewRow()
|
||||
oFirstRow("REFERENCE_GUID") = pMessageId
|
||||
oFirstRow("ITEM_DESCRIPTION") = "ZUGFeRDSpezifikation"
|
||||
oFirstRow("ITEM_DESCRIPTION") = "Verwendete Spezifikation der E-Rechnung"
|
||||
oFirstRow("ITEM_VALUE") = pDocument.Specification
|
||||
oFirstRow("GROUP_COUNTER") = 0
|
||||
oFirstRow("SPEC_NAME") = "ZUGFERD_SPECIFICATION"
|
||||
@@ -783,7 +1144,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Zweite Zeile enthält das verwendete XML Schema
|
||||
Dim oSecondRow As DataRow = oDataTable.NewRow()
|
||||
oSecondRow("REFERENCE_GUID") = pMessageId
|
||||
oSecondRow("ITEM_DESCRIPTION") = "ZUGFeRDXMLSchema"
|
||||
oSecondRow("ITEM_DESCRIPTION") = "Verwendetes XML-Schema (XSD) der E-Rechnung"
|
||||
oSecondRow("ITEM_VALUE") = pDocument.UsedXMLSchema
|
||||
oSecondRow("GROUP_COUNTER") = 0
|
||||
oSecondRow("SPEC_NAME") = "ZUGFERD_XML_SCHEMA"
|
||||
@@ -795,7 +1156,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Dritte Zeile enthält das verwendete Datei-Format des Belegs (PDF/XML)
|
||||
Dim oThirdRow As DataRow = oDataTable.NewRow()
|
||||
oThirdRow("REFERENCE_GUID") = pMessageId
|
||||
oThirdRow("ITEM_DESCRIPTION") = "ReceiptFileType"
|
||||
oThirdRow("ITEM_DESCRIPTION") = "Dateityp der E-Rechnung"
|
||||
oThirdRow("ITEM_VALUE") = pDocument.ReceiptFileType
|
||||
oThirdRow("GROUP_COUNTER") = 0
|
||||
oThirdRow("SPEC_NAME") = "RECEIPT_FILE_TYPE"
|
||||
@@ -811,6 +1172,12 @@ Public Class ImportZUGFeRDFiles
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' ItemType = 0 (normale texte) dürfen nicht leer sein
|
||||
If oProperty.ItemType = 0 And oProperty.Value.IsNullOrEmpty Then
|
||||
_logger.Debug("No Mapping for Property [{0}] with empty value, because of ItemType = 0.", oProperty.TableColumn)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' If GroupCounter is -1, it means this is a default property that can only occur once.
|
||||
' Set the actual inserted value to 0
|
||||
Dim oGroupCounterValue As Integer = oProperty.GroupCounter
|
||||
@@ -818,19 +1185,27 @@ Public Class ImportZUGFeRDFiles
|
||||
oGroupCounterValue = 0
|
||||
End If
|
||||
|
||||
If oProperty.Value.Length > 900 Then
|
||||
_logger.Warn("Value for field [{0}] is longer than 900 characters, will be truncated!", oProperty.TableColumn)
|
||||
If oProperty.Value.Length > 4000 Then
|
||||
_logger.Warn("Value for field [{0}] is longer than 4000 characters, will be truncated!", oProperty.TableColumn)
|
||||
oProperty.Value = oProperty.Value.Truncate(4000)
|
||||
End If
|
||||
|
||||
Dim oDescription As String
|
||||
If oProperty.EN16931_ID IsNot Nothing AndAlso oProperty.EN16931_ID.Length > 1 Then
|
||||
oDescription = oProperty.EN16931_ID + " (" + oProperty.Description + ")"
|
||||
Else
|
||||
oDescription = oProperty.Description
|
||||
End If
|
||||
|
||||
Dim oNewRow As DataRow = oDataTable.NewRow()
|
||||
oNewRow("REFERENCE_GUID") = pMessageId
|
||||
oNewRow("ITEM_DESCRIPTION") = oProperty.Description
|
||||
oNewRow("ITEM_VALUE") = oProperty.Value.Truncate(900).Replace("'", "''")
|
||||
oNewRow("ITEM_DESCRIPTION") = oDescription
|
||||
oNewRow("ITEM_VALUE") = oProperty.Value
|
||||
oNewRow("GROUP_COUNTER") = oGroupCounterValue
|
||||
oNewRow("SPEC_NAME") = oProperty.TableColumn
|
||||
oNewRow("IS_REQUIRED") = oProperty.IsRequired
|
||||
|
||||
_logger.Debug("Mapping Property [{0}] with value [{1}]", oProperty.TableColumn, oProperty.Value.Replace("'", "''"))
|
||||
_logger.Debug("Mapping Property [{0}] with value [{1}]", oProperty.TableColumn, oProperty.Value)
|
||||
oDataTable.Rows.Add(oNewRow)
|
||||
Next
|
||||
|
||||
@@ -848,6 +1223,15 @@ Public Class ImportZUGFeRDFiles
|
||||
_logger.Warn("Step [{0}] with SQL [{1}] was not successful.", oStep, oDelSQL)
|
||||
End Try
|
||||
|
||||
Try
|
||||
oDelSQL = $"DELETE FROM TBEDMI_ITEM_FILES where REFERENCE_GUID = '{pMessageId}'"
|
||||
oStep = "TBEDMI_ITEM_FILES Delete MessageID Items"
|
||||
Dim retValue As Boolean = _mssql.ExecuteNonQueryWithConnectionObject(oDelSQL, pConnections.SQLServerConnection, MSSQLServer.TransactionMode.ExternalTransaction, pConnections.SQLServerTransaction)
|
||||
Return retValue
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Step [{0}] with SQL [{1}] was not successful.", oStep, oDelSQL)
|
||||
End Try
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
@@ -871,6 +1255,10 @@ Public Class ImportZUGFeRDFiles
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Fügt neue Datensätze in Tabelle TBEMLP_HISTORY_STATE ein,
|
||||
''' per Prozedur DD_ECM.[dbo].[PRCUST_ADD_HISTORY_STATE]
|
||||
''' </summary>
|
||||
Private Sub AddRejectedState(pMessageID As String, pTitle As String, pTitle1 As String, pComment As String, pTransaction As SqlTransaction)
|
||||
Try
|
||||
'PRCUST_ADD_HISTORY_STATE: @MessageID VARCHAR(250), @TITLE1 VARCHAR(250), @TITLE2 VARCHAR(250)
|
||||
@@ -880,4 +1268,5 @@ Public Class ImportZUGFeRDFiles
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
@@ -12,7 +12,7 @@ Public Class WorkerArgs
|
||||
Public NonZugferdDirectory As String = Nothing
|
||||
|
||||
' Property Parameter
|
||||
Public PropertyMap As New Dictionary(Of String, XmlItemProperty)
|
||||
Public PropertyMapList As New List(Of XmlItemProperty)
|
||||
|
||||
' Email Parameter
|
||||
Public EmailOutProfileId As Integer = 0
|
||||
@@ -31,6 +31,7 @@ Public Class WorkerArgs
|
||||
Public AllowXRechnung As Boolean = True
|
||||
Public AllowZugferd10 As Boolean = True
|
||||
Public AllowZugferd2x As Boolean = True
|
||||
Public AllowZugferd23x As Boolean = True
|
||||
Public AllowPeppolBISBill3x As Boolean = False
|
||||
|
||||
End Class
|
||||
File diff suppressed because it is too large
Load Diff
490
Jobs/logParser.txt
Normal file
490
Jobs/logParser.txt
Normal file
@@ -0,0 +1,490 @@
|
||||
15:17:36.4176|MSSQLServer|DEBUG >> TestCanConnect(MSSQLServer.vb:229) -> Testing connection to [Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true]
|
||||
15:17:37.4207|MSSQLServer|DEBUG >> TestCanConnect(MSSQLServer.vb:229) -> Testing connection to [Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX]
|
||||
15:17:37.8448|ConfigDbFunct|DEBUG >> GetProductLicense(ConfigDbFunct.vb:39) -> oSql in GetProductLicense: SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE' AND ACTIVE = 1 AND VERSION = '11.2024'
|
||||
15:17:37.8448|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX
|
||||
15:17:37.8448|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:37.8448|MSSQLServer|DEBUG >> GetScalarValueWithConnectionObject(MSSQLServer.vb:580) -> GetScalarValueWithConnectionObject: Running Query [SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE' AND ACTIVE = 1 AND VERSION = '11.2024'] with Parameters []
|
||||
15:17:42.0151|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:42.0151|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:42.0151|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBDD_ZUGFERD_XML_ITEMS WHERE ACTIVE = 1 ORDER BY XML_PATH] and Parameters []
|
||||
15:17:42.5927|ImportZUGFeRDFiles|DEBUG >> .ctor(ImportZUGFeRDFiles.vb:105) -> Registering GDPicture License
|
||||
15:17:42.5927|MSSQLServer|DEBUG >> TestCanConnect(MSSQLServer.vb:229) -> Testing connection to [Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX;TrustServerCertificate=True]
|
||||
15:17:42.5927|ConfigDbFunct|DEBUG >> GetProductLicense(ConfigDbFunct.vb:39) -> oSql in GetProductLicense: SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE' AND ACTIVE = 1 AND VERSION = '11.2024'
|
||||
15:17:42.5927|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;User ID=sa;Password=XXXXX;TrustServerCertificate=True
|
||||
15:17:42.5927|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:42.5944|MSSQLServer|DEBUG >> GetScalarValueWithConnectionObject(MSSQLServer.vb:580) -> GetScalarValueWithConnectionObject: Running Query [SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE' AND ACTIVE = 1 AND VERSION = '11.2024'] with Parameters []
|
||||
15:17:44.6684|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:126) -> Starting Job ImportZUGFeRDFiles
|
||||
15:17:44.6684|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:44.6684|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:44.6684|MSSQLServer|DEBUG >> GetScalarValueWithConnectionObject(MSSQLServer.vb:580) -> GetScalarValueWithConnectionObject: Running Query [SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WITH (NOLOCK) WHERE TITLE = 'VWDD_ZUGFERD_VIEW_RECEIPT_TEMPLATE_ITEMS'] with Parameters []
|
||||
15:17:44.6684|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:138) -> Start processing directory E:\DocumentProcessing\Input\
|
||||
15:17:44.6684|ImportZUGFeRDFiles|INFO >> Start(ImportZUGFeRDFiles.vb:156) -> Found 1 files
|
||||
15:17:44.6684|ImportZUGFeRDFiles|INFO >> Start(ImportZUGFeRDFiles.vb:161) -> Found [1] file groups
|
||||
15:17:44.6684|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:44.6733|ImportZUGFeRDFiles|INFO >> Start(ImportZUGFeRDFiles.vb:198) -> START processing file group K7HCTKOSTENSTELLE20260612
|
||||
15:17:45.1031|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:45.1031|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:45.1031|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT EMAIL_FROM, EMAIL_SUBJECT FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = 'K7HCTKOSTENSTELLE20260612'] and Parameters []
|
||||
15:17:45.1031|EmailFunctions|WARN >> GetEmailDataForMessageId(EmailFunctions.vb:232) -> Got no results for MessageId K7HCTKOSTENSTELLE20260612
|
||||
15:17:45.1031|ImportZUGFeRDFiles|INFO >> ProcessXMLFile(ImportZUGFeRDFiles.vb:552) -> Start xml processing file CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.xml
|
||||
15:17:45.1031|FilesystemEx|INFO >> TestFileSizeIsLessThanMaxFileSize(FilesystemEx.vb:410) -> Checking Filesize of CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.xml
|
||||
15:17:45.1031|FilesystemEx|DEBUG >> TestFileSizeIsLessThanMaxFileSize(FilesystemEx.vb:411) -> Filesize threshold is 10 MB.
|
||||
15:17:45.1031|FilesystemEx|DEBUG >> TestFileSizeIsLessThanMaxFileSize(FilesystemEx.vb:424) -> Filesize is smaller than threshold. All fine.
|
||||
15:17:45.2162|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:447) -> Trying Type [DigitalData.Modules.Interfaces.ZUGFeRD.Version1_0.CrossIndustryDocumentType]
|
||||
15:17:45.2599|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:451) -> Serializing with type [DigitalData.Modules.Interfaces.ZUGFeRD.Version1_0.CrossIndustryDocumentType] failed
|
||||
15:17:45.2599|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:451) -> Fehler im XML-Dokument (0,0).
|
||||
15:17:45.2599|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:451) -> <CrossIndustryInvoice xmlns='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'> wurde nicht erwartet.
|
||||
15:17:45.3934|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:447) -> Trying Type [DigitalData.Modules.Interfaces.ZUGFeRD.Version2_0.CrossIndustryInvoiceType]
|
||||
15:17:45.5187|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:451) -> Serializing with type [DigitalData.Modules.Interfaces.ZUGFeRD.Version2_0.CrossIndustryInvoiceType] failed
|
||||
15:17:45.5187|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:451) -> Fehler im XML-Dokument (0,0).
|
||||
15:17:45.5187|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:451) -> Instanzvalidierungsfehler: '1' ist kein gültiger Wert für PaymentMeansCodeContentType.
|
||||
15:17:45.6681|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:447) -> Trying Type [DigitalData.Modules.Interfaces.ZUGFeRD.Version2_1_1.CrossIndustryInvoiceType]
|
||||
15:17:45.7827|ZUGFeRDInterface|DEBUG >> SerializeZUGFeRDDocument(ZUGFeRDInterface.vb:455) -> Serializing with type [DigitalData.Modules.Interfaces.ZUGFeRD.Version2_1_1.CrossIndustryInvoiceType] succeeded
|
||||
15:17:45.7827|ZUGFeRDInterface|DEBUG >> FilterPropertyMap(ZUGFeRDInterface.vb:140) -> Filtering Property map list for Specification [ZUGFERD_2x]
|
||||
15:17:45.7827|ZUGFeRDInterface|DEBUG >> FilterPropertyMap(ZUGFeRDInterface.vb:162) -> Property map list contains [85] elements for specification [ZUGFERD_2x]
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:60) -> Found 49 ungrouped properties.
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:68) -> Found [36] properties grouped in [5] group(s)
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:76) -> Fetching Property values for group [INCLUDED_NOTE].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INCLUDED_NOTE_CONTENT].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INCLUDED_NOTE_SUBJCODE].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:109) -> Processing row 0
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INCLUDED_NOTE_CONTENT].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INCLUDED_NOTE_CONTENT] has value 'Rechnung'
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INCLUDED_NOTE_SUBJCODE].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INCLUDED_NOTE_SUBJCODE] has value 'AFM'
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:109) -> Processing row 1
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INCLUDED_NOTE_CONTENT].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:150) -> Item [INCLUDED_NOTE_CONTENT] has value 'nsere Leistungen für den Auftrag "Hertie School of...'
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INCLUDED_NOTE_SUBJCODE].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INCLUDED_NOTE_SUBJCODE] has value 'AAI'
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:109) -> Processing row 2
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INCLUDED_NOTE_CONTENT].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INCLUDED_NOTE_CONTENT] has value 'Vielen Dank für die gute Zusammenarbeit.'
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INCLUDED_NOTE_SUBJCODE].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INCLUDED_NOTE_SUBJCODE] has value 'SUR'
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:76) -> Fetching Property values for group [FILES].
|
||||
15:17:45.7827|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [ATTACHMENT_FILE_FILENAME].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [AdditionalReferencedDocument] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [ATTACHMENT_FILE_MIMECODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [AdditionalReferencedDocument] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [ATTACHMENT_FILE_VALUE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [AdditionalReferencedDocument] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:76) -> Fetching Property values for group [TAX_GROUP].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_BASEAMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_CATEGORY].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_EXEMPTION_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [ExemptionReason] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_EXEMPTION_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [ExemptionReasonCode] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_RATE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_TYPE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:109) -> Processing row 0
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_BASEAMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_BASEAMOUNT] has value '89.92'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_AMOUNT] has value '17.08'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_CATEGORY].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_CATEGORY] has value 'S'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_EXEMPTION_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [INVOICE_TAXPOS_EXEMPTION_REASON] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_EXEMPTION_REASON] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_EXEMPTION_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [INVOICE_TAXPOS_EXEMPTION_REASON_CODE] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_EXEMPTION_REASON_CODE] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_RATE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_RATE] has value '19.00'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_TYPE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_TYPE] has value 'VAT'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:76) -> Fetching Property values for group [RECEIPT_CHARGE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_ACTUAL_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_BASIS_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_CALCULATION_PERCENT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_VAT_RATE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_VAT_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_CHARGE_INDICATOR].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [RECEIPT_ALLOWANCE_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:76) -> Fetching Property values for group [POSITIONS].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_POSITION_NOTE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [IncludedNote] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_POSITION_UNIT_TYPE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_POSITION_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_TAX_CATEGORY].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_TAX_EXEMPTION_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [ExemptionReason] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_TAX_EXEMPTION_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [ExemptionReasonCode] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_TAXPOS_TAX_RATE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [POSITION_ALLOWANCE_ACTUAL_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [POSITION_ALLOWANCE_BASIS_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [POSITION_ALLOWANCE_CALCULATION_PERCENT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [POSITION_ALLOWANCE_CHARGE_INDICATOR].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [POSITION_ALLOWANCE_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [POSITION_ALLOWANCE_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedTradeAllowanceCharge] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_POSITION_TAX_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_POSITION_ARTICLE_DESCRIPTION].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [Description] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:81) -> Fetching value for itemSpecification [INVOICE_POSITION_ARTICLE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:109) -> Processing row 0
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_POSITION_NOTE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [INVOICE_POSITION_NOTE] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_POSITION_NOTE] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_POSITION_UNIT_TYPE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_POSITION_UNIT_TYPE] has value 'HUR'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_POSITION_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_POSITION_AMOUNT] has value '4.0000'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_TAX_CATEGORY].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_TAX_CATEGORY] has value 'S'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_TAX_EXEMPTION_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [INVOICE_TAXPOS_TAX_EXEMPTION_REASON] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_TAX_EXEMPTION_REASON] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_TAX_EXEMPTION_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [INVOICE_TAXPOS_TAX_EXEMPTION_REASON_CODE] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_TAX_EXEMPTION_REASON_CODE] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_TAXPOS_TAX_RATE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_TAXPOS_TAX_RATE] has value '19.00'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [POSITION_ALLOWANCE_ACTUAL_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [POSITION_ALLOWANCE_ACTUAL_AMOUNT] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [POSITION_ALLOWANCE_ACTUAL_AMOUNT] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [POSITION_ALLOWANCE_BASIS_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [POSITION_ALLOWANCE_BASIS_AMOUNT] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [POSITION_ALLOWANCE_BASIS_AMOUNT] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [POSITION_ALLOWANCE_CALCULATION_PERCENT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [POSITION_ALLOWANCE_CALCULATION_PERCENT] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [POSITION_ALLOWANCE_CALCULATION_PERCENT] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [POSITION_ALLOWANCE_CHARGE_INDICATOR].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [POSITION_ALLOWANCE_CHARGE_INDICATOR] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [POSITION_ALLOWANCE_CHARGE_INDICATOR] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [POSITION_ALLOWANCE_REASON].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [POSITION_ALLOWANCE_REASON] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [POSITION_ALLOWANCE_REASON] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [POSITION_ALLOWANCE_REASON_CODE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [POSITION_ALLOWANCE_REASON_CODE] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [POSITION_ALLOWANCE_REASON_CODE] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_POSITION_TAX_AMOUNT].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_POSITION_TAX_AMOUNT] has value '89.92'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_POSITION_ARTICLE_DESCRIPTION].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:141) -> K7HCTKOSTENSTELLE20260612 - oPropertyValue for column [INVOICE_POSITION_ARTICLE_DESCRIPTION] is empty or not found. Continuing with Empty String.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_POSITION_ARTICLE_DESCRIPTION] has value ''
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:125) -> Processing itemColumn *TableColumn* [INVOICE_POSITION_ARTICLE].
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:152) -> Item [INVOICE_POSITION_ARTICLE] has value 'Sicherheit'
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [Name] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_REFERENCE2] is empty or not found. Skipping.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [ID] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_BUYER_ID] is empty or not found. Skipping.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [LineTwo] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_BUYER_ADRESS2] is empty or not found. Skipping.
|
||||
15:17:45.7980|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [LineTwo] does not exist(2).
|
||||
15:17:45.7980|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_SELLER_ADDRESS2] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [ReceivableSpecifiedTradeAccountingAccount] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_COST_CENTER] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedLogisticsServiceCharge] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [SERVICE_CHARGE_AMOUNT] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedLogisticsServiceCharge] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [SERVICE_CHARGE_TAXPERCENT] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedLogisticsServiceCharge] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [SERVICE_CHARGE_TAXCODE] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [SpecifiedLogisticsServiceCharge] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [SERVICE_CHARGE_DESC] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [currencyID] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_TOTAL_GROSS_CURRENCY] is empty or not found. Skipping.
|
||||
15:17:45.8134|PropertyValues|DEBUG >> GetPropValue(PropertyValues.vb:312) -> Property [currencyID] does not exist(2).
|
||||
15:17:45.8134|PropertyValues|DEBUG >> CheckPropertyValues(PropertyValues.vb:244) -> oPropertyValue for specification [INVOICE_TOTAL_NET_CURRENCY] is empty or not found. Skipping.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|INFO >> StoreXMLItemsInDatabase(ImportZUGFeRDFiles.vb:722) -> Properties checked: [0] missing properties / [67] valid properties found.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> StoreXMLItemsInDatabase(ImportZUGFeRDFiles.vb:728) -> No missing properties found. Continuing.
|
||||
15:17:45.8134|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [ExternalTransaction]
|
||||
15:17:45.8134|MSSQLServer|DEBUG >> ExecuteNonQueryWithConnectionObject(MSSQLServer.vb:491) -> ExecuteNonQueryWithConnectionObject: Running Command [DELETE FROM TBEDMI_ITEM_VALUE where REFERENCE_GUID = 'K7HCTKOSTENSTELLE20260612'] and Parameters []
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1141) -> Mapping Property [ZUGFERD_SPECIFICATION] with value [ZUGFERD_2x]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1153) -> Mapping Property [ZUGFERD_XML_SCHEMA] with value [Version2_1_1]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1165) -> Mapping Property [RECEIPT_FILE_TYPE] with value [XML]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INCLUDED_NOTE_CONTENT] with value [Rechnung]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INCLUDED_NOTE_SUBJCODE] with value [AFM]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INCLUDED_NOTE_CONTENT] with value [Unsere Leistungen für den Auftrag "Hertie School of Governace" stellen wir Ihnen wie folgt in Rechnung.]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INCLUDED_NOTE_SUBJCODE] with value [AAI]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INCLUDED_NOTE_CONTENT] with value [Vielen Dank für die gute Zusammenarbeit.]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INCLUDED_NOTE_SUBJCODE] with value [SUR]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_BASEAMOUNT] with value [89.92]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_AMOUNT] with value [17.08]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_CATEGORY] with value [S]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [INVOICE_TAXPOS_EXEMPTION_REASON] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [INVOICE_TAXPOS_EXEMPTION_REASON_CODE] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_RATE] with value [19.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_TYPE] with value [VAT]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [INVOICE_POSITION_NOTE] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_POSITION_UNIT_TYPE] with value [HUR]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_POSITION_AMOUNT] with value [4.0000]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_TAX_CATEGORY] with value [S]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [INVOICE_TAXPOS_TAX_EXEMPTION_REASON] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [INVOICE_TAXPOS_TAX_EXEMPTION_REASON_CODE] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TAXPOS_TAX_RATE] with value [19.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [POSITION_ALLOWANCE_ACTUAL_AMOUNT] with value []
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [POSITION_ALLOWANCE_BASIS_AMOUNT] with value []
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [POSITION_ALLOWANCE_CALCULATION_PERCENT] with value []
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [POSITION_ALLOWANCE_CHARGE_INDICATOR] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [POSITION_ALLOWANCE_REASON] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [POSITION_ALLOWANCE_REASON_CODE] with value []
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_POSITION_TAX_AMOUNT] with value [89.92]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1177) -> No Mapping for Property [INVOICE_POSITION_ARTICLE_DESCRIPTION] with empty value, because of ItemType = 0.
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_POSITION_ARTICLE] with value [Sicherheit]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_NUMBER] with value [W26282]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_DATE] with value [20260531]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TYPE] with value [380]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_REFERENCE] with value [5602180653]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_REFERENCE3] with value [5602180653]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_BUYER_NAME] with value [WISAG Sicherheit & Service Berlin -Brandenburg GmbH & Co. KG]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_BUYER_CITY] with value [Berlin]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_BUYER_COUNTRY] with value [57]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_BUYER_ADRESS] with value [Bornitzstraße 67 – 71]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_BUYER_POSTALCODE] with value [10365]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_EMAIL] with value [info@safety-first-service.de]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_ID] with value [7123898]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_NAME] with value [Safety First - Service GmbH]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_CITY] with value [Blankenfelde Mahlow]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_COUNTRY] with value [57]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_ADDRESS] with value [Lindenhof 2]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_POSTALCODE] with value [15831]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SELLER_TAX_ID] with value [050/118/05428]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SERVICE_DATE_FORMAT] with value [102]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_SERVICE_DATE] with value [20260531]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_DATE_END] with value [20260531]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_DATE_START] with value [20260501]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_CURRENCY] with value [EUR]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_REFERENCE1] with value [W26282]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_PAYMENT_TERMS] with value [Bitte überweisen Sie den gesamten Betrag ohne Abzüge innerhalb der nächsten 30 Tage mit Angabe der
|
||||
Rechnungsnummer im Verwendungszweck auf das untenstehende Konto.
|
||||
#SKONTO#TAGE=30#PROZENT=0.00#
|
||||
]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_PAYMENT_DEADLINE_FORMAT] with value [102]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_PAYMENT_DEADLINE] with value [20260630]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_ALLOWANCE_AMOUNT] with value [0.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_CHARGE_AMOUNT] with value [0.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_DUE_PAYABLE_AMOUNT] with value [107.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_GROSS] with value [107.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_NET] with value [89.92]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_TAX_CURRENCY] with value [EUR]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_TAX] with value [17.08]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_TOTAL_PREPAID_AMOUNT] with value [0.00]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_PAYMENT_TYPE] with value [Überweisung]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_PAYMENT_IBAN] with value [DE41160500001000617188]
|
||||
15:17:45.8134|ImportZUGFeRDFiles|DEBUG >> FillDataTable(ImportZUGFeRDFiles.vb:1208) -> Mapping Property [INVOICE_PAYMENT_BIC] with value [WELADED1PMB]
|
||||
15:17:45.8318|ImportZUGFeRDFiles|INFO >> BulkInsertDataToDatabase(ImportZUGFeRDFiles.vb:1117) -> Bulk Insert finished. [62] rows inserted for MessageId [K7HCTKOSTENSTELLE20260612].
|
||||
15:17:45.8318|ImportZUGFeRDFiles|INFO >> CheckEmbeddedAttachmentEntries(ImportZUGFeRDFiles.vb:995) -> No embedded XML-Attachments found.
|
||||
15:17:45.8318|ImportZUGFeRDFiles|DEBUG >> HandleEmbeddedAttachments(ImportZUGFeRDFiles.vb:760) -> No embedded Files in XML found!
|
||||
15:17:45.8318|ImportZUGFeRDFiles|DEBUG >> ProcessXMLFile(ImportZUGFeRDFiles.vb:606) -> File processed.
|
||||
15:17:45.8318|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:45.8318|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:45.8318|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [SELECT * FROM TBEMLP_HISTORY WHERE GUID = (SELECT MAX(GUID) FROM TBEMLP_HISTORY WHERE UPPER(MD5HASH) = UPPER('9A6FE7F44ECA6D5D4D95CFC086A68F91'))] and Parameters []
|
||||
15:17:45.8318|HashFunctions|DEBUG >> GenerateAndCheck_MD5Sum(HashFunctions.vb:47) -> File [E:\DocumentProcessing\Input\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.xml] was not found in History!
|
||||
15:17:45.8318|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:221) -> eInvoice File found
|
||||
15:17:45.8318|HistoryFunctions|INFO >> Update_HistoryEntry(HistoryFunctions.vb:18) -> Updating History Entry for MessageId [K7HCTKOSTENSTELLE20260612] with comment [SUCCESS]
|
||||
15:17:45.8449|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:45.8449|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:45.8449|MSSQLServer|DEBUG >> ExecuteNonQueryWithConnectionObject(MSSQLServer.vb:491) -> ExecuteNonQueryWithConnectionObject: Running Command [UPDATE TBEMLP_HISTORY SET
|
||||
COMMENT = 'SUCCESS',
|
||||
MD5HASH = '9A6FE7F44ECA6D5D4D95CFC086A68F91'
|
||||
WHERE EMAIL_MSGID = 'K7HCTKOSTENSTELLE20260612'] and Parameters []
|
||||
15:17:45.8449|HistoryFunctions|DEBUG >> Update_HistoryEntry(HistoryFunctions.vb:44) -> History Entry created!
|
||||
15:17:45.8449|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:114) -> Before Creating the PDF-File from XML data / Before Commit
|
||||
15:17:45.8449|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:114) -> XML commit triggered
|
||||
15:17:45.8449|MSSQLServer|DEBUG >> GetConnection(MSSQLServer.vb:276) -> The Following Connection is open: Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=XXXXX;TrustServerCertificate=true
|
||||
15:17:45.8449|MSSQLServer|DEBUG >> MaybeGetTransaction(MSSQLServer.vb:118) -> Transaction Mode: [WithTransaction]
|
||||
15:17:45.8449|MSSQLServer|DEBUG >> GetDatatableWithConnectionObject(MSSQLServer.vb:408) -> GetDatatableWithConnectionObject: Running Query [
|
||||
SELECT * FROM [dbo].[FNDD_ZUGFERD_VIEW_RECEIPT_CUST_RESULT] ('K7HCTKOSTENSTELLE20260612') ORDER BY ORDER_SEQ] and Parameters []
|
||||
15:17:47.4053|XRechnungViewDocument|DEBUG >> Create_PDFfromXML(XRechnungViewDocument.vb:60) -> Create_PDFfromXML() Start
|
||||
15:17:47.4075|XRechnungViewDocument|DEBUG >> InitializeFilePaths(XRechnungViewDocument.vb:122) -> Create_PDFfromXML() Resulting PDF Filepath: [E:\DocumentProcessing\Input\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.pdf]
|
||||
15:17:49.4218|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TYPE] SpecName=[INVOICE_TYPE] Value=[380] Caption=[] Display=[False] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: TYPE
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TYPE] SpecName=[INVOICE_CURRENCY] Value=[EUR] Caption=[] Display=[False] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [TYPE] - ItemArea: [TYPE] - SpecName: [INVOICE_CURRENCY] - Value: [EUR] - YPos: [65]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[TYPE] for SpecName=[INVOICE_CURRENCY]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [TYPE] - YPos: [65] - Display: [False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[HEAD] SpecName=[INVOICE_NUMBER] Value=[W26282] Caption=[Rechnungsnummer/Invoice-No:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: HEAD
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[HEAD] SpecName=[INVOICE_DATE] Value=[20260531] Caption=[Datum/Date:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [HEAD] - ItemArea: [HEAD] - SpecName: [INVOICE_DATE] - Value: [20260531] - YPos: [65]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:472) -> FollowItem: Entering HEAD handler
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [HEAD] - YPos: [65] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 70
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[HEAD] SpecName=[INVOICE_SERVICE_DATE] Value=[20260531] Caption=[Leistungsdatum/Service date:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [HEAD] - ItemArea: [HEAD] - SpecName: [INVOICE_SERVICE_DATE] - Value: [20260531] - YPos: [70]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:472) -> FollowItem: Entering HEAD handler
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [HEAD] - YPos: [70] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 75
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[HEAD] SpecName=[INVOICE_REFERENCE] Value=[?5602180653?] Caption=[BT-13 BestellReferenz/BORD:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [HEAD] - ItemArea: [HEAD] - SpecName: [INVOICE_REFERENCE] - Value: [?5602180653?] - YPos: [75]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:472) -> FollowItem: Entering HEAD handler
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [HEAD] - YPos: [75] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 80
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[HEAD] SpecName=[INVOICE_REFERENCE3] Value=[?5602180653?] Caption=[BT-10 KäuferReferenz/BuyerRef.] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [HEAD] - ItemArea: [HEAD] - SpecName: [INVOICE_REFERENCE3] - Value: [?5602180653?] - YPos: [80]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:472) -> FollowItem: Entering HEAD handler
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [HEAD] - YPos: [80] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 85
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[SELLER] SpecName=[INVOICE_SELLER_NAME] Value=[Safety First - Service GmbH] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: SELLER
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[SELLER] SpecName=[INVOICE_SELLER_ADDRESS] Value=[Lindenhof 2] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [SELLER] - ItemArea: [SELLER] - SpecName: [INVOICE_SELLER_ADDRESS] - Value: [Lindenhof 2] - YPos: [100]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[SELLER] for SpecName=[INVOICE_SELLER_ADDRESS]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [SELLER] - YPos: [100] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 105
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[SELLER] SpecName=[INVOICE_SELLER_POSTALCODE] Value=[15831] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [SELLER] - ItemArea: [SELLER] - SpecName: [INVOICE_SELLER_POSTALCODE] - Value: [15831] - YPos: [105]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[SELLER] for SpecName=[INVOICE_SELLER_POSTALCODE]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [SELLER] - YPos: [105] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 110
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[SELLER] SpecName=[INVOICE_SELLER_CITY] Value=[Blankenfelde Mahlow] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [SELLER] - ItemArea: [SELLER] - SpecName: [INVOICE_SELLER_CITY] - Value: [Blankenfelde Mahlow] - YPos: [110]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[SELLER] for SpecName=[INVOICE_SELLER_CITY]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [SELLER] - YPos: [110] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[SELLER] SpecName=[INVOICE_SELLER_TAX_ID] Value=[050/118/05428] Caption=[USt-ID/Seller tax ID:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [SELLER] - ItemArea: [SELLER] - SpecName: [INVOICE_SELLER_TAX_ID] - Value: [050/118/05428] - YPos: [110]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[SELLER] for SpecName=[INVOICE_SELLER_TAX_ID]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [SELLER] - YPos: [110] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 115
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[SELLER] SpecName=[INVOICE_SELLER_ID] Value=[7123898] Caption=[Lieferant-Nr/Seller ID:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [SELLER] - ItemArea: [SELLER] - SpecName: [INVOICE_SELLER_ID] - Value: [7123898] - YPos: [115]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[SELLER] for SpecName=[INVOICE_SELLER_ID]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [SELLER] - YPos: [115] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 120
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[BUYER] SpecName=[INVOICE_BUYER_NAME] Value=[WISAG Sicherheit & Service Berlin -Brandenburg GmbH & Co. KG] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: BUYER
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[BUYER] SpecName=[INVOICE_BUYER_ADRESS] Value=[Bornitzstraße 67 – 71] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [BUYER] - ItemArea: [BUYER] - SpecName: [INVOICE_BUYER_ADRESS] - Value: [Bornitzstraße 67 – 71] - YPos: [135]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[BUYER] for SpecName=[INVOICE_BUYER_ADRESS]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [BUYER] - YPos: [135] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 140
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[BUYER] SpecName=[INVOICE_BUYER_POSTALCODE] Value=[10365] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [BUYER] - ItemArea: [BUYER] - SpecName: [INVOICE_BUYER_POSTALCODE] - Value: [10365] - YPos: [140]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[BUYER] for SpecName=[INVOICE_BUYER_POSTALCODE]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [BUYER] - YPos: [140] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 145
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[BUYER] SpecName=[INVOICE_BUYER_CITY] Value=[Berlin] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [BUYER] - ItemArea: [BUYER] - SpecName: [INVOICE_BUYER_CITY] - Value: [Berlin] - YPos: [145]
|
||||
15:17:49.4229|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[BUYER] for SpecName=[INVOICE_BUYER_CITY]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [BUYER] - YPos: [145] - Display: [True]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[AMOUNT] SpecName=[INVOICE_TOTAL_NET] Value=[89.92] Caption=[Nettobetrag/Net amount:] Display=[True] LastRow=[False]
|
||||
15:17:49.4229|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: AMOUNT
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[AMOUNT] SpecName=[INVOICE_TOTAL_TAX] Value=[17.08] Caption=[Steuerbetrag/Tax amount:] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [AMOUNT] - ItemArea: [AMOUNT] - SpecName: [INVOICE_TOTAL_TAX] - Value: [17.08] - YPos: [160]
|
||||
15:17:49.4442|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[AMOUNT] for SpecName=[INVOICE_TOTAL_TAX]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [AMOUNT] - YPos: [160] - Display: [True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 165
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[AMOUNT] SpecName=[INVOICE_TOTAL_GROSS] Value=[107.00] Caption=[Bruttobetrag/Gross amount:] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [AMOUNT] - ItemArea: [AMOUNT] - SpecName: [INVOICE_TOTAL_GROSS] - Value: [107.00] - YPos: [165]
|
||||
15:17:49.4442|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[AMOUNT] for SpecName=[INVOICE_TOTAL_GROSS]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [AMOUNT] - YPos: [165] - Display: [True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 170
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[AMOUNT] SpecName=[INVOICE_TOTAL_CHARGE_AMOUNT] Value=[0.00] Caption=[Zuschläge/Charge amount:] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [AMOUNT] - ItemArea: [AMOUNT] - SpecName: [INVOICE_TOTAL_CHARGE_AMOUNT] - Value: [0.00] - YPos: [170]
|
||||
15:17:49.4442|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[AMOUNT] for SpecName=[INVOICE_TOTAL_CHARGE_AMOUNT]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [AMOUNT] - YPos: [170] - Display: [True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 175
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TAXPOS] SpecName=[INVOICE_TAXPOS_RATE] Value=[19.00] Caption=[] Display=[False] LastRow=[True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: TAXPOS
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleTaxPosAreaSwitch(XRechnungViewDocument.vb:454) -> TAXPOS RATE in AreaSwitch accumulated: [19.00 %: ]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TAXPOS] SpecName=[INVOICE_TAXPOS_AMOUNT] Value=[17.08] Caption=[] Display=[False] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [TAXPOS] - ItemArea: [TAXPOS] - SpecName: [INVOICE_TAXPOS_AMOUNT] - Value: [17.08] - YPos: [190]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:475) -> FollowItem: Entering TAXPOS handler
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleTaxPosFollowUp(XRechnungViewDocument.vb:646) -> TAXPOS AMOUNT accumulated: [19.00 %: 17,08 €]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [TAXPOS] - YPos: [190] - Display: [False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TAXPOS] SpecName=[INVOICE_TAXPOS_TYPE] Value=[VAT] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [TAXPOS] - ItemArea: [TAXPOS] - SpecName: [INVOICE_TAXPOS_TYPE] - Value: [VAT] - YPos: [190]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:475) -> FollowItem: Entering TAXPOS handler
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleTaxPosFollowUp(XRechnungViewDocument.vb:652) -> TAXPOS TYPE final: [19.00 %: 17,08 € VAT], Display=True
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [TAXPOS] - YPos: [190] - Display: [True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:667) -> RenderDisplayItem: TAXPOS first display item - skipping line height
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[PAYMENT] SpecName=[INVOICE_PAYMENT_TERMS] Value=[Bitte überweisen Sie den gesamten Betrag ohne Abzüge innerhalb der nächsten 30 Tage mit Angabe der
|
||||
Rechnungsnummer im Verwendungszweck auf das untenstehende Konto.
|
||||
#SKONTO#TAGE=30#PROZENT=0.00#
|
||||
] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: PAYMENT
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[PAYMENT] SpecName=[INVOICE_PAYMENT_IBAN] Value=[DE41160500001000617188] Caption=[IBAN:] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [PAYMENT] - ItemArea: [PAYMENT] - SpecName: [INVOICE_PAYMENT_IBAN] - Value: [DE41160500001000617188] - YPos: [215]
|
||||
15:17:49.4442|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[PAYMENT] for SpecName=[INVOICE_PAYMENT_IBAN]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [PAYMENT] - YPos: [215] - Display: [True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 220
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[PAYMENT] SpecName=[INVOICE_PAYMENT_BIC] Value=[WELADED1PMB] Caption=[BIC:] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [PAYMENT] - ItemArea: [PAYMENT] - SpecName: [INVOICE_PAYMENT_BIC] - Value: [WELADED1PMB] - YPos: [220]
|
||||
15:17:49.4442|XRechnungViewDocument|WARN >> HandleFollowUpItem(XRechnungViewDocument.vb:484) -> FollowItem: UNHANDLED CurrentArea=[PAYMENT] for SpecName=[INVOICE_PAYMENT_BIC]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [PAYMENT] - YPos: [220] - Display: [True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:673) -> RenderDisplayItem: Adding line height. New YPosition: 225
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[POSITION] SpecName=[INVOICE_POSITION_AMOUNT] Value=[4.0000] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: POSITION
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[POSITION] SpecName=[INVOICE_POSITION_UNIT_TYPE] Value=[HUR] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [POSITION] - ItemArea: [POSITION] - SpecName: [INVOICE_POSITION_UNIT_TYPE] - Value: [HUR] - YPos: [245]
|
||||
15:17:49.4442|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:469) -> FollowItem: Entering POSITION/ALLOWANCE handler
|
||||
15:17:49.4545|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [POSITION] - YPos: [245] - Display: [False]
|
||||
15:17:49.4545|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[POSITION] SpecName=[INVOICE_POSITION_ARTICLE] Value=[Sicherheit] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:49.4545|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [POSITION] - ItemArea: [POSITION] - SpecName: [INVOICE_POSITION_ARTICLE] - Value: [Sicherheit] - YPos: [245]
|
||||
15:17:49.4545|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:469) -> FollowItem: Entering POSITION/ALLOWANCE handler
|
||||
15:17:50.3336|XRechnungViewDocument|DEBUG >> RenderMultiLineText(XRechnungViewDocument.vb:751) -> RenderMultiLineText: Rendering part: [Sicherheit] at Y position: 245
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [POSITION] - YPos: [250] - Display: [False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[POSITION] SpecName=[INVOICE_TAXPOS_TAX_RATE] Value=[19.00] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [POSITION] - ItemArea: [POSITION] - SpecName: [INVOICE_TAXPOS_TAX_RATE] - Value: [19.00] - YPos: [250]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:469) -> FollowItem: Entering POSITION/ALLOWANCE handler
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleTaxRateFollowUp(XRechnungViewDocument.vb:613) -> Handling Tax Rate Follow-Up: Value=[19.00] at YPos=245
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [POSITION] - YPos: [250] - Display: [False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[POSITION] SpecName=[INVOICE_POSITION_TAX_AMOUNT] Value=[89.92] Caption=[] Display=[True] LastRow=[True]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [POSITION] - ItemArea: [POSITION] - SpecName: [INVOICE_POSITION_TAX_AMOUNT] - Value: [89.92] - YPos: [250]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:469) -> FollowItem: Entering POSITION/ALLOWANCE handler
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandlePositionTaxAmountFollowUp(XRechnungViewDocument.vb:622) -> Handling Position Tax Amount Follow-Up: Value=[89.92] Formatted=[89,92 €] at YPos=245, Adjusted YPos=241,5
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [POSITION] - YPos: [250] - Display: [False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TAXPOS] SpecName=[INVOICE_TAXPOS_RATE] Value=[19.00] Caption=[] Display=[False] LastRow=[False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: TAXPOS
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleTaxPosAreaSwitch(XRechnungViewDocument.vb:454) -> TAXPOS RATE in AreaSwitch accumulated: [19.00 %: ]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TAXPOS] SpecName=[INVOICE_TAXPOS_AMOUNT] Value=[17.08] Caption=[] Display=[False] LastRow=[False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [TAXPOS] - ItemArea: [TAXPOS] - SpecName: [INVOICE_TAXPOS_AMOUNT] - Value: [17.08] - YPos: [265]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:475) -> FollowItem: Entering TAXPOS handler
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleTaxPosFollowUp(XRechnungViewDocument.vb:646) -> TAXPOS AMOUNT accumulated: [19.00 %: 17,08 €]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [TAXPOS] - YPos: [265] - Display: [False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[TAXPOS] SpecName=[INVOICE_TAXPOS_TYPE] Value=[VAT] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [TAXPOS] - ItemArea: [TAXPOS] - SpecName: [INVOICE_TAXPOS_TYPE] - Value: [VAT] - YPos: [265]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:475) -> FollowItem: Entering TAXPOS handler
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleTaxPosFollowUp(XRechnungViewDocument.vb:652) -> TAXPOS TYPE final: [19.00 %: 17,08 € VAT], Display=True
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [TAXPOS] - YPos: [265] - Display: [True]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> RenderDisplayItem(XRechnungViewDocument.vb:667) -> RenderDisplayItem: TAXPOS first display item - skipping line height
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[INCL_NOTE] SpecName=[INCLUDED_NOTE_CONTENT] Value=[Rechnung] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:272) -> Area-Switch to: INCL_NOTE
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleAreaSwitch(XRechnungViewDocument.vb:282) -> Area-Switch [INCL_NOTE]: Page break BEFORE header! New YPosition: 45
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[INCL_NOTE] SpecName=[INCLUDED_NOTE_CONTENT] Value=[Unsere Leistungen für den Auftrag "Hertie School of Governace" stellen wir Ihnen wie folgt in Rechnung.] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [INCL_NOTE] - ItemArea: [INCL_NOTE] - SpecName: [INCLUDED_NOTE_CONTENT] - Value: [Unsere Leistungen für den Auftrag "Hertie School of Governace" stellen wir Ihnen wie folgt in Rechnung.] - YPos: [60]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:478) -> FollowItem: Entering INCL_NOTE handler - YPosition before=60
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:482) -> FollowItem: INCL_NOTE handler - YPosition after=65, Display set to False
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [INCL_NOTE] - YPos: [65] - Display: [False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> ProcessInvoiceData(XRechnungViewDocument.vb:238) -> WorkingItem: Area=[INCL_NOTE] SpecName=[INCLUDED_NOTE_CONTENT] Value=[Vielen Dank für die gute Zusammenarbeit.] Caption=[] Display=[True] LastRow=[False]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:463) -> FollowItem START - CurrentArea: [INCL_NOTE] - ItemArea: [INCL_NOTE] - SpecName: [INCLUDED_NOTE_CONTENT] - Value: [Vielen Dank für die gute Zusammenarbeit.] - YPos: [65]
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:478) -> FollowItem: Entering INCL_NOTE handler - YPosition before=65
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:482) -> FollowItem: INCL_NOTE handler - YPosition after=70, Display set to False
|
||||
15:17:51.0522|XRechnungViewDocument|DEBUG >> HandleFollowUpItem(XRechnungViewDocument.vb:487) -> FollowItem END - CurrentArea: [INCL_NOTE] - YPos: [70] - Display: [False]
|
||||
15:17:51.2630|XRechnungViewDocument|INFO >> FinalizePDF(XRechnungViewDocument.vb:778) -> PDF VisualReceipt generated successfully!
|
||||
15:17:51.2630|XRechnungViewDocument|DEBUG >> FinalizePDF(XRechnungViewDocument.vb:779) -> Vor MOVE... oxmlFilePath: [E:\DocumentProcessing\Input\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.xml] / oTempFilePath: [E:\DocumentProcessing\Input\temp\xrechnung.xml]
|
||||
15:17:51.2692|XRechnungViewDocument|INFO >> FinalizePDF(XRechnungViewDocument.vb:784) -> Create_PDFfromXML() End successfully. File [E:\DocumentProcessing\Input\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.pdf] written.
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedString(FilesystemEx.vb:202) -> Versioned: String [CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0], Version [1]
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:148) -> Intermediate Filename is E:\DocumentProcessing\Output\File\DocumentKindAssigned\ZUGFeRD\Success\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0.pdf
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:149) -> File version: 1
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:148) -> Intermediate Filename is E:\DocumentProcessing\Output\File\DocumentKindAssigned\ZUGFeRD\Success\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0~2.pdf
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:149) -> File version: 2
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:148) -> Intermediate Filename is E:\DocumentProcessing\Output\File\DocumentKindAssigned\ZUGFeRD\Success\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0~3.pdf
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:149) -> File version: 3
|
||||
15:17:51.2950|FilesystemEx|DEBUG >> GetVersionedFilenameWithFilecheck(FilesystemEx.vb:157) -> Final Filename is E:\DocumentProcessing\Output\File\DocumentKindAssigned\ZUGFeRD\Success\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0~3.pdf
|
||||
15:17:51.2950|FileFunctions|INFO >> MoveFiles(FileFunctions.vb:72) -> File moved to E:\DocumentProcessing\Output\File\DocumentKindAssigned\ZUGFeRD\Success\CF98H9H7ßK7HCTKOSTENSTELLE20260612~Attm0~3.pdf
|
||||
15:17:51.2950|FileFunctions|INFO >> MoveFiles(FileFunctions.vb:122) -> Finished moving files
|
||||
15:17:51.2981|ImportZUGFeRDFiles|INFO >> Start(ImportZUGFeRDFiles.vb:114) -> END processing file group K7HCTKOSTENSTELLE20260612
|
||||
15:17:51.2981|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:114) -> Before default sql commit: oxRechnungHandle [True]
|
||||
15:17:51.2981|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:114) -> Before default sql close
|
||||
15:17:51.2981|ImportZUGFeRDFiles|DEBUG >> Start(ImportZUGFeRDFiles.vb:524) -> Finishing Job ImportZUGFeRDFiles
|
||||
@@ -4,30 +4,36 @@
|
||||
<package id="DocumentFormat.OpenXml" version="3.2.0" targetFramework="net462" />
|
||||
<package id="DocumentFormat.OpenXml.Framework" version="3.2.0" targetFramework="net462" />
|
||||
<package id="FirebirdSql.Data.FirebirdClient" version="7.5.0" targetFramework="net461" />
|
||||
<package id="GdPicture" version="14.3.3" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.3.3" targetFramework="net462" />
|
||||
<package id="GdPicture" version="14.4.4" targetFramework="net462" />
|
||||
<package id="GdPicture.runtimes.windows" version="14.4.4" targetFramework="net462" />
|
||||
<package id="Google.Protobuf" version="3.33.2" targetFramework="net462" />
|
||||
<package id="Microsoft.AspNet.WebApi.Client" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.Cryptography" version="10.0.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Bcl.HashCode" version="6.0.0" targetFramework="net462" />
|
||||
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net462" />
|
||||
<package id="Microsoft.VisualBasic" version="10.3.0" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json.Bson" version="1.0.2" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="OpenMcdf" version="2.4.1" targetFramework="net462" />
|
||||
<package id="OpenMcdf" version="3.1.4" targetFramework="net462" />
|
||||
<package id="protobuf-net" version="3.2.46" targetFramework="net462" />
|
||||
<package id="protobuf-net.Core" version="3.2.46" targetFramework="net462" />
|
||||
<package id="RtfPipe" version="2.0.7677.4303" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Buffers" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.CodeDom" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Collections.Immutable" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Formats.Asn1" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Packaging" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.IO.Pipelines" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Management" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="8.0.1" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="8.0.0" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="8.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net462" />
|
||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net462" />
|
||||
<package id="System.Security.Cryptography.Pkcs" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Encodings.Web" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Text.Json" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Channels" version="10.0.5" targetFramework="net462" />
|
||||
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net462" />
|
||||
<package id="System.ValueTuple" version="4.6.1" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -44,10 +44,6 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
@@ -125,6 +121,12 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
|
||||
134
License/Licensebackup.vbproj
Normal file
134
License/Licensebackup.vbproj
Normal file
@@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DigitalData.Modules.License</RootNamespace>
|
||||
<AssemblyName>DigitalData.Modules.License</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>Windows</MyType>
|
||||
<TargetFrameworkVersion>net462</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.License.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.License.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="LicenseCreator.vb" />
|
||||
<Compile Include="LicenseFile.vb" />
|
||||
<Compile Include="LicenseLegacy.vb" />
|
||||
<Compile Include="LicenseManagerLegacy.vb" />
|
||||
<Compile Include="LicenseSchema.vb">
|
||||
<DependentUpon>LicenseSchema.xsd</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LicensesLegacy.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Application.myapp</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Resources.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Settings.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="LicenseSchema.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="My Project\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
2
Logging/My Project/Settings.Designer.vb
generated
2
Logging/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,29 +1,25 @@
|
||||
Imports System.Net.Security
|
||||
Imports System.IdentityModel.Tokens
|
||||
Imports System.Net.Security
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports Limilabs.Client
|
||||
Imports Limilabs.Client.IMAP
|
||||
Imports Limilabs.Client.SMTP
|
||||
Imports Microsoft.Identity.Client
|
||||
Imports NLog
|
||||
|
||||
Namespace Mail
|
||||
Public Class MailSession
|
||||
Inherits BaseClass
|
||||
|
||||
Public ReadOnly Client As ClientBase
|
||||
Public ReadOnly OAuth2 As OAuth2
|
||||
|
||||
Public Const AUTH_SSL = "SSL"
|
||||
Public Const AUTH_STARTTLS = "STARTTLS"
|
||||
Public Const AUTH_SSLTLS = "SSL/TLS"
|
||||
Public Const AUTH_NONE = "NONE"
|
||||
Public Const AUTH_OAUTH2 = "OAUTH2"
|
||||
Public Const SSLProtocol_TLS12 = "TLS12"
|
||||
|
||||
Private Const SMTP_IGNORED_ERRORS As SslPolicyErrors =
|
||||
SslPolicyErrors.RemoteCertificateChainErrors Or ' self-signed
|
||||
SslPolicyErrors.RemoteCertificateNameMismatch ' name mismatch
|
||||
Private Const SMTP_IGNORED_ERRORS As SslPolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors Or SslPolicyErrors.RemoteCertificateNameMismatch
|
||||
|
||||
Private _Session As SessionInfo
|
||||
|
||||
@@ -58,7 +54,7 @@ Namespace Mail
|
||||
Public Property EnableTls1_1 As Boolean = False
|
||||
Public Property EnableTls1_2 As Boolean = False
|
||||
|
||||
' Not available in .NET 4.6.2
|
||||
' Not available in .NET4.6.2
|
||||
'Public Property EnableTls1_3 As Boolean = False
|
||||
End Class
|
||||
|
||||
@@ -73,21 +69,19 @@ Namespace Mail
|
||||
''' <returns></returns>
|
||||
Public Function ConnectToServerWithBasicAuth(pServer As String, pPort As Integer, pUser As String, pPassword As String, pAuthType As String, pOptions As MailSessionOptions) As SessionInfo
|
||||
Dim oSession = New SessionInfo With {
|
||||
.Server = pServer,
|
||||
.Port = pPort,
|
||||
.User = pUser,
|
||||
.Password = pPassword,
|
||||
.AuthType = pAuthType
|
||||
}
|
||||
.Server = pServer,
|
||||
.Port = pPort,
|
||||
.User = pUser,
|
||||
.Password = pPassword,
|
||||
.AuthType = pAuthType
|
||||
}
|
||||
|
||||
Logger.Debug("ConnectToServerWithBasicAuth..")
|
||||
Logger.Debug("Connecting to Server..")
|
||||
Logger.Debug("Server: [{0}]", oSession.Server)
|
||||
Logger.Debug("Port: [{0}]", oSession.Port)
|
||||
Logger.Debug("User: [{0}]", oSession.User)
|
||||
Logger.Debug("AuthType: [{0}]", oSession.AuthType)
|
||||
Logger.Debug($"_Config.TlsVersion.EnableTls1_1 = [{pOptions.EnableTls1_1}]")
|
||||
Logger.Debug($"_Config.TlsVersion.EnableTls1_2 = [{pOptions.EnableTls1_2}]")
|
||||
Logger.Debug($"_Config.TlsVersion.EnableDefault = [{pOptions.EnableDefault}]")
|
||||
|
||||
_Session = oSession
|
||||
|
||||
Logger.Debug("Initializing Connection with Auth type [{0}].", oSession.AuthType)
|
||||
@@ -96,17 +90,23 @@ Namespace Mail
|
||||
End Function
|
||||
|
||||
Public Function ConnectToServerWithO365OAuth(pUser As String, pClientId As String, pTenantId As String, pClientSecret As String, pOptions As MailSessionOptions) As SessionInfo
|
||||
' Choose server/port based on the client type
|
||||
Dim server As String = If(TypeOf Client Is Smtp, "smtp.office365.com", OAuth2.O365_SERVER)
|
||||
Dim port As Integer = If(TypeOf Client Is Imap, 993, If(TypeOf Client Is Smtp, 587, 993))
|
||||
|
||||
Dim oSession = New SessionInfo With {
|
||||
.Server = OAuth2.O365_SERVER,
|
||||
.ClientId = pClientId,
|
||||
.ClientSecret = pClientSecret,
|
||||
.TenantId = pTenantId,
|
||||
.User = pUser,
|
||||
.AuthType = AUTH_OAUTH2
|
||||
}
|
||||
.Server = server,
|
||||
.Port = port,
|
||||
.ClientId = pClientId,
|
||||
.ClientSecret = pClientSecret,
|
||||
.TenantId = pTenantId,
|
||||
.User = pUser,
|
||||
.AuthType = AUTH_OAUTH2
|
||||
}
|
||||
|
||||
Logger.Debug("Connecting to Server..")
|
||||
Logger.Debug("Server: [{0}]", oSession.Server)
|
||||
Logger.Debug("Port: [{0}]", oSession.Port)
|
||||
Logger.Debug("User: [{0}]", oSession.User)
|
||||
Logger.Debug("ClientId: [{0}]", oSession.ClientId)
|
||||
Logger.Debug("TenantId: [{0}]", oSession.TenantId)
|
||||
@@ -124,59 +124,52 @@ Namespace Mail
|
||||
|
||||
If pOptions.EnableDefault Then
|
||||
Logger.Debug("Enabling Default TLS Version")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.Default
|
||||
Client.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Default
|
||||
Else
|
||||
Logger.Debug("Disabling Default TLS Version")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.None
|
||||
Client.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.None
|
||||
End If
|
||||
|
||||
' Set TLS Version manually if requested
|
||||
If pOptions.EnableTls1_1 Then
|
||||
Logger.Debug("Enabling TLS Version 1.1...")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Client.SSLConfiguration.EnabledSslProtocols Or Security.Authentication.SslProtocols.Tls11
|
||||
Logger.Debug("Enabling TLS Version1.1")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Client.SSLConfiguration.EnabledSslProtocols Or System.Security.Authentication.SslProtocols.Tls11
|
||||
End If
|
||||
|
||||
If pOptions.EnableTls1_2 Then
|
||||
Logger.Debug("Enabling TLS Version 1.2...")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.Tls12
|
||||
Logger.Debug("Enabling TLS Version1.2")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Client.SSLConfiguration.EnabledSslProtocols Or System.Security.Authentication.SslProtocols.Tls12
|
||||
End If
|
||||
'If pOptions.EnableTls1_3 Then
|
||||
' Logger.Debug("Enabling TLS Version 1.3")
|
||||
' oSession.SSLConfiguration.EnabledSslProtocols = oSession.SSLConfiguration.EnabledSslProtocols Or Security.Authentication.SslProtocols.Tls13
|
||||
'End If
|
||||
|
||||
Logger.Debug("Enabled Encryption Protocols: [{0}]", Client.SSLConfiguration.EnabledSslProtocols)
|
||||
|
||||
If pSession.AuthType = AUTH_OAUTH2 Then
|
||||
Try
|
||||
If TypeOf Client Is Imap Then
|
||||
Dim oClient As Imap = Client
|
||||
Dim oClient As Imap = DirectCast(Client, Imap)
|
||||
Logger.Debug("Connecting with [OAuth2/IMAP/ConnectSSL] on [{0}/{1}]", pSession.Server, If(pSession.Port > 0, pSession.Port, 993))
|
||||
oClient.ConnectSSL(pSession.Server) ', If(pSession.Port > 0, pSession.Port, 993)
|
||||
|
||||
Logger.Debug("Connecting with [OAuth2/ConnectSSL] on [{0}]", pSession.Server)
|
||||
oClient.ConnectSSL(pSession.Server)
|
||||
Else
|
||||
Throw New ApplicationException("Only OAuth2 for IMAP is not yet supported!")
|
||||
ElseIf TypeOf Client Is Smtp Then
|
||||
Dim s As Smtp = DirectCast(Client, Smtp)
|
||||
Logger.Debug("Connecting with [OAuth2/SMTP/STARTTLS] on [{0}/{1}]", pSession.Server, If(pSession.Port > 0, pSession.Port, 587))
|
||||
s.Connect(pSession.Server, If(pSession.Port > 0, pSession.Port, 587))
|
||||
s.StartTLS()
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type OAuth2!")
|
||||
Logger.Error(ex)
|
||||
|
||||
Session.Error = ex
|
||||
Return Session
|
||||
pSession.Error = ex
|
||||
Return pSession
|
||||
End Try
|
||||
|
||||
ElseIf pSession.AuthType = AUTH_SSL Then
|
||||
Try
|
||||
' Port 465 ist der SMTP-SSL-Port, wird bei der WISAG verwendet, aber veraltet
|
||||
' Port 993 ist der IMAP-SSL-Port, zum Abholen der Mails
|
||||
If pSession.Port = 465 Or pSession.Port = 993 Then
|
||||
Logger.Debug("Connecting with [SSL/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Else
|
||||
Logger.Debug("Connecting with [SSL/Connect] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.Connect(pSession.Server, pSession.Port)
|
||||
End If
|
||||
' SSL: always connect with SSL immediately
|
||||
Logger.Debug("Connecting with [SSL/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Logger.Debug("Connection (AUTH_SSL) Successful!")
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -184,23 +177,41 @@ Namespace Mail
|
||||
Logger.Warn($"Error-message: {ex.Message}")
|
||||
Logger.Error(ex)
|
||||
|
||||
Session.Error = ex
|
||||
Return Session
|
||||
pSession.Error = ex
|
||||
Return pSession
|
||||
End Try
|
||||
|
||||
ElseIf Session.AuthType = AUTH_SSLTLS Or Session.AuthType = AUTH_STARTTLS Then
|
||||
ElseIf pSession.AuthType = AUTH_SSLTLS Then
|
||||
|
||||
Try
|
||||
Logger.Debug("Client.SSLConfiguration.EnabledSslProtocols is [{0}]", Client.SSLConfiguration.EnabledSslProtocols.ToString)
|
||||
If pSession.Port = 993 Then
|
||||
Logger.Debug("Port is 993 - So Client.ConnectSSL will be used!")
|
||||
Logger.Debug("Connecting with [STARTTLS/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Else
|
||||
Logger.Debug("Connecting with [STARTTLS/Connect] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.Connect(pSession.Server, pSession.Port)
|
||||
' SSL/TLS: same as SSL, explicit branch for clarity
|
||||
Logger.Debug("Connecting with [SSL/TLS/ConnectSSL] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
Client.ConnectSSL(pSession.Server, pSession.Port)
|
||||
Logger.Debug("Connection (AUTH_SSLTLS) Successful!")
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type SSL/TLS!")
|
||||
Logger.Error(ex)
|
||||
|
||||
pSession.Error = ex
|
||||
Return pSession
|
||||
End Try
|
||||
|
||||
ElseIf pSession.AuthType = AUTH_STARTTLS Then
|
||||
|
||||
Try
|
||||
' STARTTLS: connect plain and then upgrade
|
||||
Logger.Debug("Connecting with [STARTTLS/Connect] on [{0}/{1}]", pSession.Server, pSession.Port)
|
||||
' Für Azure Communication Services: Explizite TLS-Konfiguration
|
||||
If pSession.Server.Contains("azurecomm.net") Then
|
||||
Logger.Debug("Azure Communication Services detected - forcing TLS 1.2")
|
||||
' Überschreibe alle vorherigen Einstellungen
|
||||
Client.SSLConfiguration.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12
|
||||
Logger.Debug("Forced Encryption Protocols: [{0}]", Client.SSLConfiguration.EnabledSslProtocols)
|
||||
End If
|
||||
Logger.Debug("Connection (AUTH_SSLTLS or AUTH_STARTTLS) Successful!")
|
||||
|
||||
|
||||
Client.Connect(pSession.Server, pSession.Port)
|
||||
|
||||
Dim oSupportsSTARTTLS As Boolean = SupportsSTARTTLS(Client)
|
||||
Logger.Debug("Server supports STARTTLS: [{0}]", oSupportsSTARTTLS)
|
||||
@@ -209,8 +220,7 @@ Namespace Mail
|
||||
DoSTARTTLS(Client)
|
||||
Logger.Debug("STARTTLS Successful!")
|
||||
Else
|
||||
Logger.Debug("Server does not support STARTTLS. Enabling TLS1.2 instead.")
|
||||
Client.SSLConfiguration.EnabledSslProtocols = Security.Authentication.SslProtocols.Tls12
|
||||
Throw New ApplicationException("Server does not support STARTTLS on this endpoint.")
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
@@ -223,11 +233,11 @@ Namespace Mail
|
||||
|
||||
Else
|
||||
Try
|
||||
Logger.Debug("Auth type [{0}]. Using PLAINTEXT connection.", Session.AuthType)
|
||||
Logger.Debug("Auth type [{0}]. Using PLAINTEXT connection.", pSession.AuthType)
|
||||
Client.Connect(pSession.Server, pSession.Port, useSSL:=False)
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type [{0}]!", Session.AuthType)
|
||||
Logger.Warn("Unexpected Error in ConnectToServer with Auth type [{0}]!", pSession.AuthType)
|
||||
Logger.Error(ex)
|
||||
|
||||
pSession.Error = ex
|
||||
@@ -241,8 +251,7 @@ Namespace Mail
|
||||
Logger.Info("Logging in with user [{0}] and Auth Type [{1}]", pSession.User, pSession.AuthType)
|
||||
|
||||
If pSession.AuthType = AUTH_OAUTH2 Then
|
||||
' SessionInfo.Password will be the access token that was obtained
|
||||
' in the OAuth2 flow before
|
||||
' Use OAuth2 token
|
||||
DoUseBestLogin_OAuth2(Client, pSession)
|
||||
Else
|
||||
DoUseBestLogin_BasicAuth(Client, pSession.User, pSession.Password)
|
||||
@@ -297,7 +306,7 @@ Namespace Mail
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function SupportsSTARTTLS(pClient As ClientBase)
|
||||
Private Function SupportsSTARTTLS(pClient As ClientBase) As Boolean
|
||||
If TypeOf pClient Is Smtp Then
|
||||
Return DirectCast(pClient, Smtp).SupportedExtensions.Contains(SmtpExtension.StartTLS)
|
||||
ElseIf TypeOf pClient Is Imap Then
|
||||
@@ -320,9 +329,32 @@ Namespace Mail
|
||||
|
||||
Private Sub DoUseBestLogin_BasicAuth(pClient As ClientBase, pUserName As String, pPassword As String)
|
||||
Logger.Debug("Logging in with Simple Auth")
|
||||
Logger.Debug("Username format: [{0}]", If(pUserName.Contains("@"), "Email format", "Other format"))
|
||||
|
||||
If TypeOf pClient Is Smtp Then
|
||||
DirectCast(pClient, Smtp).UseBestLogin(pUserName, pPassword)
|
||||
Dim smtp = DirectCast(pClient, Smtp)
|
||||
|
||||
' Zeige unterstützte Auth-Methoden (nur Logging, keine Funktionsänderung)
|
||||
Try
|
||||
Dim supportedExtensions = smtp.SupportedExtensions()
|
||||
Logger.Debug("Server supported extensions count: [{0}]", supportedExtensions.Count)
|
||||
If supportedExtensions.Count > 0 Then
|
||||
Logger.Debug("Server supported extensions: [{0}]", String.Join(", ", supportedExtensions.Select(Function(x) x.ToString())))
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Debug("Could not retrieve supported extensions: {0}", ex.Message)
|
||||
End Try
|
||||
|
||||
' Azure Communication Services Detection (nur Logging)
|
||||
If _Session?.Server?.Contains("azurecomm.net") Then
|
||||
Logger.Debug("Azure Communication Services detected")
|
||||
Logger.Debug("Note: Username should be '<endpoint>.communication.azure.com'")
|
||||
Logger.Debug("Note: Password should be the Access Key from Azure Portal")
|
||||
End If
|
||||
|
||||
' Ursprüngliche Funktionalität bleibt unverändert
|
||||
smtp.UseBestLogin(pUserName, pPassword)
|
||||
|
||||
ElseIf TypeOf pClient Is Imap Then
|
||||
DirectCast(pClient, Imap).UseBestLogin(pUserName, pPassword)
|
||||
Else
|
||||
@@ -333,16 +365,61 @@ Namespace Mail
|
||||
Private Sub DoUseBestLogin_OAuth2(pClient As ClientBase, pSession As SessionInfo)
|
||||
Logger.Debug("Logging in with O365 OAuth2")
|
||||
|
||||
If TypeOf pClient Is Imap Then
|
||||
Dim oOAuth = New OAuth2(LogConfig, pSession.TenantId, pSession.ClientId, pSession.ClientSecret)
|
||||
Dim oAccessToken = oOAuth.GetAccessToken()
|
||||
Dim oOAuth = New OAuth2(LogConfig, pSession.TenantId, pSession.ClientId, pSession.ClientSecret)
|
||||
Dim oAccessToken = oOAuth.GetAccessToken()
|
||||
|
||||
DirectCast(pClient, Imap).LoginOAUTH2(pSession.User, oAccessToken)
|
||||
' Diagnose token shape (delegated vs app-only)
|
||||
Try
|
||||
Dim parts = oAccessToken.Split("."c)
|
||||
If parts.Length = 3 Then
|
||||
Dim payloadJson = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(PadBase64(parts(1))))
|
||||
If payloadJson.Contains("""scp""") Then
|
||||
Logger.Debug("OAuth2 token contains 'scp' (delegated) – IMAP App-only erwartet 'roles'.")
|
||||
ElseIf payloadJson.Contains("""roles""") Then
|
||||
Logger.Debug("OAuth2 token contains 'roles' (application permissions).")
|
||||
Else
|
||||
Logger.Debug("OAuth2 token payload hat weder 'scp' noch 'roles'.")
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Debug("Token-Payload konnte nicht gelesen werden: {0}", ex.Message)
|
||||
End Try
|
||||
|
||||
If TypeOf pClient Is Imap Then
|
||||
Dim i = DirectCast(pClient, Imap)
|
||||
|
||||
' Login mit Hilfsmethode; bei Abbruch explizit SASL XOAUTH2 probieren
|
||||
Try
|
||||
' Direkt versuchen, falls die verwendete Version LoginOAUTH2 unterstützt.
|
||||
i.LoginOAUTH2(pSession.User, oAccessToken)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("LoginOAUTH2 (IMAP) fehlgeschlagen: {0}", ex.Message)
|
||||
Throw
|
||||
End Try
|
||||
ElseIf TypeOf pClient Is Smtp Then
|
||||
Dim s = DirectCast(pClient, Smtp)
|
||||
Try
|
||||
s.LoginOAUTH2(pSession.User, oAccessToken)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("LoginOAUTH2 (SMTP) fehlgeschlagen: {0}", ex.Message)
|
||||
Throw
|
||||
End Try
|
||||
Else
|
||||
Logger.Error("Unknown session type: [{0}]", pClient.GetType.ToString)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Shared Function PadBase64(input As String) As String
|
||||
' Normalize Base64 URL-safe and pad to multiple of 4
|
||||
If input Is Nothing Then Return String.Empty
|
||||
Dim normalized As String = input.Replace("-", "+").Replace("_", "/")
|
||||
Dim remainder As Integer = normalized.Length Mod 4
|
||||
If remainder > 0 Then
|
||||
normalized &= New String("="c, 4 - remainder)
|
||||
End If
|
||||
Return normalized
|
||||
End Function
|
||||
|
||||
Private Sub DoSTARTTLS(pClient As ClientBase)
|
||||
If TypeOf pClient Is Smtp Then
|
||||
DirectCast(pClient, Smtp).StartTLS()
|
||||
@@ -354,10 +431,13 @@ Namespace Mail
|
||||
End Sub
|
||||
|
||||
Private Sub Session_ServerCertificateValidate(sender As Object, e As ServerCertificateValidateEventArgs)
|
||||
' i dont know why it works but it does
|
||||
Logger.Debug("Certificate validation for: [{0}]", e.Certificate?.Subject)
|
||||
Logger.Debug("SSL Policy Errors: [{0}]", e.SslPolicyErrors)
|
||||
|
||||
If (e.SslPolicyErrors And Not SMTP_IGNORED_ERRORS) = SslPolicyErrors.None Then
|
||||
e.IsValid = True
|
||||
Else
|
||||
Logger.Warn("Certificate validation failed. Errors: [{0}]", e.SslPolicyErrors)
|
||||
e.IsValid = False
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -1,58 +1,96 @@
|
||||
Imports DigitalData.Modules.Base
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports DigitalData.Modules.Messaging.Mail.MailSession
|
||||
Imports Limilabs.Client.IMAP
|
||||
Imports Microsoft.Identity.Client
|
||||
|
||||
Public Class OAuth2
|
||||
Inherits BaseClass
|
||||
Namespace Mail
|
||||
Public Class OAuth2
|
||||
Inherits BaseClass
|
||||
|
||||
Private ReadOnly TenantId As String
|
||||
Private ReadOnly ClientId As String
|
||||
Private ReadOnly ClientSecret As String
|
||||
Private ReadOnly _tenantId As String
|
||||
Private ReadOnly _clientId As String
|
||||
Private ReadOnly _clientSecret As String
|
||||
|
||||
Public Const O365_SCOPE = "https://outlook.office365.com/.default"
|
||||
Public Const O365_SERVER = "outlook.office365.com"
|
||||
Public Const O365_SERVER As String = "outlook.office365.com"
|
||||
Public Const O365_SCOPE As String = "https://outlook.office365.com/.default"
|
||||
Public Const O365_AUTHORITY_PREFIX As String = "https://login.microsoftonline.com/"
|
||||
|
||||
Private _AccessToken As String
|
||||
Public ReadOnly Property AccessToken
|
||||
Get
|
||||
Return _AccessToken
|
||||
End Get
|
||||
End Property
|
||||
Public Sub New(pLogConfig As LogConfig, tenantId As String, clientId As String, clientSecret As String)
|
||||
MyBase.New(pLogConfig)
|
||||
_tenantId = tenantId
|
||||
_clientId = clientId
|
||||
_clientSecret = clientSecret
|
||||
End Sub
|
||||
|
||||
Public Sub New(pLogConfig As LogConfig, pTenantId As String, pClientId As String, pClientSecret As String)
|
||||
MyBase.New(pLogConfig)
|
||||
TenantId = pTenantId
|
||||
ClientId = pClientId
|
||||
ClientSecret = pClientSecret
|
||||
End Sub
|
||||
Public Function GetAccessToken() As String
|
||||
' input hardening and better diagnostics
|
||||
Dim tenantId = If(_tenantId, String.Empty).Trim()
|
||||
Dim clientId = If(_clientId, String.Empty).Trim()
|
||||
Dim clientSecret = If(_clientSecret, String.Empty).Trim()
|
||||
|
||||
Public Function GetAccessToken() As String
|
||||
Logger.Debug("Fetching Access Token..")
|
||||
If String.IsNullOrWhiteSpace(tenantId) Then
|
||||
Logger.Error("OAuth2: tenantId is empty.")
|
||||
Throw New ArgumentException("tenantId is empty")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(clientId) Then
|
||||
Logger.Error("OAuth2: clientId is empty.")
|
||||
Throw New ArgumentException("clientId is empty")
|
||||
End If
|
||||
If String.IsNullOrWhiteSpace(clientSecret) Then
|
||||
Logger.Error("OAuth2: clientSecret is empty.")
|
||||
Throw New ArgumentException("clientSecret is empty")
|
||||
End If
|
||||
|
||||
Try
|
||||
' Create the application, which is defined in
|
||||
' Microsoft.Identity.Client
|
||||
Dim oApp = ConfidentialClientApplicationBuilder.
|
||||
Create(ClientId).
|
||||
WithTenantId(TenantId).
|
||||
WithClientSecret(ClientSecret).
|
||||
Build()
|
||||
' common misconfiguration: using the Secret ID (GUID) instead of the Secret VALUE
|
||||
Dim tmpGuid As Guid
|
||||
If Guid.TryParse(clientSecret, tmpGuid) Then
|
||||
Logger.Error("OAuth2: clientSecret looks like a GUID (likely the secret ID). Use the secret VALUE instead.")
|
||||
Throw New ApplicationException("Invalid client secret: looks like Secret ID (GUID), not the secret value.")
|
||||
End If
|
||||
|
||||
' Request an access token
|
||||
Dim oScopes = New List(Of String) From {O365_SCOPE}
|
||||
Dim oResult = oApp.
|
||||
AcquireTokenForClient(oScopes).
|
||||
ExecuteAsync().Result
|
||||
Try
|
||||
Dim authority = O365_AUTHORITY_PREFIX & tenantId
|
||||
|
||||
Logger.Debug("Access Token fetched.")
|
||||
Dim app = ConfidentialClientApplicationBuilder.Create(clientId).
|
||||
WithClientSecret(clientSecret).
|
||||
WithAuthority(authority).
|
||||
Build()
|
||||
|
||||
Return oResult.AccessToken
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Could not request access token!")
|
||||
Logger.Error(ex)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
Dim scopes = New String() {O365_SCOPE}
|
||||
Dim result = app.AcquireTokenForClient(scopes).ExecuteAsync().GetAwaiter().GetResult()
|
||||
|
||||
Logger.Info("OAuth2 token acquired for tenant {0}. ExpiresOn={1:u}", tenantId, result.ExpiresOn.UtcDateTime)
|
||||
Return result.AccessToken
|
||||
Catch ex As MsalServiceException
|
||||
' richer diagnostics without depending on specific MSAL version members
|
||||
Logger.Error("MSAL service error. Code={0}. Message={1}", ex.ErrorCode, ex.Message)
|
||||
|
||||
' Try to log StatusCode, ResponseBody if available (via reflection to avoid version dependency)
|
||||
Try
|
||||
Dim t = GetType(MsalServiceException)
|
||||
Dim scProp = t.GetProperty("StatusCode")
|
||||
If scProp IsNot Nothing Then
|
||||
Dim sc = scProp.GetValue(ex, Nothing)
|
||||
If sc IsNot Nothing Then Logger.Error("MSAL StatusCode={0}", sc)
|
||||
End If
|
||||
Dim rbProp = t.GetProperty("ResponseBody")
|
||||
If rbProp IsNot Nothing Then
|
||||
Dim rb = rbProp.GetValue(ex, Nothing)
|
||||
If rb IsNot Nothing Then Logger.Error("MSAL ResponseBody={0}", rb)
|
||||
End If
|
||||
Dim ciProp = t.GetProperty("Claims")
|
||||
If ciProp IsNot Nothing Then
|
||||
Dim claims = ciProp.GetValue(ex, Nothing)
|
||||
If claims IsNot Nothing AndAlso claims.ToString().Length > 0 Then Logger.Error("MSAL Claims={0}", claims)
|
||||
End If
|
||||
Catch
|
||||
' ignore reflection diagnostics failures
|
||||
End Try
|
||||
|
||||
Throw
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Throw
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
@@ -44,17 +44,11 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.9.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mail">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\Limilabs\Mail.dll\Mail.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\Limilabs\Mail.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Identity.Client, Version=4.55.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
|
||||
@@ -143,6 +137,12 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="MailLicense.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("2.0.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.0.0.0")>
|
||||
<Assembly: AssemblyVersion("2.1.0.0")>
|
||||
<Assembly: AssemblyFileVersion("2.1.0.0")>
|
||||
|
||||
2
Messaging/My Project/Settings.Designer.vb
generated
2
Messaging/My Project/Settings.Designer.vb
generated
@@ -15,7 +15,7 @@ Option Explicit On
|
||||
Namespace My
|
||||
|
||||
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0"), _
|
||||
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0"), _
|
||||
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
|
||||
Partial Friend NotInheritable Class MySettings
|
||||
Inherits Global.System.Configuration.ApplicationSettingsBase
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net462" />
|
||||
<package id="Microsoft.Identity.Client" version="4.55.0" targetFramework="net462" />
|
||||
<package id="Microsoft.IdentityModel.Abstractions" version="6.22.0" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
|
||||
152
MigrationBackup/56f77a37/Base/Base.vbproj
Normal file
152
MigrationBackup/56f77a37/Base/Base.vbproj
Normal file
@@ -0,0 +1,152 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DigitalData.Modules.Base</RootNamespace>
|
||||
<AssemblyName>DigitalData.Modules.Base</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>Windows</MyType>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.Base.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.Base.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionExplicit>On</OptionExplicit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionCompare>Binary</OptionCompare>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionStrict>Off</OptionStrict>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Import Include="Microsoft.VisualBasic" />
|
||||
<Import Include="System" />
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Base\BaseClass.vb" />
|
||||
<Compile Include="Base\BaseUtils.vb" />
|
||||
<Compile Include="ECM\ECM.vb" />
|
||||
<Compile Include="Encryption\Compression.vb" />
|
||||
<Compile Include="Encryption\Encryption.vb" />
|
||||
<Compile Include="Encryption\EncryptionLegacy.vb" />
|
||||
<Compile Include="DatabaseEx.vb" />
|
||||
<Compile Include="FilesystemEx.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcher.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcherFilters.vb" />
|
||||
<Compile Include="FileWatcher\FileWatcherProperties.vb" />
|
||||
<Compile Include="IDB\Constants.vb" />
|
||||
<Compile Include="MimeEx.vb" />
|
||||
<Compile Include="StringFunctions.vb" />
|
||||
<Compile Include="WindowsEx.vb" />
|
||||
<Compile Include="ModuleExtensions.vb" />
|
||||
<Compile Include="FileEx.vb" />
|
||||
<Compile Include="NativeMethods.vb" />
|
||||
<Compile Include="ObjectEx.vb" />
|
||||
<Compile Include="GraphicsEx.vb" />
|
||||
<Compile Include="LanguageEx.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Application.myapp</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Resources.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="My Project\Settings.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="ScreenEx.vb" />
|
||||
<Compile Include="StringEx.vb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
<CustomToolNamespace>My.Resources</CustomToolNamespace>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="My Project\Application.myapp">
|
||||
<Generator>MyApplicationCodeGenerator</Generator>
|
||||
<LastGenOutput>Application.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="My Project\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="README.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>powershell.exe -command "& { &'$(SolutionDir)copy-binary.ps1' '$(TargetPath)' '$(TargetFileName)' '$(ConfigurationName)' '$(ProjectName)' }"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
163
MigrationBackup/56f77a37/Base/NuGetUpgradeLog.html
Normal file
163
MigrationBackup/56f77a37/Base/NuGetUpgradeLog.html
Normal file
@@ -0,0 +1,163 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- saved from url=(0014)about:internet -->
|
||||
|
||||
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="NuGetUpgradeReportTitle">
|
||||
NuGetMigrationLog
|
||||
</title><style>
|
||||
|
||||
/* Body style, for the entire document */
|
||||
body
|
||||
{
|
||||
background: #F3F3F4;
|
||||
color: #1E1E1F;
|
||||
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||
font-size: 12pt;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header1 style, used for the main title */
|
||||
h1
|
||||
{
|
||||
padding: 10px 0px 10px 10px;
|
||||
font-size: 21pt;
|
||||
background-color: #E2E2E2;
|
||||
border-bottom: 1px #C1C1C2 solid;
|
||||
color: #201F20;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Header2 style, used for "Overview" and other sections */
|
||||
h2
|
||||
{
|
||||
font-size: 18pt;
|
||||
font-weight: normal;
|
||||
padding: 15px 0 5px 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header3 style, used for sub-sections, such as project name */
|
||||
h3
|
||||
{
|
||||
font-weight: normal;
|
||||
font-size: 15pt;
|
||||
margin: 0;
|
||||
padding: 15px 0 5px 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.info-text
|
||||
{
|
||||
margin: 0px 0 0.75em 0;
|
||||
}
|
||||
|
||||
/* Color all hyperlinks one color */
|
||||
a
|
||||
{
|
||||
color: #1382CE;
|
||||
}
|
||||
|
||||
/* Table styles */
|
||||
table
|
||||
{
|
||||
border-spacing: 0 0;
|
||||
border-collapse: collapse;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
background: #E7E7E8;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
padding: 3px 6px 3px 6px;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
vertical-align: top;
|
||||
padding: 3px 6px 5px 5px;
|
||||
margin: 0px;
|
||||
border: 1px solid #E7E7E8;
|
||||
background: #F7F7F8;
|
||||
}
|
||||
|
||||
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
|
||||
.localLink
|
||||
{
|
||||
color: #1E1E1F;
|
||||
background: #EEEEED;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.localLink:hover
|
||||
{
|
||||
color: #1382CE;
|
||||
background: #FFFF99;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.issueCell
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.packageIssue
|
||||
{
|
||||
margin-left: 25px;
|
||||
}
|
||||
|
||||
/* Padding around the content after the h1 */
|
||||
#content
|
||||
{
|
||||
padding: 0px 20px 20px 20px;
|
||||
}
|
||||
|
||||
.issues table
|
||||
{
|
||||
width: 97%;
|
||||
}
|
||||
|
||||
/* All Icons */
|
||||
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
|
||||
{
|
||||
min-width:18px;
|
||||
min-height:18px;
|
||||
background-repeat:no-repeat;
|
||||
background-position:center;
|
||||
}
|
||||
|
||||
.IconSuccessEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
.IconInfoEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
.IconWarningEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
|
||||
}
|
||||
|
||||
.IconErrorEncoded
|
||||
{
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
</style></head><body><h1>
|
||||
NuGet Migration Report - Base</h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div class="info-text">Migration to PackageReference was completed successfully. Please build and run your solution to verify that all packages are available.</div><div class="info-text">
|
||||
If you run into any problems, have feedback, questions, or concerns, please
|
||||
<a href="https://github.com/NuGet/Home/issues/">file an issue on the NuGet GitHub repository.</a></div><div class="info-text">
|
||||
Changed files and this report have been backed up here:
|
||||
<a href="E:\SchreiberM\Visual Studio\GIT\2_DLL Projekte\DDModules\MigrationBackup\56f77a37\Base">E:\SchreiberM\Visual Studio\GIT\2_DLL Projekte\DDModules\MigrationBackup\56f77a37\Base</a></div><div class="info-text"><a href="https://aka.ms/nuget-pc2pr-migrator-rollback">Help me rollback to packages.config</a></div><h2 _locID="PackagesTitle">Packages processed</h2><h3 _locID="IncludePackagesTitle">Top-level dependencies:</h3><div class="issues"><table><tr><th class="issueCell">Package Id</th><th>Version</th></tr><tr><td class="issueCell"><span>NLog</span></td><td><span>
|
||||
v5.0.5</span></td></tr><tr><td class="issueCell"><span>NuGet.CommandLine</span></td><td><span>
|
||||
v6.13.2</span></td></tr></table></div><p /><h3 _locID="IncludePackagesTitle">Transitive dependencies:</h3><div class="issues"><table><tr><th class="issueCell">Package Id</th><th>Version</th></tr><tr><td class="issueCell">
|
||||
No transitive dependencies found.
|
||||
</td><td /></tr></table></div><h2 _locID="IssuesTitle">Package compatibility issues</h2><div class="issues"><table><tr><th /><th class="issueCell" _locID="DescriptionTableHeader">Description</th></tr><tr><td class="IconInfoEncoded" /><td class="issueCell">
|
||||
No issues were found.
|
||||
</td></tr></table></div></div></body></html>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||
<package id="NuGet.CommandLine" version="6.13.2" targetFramework="net462" developmentDependency="true" />
|
||||
</packages>
|
||||
@@ -16,6 +16,9 @@ EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Interfaces", "Interfaces\Interfaces.vbproj", "{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Jobs", "Jobs\Jobs.vbproj", "{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64} = {AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "License", "License\License.vbproj", "{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}"
|
||||
EndProject
|
||||
@@ -33,6 +36,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZooFlow", "ZooFlow\ZooFlow.
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Messaging", "Messaging\Messaging.vbproj", "{AF664D85-0A4B-4BAB-A2F8-83110C06553A}"
|
||||
EndProject
|
||||
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "Database.Test", "Database.Test\Database.Test.vbproj", "{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Filesystem", "Filesystem\Filesystem.vbproj", "{991D0231-4623-496D-8BD0-9CA906029CBC}"
|
||||
EndProject
|
||||
Global
|
||||
@@ -101,6 +106,10 @@ Global
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{91B4DFC0-543C-43A7-A9E0-6817DCA277EC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.3.1.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.1.0")>
|
||||
<Assembly: AssemblyVersion("1.4.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.4.0.0")>
|
||||
|
||||
@@ -20,6 +20,7 @@ Public Class ClassPatterns
|
||||
' Complex patterns that rely on a datasource like a Database or Windream
|
||||
Public Const PATTERN_WMI = "WMI"
|
||||
Public Const PATTERN_CTRL = "CTRL"
|
||||
Public Const PATTERN_TBCOL = "TBCOL"
|
||||
' Simple patterns that only rely on .NET functions
|
||||
Public Const PATTERN_INT = "INT"
|
||||
' Simple patterns that rely on Data from the TBDD_USER table
|
||||
@@ -63,8 +64,8 @@ Public Class ClassPatterns
|
||||
Private ReadOnly _LogConfig As LogConfig
|
||||
|
||||
Private ReadOnly _Regex As Regex = New Regex("{#(\w+)#([\w\s_-]+)}+")
|
||||
Private ReadOnly _AllPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_USER, PATTERN_INT, PATTERN_WMDOCID, PATTERN_IDBOBJID}
|
||||
Private ReadOnly _ComplexPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL}
|
||||
Private ReadOnly _AllPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_TBCOL, PATTERN_USER, PATTERN_INT, PATTERN_WMDOCID, PATTERN_IDBOBJID}
|
||||
Private ReadOnly _ComplexPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_TBCOL}
|
||||
Private ReadOnly _SimplePatterns As New List(Of String) From {PATTERN_USER, PATTERN_INT}
|
||||
|
||||
''' <summary>
|
||||
|
||||
@@ -56,12 +56,8 @@
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.ZooFlow, Version=1.3.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\ZooFlow\bin\Debug\DigitalData.Modules.ZooFlow.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WINDREAMLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -148,6 +144,12 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ZooFlow\ZooFlow.vbproj">
|
||||
<Project>{81cac44f-3711-4c8f-ae98-e02a7448782a}</Project>
|
||||
<Name>ZooFlow</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
<PropertyGroup>
|
||||
|
||||
@@ -44,13 +44,18 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.Office.Interop.Outlook">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\Office\Microsoft.Office.Interop.Outlook.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OFFICE">
|
||||
<HintPath>M:\Bibliotheken\3rdParty\Office\OFFICE.DLL</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
@@ -141,26 +146,12 @@
|
||||
<Project>{6ea0c51f-c2b1-4462-8198-3de0b32b74f8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="Microsoft.Office.Core">
|
||||
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
|
||||
<VersionMajor>2</VersionMajor>
|
||||
<VersionMinor>8</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
<COMReference Include="Microsoft.Office.Interop.Outlook">
|
||||
<Guid>{00062FFF-0000-0000-C000-000000000046}</Guid>
|
||||
<VersionMajor>9</VersionMajor>
|
||||
<VersionMinor>6</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>primary</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</COMReference>
|
||||
<COMReference Include="stdole">
|
||||
<Guid>{00020430-0000-0000-C000-000000000046}</Guid>
|
||||
<VersionMajor>2</VersionMajor>
|
||||
|
||||
@@ -183,7 +183,6 @@ Public Class Helpers
|
||||
Return Convert.ToDateTime(pValue)
|
||||
End If
|
||||
Case INDEX_TYPE_FLOAT
|
||||
pValue = pValue.Replace(".", ",")
|
||||
If pValue = DELETE_ATTRIBUTE_VALUE Then
|
||||
Return Nothing
|
||||
Else
|
||||
|
||||
@@ -182,7 +182,18 @@ Public Class Windream
|
||||
_sessionPassword = SessionPassword
|
||||
_sessionDomain = SessionDomain
|
||||
End Sub
|
||||
|
||||
Public Sub Disconnect()
|
||||
Try
|
||||
If Session IsNot Nothing AndAlso Session.aLoggedin Then
|
||||
Session.Logout()
|
||||
_logger.Info("Session successfully logged out.")
|
||||
Else
|
||||
_logger.Info("No active session to log out.")
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex, "Error while logging out session")
|
||||
End Try
|
||||
End Sub
|
||||
Public Function GetCleanedPath(Path As String) As String
|
||||
Return Regex.Replace(Path, Constants.REGEX_CLEAN_FILENAME, String.Empty)
|
||||
End Function
|
||||
@@ -700,7 +711,7 @@ Public Class Windream
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function NewFileStream(ByVal FilenameSource As String, ByVal FilenameTarget As String, ByVal WMObjecttypeName As String, pisGUI As Boolean) As Boolean
|
||||
Public Function NewFileStream(ByVal FilenameSource As String, ByVal FilenameTarget As String, ByVal WMObjecttypeName As String) As Boolean
|
||||
|
||||
NewDocumentID = 0
|
||||
|
||||
@@ -712,7 +723,7 @@ Public Class Windream
|
||||
|
||||
FilenameTarget = GetNormalizedPath(FilenameTarget, True)
|
||||
|
||||
_logger.Debug($"Preparing to stream file from [{FilenameSource}] to [{FilenameTarget}]")
|
||||
_logger.Debug($"Preparing to stream file from {FilenameSource} to {FilenameTarget}")
|
||||
|
||||
Dim oWMObject As IWMObject6 = Nothing
|
||||
Dim oFileIO As WMFileIO
|
||||
@@ -725,16 +736,9 @@ Public Class Windream
|
||||
|
||||
Try
|
||||
' GetNewWMObjectFS already locks the WMObject
|
||||
_logger.Debug("Creating WMObject for file [{0}]", FilenameTarget)
|
||||
_logger.Debug("Creating WMObject for file {0}", FilenameTarget)
|
||||
oWMObject = Session.GetNewWMObjectFS(WMEntityDocument, FilenameTarget, WMObjectEditModeObject)
|
||||
Catch ex As Exception
|
||||
If ex.Message.Contains("Filename exists!") Then
|
||||
Dim oMsg = $"Could not create a windream - object - A folder or file with the same name already exists in the folder [{oTargetDrive}]"
|
||||
_logger.Warn(oMsg)
|
||||
If pisGUI = True Then
|
||||
MsgBox(oMsg, MsgBoxStyle.Critical, "Error in creating windream-object")
|
||||
End If
|
||||
End If
|
||||
_logger.Error(ex, "WMObject could not be created")
|
||||
Return False
|
||||
End Try
|
||||
|
||||
@@ -44,28 +44,24 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
<HintPath>..\packages\DigitalData.Modules.Logging.2.6.5\lib\net462\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WINDREAMLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
<EmbedInteropTypes>False</EmbedInteropTypes>
|
||||
<Reference Include="Interop.WINDREAMLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WINDREAMLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WMCNNCTDLLLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMCNNCTDLLLib.dll</HintPath>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WMCNNCTDLLLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WMOSRCHLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOSRCHLib.dll</HintPath>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WMOSRCHLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Interop.WMOTOOLLib">
|
||||
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WMOTOOLLib.dll</HintPath>
|
||||
<HintPath>M:\Bibliotheken\3rdParty\windream\Interop.WMOTOOLLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -140,6 +136,12 @@
|
||||
</None>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Base\Base.vbproj">
|
||||
<Project>{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}</Project>
|
||||
<Name>Base</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="WMOBRWSLib">
|
||||
<Guid>{25B51999-6DCA-11D4-B815-00104BB52DEA}</Guid>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="DigitalData.Modules.Logging" version="2.6.5" targetFramework="net462" />
|
||||
<package id="NLog" version="5.0.5" targetFramework="net461" />
|
||||
</packages>
|
||||
@@ -1,5 +1,4 @@
|
||||
Imports DigitalData.Modules.Database
|
||||
|
||||
Public Class Environment
|
||||
Public Property User As New State.UserState
|
||||
Public Property Settings As New State.SettingsState
|
||||
|
||||
@@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
|
||||
<Assembly: AssemblyCompany("")>
|
||||
<Assembly: AssemblyProduct("ZooFlow")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2022")>
|
||||
<Assembly: AssemblyTrademark("1.3.0.0")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.3.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.3.0.0")>
|
||||
<Assembly: AssemblyVersion("1.5.0.0")>
|
||||
<Assembly: AssemblyFileVersion("1.5.0.0")>
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
Namespace State
|
||||
Public Class SettingsState
|
||||
Public GdPictureKey As String = String.Empty
|
||||
Public CopyWMFile2Temp As Boolean = False
|
||||
Public WM_SUFFIX As String = "\\WINDREAM\OBJECTS"
|
||||
Public MAP_SHAREDRIVE As String = ""
|
||||
Public MAP_BLACKLIST As String = ""
|
||||
Public SavetoDrive As Boolean = False
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -44,18 +44,6 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.4, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.EDMI.API, Version=1.6.1.1, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\EDMIAPI\bin\Debug\DigitalData.Modules.EDMI.API.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||
@@ -136,8 +124,20 @@
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Database\Database.vbproj">
|
||||
<Project>{eaf0ea75-5fa7-485d-89c7-b2d843b03a96}</Project>
|
||||
<Name>Database</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\EDMIAPI\EDMI.API.vbproj">
|
||||
<Project>{25017513-0d97-49d3-98d7-ba76d9b251b0}</Project>
|
||||
<Name>EDMI.API</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Windows\Windows.vbproj">
|
||||
<Project>{5EFAEF9B-90B9-4F05-9F70-F79AD77FFF86}</Project>
|
||||
<Project>{5efaef9b-90b9-4f05-9f70-f79ad77fff86}</Project>
|
||||
<Name>Windows</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
|
||||
66
c
Normal file
66
c
Normal file
@@ -0,0 +1,66 @@
|
||||
[33m51798a28[m[33m ([m[1;36mHEAD[m[33m -> [m[1;32mmaster[m[33m)[m HEAD@{0}: reset: moving to 51798a28f5fddb5b5e62e5e3944dfa8cea4bb12a
|
||||
[33mec3a677c[m HEAD@{1}: commit: MS Jobs Sichtbeleg
|
||||
[33m48406884[m HEAD@{2}: pull --progress --no-edit --no-stat --recurse-submodules=no origin: Fast-forward
|
||||
[33m204aaaeb[m HEAD@{3}: commit: Korrektur
|
||||
[33mec378ba3[m HEAD@{4}: commit: Modules.Interfaces: Version 2.3.7.0
|
||||
[33m35b19cde[m HEAD@{5}: commit: Modules.Interfaces: Fehlende Elemente der Codeliste UNTDID 7161 (Charge codes) nachgetragen, passend zur Version 2.3.x
|
||||
[33m9ae5465c[m HEAD@{6}: commit: Modules.Jobs: Version 3.0.3.0
|
||||
[33m82139fc3[m HEAD@{7}: commit: Modules.Jobs: 4000 Zeichen-Grenze
|
||||
[33mf4ba4d9e[m HEAD@{8}: commit: Modules.Interface: Listen-Items Handling (Item_Type = 4)
|
||||
[33m0aabc12f[m HEAD@{9}: commit: Modules.Jobs: Version 3.0.2.0
|
||||
[33madbd0fe9[m HEAD@{10}: commit: Modules.Jobs: Kürzen der ITEM_VALUE-Werte entfernt. Tabelle muss VARCHAR(max) vorsehen.
|
||||
[33m2d6a2df4[m HEAD@{11}: commit: Modules.Jobs: Version 3.0.1.0
|
||||
[33me7ccb748[m HEAD@{12}: commit: Modules.Interfaces: Version 2.3.6.0
|
||||
[33m05355c93[m HEAD@{13}: commit: Readonly Property
|
||||
[33m2007bb91[m HEAD@{14}: commit: Modules.Interfaces & Modules.Jobs: Weitergabe der ErrorCodes in den Exceptions, um sie im WebService auswerten zu können.
|
||||
[33md7d2ecf8[m HEAD@{15}: commit: Modules.Jobs: Replace Case-Insensitiv
|
||||
[33m447c7ea6[m HEAD@{16}: commit: Modules.Jobs: Version 3.0.0.0
|
||||
[33m32bb14db[m HEAD@{17}: commit: Modules.Jobs: Strings-Vergleiche sollten unbedingt mit string.equals() erfolgen!
|
||||
[33ma5226a81[m HEAD@{18}: commit: Modules.Interfaces: Try/Catch und logging
|
||||
[33mb534c4c7[m HEAD@{19}: commit: Modules.Interfaces: Version 2.3.5.0
|
||||
[33mdc801383[m HEAD@{20}: commit: Modules.Jobs: Version 2.9.9.0
|
||||
[33m477bb511[m HEAD@{21}: commit: Modules.Interfaces & Modules.Jobs: ZUGFeRD 2.3.x-Logik angepasst. Auswertung der XML-Tabelle korrigiert, das Dictionary wird erst später erstellt.
|
||||
[33m0b66b805[m HEAD@{22}: commit: Modules.Jobs: Version 2.9.8.0
|
||||
[33m5fd924d4[m HEAD@{23}: commit: Modules.Interfaces: Version 2.3.4.0
|
||||
[33me8ebc302[m HEAD@{24}: commit: Modules.Interface + Modules.Jobs: ITEM_TYPE = 4 / Description enthält jetzt BT-Feld-Info / Kommentare / Abfrage BT-Felder
|
||||
[33m262805d1[m HEAD@{25}: commit: Modules.Interface: Datumsformat immer 8-stellig (yyyyMMdd) aufbereiten
|
||||
[33m623807c5[m HEAD@{26}: commit: Modules.Interfaces: Version 2.3.3
|
||||
[33maee7997c[m HEAD@{27}: commit: Modules.Interfaces: Date/DateTime (yyyy-MM-dd) und Decimal/Numeric-Werte mit CultureInfo.Invariant.Culture speichern.
|
||||
[33m82a95faa[m HEAD@{28}: commit: Modules.Jobs: Version 2.9.7.0
|
||||
[33maf7534df[m HEAD@{29}: commit: Modules.Interfaces: Version 2.3.2.0
|
||||
[33mfa2c2a64[m HEAD@{30}: commit: Modules.Jobs: Keine Hochkomma-Ersetzung mehr bei Bulk-Insert
|
||||
[33m390a5247[m HEAD@{31}: commit: Modules.Interfaces: Belegarten in ZUGFeRD 2.3.x korrigiert und fehlende nachgetragen.
|
||||
[33m0ed99610[m HEAD@{32}: commit: Leere Strings (item_type = 0) nicht mehr in die DB schreiben
|
||||
[33m2e0ae13a[m HEAD@{33}: commit: Modules.Jobs: Version 2.9.6.0
|
||||
[33m267e0387[m HEAD@{34}: commit: Modules.Jobs: Prüfe ob Value überhaupt einen Wert hat, sonst wird auch keine Datei erstellt
|
||||
[33m2673755b[m HEAD@{35}: commit: Jobs: base64 / varbinary
|
||||
[33m5052ce4f[m HEAD@{36}: commit: Modules.Jobs: Version 2.9.5.0
|
||||
[33m717909d7[m HEAD@{37}: commit: Modules.Jobs: MIME-Typen (pdf, xlsx, odt) - Fehlerhandling ergänzt, wenn Dateien nicht erstellt werden können.
|
||||
[33m04a408ab[m HEAD@{38}: commit: Jobs: MIME-Types + File-Extension + xlsx-Dateien
|
||||
[33mface3c76[m HEAD@{39}: commit: Modules.Database: Version 2.3.6.0
|
||||
[33m2d3a1cd2[m HEAD@{40}: commit: Korrektur von MS in master nachgezogen
|
||||
[33m43e95a20[m HEAD@{41}: checkout: moving from Update-Net-8 to master
|
||||
[33mc0054d41[m[33m ([m[1;32mUpdate-Net-8[m[33m)[m HEAD@{42}: checkout: moving from master to Update-Net-8
|
||||
[33m43e95a20[m HEAD@{43}: checkout: moving from Update-Net-8 to master
|
||||
[33mc0054d41[m[33m ([m[1;32mUpdate-Net-8[m[33m)[m HEAD@{44}: checkout: moving from master to Update-Net-8
|
||||
[33m43e95a20[m HEAD@{45}: checkout: moving from Update-Net-8 to master
|
||||
[33mc0054d41[m[33m ([m[1;32mUpdate-Net-8[m[33m)[m HEAD@{46}: checkout: moving from master to Update-Net-8
|
||||
[33m43e95a20[m HEAD@{47}: commit: Modules.Jobs: Version 2.9.4.0
|
||||
[33m05d0bd60[m HEAD@{48}: commit: Modules.Interfaces: Version 2.3.1.0
|
||||
[33m7e70c059[m HEAD@{49}: commit: Auslesen von embedded Files aus einer XML-Datei
|
||||
[33m0261d237[m HEAD@{50}: pull --progress --no-edit --no-stat --recurse-submodules=no origin: Fast-forward
|
||||
[33mea7fe74e[m HEAD@{51}: pull --progress --no-edit --no-stat --recurse-submodules=no origin: Merge made by the 'ort' strategy.
|
||||
[33mdf04b0a7[m HEAD@{52}: commit: Modules.Jobs: Version 2.9.3.0
|
||||
[33mce652760[m HEAD@{53}: commit: Modules.Base: version 1.3.9.0
|
||||
[33m17d5acee[m HEAD@{54}: commit: Neue Datum-Konvertierungsfunktion
|
||||
[33mc7afa2f7[m HEAD@{55}: commit: Modules.Interfaces: Version 2.2.9.0
|
||||
[33m4d5ab649[m HEAD@{56}: commit: Peppol in UBL2.1 umbenannt
|
||||
[33mf4c3e9b3[m HEAD@{57}: commit: Modules.Interfaces: Version 2.2.8.0
|
||||
[33m9d76b17b[m HEAD@{58}: commit: Integration ZUGFeRD 2.3.3 XSD Schema
|
||||
[33m2ec92511[m HEAD@{59}: commit: Modules.Jobs: Version 2.9.2.0
|
||||
[33m8e1b9d21[m HEAD@{60}: commit: Modules.Interfaces - Version 2.2.7.0
|
||||
[33m7ac596b9[m HEAD@{61}: pull --progress --no-edit --no-stat --recurse-submodules=no origin: Merge made by the 'ort' strategy.
|
||||
[33mcf9650be[m HEAD@{62}: commit: Peppol 3017 / UBL Logik
|
||||
[33m5774eb76[m HEAD@{63}: pull --progress --no-edit --no-stat --recurse-submodules=no origin: Fast-forward
|
||||
[33m7602f2c8[m HEAD@{64}: commit: Nuget Update - GDPicture
|
||||
[33mc74b7782[m HEAD@{65}: clone: from http://git.dd:3000/AppStd/Modules
|
||||
Reference in New Issue
Block a user