diff --git a/EDIDocumentImport/App.config b/EDIDocumentImport/App.config new file mode 100644 index 0000000..5534e28 --- /dev/null +++ b/EDIDocumentImport/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/Base.vb b/EDIDocumentImport/Base.vb new file mode 100644 index 0000000..732eeae --- /dev/null +++ b/EDIDocumentImport/Base.vb @@ -0,0 +1,11 @@ +Imports DigitalData.Modules.Logging + +Public Class Base + Public ReadOnly LogConfig As LogConfig + Public ReadOnly Logger As Logger + + Public Sub New(pLogConfig As LogConfig, pLogger As Logger) + LogConfig = pLogConfig + Logger = pLogger + End Sub +End Class diff --git a/EDIDocumentImport/Config.vb b/EDIDocumentImport/Config.vb new file mode 100644 index 0000000..f2bdc31 --- /dev/null +++ b/EDIDocumentImport/Config.vb @@ -0,0 +1,5 @@ +Public Class Config + Public Property ConnectionString As String = "" + Public Property InputDirectory As String = "" + Public Property OutputDirectory As String = "" +End Class diff --git a/EDIDocumentImport/DocumentInfo.vb b/EDIDocumentImport/DocumentInfo.vb new file mode 100644 index 0000000..8cf71fd --- /dev/null +++ b/EDIDocumentImport/DocumentInfo.vb @@ -0,0 +1,39 @@ +Public Class DocumentInfo + Enum DocumentType + Order ' Auftrag + OrderResponse ' Bestellbestätigung + DispatchNotification ' Lieferavis/ Eingangs Lieferschein + Invoice ' Rechnung + End Enum + + Public Class SchemaTypes + Public Property RootSchemaType As Type + Public Property HeadSchemaType As Type + Public Property PositionSchemaType As Type + End Class + + Public Shared Property TypeMatchingTable As New Dictionary(Of String, DocumentType) From { + {"orders", DocumentType.Order}, + {"ordrsp", DocumentType.OrderResponse}, + {"desadv", DocumentType.DispatchNotification}, + {"invoic", DocumentType.Invoice} + } + + Public Shared Property SchemaMatchingTable As New Dictionary(Of DocumentType, Type) From { + {DocumentType.Order, GetType(Orders.MESOWebService)} + } + + Public Shared Function GetDocumentTypeFromTemplateName(pTemplateName As String) As DocumentType + Return TypeMatchingTable. + Where(Function(kv) pTemplateName.Contains(kv.Key)). + Select(Function(kv) kv.Value). + FirstOrDefault() + End Function + + Public Shared Function GetDocumentSchemaFromDocumentType(pDocumentType As DocumentType) As Type + Return SchemaMatchingTable. + Where(Function(kv) pDocumentType = kv.Key). + Select(Function(kv) kv.Value). + FirstOrDefault() + End Function +End Class diff --git a/EDIDocumentImport/DocumentLoader.vb b/EDIDocumentImport/DocumentLoader.vb new file mode 100644 index 0000000..ec07ce5 --- /dev/null +++ b/EDIDocumentImport/DocumentLoader.vb @@ -0,0 +1,14 @@ +Imports DigitalData.Modules.Logging +Imports EDIDocumentImport.DocumentInfo + +Public Class DocumentLoader + Inherits Base + + Public Sub New(pLogConfig As LogConfig) + MyBase.New(pLogConfig, pLogConfig.GetLogger()) + End Sub + + Public Sub LoadDocument(pDocument As Tuple(Of Object, DocumentType)) + + End Sub +End Class diff --git a/EDIDocumentImport/DocumentPositions.vb b/EDIDocumentImport/DocumentPositions.vb new file mode 100644 index 0000000..35bed83 --- /dev/null +++ b/EDIDocumentImport/DocumentPositions.vb @@ -0,0 +1,55 @@ +Imports DevExpress.XtraGrid.Columns + +Public Class DocumentPositions + Public Class OrderPosition + Public Property RowNumber As Integer + Public Property ArticleNumber As String + Public Property ArticleNumberVendor As String + Public Property ArticleDescription As String + Public Property EDIPrice As Double + Public Property WinLinePrice As Double + Public Property Price As Double + Public Property Amount As Double + End Class + + Public Shared Property ColumnRowNumber As New GridColumn With { + .FieldName = "RowNumber", + .Caption = "Nr.", + .VisibleIndex = 0 + } + Public Shared Property ColumnArticleNumber As New GridColumn With { + .FieldName = "ArticleNumber", + .Caption = "Artikelnummer", + .VisibleIndex = 1 + } + Public Shared Property ColumnArticleNumberVendor As New GridColumn With { + .FieldName = "ArticleNumberVendor", + .Caption = "Artikel Lieferant", + .VisibleIndex = 2 + } + Public Shared Property ColumnArticleDescription As New GridColumn With { + .FieldName = "ArticleDescription", + .Caption = "Artikel Beschreibung", + .VisibleIndex = 3 + } + Public Shared Property ColumnAmount As New GridColumn With { + .FieldName = "Amount", + .Caption = "Menge", + .VisibleIndex = 4 + } + Public Shared Property ColumnEDIPrice As New GridColumn With { + .FieldName = "EDIPrice", + .Caption = "Einzelpreis EDI", + .VisibleIndex = 5 + } + Public Shared Property ColumnWinLinePrice As New GridColumn With { + .FieldName = "WinLinePrice", + .Caption = "Einzelpreis WinLine", + .VisibleIndex = 6 + } + Public Shared Property ColumnPrice As New GridColumn With { + .FieldName = "Price", + .Caption = "Einzelpreis", + .VisibleIndex = 7 + } +End Class diff --git a/EDIDocumentImport/EDIDocumentImporter.vbproj b/EDIDocumentImport/EDIDocumentImporter.vbproj new file mode 100644 index 0000000..644dd9e --- /dev/null +++ b/EDIDocumentImport/EDIDocumentImporter.vbproj @@ -0,0 +1,200 @@ + + + + + Debug + AnyCPU + {7AAEC958-955D-4F77-964C-38658684E424} + WinExe + EDIDocumentImport.My.MyApplication + EDIDocumentImport + EDIDocumentImport + 512 + WindowsForms + v4.6.1 + true + true + + + AnyCPU + true + full + true + true + bin\Debug\ + EDIDocumentImport.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + AnyCPU + pdbonly + false + true + true + bin\Release\ + EDIDocumentImport.xml + 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 + + + On + + + Binary + + + Off + + + On + + + + + + + + + + False + D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.Utils.v19.2.dll + + + False + D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraBars.v19.2.dll + + + False + D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraEditors.v19.2.dll + + + False + D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraGrid.v19.2.dll + + + False + D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraLayout.v19.2.dll + + + + + + ..\..\DDMonorepo\SQLConfig\bin\Debug\DigitalData.Controls.SQLConfig.dll + + + ..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll + + + ..\..\DDMonorepo\Modules.Config\bin\Debug\DigitalData.Modules.Config.dll + + + ..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll + + + ..\..\DDMonorepo\Modules.Logging\bin\Release\DigitalData.Modules.Logging.dll + + + + ..\packages\NLog.4.7.10\lib\net45\NLog.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + frmMain.vb + + + Form + + + + True + Application.myapp + True + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + + frmMain.vb + + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + Designer + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/FileLoader.vb b/EDIDocumentImport/FileLoader.vb new file mode 100644 index 0000000..0e9ca19 --- /dev/null +++ b/EDIDocumentImport/FileLoader.vb @@ -0,0 +1,69 @@ +Imports System.IO +Imports System.Xml +Imports System.Xml.Serialization +Imports System.Xml.XPath +Imports DigitalData.Modules.Logging +Imports EDIDocumentImport.DocumentInfo + +Public Class FileLoader + Inherits Base + + Public Config As MSSQLServer + Public Files As New List(Of FileInfo) + + Public Sub New(pLogConfig As LogConfig, pConfig As MSSQLServer) + MyBase.New(pLogConfig, pLogConfig.GetLogger()) + Config = pConfig + End Sub + + Public Function LoadFiles() As Boolean + If Config.InputDirectory = String.Empty Then + Throw New ArgumentNullException("InputDirectory") + End If + + Logger.Info("Loading files from directory [{0}]", Config.InputDirectory) + + Try + Dim oDirectory As New DirectoryInfo(Config.InputDirectory) + Dim oFiles = oDirectory.GetFiles() + + Logger.Debug("Found [{0}] files in directory [{1}]", oFiles.Count, oDirectory) + + Files = oFiles.ToList() + + Return True + Catch ex As Exception + Logger.Error(ex) + Throw New IO.IOException($"Could not load files from directory {Config.InputDirectory}", ex) + End Try + End Function + + Public Function LoadFile(pFullName) As Object + Dim oFile As FileInfo = Files. + Where(Function(f) f.FullName = pFullName). + SingleOrDefault() + + Using oFileStream As New FileStream(oFile.FullName, FileMode.Open, FileAccess.Read, FileShare.Read) + Dim oXmlDocument = New XPathDocument(oFileStream) + Dim oNavigator = oXmlDocument.CreateNavigator() + + Using oReader = oNavigator.ReadSubtree() + Dim oTemplateName = GetTemplateName(oNavigator) + Dim oDocumentType = GetDocumentTypeFromTemplateName(oTemplateName) + Dim oSchemaType = GetDocumentSchemaFromDocumentType(oDocumentType) + Dim oSerializer As New XmlSerializer(oSchemaType) + Dim oObject = oSerializer.Deserialize(oReader) + + Return New Tuple(Of Object, DocumentType)(oObject, oDocumentType) + End Using + End Using + End Function + + Public Function GetTemplateName(pDocument As XPathNavigator) As String + Dim oTemplateName = pDocument. + SelectSingleNode("//MESOWebService"). + GetAttribute("Template", "") + + Return oTemplateName + End Function +End Class diff --git a/EDIDocumentImport/My Project/Application.Designer.vb b/EDIDocumentImport/My Project/Application.Designer.vb new file mode 100644 index 0000000..34a301c --- /dev/null +++ b/EDIDocumentImport/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'HINWEIS: Diese Datei wird automatisch generiert und darf nicht direkt bearbeitet werden. Wenn Sie Änderungen vornehmen möchten + ' oder in dieser Datei Buildfehler auftreten, wechseln Sie zum Projekt-Designer. + ' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im + ' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor. + ' + Partial Friend Class MyApplication + + _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.EDIDocumentImport.frmMain + End Sub + End Class +End Namespace diff --git a/EDIDocumentImport/My Project/Application.myapp b/EDIDocumentImport/My Project/Application.myapp new file mode 100644 index 0000000..739ea6f --- /dev/null +++ b/EDIDocumentImport/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + frmMain + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/EDIDocumentImport/My Project/AssemblyInfo.vb b/EDIDocumentImport/My Project/AssemblyInfo.vb new file mode 100644 index 0000000..7c3875d --- /dev/null +++ b/EDIDocumentImport/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' Allgemeine Informationen über eine Assembly werden über die folgenden +' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +' die einer Assembly zugeordnet sind. + +' Werte der Assemblyattribute überprüfen + + + + + + + + + + +'Die folgende GUID wird für die typelib-ID verwendet, wenn dieses Projekt für COM verfügbar gemacht wird. + + +' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +' +' Hauptversion +' Nebenversion +' Buildnummer +' Revision +' +' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +' indem Sie "*" wie unten gezeigt eingeben: +' + + + diff --git a/EDIDocumentImport/My Project/Resources.Designer.vb b/EDIDocumentImport/My Project/Resources.Designer.vb new file mode 100644 index 0000000..e151fcb --- /dev/null +++ b/EDIDocumentImport/My Project/Resources.Designer.vb @@ -0,0 +1,113 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + ''' + ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("EDIDocumentImport.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property import() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("import", resourceCulture) + Return CType(obj,DevExpress.Utils.Svg.SvgImage) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property open() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("open", resourceCulture) + Return CType(obj,DevExpress.Utils.Svg.SvgImage) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property open2() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("open2", resourceCulture) + Return CType(obj,DevExpress.Utils.Svg.SvgImage) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property pagesetup() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("pagesetup", resourceCulture) + Return CType(obj,DevExpress.Utils.Svg.SvgImage) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage. + ''' + Friend ReadOnly Property showallfieldcodes() As DevExpress.Utils.Svg.SvgImage + Get + Dim obj As Object = ResourceManager.GetObject("showallfieldcodes", resourceCulture) + Return CType(obj,DevExpress.Utils.Svg.SvgImage) + End Get + End Property + End Module +End Namespace diff --git a/EDIDocumentImport/My Project/Resources.resx b/EDIDocumentImport/My Project/Resources.resx new file mode 100644 index 0000000..4b517ef --- /dev/null +++ b/EDIDocumentImport/My Project/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\open2.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + ..\Resources\import.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + ..\Resources\open.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + ..\Resources\pagesetup.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + ..\Resources\showallfieldcodes.svg;DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + \ No newline at end of file diff --git a/EDIDocumentImport/My Project/Settings.Designer.vb b/EDIDocumentImport/My Project/Settings.Designer.vb new file mode 100644 index 0000000..db35352 --- /dev/null +++ b/EDIDocumentImport/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.EDIDocumentImport.My.MySettings + Get + Return Global.EDIDocumentImport.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/EDIDocumentImport/My Project/Settings.settings b/EDIDocumentImport/My Project/Settings.settings new file mode 100644 index 0000000..85b890b --- /dev/null +++ b/EDIDocumentImport/My Project/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/EDIDocumentImport/My Project/licenses.licx b/EDIDocumentImport/My Project/licenses.licx new file mode 100644 index 0000000..4d41376 --- /dev/null +++ b/EDIDocumentImport/My Project/licenses.licx @@ -0,0 +1,11 @@ +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraRichEdit.RichEditControl, DevExpress.XtraRichEdit.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.SearchLookUpEdit, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/EDIDocumentImport/README.txt b/EDIDocumentImport/README.txt new file mode 100644 index 0000000..5579dc2 --- /dev/null +++ b/EDIDocumentImport/README.txt @@ -0,0 +1,7 @@ +# README + +## Generieren von Classentypen aus einem Schema + +``` +.\xsd.exe /c /l:VB OrdersSchema.xsd +``` \ No newline at end of file diff --git a/EDIDocumentImport/Resources/import.svg b/EDIDocumentImport/Resources/import.svg new file mode 100644 index 0000000..4730833 --- /dev/null +++ b/EDIDocumentImport/Resources/import.svg @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/Resources/open.svg b/EDIDocumentImport/Resources/open.svg new file mode 100644 index 0000000..2841e98 --- /dev/null +++ b/EDIDocumentImport/Resources/open.svg @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/Resources/open2.svg b/EDIDocumentImport/Resources/open2.svg new file mode 100644 index 0000000..04ab349 --- /dev/null +++ b/EDIDocumentImport/Resources/open2.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/Resources/pagesetup.svg b/EDIDocumentImport/Resources/pagesetup.svg new file mode 100644 index 0000000..4c4accb --- /dev/null +++ b/EDIDocumentImport/Resources/pagesetup.svg @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/Resources/showallfieldcodes.svg b/EDIDocumentImport/Resources/showallfieldcodes.svg new file mode 100644 index 0000000..bb10202 --- /dev/null +++ b/EDIDocumentImport/Resources/showallfieldcodes.svg @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/EDIDocumentImport/Schemas/Orders.vb b/EDIDocumentImport/Schemas/Orders.vb new file mode 100644 index 0000000..0419fb4 --- /dev/null +++ b/EDIDocumentImport/Schemas/Orders.vb @@ -0,0 +1,621 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict Off +Option Explicit On + +Imports System.Xml.Serialization + +Namespace Orders + ' + 'This source code was auto-generated by xsd, Version=4.8.3928.0. + ' + + ''' + + Partial Public Class MESOWebService + + Private itemsField() As Object + + Private templateTypeField As String + + Private templateField As String + + Private optionField As String + + Private amountField As String + + Private extEntryField As String + + Private printVoucherField As String + + Private extInsertField As String + + Private changeLotSizeField As String + + ''' + + Public Property Items() As Object() + Get + Return Me.itemsField + End Get + Set + Me.itemsField = Value + End Set + End Property + + ''' + + Public Property TemplateType() As String + Get + Return Me.templateTypeField + End Get + Set + Me.templateTypeField = Value + End Set + End Property + + ''' + + Public Property Template() As String + Get + Return Me.templateField + End Get + Set + Me.templateField = Value + End Set + End Property + + ''' + + Public Property [option]() As String + Get + Return Me.optionField + End Get + Set + Me.optionField = Value + End Set + End Property + + ''' + + Public Property amount() As String + Get + Return Me.amountField + End Get + Set + Me.amountField = Value + End Set + End Property + + ''' + + Public Property extEntry() As String + Get + Return Me.extEntryField + End Get + Set + Me.extEntryField = Value + End Set + End Property + + ''' + + Public Property printVoucher() As String + Get + Return Me.printVoucherField + End Get + Set + Me.printVoucherField = Value + End Set + End Property + + ''' + + Public Property extInsert() As String + Get + Return Me.extInsertField + End Get + Set + Me.extInsertField = Value + End Set + End Property + + ''' + + Public Property ChangeLotSize() As String + Get + Return Me.changeLotSizeField + End Get + Set + Me.changeLotSizeField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class MESOWebServiceEXIMVRG_ordersT025 + + Private bELEGKEYField As String + + Private fakt_KontonummerField As String + + Private laufnummerField As String + + Private fakt_NameField As String + + Private fakt_StrasseField As String + + Private fakt_PLZField As String + + Private fakt_OrtField As String + + Private fakt_AnsprechpartnerField As String + + Private lief_KontonummerField As String + + Private lief_NameField As String + + Private lief_StrasseField As String + + Private lief_PLZField As String + + Private lief_OrtField As String + + Private belegartField As String + + Private datum_AuftragBestellungField As Date + + Private datum_AuftragBestellungFieldSpecified As Boolean + + Private auftragsBestellnummerField As String + + Private projektnummerField As String + + Private leistungsdatumField As Date + + Private leistungsdatumFieldSpecified As Boolean + + Private auftragsreferenzField As String + + Private infotextField As String + + ''' + + Public Property BELEGKEY() As String + Get + Return Me.bELEGKEYField + End Get + Set + Me.bELEGKEYField = Value + End Set + End Property + + ''' + + Public Property Fakt_Kontonummer() As String + Get + Return Me.fakt_KontonummerField + End Get + Set + Me.fakt_KontonummerField = Value + End Set + End Property + + ''' + + Public Property Laufnummer() As String + Get + Return Me.laufnummerField + End Get + Set + Me.laufnummerField = Value + End Set + End Property + + ''' + + Public Property Fakt_Name() As String + Get + Return Me.fakt_NameField + End Get + Set + Me.fakt_NameField = Value + End Set + End Property + + ''' + + Public Property Fakt_Strasse() As String + Get + Return Me.fakt_StrasseField + End Get + Set + Me.fakt_StrasseField = Value + End Set + End Property + + ''' + + Public Property Fakt_PLZ() As String + Get + Return Me.fakt_PLZField + End Get + Set + Me.fakt_PLZField = Value + End Set + End Property + + ''' + + Public Property Fakt_Ort() As String + Get + Return Me.fakt_OrtField + End Get + Set + Me.fakt_OrtField = Value + End Set + End Property + + ''' + + Public Property Fakt_Ansprechpartner() As String + Get + Return Me.fakt_AnsprechpartnerField + End Get + Set + Me.fakt_AnsprechpartnerField = Value + End Set + End Property + + ''' + + Public Property Lief_Kontonummer() As String + Get + Return Me.lief_KontonummerField + End Get + Set + Me.lief_KontonummerField = Value + End Set + End Property + + ''' + + Public Property Lief_Name() As String + Get + Return Me.lief_NameField + End Get + Set + Me.lief_NameField = Value + End Set + End Property + + ''' + + Public Property Lief_Strasse() As String + Get + Return Me.lief_StrasseField + End Get + Set + Me.lief_StrasseField = Value + End Set + End Property + + ''' + + Public Property Lief_PLZ() As String + Get + Return Me.lief_PLZField + End Get + Set + Me.lief_PLZField = Value + End Set + End Property + + ''' + + Public Property Lief_Ort() As String + Get + Return Me.lief_OrtField + End Get + Set + Me.lief_OrtField = Value + End Set + End Property + + ''' + + Public Property Belegart() As String + Get + Return Me.belegartField + End Get + Set + Me.belegartField = Value + End Set + End Property + + ''' + + Public Property Datum_AuftragBestellung() As Date + Get + Return Me.datum_AuftragBestellungField + End Get + Set + Me.datum_AuftragBestellungField = Value + End Set + End Property + + ''' + + Public Property Datum_AuftragBestellungSpecified() As Boolean + Get + Return Me.datum_AuftragBestellungFieldSpecified + End Get + Set + Me.datum_AuftragBestellungFieldSpecified = Value + End Set + End Property + + ''' + + Public Property AuftragsBestellnummer() As String + Get + Return Me.auftragsBestellnummerField + End Get + Set + Me.auftragsBestellnummerField = Value + End Set + End Property + + ''' + + Public Property Projektnummer() As String + Get + Return Me.projektnummerField + End Get + Set + Me.projektnummerField = Value + End Set + End Property + + ''' + + Public Property Leistungsdatum() As Date + Get + Return Me.leistungsdatumField + End Get + Set + Me.leistungsdatumField = Value + End Set + End Property + + ''' + + Public Property LeistungsdatumSpecified() As Boolean + Get + Return Me.leistungsdatumFieldSpecified + End Get + Set + Me.leistungsdatumFieldSpecified = Value + End Set + End Property + + ''' + + Public Property Auftragsreferenz() As String + Get + Return Me.auftragsreferenzField + End Get + Set + Me.auftragsreferenzField = Value + End Set + End Property + + ''' + + Public Property Infotext() As String + Get + Return Me.infotextField + End Get + Set + Me.infotextField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class MESOWebServiceEXIMVRG_ordersT026 + + Private bELEGKEYField As String + + Private zeilennummerField As String + + Private datentypField As String + + Private artikelnummerField As String + + Private bezeichnungField As String + + Private notizblockField As String + + Private lieferantenartikelnummerField As String + + Private menge_bestelltField As Decimal + + Private menge_bestelltFieldSpecified As Boolean + + Private menge_geliefertField As Decimal + + Private colliField As String + + Private einzelpreisField As Decimal + + Private einzelpreisFieldSpecified As Boolean + + ''' + + Public Property BELEGKEY() As String + Get + Return Me.bELEGKEYField + End Get + Set + Me.bELEGKEYField = Value + End Set + End Property + + ''' + + Public Property Zeilennummer() As String + Get + Return Me.zeilennummerField + End Get + Set + Me.zeilennummerField = Value + End Set + End Property + + ''' + + Public Property Datentyp() As String + Get + Return Me.datentypField + End Get + Set + Me.datentypField = Value + End Set + End Property + + ''' + + Public Property Artikelnummer() As String + Get + Return Me.artikelnummerField + End Get + Set + Me.artikelnummerField = Value + End Set + End Property + + ''' + + Public Property Bezeichnung() As String + Get + Return Me.bezeichnungField + End Get + Set + Me.bezeichnungField = Value + End Set + End Property + + ''' + + Public Property Notizblock() As String + Get + Return Me.notizblockField + End Get + Set + Me.notizblockField = Value + End Set + End Property + + ''' + + Public Property Lieferantenartikelnummer() As String + Get + Return Me.lieferantenartikelnummerField + End Get + Set + Me.lieferantenartikelnummerField = Value + End Set + End Property + + ''' + + Public Property Menge_bestellt() As Decimal + Get + Return Me.menge_bestelltField + End Get + Set + Me.menge_bestelltField = Value + End Set + End Property + + ''' + + Public Property Menge_bestelltSpecified() As Boolean + Get + Return Me.menge_bestelltFieldSpecified + End Get + Set + Me.menge_bestelltFieldSpecified = Value + End Set + End Property + + ''' + + Public Property Menge_geliefert() As Decimal + Get + Return Me.menge_geliefertField + End Get + Set + Me.menge_geliefertField = Value + End Set + End Property + + ''' + + Public Property Colli() As String + Get + Return Me.colliField + End Get + Set + Me.colliField = Value + End Set + End Property + + ''' + + Public Property Einzelpreis() As Decimal + Get + Return Me.einzelpreisField + End Get + Set + Me.einzelpreisField = Value + End Set + End Property + + ''' + + Public Property EinzelpreisSpecified() As Boolean + Get + Return Me.einzelpreisFieldSpecified + End Get + Set + Me.einzelpreisFieldSpecified = Value + End Set + End Property + End Class +End Namespace \ No newline at end of file diff --git a/EDIDocumentImport/Schemas/OrdersSchema.xsd b/EDIDocumentImport/Schemas/OrdersSchema.xsd new file mode 100644 index 0000000..c1f3002 --- /dev/null +++ b/EDIDocumentImport/Schemas/OrdersSchema.xsd @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/EDIDocumentImport/Schemas/xsd.exe b/EDIDocumentImport/Schemas/xsd.exe new file mode 100644 index 0000000..45ffef9 Binary files /dev/null and b/EDIDocumentImport/Schemas/xsd.exe differ diff --git a/EDIDocumentImport/WinLineInfo.vb b/EDIDocumentImport/WinLineInfo.vb new file mode 100644 index 0000000..716c1b6 --- /dev/null +++ b/EDIDocumentImport/WinLineInfo.vb @@ -0,0 +1,32 @@ +Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.Database + +Public Class WinLineInfo + Inherits Base + + Private Database As MSSQLServer + Public Mandators As New List(Of Mandator) + + Public Class Mandator + Public Property Id As String + Public Property Name As String + End Class + + Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer) + MyBase.New(pLogConfig, pLogConfig.GetLogger()) + Database = pDatabase + End Sub + + Public Sub LoadWinlineMandators() + Dim oSQL = "SELECT * FROM v005 WHERE c0139 IS NULL" + Dim oTable = Database.GetDatatable(oSQL) + + Mandators.Clear() + For Each oRow As DataRow In oTable.Rows + Mandators.Add(New Mandator With { + .Id = oRow.Item("c002"), + .Name = oRow.Item("c003") + }) + Next + End Sub +End Class diff --git a/EDIDocumentImport/frmMain.Designer.vb b/EDIDocumentImport/frmMain.Designer.vb new file mode 100644 index 0000000..9d21e2d --- /dev/null +++ b/EDIDocumentImport/frmMain.Designer.vb @@ -0,0 +1,738 @@ + _ +Partial Class frmMain + Inherits DevExpress.XtraBars.Ribbon.RibbonForm + + 'Form overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl() + Me.btnLoadDocuments = New DevExpress.XtraBars.BarButtonItem() + Me.txtFilesLoaded = New DevExpress.XtraBars.BarHeaderItem() + Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem() + Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem() + Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem() + Me.checkShowXml = New DevExpress.XtraBars.BarCheckItem() + Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() + Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() + Me.GridControlFiles = New DevExpress.XtraGrid.GridControl() + Me.GridViewFiles = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.colFileName = New DevExpress.XtraGrid.Columns.GridColumn() + Me.colFilePath = New DevExpress.XtraGrid.Columns.GridColumn() + Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl() + Me.SplitContainerControl2 = New DevExpress.XtraEditors.SplitContainerControl() + Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl() + Me.txtOrderIssuer = New DevExpress.XtraEditors.TextEdit() + Me.MemoEdit1 = New DevExpress.XtraEditors.MemoEdit() + Me.txtOrderNumber = New DevExpress.XtraEditors.TextEdit() + Me.TextEdit5 = New DevExpress.XtraEditors.TextEdit() + Me.TextEdit6 = New DevExpress.XtraEditors.TextEdit() + Me.TextEdit7 = New DevExpress.XtraEditors.TextEdit() + Me.TextEdit8 = New DevExpress.XtraEditors.TextEdit() + Me.TextEdit9 = New DevExpress.XtraEditors.TextEdit() + Me.txtBELEGKEY = New DevExpress.XtraEditors.TextEdit() + Me.txtRunningNumber = New DevExpress.XtraEditors.TextEdit() + Me.dateOrderDate = New DevExpress.XtraEditors.DateEdit() + Me.Root = New DevExpress.XtraLayout.LayoutControlGroup() + Me.LayoutItemOrderIssuer = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem3 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutItemOrderNumber = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem6 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem9 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem10 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem11 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItemRunningNumber = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutItemOrderDate = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem8 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem7 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem1 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem5 = New DevExpress.XtraLayout.LayoutControlItem() + Me.SimpleSeparator1 = New DevExpress.XtraLayout.SimpleSeparator() + Me.GridControlPositions = New DevExpress.XtraGrid.GridControl() + Me.GridViewPositions = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.SplitContainerControl3 = New DevExpress.XtraEditors.SplitContainerControl() + Me.RichEditXml = New DevExpress.XtraRichEdit.RichEditControl() + Me.txtMandator = New DevExpress.XtraEditors.SearchLookUpEdit() + Me.SearchLookUpEdit1View = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.txtCustomer = New DevExpress.XtraEditors.SearchLookUpEdit() + Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView() + CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridControlFiles, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridViewFiles, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SplitContainerControl1.SuspendLayout() + CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SplitContainerControl2.SuspendLayout() + CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.LayoutControl1.SuspendLayout() + CType(Me.txtOrderIssuer.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.MemoEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtOrderNumber.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextEdit5.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextEdit6.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextEdit7.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextEdit8.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.TextEdit9.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtBELEGKEY.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtRunningNumber.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.dateOrderDate.Properties.CalendarTimeProperties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.dateOrderDate.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Root, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutItemOrderIssuer, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem3, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutItemOrderNumber, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem6, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem9, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem10, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem11, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItemRunningNumber, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutItemOrderDate, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem8, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem7, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem5, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SimpleSeparator1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridControlPositions, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridViewPositions, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SplitContainerControl3.SuspendLayout() + CType(Me.txtMandator.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SearchLookUpEdit1View, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.txtCustomer.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SuspendLayout() + ' + 'RibbonControl + ' + Me.RibbonControl.ExpandCollapseItem.Id = 0 + Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnLoadDocuments, Me.txtFilesLoaded, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.checkShowXml}) + Me.RibbonControl.Location = New System.Drawing.Point(0, 0) + Me.RibbonControl.MaxItemId = 10 + Me.RibbonControl.Name = "RibbonControl" + Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) + Me.RibbonControl.Size = New System.Drawing.Size(1406, 158) + Me.RibbonControl.StatusBar = Me.RibbonStatusBar + ' + 'btnLoadDocuments + ' + Me.btnLoadDocuments.Caption = "Dokumente einlesen" + Me.btnLoadDocuments.Id = 1 + Me.btnLoadDocuments.ImageOptions.SvgImage = Global.EDIDocumentImport.My.Resources.Resources.import + Me.btnLoadDocuments.Name = "btnLoadDocuments" + ' + 'txtFilesLoaded + ' + Me.txtFilesLoaded.Caption = "Keine Dokumente geladen" + Me.txtFilesLoaded.Id = 3 + Me.txtFilesLoaded.Name = "txtFilesLoaded" + ' + 'BarButtonItem1 + ' + Me.BarButtonItem1.Caption = "Eingangsverzeichnis öffnen" + Me.BarButtonItem1.Id = 5 + Me.BarButtonItem1.ImageOptions.SvgImage = Global.EDIDocumentImport.My.Resources.Resources.open2 + Me.BarButtonItem1.Name = "BarButtonItem1" + ' + 'BarButtonItem2 + ' + Me.BarButtonItem2.Caption = "Ausgangsverzeichnis öffnen" + Me.BarButtonItem2.Id = 6 + Me.BarButtonItem2.ImageOptions.SvgImage = Global.EDIDocumentImport.My.Resources.Resources.open + Me.BarButtonItem2.Name = "BarButtonItem2" + ' + 'BarButtonItem3 + ' + Me.BarButtonItem3.Caption = "Konfigurationsverzeichnis öffnen" + Me.BarButtonItem3.Id = 7 + Me.BarButtonItem3.ImageOptions.SvgImage = Global.EDIDocumentImport.My.Resources.Resources.pagesetup + Me.BarButtonItem3.Name = "BarButtonItem3" + ' + 'checkShowXml + ' + Me.checkShowXml.Caption = "XML Datei anzeigen" + Me.checkShowXml.Id = 9 + Me.checkShowXml.ImageOptions.SvgImage = Global.EDIDocumentImport.My.Resources.Resources.showallfieldcodes + Me.checkShowXml.Name = "checkShowXml" + ' + 'RibbonPage1 + ' + Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2, Me.RibbonPageGroup3}) + Me.RibbonPage1.Name = "RibbonPage1" + Me.RibbonPage1.Text = "Start" + ' + 'RibbonPageGroup1 + ' + Me.RibbonPageGroup1.ItemLinks.Add(Me.btnLoadDocuments) + Me.RibbonPageGroup1.Name = "RibbonPageGroup1" + Me.RibbonPageGroup1.Text = "Start" + ' + 'RibbonPageGroup2 + ' + Me.RibbonPageGroup2.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far + Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem1) + Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem2) + Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem3) + Me.RibbonPageGroup2.Name = "RibbonPageGroup2" + Me.RibbonPageGroup2.Text = "Konfiguration" + ' + 'RibbonPageGroup3 + ' + Me.RibbonPageGroup3.Alignment = DevExpress.XtraBars.Ribbon.RibbonPageGroupAlignment.Far + Me.RibbonPageGroup3.ItemLinks.Add(Me.checkShowXml) + Me.RibbonPageGroup3.Name = "RibbonPageGroup3" + Me.RibbonPageGroup3.Text = "Debugging" + ' + 'RibbonStatusBar + ' + Me.RibbonStatusBar.ItemLinks.Add(Me.txtFilesLoaded) + Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 752) + Me.RibbonStatusBar.Name = "RibbonStatusBar" + Me.RibbonStatusBar.Ribbon = Me.RibbonControl + Me.RibbonStatusBar.Size = New System.Drawing.Size(1406, 24) + ' + 'GridControlFiles + ' + Me.GridControlFiles.Dock = System.Windows.Forms.DockStyle.Fill + Me.GridControlFiles.Location = New System.Drawing.Point(0, 0) + Me.GridControlFiles.MainView = Me.GridViewFiles + Me.GridControlFiles.MenuManager = Me.RibbonControl + Me.GridControlFiles.Name = "GridControlFiles" + Me.GridControlFiles.Size = New System.Drawing.Size(324, 594) + Me.GridControlFiles.TabIndex = 2 + Me.GridControlFiles.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewFiles}) + ' + 'GridViewFiles + ' + Me.GridViewFiles.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colFileName, Me.colFilePath}) + Me.GridViewFiles.GridControl = Me.GridControlFiles + Me.GridViewFiles.Name = "GridViewFiles" + ' + 'colFileName + ' + Me.colFileName.Caption = "Dateiname" + Me.colFileName.FieldName = "Name" + Me.colFileName.Name = "colFileName" + Me.colFileName.Visible = True + Me.colFileName.VisibleIndex = 0 + ' + 'colFilePath + ' + Me.colFilePath.Caption = "Dateipfad" + Me.colFilePath.FieldName = "FullName" + Me.colFilePath.Name = "colFilePath" + Me.colFilePath.Visible = True + Me.colFilePath.VisibleIndex = 1 + ' + 'SplitContainerControl1 + ' + Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 0) + Me.SplitContainerControl1.Name = "SplitContainerControl1" + Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridControlFiles) + Me.SplitContainerControl1.Panel1.Text = "Panel1" + Me.SplitContainerControl1.Panel2.Controls.Add(Me.SplitContainerControl2) + Me.SplitContainerControl1.Panel2.Text = "Panel2" + Me.SplitContainerControl1.Size = New System.Drawing.Size(1396, 594) + Me.SplitContainerControl1.SplitterPosition = 324 + Me.SplitContainerControl1.TabIndex = 3 + ' + 'SplitContainerControl2 + ' + Me.SplitContainerControl2.Dock = System.Windows.Forms.DockStyle.Fill + Me.SplitContainerControl2.Horizontal = False + Me.SplitContainerControl2.Location = New System.Drawing.Point(0, 0) + Me.SplitContainerControl2.Name = "SplitContainerControl2" + Me.SplitContainerControl2.Panel1.Controls.Add(Me.LayoutControl1) + Me.SplitContainerControl2.Panel1.Text = "Panel1" + Me.SplitContainerControl2.Panel2.Controls.Add(Me.GridControlPositions) + Me.SplitContainerControl2.Panel2.Text = "Panel2" + Me.SplitContainerControl2.Size = New System.Drawing.Size(1062, 594) + Me.SplitContainerControl2.SplitterPosition = 275 + Me.SplitContainerControl2.TabIndex = 0 + ' + 'LayoutControl1 + ' + Me.LayoutControl1.Controls.Add(Me.txtOrderIssuer) + Me.LayoutControl1.Controls.Add(Me.MemoEdit1) + Me.LayoutControl1.Controls.Add(Me.txtOrderNumber) + Me.LayoutControl1.Controls.Add(Me.TextEdit5) + Me.LayoutControl1.Controls.Add(Me.TextEdit6) + Me.LayoutControl1.Controls.Add(Me.TextEdit7) + Me.LayoutControl1.Controls.Add(Me.TextEdit8) + Me.LayoutControl1.Controls.Add(Me.TextEdit9) + Me.LayoutControl1.Controls.Add(Me.txtBELEGKEY) + Me.LayoutControl1.Controls.Add(Me.txtRunningNumber) + Me.LayoutControl1.Controls.Add(Me.dateOrderDate) + Me.LayoutControl1.Controls.Add(Me.txtMandator) + Me.LayoutControl1.Controls.Add(Me.txtCustomer) + Me.LayoutControl1.Dock = System.Windows.Forms.DockStyle.Fill + Me.LayoutControl1.Location = New System.Drawing.Point(0, 0) + Me.LayoutControl1.Name = "LayoutControl1" + Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(1270, 166, 650, 400) + Me.LayoutControl1.Root = Me.Root + Me.LayoutControl1.Size = New System.Drawing.Size(1062, 275) + Me.LayoutControl1.TabIndex = 0 + Me.LayoutControl1.Text = "LayoutControl1" + ' + 'txtOrderIssuer + ' + Me.txtOrderIssuer.Location = New System.Drawing.Point(87, 105) + Me.txtOrderIssuer.MenuManager = Me.RibbonControl + Me.txtOrderIssuer.Name = "txtOrderIssuer" + Me.txtOrderIssuer.Size = New System.Drawing.Size(184, 20) + Me.txtOrderIssuer.StyleController = Me.LayoutControl1 + Me.txtOrderIssuer.TabIndex = 6 + ' + 'MemoEdit1 + ' + Me.MemoEdit1.Location = New System.Drawing.Point(87, 135) + Me.MemoEdit1.MenuManager = Me.RibbonControl + Me.MemoEdit1.Name = "MemoEdit1" + Me.MemoEdit1.Size = New System.Drawing.Size(608, 125) + Me.MemoEdit1.StyleController = Me.LayoutControl1 + Me.MemoEdit1.TabIndex = 12 + ' + 'txtOrderNumber + ' + Me.txtOrderNumber.Location = New System.Drawing.Point(353, 105) + Me.txtOrderNumber.MenuManager = Me.RibbonControl + Me.txtOrderNumber.Name = "txtOrderNumber" + Me.txtOrderNumber.Size = New System.Drawing.Size(128, 20) + Me.txtOrderNumber.StyleController = Me.LayoutControl1 + Me.txtOrderNumber.TabIndex = 7 + ' + 'TextEdit5 + ' + Me.TextEdit5.Location = New System.Drawing.Point(778, 15) + Me.TextEdit5.MenuManager = Me.RibbonControl + Me.TextEdit5.Name = "TextEdit5" + Me.TextEdit5.Size = New System.Drawing.Size(269, 20) + Me.TextEdit5.StyleController = Me.LayoutControl1 + Me.TextEdit5.TabIndex = 3 + ' + 'TextEdit6 + ' + Me.TextEdit6.Location = New System.Drawing.Point(778, 45) + Me.TextEdit6.MenuManager = Me.RibbonControl + Me.TextEdit6.Name = "TextEdit6" + Me.TextEdit6.Size = New System.Drawing.Size(269, 20) + Me.TextEdit6.StyleController = Me.LayoutControl1 + Me.TextEdit6.TabIndex = 5 + ' + 'TextEdit7 + ' + Me.TextEdit7.Location = New System.Drawing.Point(778, 105) + Me.TextEdit7.MenuManager = Me.RibbonControl + Me.TextEdit7.Name = "TextEdit7" + Me.TextEdit7.Size = New System.Drawing.Size(269, 20) + Me.TextEdit7.StyleController = Me.LayoutControl1 + Me.TextEdit7.TabIndex = 11 + ' + 'TextEdit8 + ' + Me.TextEdit8.Location = New System.Drawing.Point(778, 75) + Me.TextEdit8.MenuManager = Me.RibbonControl + Me.TextEdit8.Name = "TextEdit8" + Me.TextEdit8.Size = New System.Drawing.Size(269, 20) + Me.TextEdit8.StyleController = Me.LayoutControl1 + Me.TextEdit8.TabIndex = 9 + ' + 'TextEdit9 + ' + Me.TextEdit9.Location = New System.Drawing.Point(778, 135) + Me.TextEdit9.MenuManager = Me.RibbonControl + Me.TextEdit9.Name = "TextEdit9" + Me.TextEdit9.Size = New System.Drawing.Size(269, 20) + Me.TextEdit9.StyleController = Me.LayoutControl1 + Me.TextEdit9.TabIndex = 13 + ' + 'txtBELEGKEY + ' + Me.txtBELEGKEY.Location = New System.Drawing.Point(87, 15) + Me.txtBELEGKEY.MenuManager = Me.RibbonControl + Me.txtBELEGKEY.Name = "txtBELEGKEY" + Me.txtBELEGKEY.Size = New System.Drawing.Size(184, 20) + Me.txtBELEGKEY.StyleController = Me.LayoutControl1 + Me.txtBELEGKEY.TabIndex = 0 + ' + 'txtRunningNumber + ' + Me.txtRunningNumber.Location = New System.Drawing.Point(353, 15) + Me.txtRunningNumber.MenuManager = Me.RibbonControl + Me.txtRunningNumber.Name = "txtRunningNumber" + Me.txtRunningNumber.Size = New System.Drawing.Size(342, 20) + Me.txtRunningNumber.StyleController = Me.LayoutControl1 + Me.txtRunningNumber.TabIndex = 2 + ' + 'dateOrderDate + ' + Me.dateOrderDate.EditValue = Nothing + Me.dateOrderDate.Location = New System.Drawing.Point(563, 105) + Me.dateOrderDate.MenuManager = Me.RibbonControl + Me.dateOrderDate.Name = "dateOrderDate" + Me.dateOrderDate.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.dateOrderDate.Properties.CalendarTimeProperties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.dateOrderDate.Size = New System.Drawing.Size(132, 20) + Me.dateOrderDate.StyleController = Me.LayoutControl1 + Me.dateOrderDate.TabIndex = 8 + ' + 'Root + ' + Me.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True] + Me.Root.GroupBordersVisible = False + Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutItemOrderIssuer, Me.LayoutControlItem3, Me.LayoutItemOrderNumber, Me.LayoutControlItem6, Me.LayoutControlItem9, Me.LayoutControlItem10, Me.LayoutControlItem11, Me.LayoutControlItemRunningNumber, Me.LayoutItemOrderDate, Me.LayoutControlItem8, Me.LayoutControlItem7, Me.LayoutControlItem1, Me.SimpleSeparator1, Me.LayoutControlItem5}) + Me.Root.Name = "Root" + Me.Root.Size = New System.Drawing.Size(1062, 275) + Me.Root.TextVisible = False + ' + 'LayoutItemOrderIssuer + ' + Me.LayoutItemOrderIssuer.Control = Me.txtOrderIssuer + Me.LayoutItemOrderIssuer.Location = New System.Drawing.Point(0, 90) + Me.LayoutItemOrderIssuer.Name = "LayoutItemOrderIssuer" + Me.LayoutItemOrderIssuer.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutItemOrderIssuer.Size = New System.Drawing.Size(266, 30) + Me.LayoutItemOrderIssuer.Text = "Besteller" + Me.LayoutItemOrderIssuer.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem3 + ' + Me.LayoutControlItem3.Control = Me.MemoEdit1 + Me.LayoutControlItem3.Location = New System.Drawing.Point(0, 120) + Me.LayoutControlItem3.Name = "LayoutControlItem3" + Me.LayoutControlItem3.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem3.Size = New System.Drawing.Size(690, 135) + Me.LayoutControlItem3.Text = "Freitext" + Me.LayoutControlItem3.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutItemOrderNumber + ' + Me.LayoutItemOrderNumber.Control = Me.txtOrderNumber + Me.LayoutItemOrderNumber.Location = New System.Drawing.Point(266, 90) + Me.LayoutItemOrderNumber.Name = "LayoutItemOrderNumber" + Me.LayoutItemOrderNumber.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutItemOrderNumber.Size = New System.Drawing.Size(210, 30) + Me.LayoutItemOrderNumber.Text = "Bestellnummer" + Me.LayoutItemOrderNumber.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem6 + ' + Me.LayoutControlItem6.Control = Me.TextEdit5 + Me.LayoutControlItem6.Location = New System.Drawing.Point(691, 0) + Me.LayoutControlItem6.Name = "LayoutControlItem6" + Me.LayoutControlItem6.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem6.Size = New System.Drawing.Size(351, 30) + Me.LayoutControlItem6.Text = "Straße" + Me.LayoutControlItem6.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem9 + ' + Me.LayoutControlItem9.Control = Me.TextEdit8 + Me.LayoutControlItem9.Location = New System.Drawing.Point(691, 60) + Me.LayoutControlItem9.Name = "LayoutControlItem9" + Me.LayoutControlItem9.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem9.Size = New System.Drawing.Size(351, 30) + Me.LayoutControlItem9.Text = "PLZ" + Me.LayoutControlItem9.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem10 + ' + Me.LayoutControlItem10.Control = Me.TextEdit9 + Me.LayoutControlItem10.Location = New System.Drawing.Point(691, 120) + Me.LayoutControlItem10.Name = "LayoutControlItem10" + Me.LayoutControlItem10.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem10.Size = New System.Drawing.Size(351, 135) + Me.LayoutControlItem10.Text = "Kontakt" + Me.LayoutControlItem10.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem11 + ' + Me.LayoutControlItem11.Control = Me.txtBELEGKEY + Me.LayoutControlItem11.Location = New System.Drawing.Point(0, 0) + Me.LayoutControlItem11.Name = "LayoutControlItem11" + Me.LayoutControlItem11.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem11.Size = New System.Drawing.Size(266, 30) + Me.LayoutControlItem11.Text = "BELEGKEY" + Me.LayoutControlItem11.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItemRunningNumber + ' + Me.LayoutControlItemRunningNumber.Control = Me.txtRunningNumber + Me.LayoutControlItemRunningNumber.Location = New System.Drawing.Point(266, 0) + Me.LayoutControlItemRunningNumber.Name = "LayoutControlItemRunningNumber" + Me.LayoutControlItemRunningNumber.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItemRunningNumber.Size = New System.Drawing.Size(424, 30) + Me.LayoutControlItemRunningNumber.Text = "Laufnummer" + Me.LayoutControlItemRunningNumber.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutItemOrderDate + ' + Me.LayoutItemOrderDate.Control = Me.dateOrderDate + Me.LayoutItemOrderDate.Location = New System.Drawing.Point(476, 90) + Me.LayoutItemOrderDate.Name = "LayoutItemOrderDate" + Me.LayoutItemOrderDate.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutItemOrderDate.Size = New System.Drawing.Size(214, 30) + Me.LayoutItemOrderDate.Text = "Bestelldatum" + Me.LayoutItemOrderDate.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem8 + ' + Me.LayoutControlItem8.Control = Me.TextEdit7 + Me.LayoutControlItem8.Location = New System.Drawing.Point(691, 90) + Me.LayoutControlItem8.Name = "LayoutControlItem8" + Me.LayoutControlItem8.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem8.Size = New System.Drawing.Size(351, 30) + Me.LayoutControlItem8.Text = "Ort" + Me.LayoutControlItem8.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem7 + ' + Me.LayoutControlItem7.Control = Me.TextEdit6 + Me.LayoutControlItem7.Location = New System.Drawing.Point(691, 30) + Me.LayoutControlItem7.Name = "LayoutControlItem7" + Me.LayoutControlItem7.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem7.Size = New System.Drawing.Size(351, 30) + Me.LayoutControlItem7.Text = "Hausnummer" + Me.LayoutControlItem7.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem1 + ' + Me.LayoutControlItem1.Control = Me.txtMandator + Me.LayoutControlItem1.Location = New System.Drawing.Point(0, 30) + Me.LayoutControlItem1.Name = "LayoutControlItem1" + Me.LayoutControlItem1.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem1.Size = New System.Drawing.Size(690, 30) + Me.LayoutControlItem1.Text = "Mandant" + Me.LayoutControlItem1.TextSize = New System.Drawing.Size(69, 13) + ' + 'LayoutControlItem5 + ' + Me.LayoutControlItem5.Control = Me.txtCustomer + Me.LayoutControlItem5.Location = New System.Drawing.Point(0, 60) + Me.LayoutControlItem5.Name = "LayoutControlItem5" + Me.LayoutControlItem5.Padding = New DevExpress.XtraLayout.Utils.Padding(5, 5, 5, 5) + Me.LayoutControlItem5.Size = New System.Drawing.Size(690, 30) + Me.LayoutControlItem5.Text = "Kunde" + Me.LayoutControlItem5.TextSize = New System.Drawing.Size(69, 13) + ' + 'SimpleSeparator1 + ' + Me.SimpleSeparator1.AllowHotTrack = False + Me.SimpleSeparator1.Location = New System.Drawing.Point(690, 0) + Me.SimpleSeparator1.Name = "SimpleSeparator1" + Me.SimpleSeparator1.Size = New System.Drawing.Size(1, 255) + ' + 'GridControlPositions + ' + Me.GridControlPositions.Dock = System.Windows.Forms.DockStyle.Fill + Me.GridControlPositions.Location = New System.Drawing.Point(0, 0) + Me.GridControlPositions.MainView = Me.GridViewPositions + Me.GridControlPositions.MenuManager = Me.RibbonControl + Me.GridControlPositions.Name = "GridControlPositions" + Me.GridControlPositions.Size = New System.Drawing.Size(1062, 309) + Me.GridControlPositions.TabIndex = 0 + Me.GridControlPositions.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewPositions}) + ' + 'GridViewPositions + ' + Me.GridViewPositions.GridControl = Me.GridControlPositions + Me.GridViewPositions.Name = "GridViewPositions" + Me.GridViewPositions.OptionsView.ShowFooter = True + ' + 'SplitContainerControl3 + ' + Me.SplitContainerControl3.Collapsed = True + Me.SplitContainerControl3.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2 + Me.SplitContainerControl3.Dock = System.Windows.Forms.DockStyle.Fill + Me.SplitContainerControl3.Location = New System.Drawing.Point(0, 158) + Me.SplitContainerControl3.Name = "SplitContainerControl3" + Me.SplitContainerControl3.Panel1.Controls.Add(Me.SplitContainerControl1) + Me.SplitContainerControl3.Panel1.Text = "Panel1" + Me.SplitContainerControl3.Panel2.Controls.Add(Me.RichEditXml) + Me.SplitContainerControl3.Panel2.Text = "Panel2" + Me.SplitContainerControl3.Size = New System.Drawing.Size(1406, 594) + Me.SplitContainerControl3.SplitterPosition = 1114 + Me.SplitContainerControl3.TabIndex = 6 + ' + 'RichEditXml + ' + Me.RichEditXml.ActiveViewType = DevExpress.XtraRichEdit.RichEditViewType.Simple + Me.RichEditXml.Dock = System.Windows.Forms.DockStyle.Fill + Me.RichEditXml.LayoutUnit = DevExpress.XtraRichEdit.DocumentLayoutUnit.Pixel + Me.RichEditXml.Location = New System.Drawing.Point(0, 0) + Me.RichEditXml.MenuManager = Me.RibbonControl + Me.RichEditXml.Name = "RichEditXml" + Me.RichEditXml.Options.HorizontalRuler.Visibility = DevExpress.XtraRichEdit.RichEditRulerVisibility.Hidden + Me.RichEditXml.Options.VerticalRuler.Visibility = DevExpress.XtraRichEdit.RichEditRulerVisibility.Hidden + Me.RichEditXml.Size = New System.Drawing.Size(0, 0) + Me.RichEditXml.TabIndex = 0 + ' + 'txtMandator + ' + Me.txtMandator.Location = New System.Drawing.Point(87, 45) + Me.txtMandator.MenuManager = Me.RibbonControl + Me.txtMandator.Name = "txtMandator" + Me.txtMandator.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.txtMandator.Properties.NullText = "" + Me.txtMandator.Properties.PopupView = Me.SearchLookUpEdit1View + Me.txtMandator.Size = New System.Drawing.Size(608, 20) + Me.txtMandator.StyleController = Me.LayoutControl1 + Me.txtMandator.TabIndex = 4 + ' + 'SearchLookUpEdit1View + ' + Me.SearchLookUpEdit1View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus + Me.SearchLookUpEdit1View.Name = "SearchLookUpEdit1View" + Me.SearchLookUpEdit1View.OptionsSelection.EnableAppearanceFocusedCell = False + Me.SearchLookUpEdit1View.OptionsView.ShowGroupPanel = False + ' + 'txtCustomer + ' + Me.txtCustomer.Location = New System.Drawing.Point(87, 75) + Me.txtCustomer.MenuManager = Me.RibbonControl + Me.txtCustomer.Name = "txtCustomer" + Me.txtCustomer.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}) + Me.txtCustomer.Properties.NullText = "" + Me.txtCustomer.Properties.PopupView = Me.GridView1 + Me.txtCustomer.Size = New System.Drawing.Size(608, 20) + Me.txtCustomer.StyleController = Me.LayoutControl1 + Me.txtCustomer.TabIndex = 10 + ' + 'GridView1 + ' + Me.GridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus + Me.GridView1.Name = "GridView1" + Me.GridView1.OptionsSelection.EnableAppearanceFocusedCell = False + Me.GridView1.OptionsView.ShowGroupPanel = False + ' + 'frmMain + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(1406, 776) + Me.Controls.Add(Me.SplitContainerControl3) + Me.Controls.Add(Me.RibbonStatusBar) + Me.Controls.Add(Me.RibbonControl) + Me.Name = "frmMain" + Me.Ribbon = Me.RibbonControl + Me.StatusBar = Me.RibbonStatusBar + Me.Text = "EDI Dokument Import" + CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridControlFiles, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridViewFiles, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.SplitContainerControl1.ResumeLayout(False) + CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).EndInit() + Me.SplitContainerControl2.ResumeLayout(False) + CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.LayoutControl1.ResumeLayout(False) + CType(Me.txtOrderIssuer.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.MemoEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtOrderNumber.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextEdit5.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextEdit6.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextEdit7.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextEdit8.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.TextEdit9.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtBELEGKEY.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtRunningNumber.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.dateOrderDate.Properties.CalendarTimeProperties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.dateOrderDate.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Root, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutItemOrderIssuer, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem3, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutItemOrderNumber, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem6, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem9, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem10, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem11, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItemRunningNumber, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutItemOrderDate, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem8, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem7, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem5, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.SimpleSeparator1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridControlPositions, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridViewPositions, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).EndInit() + Me.SplitContainerControl3.ResumeLayout(False) + CType(Me.txtMandator.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.SearchLookUpEdit1View, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.txtCustomer.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit() + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents RibbonControl As DevExpress.XtraBars.Ribbon.RibbonControl + Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage + Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents RibbonStatusBar As DevExpress.XtraBars.Ribbon.RibbonStatusBar + Friend WithEvents GridControlFiles As DevExpress.XtraGrid.GridControl + Friend WithEvents GridViewFiles As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl + Friend WithEvents SplitContainerControl2 As DevExpress.XtraEditors.SplitContainerControl + Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl + Friend WithEvents txtOrderIssuer As DevExpress.XtraEditors.TextEdit + Friend WithEvents MemoEdit1 As DevExpress.XtraEditors.MemoEdit + Friend WithEvents txtOrderNumber As DevExpress.XtraEditors.TextEdit + Friend WithEvents Root As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents LayoutControlItem1 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutItemOrderIssuer As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem3 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem5 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutItemOrderNumber As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents GridControlPositions As DevExpress.XtraGrid.GridControl + Friend WithEvents GridViewPositions As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents colFileName As DevExpress.XtraGrid.Columns.GridColumn + Friend WithEvents colFilePath As DevExpress.XtraGrid.Columns.GridColumn + Friend WithEvents TextEdit5 As DevExpress.XtraEditors.TextEdit + Friend WithEvents LayoutControlItem6 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents btnLoadDocuments As DevExpress.XtraBars.BarButtonItem + Friend WithEvents TextEdit6 As DevExpress.XtraEditors.TextEdit + Friend WithEvents TextEdit7 As DevExpress.XtraEditors.TextEdit + Friend WithEvents TextEdit8 As DevExpress.XtraEditors.TextEdit + Friend WithEvents LayoutControlItem7 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem8 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem9 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents SimpleSeparator1 As DevExpress.XtraLayout.SimpleSeparator + Friend WithEvents TextEdit9 As DevExpress.XtraEditors.TextEdit + Friend WithEvents LayoutControlItem10 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents txtBELEGKEY As DevExpress.XtraEditors.TextEdit + Friend WithEvents LayoutControlItem11 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents txtRunningNumber As DevExpress.XtraEditors.TextEdit + Friend WithEvents LayoutControlItemRunningNumber As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents dateOrderDate As DevExpress.XtraEditors.DateEdit + Friend WithEvents LayoutItemOrderDate As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents txtFilesLoaded As DevExpress.XtraBars.BarHeaderItem + Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents SplitContainerControl3 As DevExpress.XtraEditors.SplitContainerControl + Friend WithEvents RichEditXml As DevExpress.XtraRichEdit.RichEditControl + Friend WithEvents checkShowXml As DevExpress.XtraBars.BarCheckItem + Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents txtMandator As DevExpress.XtraEditors.SearchLookUpEdit + Friend WithEvents SearchLookUpEdit1View As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents txtCustomer As DevExpress.XtraEditors.SearchLookUpEdit + Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView +End Class diff --git a/EDIDocumentImport/frmMain.resx b/EDIDocumentImport/frmMain.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/EDIDocumentImport/frmMain.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/EDIDocumentImport/frmMain.vb b/EDIDocumentImport/frmMain.vb new file mode 100644 index 0000000..33cfd17 --- /dev/null +++ b/EDIDocumentImport/frmMain.vb @@ -0,0 +1,184 @@ +Imports System.IO +Imports System.Globalization +Imports DevExpress.XtraGrid.Views.Grid +Imports DevExpress.XtraGrid.Columns +Imports DevExpress.XtraRichEdit +Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Config +Imports DigitalData.Controls.SQLConfig +Imports DigitalData.GUIs.Common +Imports EDIDocumentImport.DocumentInfo +Imports EDIDocumentImport.DocumentPositions + +Public Class frmMain + Public LogConfig As LogConfig + Public Logger As Logger + Public ConfigManager As ConfigManager(Of Config) + Public DocumentLoader As DocumentLoader + Public Database As MSSQLServer + Public FileLoader As FileLoader + Public GridBuilder As GridBuilder + Public Winline As WinLineInfo + + Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load + Try + LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "EDI Document Importer") + ConfigManager = New ConfigManager(Of Config)(LogConfig, Application.UserAppDataPath) + Logger = LogConfig.GetLogger() + + ' If ConnectionString does not exist, show SQL Config Form + If ConfigManager.Config.ConnectionString = String.Empty Then + Dim oForm As New frmSQLConfig(LogConfig) With { + .FormTitle = "EDI Document Importer" + } + Dim oResult = oForm.ShowDialog() + + If oResult = DialogResult.OK Then + ConfigManager.Config.ConnectionString = oForm.ConnectionString + ConfigManager.Save() + End If + End If + + ' Initialize Database + Database = New MSSQLServer(LogConfig, ConfigManager.Config.ConnectionString) + Winline = New WinLineInfo(LogConfig, Database) + + ' Initialize Grids + GridBuilder = New GridBuilder(New List(Of GridView) From {GridViewFiles, GridViewPositions}) + GridBuilder. + WithDefaults(). + WithReadOnlyOptions(GridViewFiles) + + ' Construct classes related to the xml data + FileLoader = New FileLoader(LogConfig, ConfigManager.Config) + DocumentLoader = New DocumentLoader(LogConfig) + Catch ex As Exception + Logger.Error(ex) + MsgBox(ex.Message, MsgBoxStyle.Critical, Text) + End Try + End Sub + + Private Sub btnLoadDocuments_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnLoadDocuments.ItemClick + Try + If FileLoader.LoadFiles() = True Then + GridControlFiles.DataSource = FileLoader.Files + txtFilesLoaded.Caption = $"{FileLoader.Files.Count} Dokumente geladen" + End If + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, Text) + End Try + End Sub + + Private Sub GridViewFiles_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewFiles.FocusedRowChanged + Dim oFile As FileInfo = GridViewFiles.GetRow(e.FocusedRowHandle) + + If oFile Is Nothing Then + Exit Sub + End If + + RichEditXml.LoadDocument(oFile.FullName, DocumentFormat.PlainText) + + Try + Dim oResult As Tuple(Of Object, DocumentType) = FileLoader.LoadFile(oFile.FullName) + + Select Case oResult.Item2 + Case DocumentType.Order + ShowDocument(oResult.Item1) + + End Select + Catch ex As Xml.XmlException + Dim oMessage As String = $"Fehler beim Verarbeiten des Dokuments {oFile.Name}:{vbNewLine}{ex.Message}" + MsgBox(oMessage, MsgBoxStyle.Critical, Text) + + Catch ex As Exception + + MsgBox(ex.Message, MsgBoxStyle.Critical, Text) + End Try + End Sub + + Private Sub ShowDocument(pDocument As Orders.MESOWebService) + ' ====== Head Data ====== + + Dim oHead As Orders.MESOWebServiceEXIMVRG_ordersT025 = pDocument.Items. + Where(Function(i) TypeOf i Is Orders.MESOWebServiceEXIMVRG_ordersT025). + FirstOrDefault() + + txtBELEGKEY.Text = oHead.BELEGKEY + txtRunningNumber.Text = oHead.Laufnummer + txtMandator.Text = oHead.Fakt_Kontonummer + txtOrderIssuer.Text = oHead.Fakt_Ansprechpartner + txtOrderNumber.Text = oHead.AuftragsBestellnummer + dateOrderDate.EditValue = oHead.Datum_AuftragBestellung + + ' ====== Position Data ====== + + Dim oPositions As List(Of Orders.MESOWebServiceEXIMVRG_ordersT026) = pDocument.Items. + Where(Function(i) TypeOf i Is Orders.MESOWebServiceEXIMVRG_ordersT026). + Select(Of Orders.MESOWebServiceEXIMVRG_ordersT026)(Function(i) i). + ToList() + + Dim oPositionList As New List(Of OrderPosition) + For Each oPosition In oPositions + oPositionList.Add(New OrderPosition With { + .ArticleNumber = oPosition.Artikelnummer, + .RowNumber = oPosition.Zeilennummer, + .ArticleDescription = oPosition.Bezeichnung, + .ArticleNumberVendor = oPosition.Lieferantenartikelnummer, + .EDIPrice = oPosition.Einzelpreis, + .WinLinePrice = 0, + .Price = 0, + .Amount = oPosition.Menge_bestellt + }) + Next + + LoadViewAndColumns(GridViewPositions, DocumentType.Order) + GridControlPositions.DataSource = oPositionList + End Sub + + + Public Sub LoadViewAndColumns(pView As GridView, pDocumentType As DocumentType) + Dim oColumns As List(Of GridColumn) + + Select Case pDocumentType + Case DocumentType.Order + oColumns = New List(Of GridColumn) From { + ColumnRowNumber, + ColumnArticleNumber, + ColumnArticleNumberVendor, + ColumnArticleDescription, + ColumnEDIPrice, + ColumnWinLinePrice, + ColumnPrice + } + + Case Else + oColumns = New List(Of GridColumn) + End Select + + pView.GridControl.DataSource = Nothing + pView.GridControl.ForceInitialize() + + pView.Columns.AddRange(oColumns.ToArray()) + pView.BestFitColumns() + End Sub + + + + Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick + Process.Start(ConfigManager.Config.InputDirectory) + End Sub + + Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick + Process.Start(ConfigManager.Config.OutputDirectory) + End Sub + + Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick + Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory + Process.Start(oUserConfigDirectory.FullName) + End Sub + + Private Sub checkShowXml_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles checkShowXml.CheckedChanged + SplitContainerControl3.Collapsed = Not checkShowXml.Checked + End Sub +End Class \ No newline at end of file diff --git a/EDIDocumentImport/packages.config b/EDIDocumentImport/packages.config new file mode 100644 index 0000000..63f3075 --- /dev/null +++ b/EDIDocumentImport/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/EDIDocumentImporter.sln b/EDIDocumentImporter.sln new file mode 100644 index 0000000..a1e55c2 --- /dev/null +++ b/EDIDocumentImporter.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31005.135 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDIDocumentImporter", "EDIDocumentImport\EDIDocumentImporter.vbproj", "{7AAEC958-955D-4F77-964C-38658684E424}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7AAEC958-955D-4F77-964C-38658684E424}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7AAEC958-955D-4F77-964C-38658684E424}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7AAEC958-955D-4F77-964C-38658684E424}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7AAEC958-955D-4F77-964C-38658684E424}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AD617F4E-5646-4DF2-923B-6EE1E0A5CD95} + EndGlobalSection +EndGlobal