From a32b87ca6b971e6460c5cd56dd66c630af1e9807 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 4 Aug 2021 16:16:12 +0200 Subject: [PATCH] =?UTF-8?q?Projektdateien=20hinzuf=C3=BCgen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EDIDocumentImport/App.config | 6 + EDIDocumentImport/Base.vb | 11 + EDIDocumentImport/Config.vb | 5 + EDIDocumentImport/DocumentInfo.vb | 39 + EDIDocumentImport/DocumentLoader.vb | 14 + EDIDocumentImport/DocumentPositions.vb | 55 ++ EDIDocumentImport/EDIDocumentImporter.vbproj | 200 +++++ EDIDocumentImport/FileLoader.vb | 69 ++ .../My Project/Application.Designer.vb | 38 + .../My Project/Application.myapp | 10 + EDIDocumentImport/My Project/AssemblyInfo.vb | 35 + .../My Project/Resources.Designer.vb | 113 +++ EDIDocumentImport/My Project/Resources.resx | 136 ++++ .../My Project/Settings.Designer.vb | 73 ++ .../My Project/Settings.settings | 7 + EDIDocumentImport/My Project/licenses.licx | 11 + EDIDocumentImport/README.txt | 7 + EDIDocumentImport/Resources/import.svg | 18 + EDIDocumentImport/Resources/open.svg | 11 + EDIDocumentImport/Resources/open2.svg | 13 + EDIDocumentImport/Resources/pagesetup.svg | 18 + .../Resources/showallfieldcodes.svg | 10 + EDIDocumentImport/Schemas/Orders.vb | 621 +++++++++++++++ EDIDocumentImport/Schemas/OrdersSchema.xsd | 175 +++++ EDIDocumentImport/Schemas/xsd.exe | Bin 0 -> 101432 bytes EDIDocumentImport/WinLineInfo.vb | 32 + EDIDocumentImport/frmMain.Designer.vb | 738 ++++++++++++++++++ EDIDocumentImport/frmMain.resx | 120 +++ EDIDocumentImport/frmMain.vb | 184 +++++ EDIDocumentImport/packages.config | 4 + EDIDocumentImporter.sln | 25 + 31 files changed, 2798 insertions(+) create mode 100644 EDIDocumentImport/App.config create mode 100644 EDIDocumentImport/Base.vb create mode 100644 EDIDocumentImport/Config.vb create mode 100644 EDIDocumentImport/DocumentInfo.vb create mode 100644 EDIDocumentImport/DocumentLoader.vb create mode 100644 EDIDocumentImport/DocumentPositions.vb create mode 100644 EDIDocumentImport/EDIDocumentImporter.vbproj create mode 100644 EDIDocumentImport/FileLoader.vb create mode 100644 EDIDocumentImport/My Project/Application.Designer.vb create mode 100644 EDIDocumentImport/My Project/Application.myapp create mode 100644 EDIDocumentImport/My Project/AssemblyInfo.vb create mode 100644 EDIDocumentImport/My Project/Resources.Designer.vb create mode 100644 EDIDocumentImport/My Project/Resources.resx create mode 100644 EDIDocumentImport/My Project/Settings.Designer.vb create mode 100644 EDIDocumentImport/My Project/Settings.settings create mode 100644 EDIDocumentImport/My Project/licenses.licx create mode 100644 EDIDocumentImport/README.txt create mode 100644 EDIDocumentImport/Resources/import.svg create mode 100644 EDIDocumentImport/Resources/open.svg create mode 100644 EDIDocumentImport/Resources/open2.svg create mode 100644 EDIDocumentImport/Resources/pagesetup.svg create mode 100644 EDIDocumentImport/Resources/showallfieldcodes.svg create mode 100644 EDIDocumentImport/Schemas/Orders.vb create mode 100644 EDIDocumentImport/Schemas/OrdersSchema.xsd create mode 100644 EDIDocumentImport/Schemas/xsd.exe create mode 100644 EDIDocumentImport/WinLineInfo.vb create mode 100644 EDIDocumentImport/frmMain.Designer.vb create mode 100644 EDIDocumentImport/frmMain.resx create mode 100644 EDIDocumentImport/frmMain.vb create mode 100644 EDIDocumentImport/packages.config create mode 100644 EDIDocumentImporter.sln 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 0000000000000000000000000000000000000000..45ffef9155aea84f1a1fe4b2728c2a31aef2a99d GIT binary patch literal 101432 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 literal 0 HcmV?d00001 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