Interfaces: Support ZUGFeRD 1.0 - 2.1.1
This commit is contained in:
parent
39483efe4d
commit
5aa41d2b9f
@ -109,11 +109,13 @@
|
|||||||
<DependentUpon>Settings.settings</DependentUpon>
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ZUGFeRDInterface\CrossIndustryDocumentType.vb" />
|
<Compile Include="ZUGFeRDInterface\Version1.0\CrossIndustryDocumentType.vb" />
|
||||||
<Compile Include="ZUGFeRDInterface.vb" />
|
<Compile Include="ZUGFeRDInterface.vb" />
|
||||||
<Compile Include="ZUGFeRDInterface\FileGroups.vb" />
|
<Compile Include="ZUGFeRDInterface\FileGroups.vb" />
|
||||||
<Compile Include="ZUGFeRDInterface\PDFEmbeds.vb" />
|
<Compile Include="ZUGFeRDInterface\PDFEmbeds.vb" />
|
||||||
<Compile Include="ZUGFeRDInterface\PropertyValues.vb" />
|
<Compile Include="ZUGFeRDInterface\PropertyValues.vb" />
|
||||||
|
<Compile Include="ZUGFeRDInterface\Version2.0\CrossIndustryInvoiceType.vb" />
|
||||||
|
<Compile Include="ZUGFeRDInterface\Version2.1.1\CrossIndustryInvoiceType.vb" />
|
||||||
<Compile Include="ZUGFeRDInterface\XmlItemProperty.vb" />
|
<Compile Include="ZUGFeRDInterface\XmlItemProperty.vb" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -11,9 +11,6 @@ Public Class ZUGFeRDInterface
|
|||||||
Private _logConfig As LogConfig
|
Private _logConfig As LogConfig
|
||||||
Private _logger As Logger
|
Private _logger As Logger
|
||||||
|
|
||||||
Private Const ZUGFERD_CONVERTER_EXE = "ZUGFeRDInterface\pdf_zugferd_test.exe" 'ZUGFeRDInterface\pdf_zugferd_lib\pdf_zugferd_test.exe
|
|
||||||
Private Const ZUGFERD_CONVERTER_SUCCESS_MESSAGE = "Document contains ZUGFeRD data."
|
|
||||||
|
|
||||||
Public Enum ErrorType
|
Public Enum ErrorType
|
||||||
NoValidFile
|
NoValidFile
|
||||||
NoZugferd
|
NoZugferd
|
||||||
@ -46,7 +43,7 @@ Public Class ZUGFeRDInterface
|
|||||||
''' <param name="Path"></param>
|
''' <param name="Path"></param>
|
||||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||||
''' <returns></returns>
|
''' <returns></returns>
|
||||||
Public Function ExtractZUGFeRDFileWithGDPicture(Path As String) As CrossIndustryDocumentType
|
Public Function ExtractZUGFeRDFileWithGDPicture(Path As String) As Object
|
||||||
Dim oXmlDocument = ValidateZUGFeRDFileWithGDPicture(Path)
|
Dim oXmlDocument = ValidateZUGFeRDFileWithGDPicture(Path)
|
||||||
|
|
||||||
If IsNothing(oXmlDocument) Then
|
If IsNothing(oXmlDocument) Then
|
||||||
@ -62,7 +59,7 @@ Public Class ZUGFeRDInterface
|
|||||||
''' <param name="Stream"></param>
|
''' <param name="Stream"></param>
|
||||||
''' <exception cref="ZUGFeRDExecption"></exception>
|
''' <exception cref="ZUGFeRDExecption"></exception>
|
||||||
''' <returns></returns>
|
''' <returns></returns>
|
||||||
Public Function ExtractZUGFeRDFileWithGDPicture(Stream As Stream) As CrossIndustryDocumentType
|
Public Function ExtractZUGFeRDFileWithGDPicture(Stream As Stream) As Object
|
||||||
Dim oXmlDocument = ValidateZUGFeRDFileWithGDPicture(Stream)
|
Dim oXmlDocument = ValidateZUGFeRDFileWithGDPicture(Stream)
|
||||||
|
|
||||||
If IsNothing(oXmlDocument) Then
|
If IsNothing(oXmlDocument) Then
|
||||||
@ -164,16 +161,45 @@ Public Class ZUGFeRDInterface
|
|||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
Public Function SerializeZUGFeRDDocument(Document As XPathDocument) As CrossIndustryDocumentType
|
Public Function SerializeZUGFeRDDocument(Document As XPathDocument) As Object
|
||||||
Try
|
Try
|
||||||
Dim oNavigator As XPathNavigator = Document.CreateNavigator()
|
Dim oNavigator As XPathNavigator = Document.CreateNavigator()
|
||||||
Dim oReader = oNavigator.ReadSubtree()
|
Dim oReader As XmlReader
|
||||||
Dim oSerializer As New XmlSerializer(GetType(CrossIndustryDocumentType))
|
Dim oResult = Nothing
|
||||||
|
|
||||||
|
Dim oTypes As New List(Of Type) From {
|
||||||
|
GetType(ZUGFeRD.Version1_0.CrossIndustryDocumentType),
|
||||||
|
GetType(ZUGFeRD.Version2_0.CrossIndustryInvoiceType),
|
||||||
|
GetType(ZUGFeRD.Version2_1_1.CrossIndustryInvoiceType)
|
||||||
|
}
|
||||||
|
|
||||||
|
For Each oType In oTypes
|
||||||
|
_logger.Debug("Trying Type [{0}]", oType.FullName)
|
||||||
|
Dim oSerializer As New XmlSerializer(oType)
|
||||||
|
|
||||||
|
Try
|
||||||
|
oReader = oNavigator.ReadSubtree()
|
||||||
|
oResult = oSerializer.Deserialize(oReader)
|
||||||
|
_logger.Debug("Serializing with type [{0}] succeeded", oType.FullName)
|
||||||
|
Exit For
|
||||||
|
Catch ex As Exception
|
||||||
|
_logger.Debug("Serializing with type [{0}] failed", oType.FullName)
|
||||||
|
_logger.Debug(ex.Message)
|
||||||
|
_logger.Error(ex.InnerException?.Message)
|
||||||
|
End Try
|
||||||
|
Next
|
||||||
|
|
||||||
|
If oResult Is Nothing Then
|
||||||
|
Throw New ApplicationException("No Types matched the given document. Document could not be serialized.")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return oResult
|
||||||
|
|
||||||
Return oSerializer.Deserialize(oReader)
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
_logger.Error(ex)
|
_logger.Error(ex)
|
||||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige ZUGFeRD Datei.")
|
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige ZUGFeRD Datei.")
|
||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -31,7 +31,7 @@ Public Class PropertyValues
|
|||||||
Public Value As String
|
Public Value As String
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
Public Function CheckPropertyValues(Document As CrossIndustryDocumentType, PropertyMap As Dictionary(Of String, XmlItemProperty), MessageId As String) As CheckPropertyValuesResult
|
Public Function CheckPropertyValues(Document As Object, PropertyMap As Dictionary(Of String, XmlItemProperty), MessageId As String) As CheckPropertyValuesResult
|
||||||
Dim oGlobalGroupCounter = 0
|
Dim oGlobalGroupCounter = 0
|
||||||
Dim oMissingProperties As New List(Of String)
|
Dim oMissingProperties As New List(Of String)
|
||||||
Dim oResult As New CheckPropertyValuesResult()
|
Dim oResult As New CheckPropertyValuesResult()
|
||||||
|
|||||||
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
Loading…
x
Reference in New Issue
Block a user