First Working Version with New parser

This commit is contained in:
Jonathan Jenne
2021-10-15 14:56:46 +02:00
parent 3596786137
commit 12aa22ebdf
33 changed files with 3066 additions and 2533 deletions

View File

@@ -0,0 +1,59 @@
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Modules.Logging
Imports ImporterShared
Public Class GridLoader
Inherits BaseClass
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig, pLogConfig.GetLogger())
End Sub
Public Function GetGridFromElement(pTable As Schemas.Schema.Table) As GridControl
Dim oGrid As New GridControl With {
.Dock = DockStyle.Fill,
.Name = pTable.Name
}
oGrid.ForceInitialize()
oGrid.MainView.PopulateColumns()
Dim oView As GridView = oGrid.DefaultView
For Each oCol In pTable.Columns
Dim oColumn = New Columns.GridColumn With {
.Name = oCol.Name,
.Caption = oCol.Name,
.FieldName = oCol.Name,
.UnboundType = GetColumnType(oCol),
.VisibleIndex = 0
}
oView.Columns.Add(oColumn)
Next
Return oGrid
End Function
Private Function GetColumnType(pColumn As Schemas.Schema.Column)
Select Case pColumn.DataType
Case Schemas.Schema.ColumnType.Boolean
Return DevExpress.Data.UnboundColumnType.Boolean
Case Schemas.Schema.ColumnType.Date
Return DevExpress.Data.UnboundColumnType.DateTime
Case Schemas.Schema.ColumnType.Integer
Return DevExpress.Data.UnboundColumnType.Integer
Case Schemas.Schema.ColumnType.Decimal
Return DevExpress.Data.UnboundColumnType.Decimal
Case Else
Return DevExpress.Data.UnboundColumnType.String
End Select
End Function
End Class

View File

@@ -149,6 +149,18 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Exceptions.vb" />
<Compile Include="frmImportMain.Designer.vb">
<DependentUpon>frmImportMain.vb</DependentUpon>
</Compile>
<Compile Include="frmImportMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmImportMain_old.Designer.vb">
<DependentUpon>frmImportMain_old.vb</DependentUpon>
</Compile>
<Compile Include="frmImportMain_old.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.Designer.vb">
<DependentUpon>frmMain.vb</DependentUpon>
</Compile>
@@ -161,6 +173,7 @@
<Compile Include="frmMandatorSelection.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="GridLoader.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
@@ -195,6 +208,12 @@
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmImportMain.resx">
<DependentUpon>frmImportMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmImportMain_old.resx">
<DependentUpon>frmImportMain_old.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.vb</DependentUpon>
</EmbeddedResource>

View File

@@ -32,7 +32,7 @@ Namespace My
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.ImporterForm.frmMain
Me.MainForm = Global.ImporterForm.frmImportMain
End Sub
End Class
End Namespace

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>frmMain</MainForm>
<MainForm>frmImportMain</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>

View File

@@ -13,37 +13,37 @@ Public Class PositionData
Winline = pWinline
End Sub
Public Function Load(pMandator As Mandator, pData As Orders.Input.MESOWebService, pDataOriginal As Orders.Input.MESOWebService) As List(Of Position)
Dim oPositions = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(pData)
Dim oPositionsOriginal = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(pDataOriginal)
Dim oPositionList As New List(Of Position)
'Public Function Load(pMandator As Mandator, pData As Orders.Input.MESOWebService, pDataOriginal As Orders.Input.MESOWebService) As List(Of Position)
' Dim oPositions = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(pData)
' Dim oPositionsOriginal = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(pDataOriginal)
' Dim oPositionList As New List(Of Position)
For Each oPosition In oPositions
Dim oPositionOriginal = oPositionsOriginal.
Where(Function(p) p.Zeilennummer = oPosition.Zeilennummer).
SingleOrDefault()
' For Each oPosition In oPositions
' Dim oPositionOriginal = oPositionsOriginal.
' Where(Function(p) p.Zeilennummer = oPosition.Zeilennummer).
' SingleOrDefault()
Dim oReplacementNumber As String = Winline.GetReplacementArticleNumber(oPosition.Artikelnummer, pMandator)
' Dim oReplacementNumber As String = Winline.GetReplacementArticleNumber(oPosition.Artikelnummer, pMandator)
' If ArticleNumber is the same as the replacement Number, this Article does not have a replacement Number
If oReplacementNumber = oPosition.Artikelnummer Then
oReplacementNumber = Nothing
End If
' ' If ArticleNumber is the same as the replacement Number, this Article does not have a replacement Number
' If oReplacementNumber = oPosition.Artikelnummer Then
' oReplacementNumber = Nothing
' End If
oPositionList.Add(New Position With {
.ArticleNumber = oPosition.Artikelnummer,
.RowNumber = oPosition.Zeilennummer,
.ArticleDescription = oPosition.Bezeichnung,
.ArticleNumberVendor = oPosition.Lieferantenartikelnummer,
.EDIPrice = oPosition.Einzelpreis,
.WinLinePrice = 0,
.Price = 0,
.Amount = oPosition.Menge_bestellt,
.EuropeanArticleNumber = oPositionOriginal.Artikelnummer,
.ReplacementArticleNumber = oReplacementNumber
})
Next
' oPositionList.Add(New Position With {
' .ArticleNumber = oPosition.Artikelnummer,
' .RowNumber = oPosition.Zeilennummer,
' .ArticleDescription = oPosition.Bezeichnung,
' .ArticleNumberVendor = oPosition.Lieferantenartikelnummer,
' .EDIPrice = oPosition.Einzelpreis,
' .WinLinePrice = 0,
' .Price = 0,
' .Amount = oPosition.Menge_bestellt,
' .EuropeanArticleNumber = oPositionOriginal.Artikelnummer,
' .ReplacementArticleNumber = oReplacementNumber
' })
' Next
Return oPositionList
End Function
' Return oPositionList
'End Function
End Class

View File

@@ -0,0 +1,259 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmImportMain
Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
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.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim UnboundSourceProperty1 As DevExpress.Data.UnboundSourceProperty = New DevExpress.Data.UnboundSourceProperty()
Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.txtVersion = New DevExpress.XtraBars.BarStaticItem()
Me.txtFilesLoaded = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridControlFiles = New DevExpress.XtraGrid.GridControl()
Me.GridViewFiles = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridColumn1 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn2 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn3 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.SplitContainerControl2 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl3 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl4 = New DevExpress.XtraEditors.SplitContainerControl()
Me.UnboundSource1 = New DevExpress.Data.UnboundSource(Me.components)
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.GridControlFiles, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridViewFiles, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl2.SuspendLayout()
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl3.SuspendLayout()
CType(Me.SplitContainerControl4, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl4.SuspendLayout()
CType(Me.UnboundSource1, 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.txtVersion, Me.txtFilesLoaded, Me.BarButtonItem1, Me.BarButtonItem2})
Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl.MaxItemId = 5
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl.Size = New System.Drawing.Size(1215, 158)
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
'
'txtVersion
'
Me.txtVersion.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right
Me.txtVersion.Caption = "BarStaticItem1"
Me.txtVersion.Id = 1
Me.txtVersion.Name = "txtVersion"
'
'txtFilesLoaded
'
Me.txtFilesLoaded.Caption = "BarStaticItem2"
Me.txtFilesLoaded.Id = 2
Me.txtFilesLoaded.Name = "txtFilesLoaded"
'
'BarButtonItem1
'
Me.BarButtonItem1.Caption = "Import"
Me.BarButtonItem1.Id = 3
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
'
'RibbonStatusBar
'
Me.RibbonStatusBar.ItemLinks.Add(Me.txtVersion)
Me.RibbonStatusBar.ItemLinks.Add(Me.txtFilesLoaded)
Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 722)
Me.RibbonStatusBar.Name = "RibbonStatusBar"
Me.RibbonStatusBar.Ribbon = Me.RibbonControl
Me.RibbonStatusBar.Size = New System.Drawing.Size(1215, 24)
'
'SplitContainerControl1
'
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 158)
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(1215, 564)
Me.SplitContainerControl1.SplitterPosition = 325
Me.SplitContainerControl1.TabIndex = 2
'
'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(325, 564)
Me.GridControlFiles.TabIndex = 0
Me.GridControlFiles.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewFiles})
'
'GridViewFiles
'
Me.GridViewFiles.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.GridColumn1, Me.GridColumn2, Me.GridColumn3})
Me.GridViewFiles.GridControl = Me.GridControlFiles
Me.GridViewFiles.Name = "GridViewFiles"
'
'GridColumn1
'
Me.GridColumn1.Caption = "GridColumn1"
Me.GridColumn1.FieldName = "Name"
Me.GridColumn1.Name = "GridColumn1"
Me.GridColumn1.Visible = True
Me.GridColumn1.VisibleIndex = 0
'
'GridColumn2
'
Me.GridColumn2.Caption = "GridColumn2"
Me.GridColumn2.FieldName = "FullName"
Me.GridColumn2.Name = "GridColumn2"
Me.GridColumn2.Visible = True
Me.GridColumn2.VisibleIndex = 1
'
'GridColumn3
'
Me.GridColumn3.Caption = "GridColumn3"
Me.GridColumn3.FieldName = "Selected"
Me.GridColumn3.Name = "GridColumn3"
Me.GridColumn3.Visible = True
Me.GridColumn3.VisibleIndex = 2
'
'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.SplitContainerControl3)
Me.SplitContainerControl2.Panel1.Text = "Panel1"
Me.SplitContainerControl2.Panel2.Controls.Add(Me.SplitContainerControl4)
Me.SplitContainerControl2.Panel2.Text = "Panel2"
Me.SplitContainerControl2.Size = New System.Drawing.Size(880, 564)
Me.SplitContainerControl2.SplitterPosition = 288
Me.SplitContainerControl2.TabIndex = 0
'
'SplitContainerControl3
'
Me.SplitContainerControl3.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl3.Horizontal = False
Me.SplitContainerControl3.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl3.Name = "SplitContainerControl3"
Me.SplitContainerControl3.Panel1.Text = "Panel1"
Me.SplitContainerControl3.Panel2.Text = "Panel2"
Me.SplitContainerControl3.Size = New System.Drawing.Size(880, 288)
Me.SplitContainerControl3.SplitterPosition = 118
Me.SplitContainerControl3.TabIndex = 0
'
'SplitContainerControl4
'
Me.SplitContainerControl4.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl4.Horizontal = False
Me.SplitContainerControl4.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl4.Name = "SplitContainerControl4"
Me.SplitContainerControl4.Panel1.Text = "Panel1"
Me.SplitContainerControl4.Panel2.Text = "Panel2"
Me.SplitContainerControl4.Size = New System.Drawing.Size(880, 266)
Me.SplitContainerControl4.SplitterPosition = 126
Me.SplitContainerControl4.TabIndex = 0
'
'UnboundSource1
'
UnboundSourceProperty1.DisplayName = Nothing
UnboundSourceProperty1.Name = "Property0"
Me.UnboundSource1.Properties.Add(UnboundSourceProperty1)
'
'BarButtonItem2
'
Me.BarButtonItem2.Caption = "Export"
Me.BarButtonItem2.Id = 4
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'frmImportMain
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1215, 746)
Me.Controls.Add(Me.SplitContainerControl1)
Me.Controls.Add(Me.RibbonStatusBar)
Me.Controls.Add(Me.RibbonControl)
Me.Name = "frmImportMain"
Me.Ribbon = Me.RibbonControl
Me.StatusBar = Me.RibbonStatusBar
Me.Text = "frmImportMain"
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.GridControlFiles, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridViewFiles, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl2.ResumeLayout(False)
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl3.ResumeLayout(False)
CType(Me.SplitContainerControl4, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl4.ResumeLayout(False)
CType(Me.UnboundSource1, 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 SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridControlFiles As DevExpress.XtraGrid.GridControl
Friend WithEvents GridViewFiles As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents txtVersion As DevExpress.XtraBars.BarStaticItem
Friend WithEvents txtFilesLoaded As DevExpress.XtraBars.BarStaticItem
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents SplitContainerControl2 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents SplitContainerControl3 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents SplitContainerControl4 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridColumn1 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents GridColumn2 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents GridColumn3 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents UnboundSource1 As DevExpress.Data.UnboundSource
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
End Class

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="UnboundSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -0,0 +1,209 @@
Imports System.ComponentModel
Imports System.IO
Imports System.Xml
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Controls.SQLConfig
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports ImporterShared
Imports ImporterShared.Documents
Imports ImporterShared.Schemas
Imports ImporterShared.Winline
Public Class frmImportMain
Private LogConfig As LogConfig
Private Logger As Logger
Private ConfigManager As ConfigManager(Of ImporterShared.Config)
Private Database As MSSQLServer
Private Winline As Data
Private WebService As WebService
Private PositionData As PositionData
Private DocumentLoader As Documents.DocumentLoader
Private SchemaLoader As Schemas.SchemaLoader
Private GridLoader As GridLoader
Private Grids As List(Of GridControl)
Private CurrentSchema As String
Private Sub frmImportMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtVersion.Caption = String.Format(txtVersion.Caption, Application.ProductVersion)
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "EDI Document Importer")
Logger = LogConfig.GetLogger()
Logger.Info("EDI Document Importer, Version [{0}]", Application.ProductVersion)
ConfigManager = New ConfigManager(Of ImporterShared.Config)(LogConfig,
Application.UserAppDataPath,
Application.CommonAppDataPath,
Application.StartupPath)
' 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
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
Winline = New Data(LogConfig, Database, ConfigManager.Config)
WebService = New WebService(LogConfig, ConfigManager.Config)
PositionData = New PositionData(LogConfig, Winline)
' Load WinLine Data
Winline.Mandators.Clear()
Winline.LoadMandators()
Winline.LoadEconomicYears()
Winline.LoadDocumentKinds(Winline.Mandators)
For Each oMandator In Winline.Mandators
Winline.LoadAccounts(oMandator)
Next
DocumentLoader = New DocumentLoader(LogConfig, Winline)
SchemaLoader = New SchemaLoader(LogConfig)
GridLoader = New GridLoader(LogConfig)
SchemaLoader.LoadFiles(ConfigManager.Config.SchemaDirectory)
CurrentSchema = SchemaLoader.SchemaList.First().FullName
Dim oSchema = SchemaLoader.GetSchemaFromFile(CurrentSchema)
Grids = CreateGridsAndColumns(oSchema)
End Sub
Private Function CreateGridsAndColumns(pSchema As Schemas.Schema) As List(Of GridControl)
Dim oGrids As New List(Of GridControl)
Dim oTableCounter = 0
For Each oTable In pSchema.Tables
If oTableCounter = 0 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
SplitContainerControl3.Panel1.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter = 1 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
SplitContainerControl3.Panel2.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter = 2 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
SplitContainerControl4.Panel1.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter = 3 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
SplitContainerControl4.Panel2.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter > 3 Then
MsgBox("Only 4 Tables are allowed currently!", MsgBoxStyle.Exclamation, Text)
End If
oTableCounter += 1
Next
If oTableCounter < 3 Then
SplitContainerControl2.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
End If
Return oGrids
End Function
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
If DocumentLoader.LoadFiles(ConfigManager.Config.InputDirectory) Then
GridControlFiles.DataSource = DocumentLoader.Files
End If
End Sub
Private Sub GridViewFiles_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles GridViewFiles.FocusedRowChanged
Dim oDocument As Document = GridViewFiles.GetRow(e.FocusedRowHandle)
Dim oDatasources As New Dictionary(Of String, DataTable)
For Each oRow In oDocument.Rows
Dim oGrid As GridControl = Grids.
Where(Function(g) g.Name = oRow.Name).
SingleOrDefault()
If Not oDatasources.ContainsKey(oRow.Name) Then
Dim oTable As New DataTable()
For Each ofield In oRow.Fields
oTable.Columns.Add(New DataColumn(ofield.Key))
Next
oDatasources.Add(oRow.Name, oTable)
oGrid.DataSource = oTable
End If
Dim oDataTable = oDatasources.Item(oRow.Name)
Dim oDataRow = oDataTable.NewRow()
For Each oField In oRow.Fields
oDataRow.Item(oField.Key) = oField.Value
Next
oDataTable.Rows.Add(oDataRow)
oDataTable.AcceptChanges()
Next
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Dim oDocument As Document = GridViewFiles.GetRow(GridViewFiles.FocusedRowHandle)
Using oStream As New MemoryStream()
Dim w = XmlWriter.Create(oStream)
w.WriteStartDocument()
w.WriteStartElement("MESOWebService")
w.WriteAttributeString("Template", oDocument.TemplateName)
w.WriteAttributeString("TemplateType", oDocument.TemplateType)
w.WriteAttributeString("option", oDocument.Option)
w.WriteAttributeString("printVoucher", oDocument.PrintVoucher)
For Each oRow In oDocument.Rows
w.WriteStartElement(oRow.Name)
For Each oField As KeyValuePair(Of String, String) In oRow.Fields
w.WriteStartElement(oField.Key)
w.WriteValue(oField.Value)
w.WriteEndElement() ' Field
Next
w.WriteEndElement() ' Row
Next
w.WriteEndElement() ' MESOWebService
w.WriteEndDocument() ' Document
w.Close()
File.WriteAllBytes(ConfigManager.Config.OutputDirectory, oStream.ToArray)
End Using
End Sub
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ApplicationMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>196, 17</value>
</metadata>
<assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="colSelected.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHICAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkNoZWNrQ2lyY2xlZCI+DQogICAgPHBhdGggZD0iTTE2
LDRDOS40LDQsNCw5LjQsNCwxNmMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyQzI4LDkuNCwy
Mi42LDQsMTYsNHogTTE0LDIybC02LTZsMi0ybDQsNGw4LThsMiwyICAgTDE0LDIyeiIgY2xhc3M9Ikdy
ZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
</root>

View File

@@ -0,0 +1,509 @@
Imports System.IO
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraEditors
Imports DevExpress.XtraReports.UI
Imports DevExpress.DataAccess.ObjectBinding
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Config
Imports DigitalData.Controls.SQLConfig
Imports DigitalData.GUIs.Common
Imports ImporterShared.Documents
Imports ImporterShared.Winline
Imports ImporterShared.Schemas
Imports ImporterForm.Positions
Imports DevExpress.XtraLayout
Public Class frmImportMain_old
Public LogConfig As LogConfig
Public Logger As Logger
Public ConfigManager As ConfigManager(Of ImporterShared.Config)
Public Database As MSSQLServer
Public DocumentLoader As DocumentLoader
Public GridBuilder As GridBuilder
Public PositionData As PositionData
Public Winline As Data
Public WebService As WebService
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
txtVersion.Caption = String.Format(txtVersion.Caption, Application.ProductVersion)
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "EDI Document Importer")
Logger = LogConfig.GetLogger()
Logger.Info("EDI Document Importer, Version [{0}]", Application.ProductVersion)
ConfigManager = New ConfigManager(Of ImporterShared.Config)(LogConfig,
Application.UserAppDataPath,
Application.CommonAppDataPath,
Application.StartupPath)
' 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
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
Winline = New Data(LogConfig, Database, ConfigManager.Config)
WebService = New WebService(LogConfig, ConfigManager.Config)
PositionData = New PositionData(LogConfig, Winline)
' Load WinLine Data
Winline.Mandators.Clear()
Winline.LoadMandators()
Winline.LoadEconomicYears()
Winline.LoadDocumentKinds(Winline.Mandators)
For Each oMandator In Winline.Mandators
Winline.LoadAccounts(oMandator)
Next
' Load data for UI Fields
cmbMandator.Properties.DataSource = Winline.Mandators
cmbYear.Properties.Items.AddRange(Winline.Years)
cmbYear.SelectedItem = ConfigManager.Config.GetYear()
' Initialize Grids
GridBuilder = New GridBuilder(New List(Of GridView) From {GridViewFiles, GridViewPositions})
GridBuilder.WithDefaults()
PositionGrid.LoadPositionViewAndColumns(GridViewPositions, DocumentType.Order)
' Construct classes related to the xml data
DocumentLoader = New DocumentLoader(LogConfig, Winline)
Catch ex As Exception
Logger.Error(ex)
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden der Anwendung")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
End Try
End Sub
#Region "Helpers"
Private Function GetValidationMessage(FieldName As String) As String
Return $"Das Feld '{FieldName}' muss ausgefüllt werden!"
End Function
Private Function GetErrorMessage(pException As Exception, pErrorText As String)
Return $"{pErrorText}:{vbNewLine}{vbNewLine}{pException.Message}"
End Function
Private Function GetFocusedDocument() As Document
Dim oRowHandles = GridViewFiles.GetSelectedRows().ToList()
Dim oDocument As Document = GridViewFiles.GetRow(oRowHandles.First())
Return oDocument
End Function
Private Function GetFocusedPosition() As Position
Dim oRowHandles = GridViewPositions.GetSelectedRows().ToList()
Dim oPosition As Position = GridViewPositions.GetRow(oRowHandles.First())
Return oPosition
End Function
Private Sub TryOpenDirectory(pPath As String, pDisplayName As String)
If Directory.Exists(pPath) Then
Process.Start(pPath)
Else
MsgBox($"{pDisplayName} nicht konfiguriert oder nicht gefunden!", MsgBoxStyle.Exclamation, Text)
End If
End Sub
#End Region
Private Sub btnLoadDocuments_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnLoadDocuments.ItemClick
Try
If DocumentLoader.LoadFiles(ConfigManager.Config.InputDirectory) = True Then
RibbonGroupDataTransmission.Enabled = True
RibbonGroupDocument.Enabled = True
RibbonGroupPositions.Enabled = True
LayoutControlHead.Enabled = True
GridControlPositions.Enabled = True
btnReloadDocument.Enabled = True
GridControlFiles.DataSource = DocumentLoader.Files
txtFilesLoaded.Caption = $"{DocumentLoader.Files.Count} Dokumente geladen"
End If
Catch ex As Exception
Dim oMessage = ex.Message
If ex.InnerException IsNot Nothing Then
oMessage &= vbNewLine & vbNewLine & ex.InnerException.Message
End If
MsgBox(oMessage, 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 oDocument As Document = GridViewFiles.GetRow(e.FocusedRowHandle)
If oDocument Is Nothing Then
Exit Sub
End If
ShowDocument(oDocument)
End Sub
Private Sub ShowDocument(pDocument As Document)
' Load XML File in the sidebar
RichEditXml.LoadDocument(pDocument.FullName, DocumentFormat.PlainText)
If pDocument.Mandator Is Nothing Then
Dim oForm As New frmMandatorSelection() With {
.Mandators = Winline.Mandators,
.SelectedMandator = Nothing
}
Dim oResult = oForm.ShowDialog()
If oResult <> DialogResult.OK Then
Exit Sub
End If
pDocument.Mandator = oForm.SelectedMandator.Id
End If
Try
Select Case pDocument.Type
Case DocumentType.Order
MsgBox("TODO")
'ShowOrderDocument(pDocument)
End Select
Catch ex As Xml.XmlException
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
Catch ex As Exceptions.NoMandatorException
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
Catch ex As Exception
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
End Try
End Sub
'Private Sub ShowOrderDocument(pDocument As Document)
' If pDocument.Mandator Is Nothing Then
' Throw New Exceptions.NoMandatorException("Es konnte kein Mandant gefunden werden")
' End If
' Dim oData As Orders.Input.MESOWebService = DirectCast(pDocument.Data, Orders.Input.MESOWebService)
' Dim oDataOriginal As Orders.Input.MESOWebService = DirectCast(pDocument.DataOriginal, Orders.Input.MESOWebService)
' Dim oHead = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oData)
' Dim oHeadOriginal = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDataOriginal)
' ' --- Head Data --------------------------------------------------------------------------------------
' ' Original, Unreplaced Data
' txtCustomerGLN.Text = oHeadOriginal.Fakt_Kontonummer
' txtDeliveryAddressGLN.Text = oHeadOriginal.Lief_Kontonummer
' ' Regular Data from EDI
' txtRunningNumber.Text = oHead.Laufnummer
' cmbOrderIssuer.Text = oHead.Bestellt_Von
' txtOrderNumber.Text = oHead.Auftragsreferenz
' txtInfoText.Text = oHead.Infotext
' Try
' dateOrderDate.EditValue = Date.ParseExact(oHead.Datum_AuftragBestellung, "yyyy-MM-dd", Globalization.CultureInfo.InvariantCulture)
' Catch ex As Exception
' dateOrderDate.EditValue = Nothing
' End Try
' ' --- Find Mandator --------------------------------------------------------------------------------------
' Dim oMandator = Winline.Mandators.
' Where(Function(m) m.Id = pDocument.Mandator).
' SingleOrDefault()
' cmbMandator.EditValue = oMandator
' ' --- Find DocumentKinds ---------------------------------------------------------------------------------
' Dim oMandatorKinds = Winline.DocumentKinds.
' Where(Function(k) k.Mandator = oMandator.Id).
' ToList()
' Dim oSelectedKind = oMandatorKinds.
' Where(Function(k) k.Id.ToString = oHead.Belegart).
' SingleOrDefault()
' cmbDocumentKind.Properties.Items.Clear()
' cmbDocumentKind.Properties.Items.AddRange(oMandatorKinds)
' If oSelectedKind Is Nothing Then
' cmbDocumentKind.ErrorText = "Es wurde keine passende Belegart gefunden."
' cmbDocumentKind.SelectedItem = Nothing
' Else
' cmbDocumentKind.SelectedItem = oSelectedKind
' End If
' ' --- Find Accounts --------------------------------------------------------------------------------------
' Dim oMandatorAccounts = Winline.Accounts.
' Where(Function(a) a.Mandator = oMandator.Id).
' ToList()
' cmbCustomer.Properties.DataSource = oMandatorAccounts
' cmbDeliveryAddress.Properties.DataSource = oMandatorAccounts
' ' FAKTURA
' If oHead.Fakt_Kontonummer = oHeadOriginal.Fakt_Kontonummer Then
' cmbCustomer.ErrorText = GetValidationMessage("Faktura Konto")
' cmbCustomer.EditValue = Nothing
' Else
' Dim oMatchingAccounts = oMandatorAccounts.
' Where(Function(oAccount) oAccount.Id = oHead.Fakt_Kontonummer)
' If oMatchingAccounts.Count() > 1 Then
' cmbCustomer.EditValue = Nothing
' cmbCustomer.ErrorText = "Für die Kontonummer wurden mehrere Konten gefunden."
' ElseIf oMatchingAccounts.Count() = 0 Then
' cmbCustomer.EditValue = Nothing
' cmbCustomer.ErrorText = "Für die Kontonummer wurde kein Konto gefunden."
' Else
' cmbCustomer.EditValue = oMatchingAccounts.SingleOrDefault()
' End If
' End If
' ' CONTACTS
' If cmbCustomer.EditValue IsNot Nothing Then
' Dim oContacts = Winline.GetContacts(oHead.Fakt_Kontonummer, oMandator)
' cmbOrderIssuer.Properties.DataSource = oContacts
' End If
' ' DEVLIERY
' If oHead.Lief_Kontonummer = oHeadOriginal.Lief_Kontonummer Then
' If oHeadOriginal.Lief_Kontonummer = String.Empty Then
' txtPlace.EditValue = oHeadOriginal.Lief_Ort
' txtZIP.EditValue = oHeadOriginal.Lief_PLZ
' txtStreetName.EditValue = oHeadOriginal.Lief_Strasse
' txtName.EditValue = oHeadOriginal.Lief_Name
' Else
' cmbDeliveryAddress.ErrorText = GetValidationMessage("Lieferanten Konto")
' cmbDeliveryAddress.EditValue = Nothing
' End If
' Else
' Dim oMatchingAccounts = oMandatorAccounts.
' Where(Function(oAccount) oAccount.Id = oHead.Lief_Kontonummer)
' If oMatchingAccounts.Count() > 1 Then
' cmbDeliveryAddress.EditValue = Nothing
' cmbDeliveryAddress.ErrorText = "Für die Kontonummer wurden mehrere Konten gefunden."
' ElseIf oMatchingAccounts.Count() = 0 Then
' cmbDeliveryAddress.EditValue = Nothing
' cmbDeliveryAddress.ErrorText = "Für die Kontonummer wurde kein Konto gefunden."
' Else
' cmbDeliveryAddress.EditValue = oMatchingAccounts.SingleOrDefault()
' End If
' End If
' ' --- Find Positions ------------------------------------------------------------------------------------
' Dim oPositionList = PositionData.Load(oMandator, oData, oDataOriginal)
' GridControlPositions.DataSource = oPositionList
' GridViewPositions.BestFitColumns()
'End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
TryOpenDirectory(ConfigManager.Config.InputDirectory, "Eingangsverzeichnis")
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
TryOpenDirectory(ConfigManager.Config.OutputDirectory, "Ausgangsverzeichnis")
End Sub
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick
Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory
TryOpenDirectory(oUserConfigDirectory.FullName, "Konfigurationsverzeichnis")
End Sub
Private Sub checkShowXml_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles checkShowXml.CheckedChanged
SplitContainerControl3.Collapsed = Not checkShowXml.Checked
End Sub
'Private Async Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
' Dim oMessageText As String = ""
' Dim oMessageStyle As MsgBoxStyle = MsgBoxStyle.Critical
' Dim oDocument As Document = GetFocusedDocument()
' If oDocument Is Nothing Then
' Exit Sub
' End If
' SplashScreenManager1.ShowWaitForm()
' ChangeUIState(False)
' Try
' Dim oFinalDocument As Document = TransferChangesToDocument(oDocument)
' Dim oResult = Await WebService.TransferDocumentToWinLine(oFinalDocument)
' oMessageText = "Beleg wurde erfolgreich übertragen!"
' oMessageStyle = MsgBoxStyle.Information
' Catch ex As Exception
' Logger.Error(ex)
' oMessageText = $"Fehler beim Übertragen des Dokuments:{vbNewLine}{vbNewLine}{ex.Message}"
' oMessageStyle = MsgBoxStyle.Critical
' Finally
' SplashScreenManager1.CloseWaitForm()
' ChangeUIState(True)
' MsgBox(oMessageText, oMessageStyle, Text)
' End Try
'End Sub
Private Sub ChangeUIState(pEnabled As Boolean)
GridControlPositions.Enabled = pEnabled
GridControlFiles.Enabled = pEnabled
LayoutControlHead.Enabled = pEnabled
RibbonGroupDataTransmission.Enabled = pEnabled
RibbonGroupDataLoading.Enabled = pEnabled
RibbonGroupDocument.Enabled = pEnabled
RibbonGroupPositions.Enabled = pEnabled
End Sub
'Private Function TransferChangesToDocument(pDocument As Document)
' Dim oData As Orders.Input.MESOWebService = pDocument.Data
' Try
' Orders.Helpers.SetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oData, AddressOf UpdateOrderHead)
' Catch ex As Exception
' Logger.Error(ex)
' Throw ex
' End Try
' Return pDocument
'End Function
'Private Function UpdateOrderHead(pObject As Orders.Input.MESOWebServiceEXIMVRG_ordersT025) As Orders.Input.MESOWebServiceEXIMVRG_ordersT025
' ' Update DocumentKind
' If cmbDocumentKind.EditValue IsNot Nothing AndAlso TypeOf cmbDocumentKind.EditValue Is DocumentKind Then
' pObject.Belegart = DirectCast(cmbDocumentKind.EditValue, DocumentKind).Id
' End If
' ' Update Talking Person lol
' If cmbOrderIssuer.EditValue IsNot Nothing AndAlso TypeOf cmbOrderIssuer.EditValue Is Contact Then
' pObject.Bestellt_Von = DirectCast(cmbOrderIssuer.EditValue, Contact).Id
' End If
' ' Update Delivery Address
' If cmbDeliveryAddress.EditValue IsNot Nothing AndAlso TypeOf cmbDeliveryAddress.EditValue Is Account Then
' pObject.Lief_Kontonummer = DirectCast(cmbDeliveryAddress.EditValue, Account)?.Id
' End If
' ' Update Order Number
' If txtOrderNumber.EditValue IsNot Nothing AndAlso txtOrderNumber.EditValue <> String.Empty Then
' pObject.Auftragsreferenz = txtOrderNumber.EditValue
' End If
' ' Update Order Date
' If dateOrderDate IsNot Nothing Then
' pObject.Datum_AuftragBestellung = DirectCast(dateOrderDate.EditValue, Date).ToString("yyyy-MM-dd")
' End If
' ' Update Extra Address
' pObject.Lief_Name = txtName.EditValue
' pObject.Lief_Ort = txtPlace.EditValue
' pObject.Lief_PLZ = txtZIP.EditValue
' pObject.Lief_Strasse = txtStreetName.EditValue
' Return pObject
'End Function
Private Sub BarButtonItem8_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem8.ItemClick
TryOpenDirectory(LogConfig.LogDirectory, "Logverzeichnis")
End Sub
Private Sub cmbCustomer_Validating(sender As BaseEdit, e As System.ComponentModel.CancelEventArgs) Handles cmbCustomer.Validating, cmbDocumentKind.Validating, cmbMandator.Validating, cmbYear.Validating
If sender.EditValue Is Nothing Then
sender.ErrorText = "Dieses Feld muss ausgefüllt werden"
Else
sender.ErrorText = ""
End If
End Sub
'Private Sub btnPreviewReport_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnPreviewReport.ItemClick
' Dim oDocument As Document = GetFocusedDocument()
' If oDocument Is Nothing Then
' Exit Sub
' End If
' Dim oReport As New OrderReport()
' Dim oDataSource = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource With {
' .DataSource = New Orders.ReportSource With {
' .Head = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDocument.Data),
' .Positions = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDocument.Data)
' }
' }
' oDataSource.Fill()
' oReport.DataSource = oDataSource
' Dim oReportPrintTool As New ReportPrintTool(oReport)
' oReportPrintTool.ShowPreview()
'End Sub
Private Sub btnReloadDocument_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnReloadDocument.ItemClick
Dim oResult = MsgBox("Wenn sie das Dokument neu laden, werden alle manuell geänderten Wert verworfen. Wollen Sie fortfahren?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, Text)
If oResult = MsgBoxResult.Yes Then
Dim oDocument As Document = GetFocusedDocument()
If oDocument Is Nothing Then
Exit Sub
End If
ShowDocument(oDocument)
End If
End Sub
Private Sub btnDeletePosition_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeletePosition.ItemClick
Dim oPosition = GetFocusedPosition()
If oPosition Is Nothing Then
MsgBox("Bitte wählen Sie eine Position aus!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
Dim oResult = MsgBox($"Wollen Sie die ausgewählte Position Artikel [{oPosition.ArticleNumber}] wirklich löschen?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text)
If oResult = MsgBoxResult.Yes Then
GridViewPositions.DeleteSelectedRows()
MsgBox("Position gelöscht")
End If
End Sub
Private Sub BarButtonItem7_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem7.ItemClick
MsgBox("Mach et!")
End Sub
Private Sub BarButtonItem6_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory
TryOpenDirectory(oUserConfigDirectory.FullName, "Konfigurationsverzeichnis")
End Sub
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -117,26 +117,4 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="ApplicationMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="DevExpress.Data.v19.2" name="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<data name="colSelected.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v19.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHICAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkNoZWNrQ2lyY2xlZCI+DQogICAgPHBhdGggZD0iTTE2
LDRDOS40LDQsNCw5LjQsNCwxNmMwLDYuNiw1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyQzI4LDkuNCwy
Mi42LDQsMTYsNHogTTE0LDIybC02LTZsMi0ybDQsNGw4LThsMiwyICAgTDE0LDIyeiIgY2xhc3M9Ikdy
ZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
</root>

View File

@@ -1,510 +1,3 @@
Imports System.IO
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraEditors
Imports DevExpress.XtraReports.UI
Imports DevExpress.DataAccess.ObjectBinding
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Config
Imports DigitalData.Controls.SQLConfig
Imports DigitalData.GUIs.Common
Imports ImporterShared.Documents
Imports ImporterShared.Winline
Imports ImporterShared.Schemas
Imports ImporterForm.Positions
Imports DevExpress.XtraLayout
Public Class frmMain
Public Class frmMain
Public LogConfig As LogConfig
Public Logger As Logger
Public ConfigManager As ConfigManager(Of ImporterShared.Config)
Public Database As MSSQLServer
Public DocumentLoader As DocumentLoader
Public GridBuilder As GridBuilder
Public PositionData As PositionData
Public Winline As Data
Public WebService As WebService
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
txtVersion.Caption = String.Format(txtVersion.Caption, Application.ProductVersion)
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "EDI Document Importer")
Logger = LogConfig.GetLogger()
Logger.Info("EDI Document Importer, Version [{0}]", Application.ProductVersion)
ConfigManager = New ConfigManager(Of ImporterShared.Config)(LogConfig,
Application.UserAppDataPath,
Application.CommonAppDataPath,
Application.StartupPath)
' 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
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
Winline = New Data(LogConfig, Database, ConfigManager.Config)
WebService = New WebService(LogConfig, ConfigManager.Config)
PositionData = New PositionData(LogConfig, Winline)
' Load WinLine Data
Winline.Mandators.Clear()
Winline.LoadMandators()
Winline.LoadEconomicYears()
Winline.LoadDocumentKinds(Winline.Mandators)
For Each oMandator In Winline.Mandators
Winline.LoadAccounts(oMandator)
Next
' Load data for UI Fields
cmbMandator.Properties.DataSource = Winline.Mandators
cmbYear.Properties.Items.AddRange(Winline.Years)
cmbYear.SelectedItem = ConfigManager.Config.GetYear()
' Initialize Grids
GridBuilder = New GridBuilder(New List(Of GridView) From {GridViewFiles, GridViewPositions})
GridBuilder.WithDefaults()
PositionGrid.LoadPositionViewAndColumns(GridViewPositions, DocumentType.Order)
' Construct classes related to the xml data
DocumentLoader = New DocumentLoader(LogConfig, Winline)
Catch ex As Exception
Logger.Error(ex)
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden der Anwendung")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
End Try
End Sub
#Region "Helpers"
Private Function GetValidationMessage(FieldName As String) As String
Return $"Das Feld '{FieldName}' muss ausgefüllt werden!"
End Function
Private Function GetErrorMessage(pException As Exception, pErrorText As String)
Return $"{pErrorText}:{vbNewLine}{vbNewLine}{pException.Message}"
End Function
Private Function GetFocusedDocument() As Document
Dim oRowHandles = GridViewFiles.GetSelectedRows().ToList()
Dim oDocument As Document = GridViewFiles.GetRow(oRowHandles.First())
Return oDocument
End Function
Private Function GetFocusedPosition() As Position
Dim oRowHandles = GridViewPositions.GetSelectedRows().ToList()
Dim oPosition As Position = GridViewPositions.GetRow(oRowHandles.First())
Return oPosition
End Function
Private Sub TryOpenDirectory(pPath As String, pDisplayName As String)
If Directory.Exists(pPath) Then
Process.Start(pPath)
Else
MsgBox($"{pDisplayName} nicht konfiguriert oder nicht gefunden!", MsgBoxStyle.Exclamation, Text)
End If
End Sub
#End Region
Private Sub btnLoadDocuments_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnLoadDocuments.ItemClick
Try
If DocumentLoader.LoadFiles(ConfigManager.Config.InputDirectory) = True Then
RibbonGroupDataTransmission.Enabled = True
RibbonGroupDocument.Enabled = True
RibbonGroupPositions.Enabled = True
LayoutControlHead.Enabled = True
GridControlPositions.Enabled = True
btnReloadDocument.Enabled = True
GridControlFiles.DataSource = DocumentLoader.Files
txtFilesLoaded.Caption = $"{DocumentLoader.Files.Count} Dokumente geladen"
End If
Catch ex As Exception
Dim oMessage = ex.Message
If ex.InnerException IsNot Nothing Then
oMessage &= vbNewLine & vbNewLine & ex.InnerException.Message
End If
MsgBox(oMessage, 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 oDocument As Document = GridViewFiles.GetRow(e.FocusedRowHandle)
If oDocument Is Nothing Then
Exit Sub
End If
ShowDocument(oDocument)
End Sub
Private Sub ShowDocument(pDocument As Document)
' Load XML File in the sidebar
RichEditXml.LoadDocument(pDocument.FullName, DocumentFormat.PlainText)
If pDocument.Mandator Is Nothing Then
Dim oForm As New frmMandatorSelection() With {
.Mandators = Winline.Mandators,
.SelectedMandator = Nothing
}
Dim oResult = oForm.ShowDialog()
If oResult <> DialogResult.OK Then
Exit Sub
End If
pDocument.Mandator = oForm.SelectedMandator.Id
End If
Try
Select Case pDocument.Type
Case DocumentType.Order
ShowOrderDocument(pDocument)
End Select
Catch ex As Xml.XmlException
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
Catch ex As Exceptions.NoMandatorException
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
Catch ex As Exception
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
End Try
End Sub
Private Sub ShowOrderDocument(pDocument As Document)
If pDocument.Mandator Is Nothing Then
Throw New Exceptions.NoMandatorException("Es konnte kein Mandant gefunden werden")
End If
Dim oData As Orders.Input.MESOWebService = DirectCast(pDocument.Data, Orders.Input.MESOWebService)
Dim oDataOriginal As Orders.Input.MESOWebService = DirectCast(pDocument.DataOriginal, Orders.Input.MESOWebService)
Dim oHead = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oData)
Dim oHeadOriginal = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDataOriginal)
' --- Head Data --------------------------------------------------------------------------------------
' Original, Unreplaced Data
txtCustomerGLN.Text = oHeadOriginal.Fakt_Kontonummer
txtDeliveryAddressGLN.Text = oHeadOriginal.Lief_Kontonummer
' Regular Data from EDI
txtRunningNumber.Text = oHead.Laufnummer
cmbOrderIssuer.Text = oHead.Fakt_Ansprechpartner
txtOrderNumber.Text = oHead.Auftragsreferenz
txtInfoText.Text = oHead.Infotext
Try
dateOrderDate.EditValue = Date.ParseExact(oHead.Datum_AuftragBestellung, "yyyy-MM-dd", Globalization.CultureInfo.InvariantCulture)
Catch ex As Exception
dateOrderDate.EditValue = Nothing
End Try
' --- Find Mandator --------------------------------------------------------------------------------------
Dim oMandator = Winline.Mandators.
Where(Function(m) m.Id = pDocument.Mandator).
SingleOrDefault()
cmbMandator.EditValue = oMandator
' --- Find DocumentKinds ---------------------------------------------------------------------------------
Dim oMandatorKinds = Winline.DocumentKinds.
Where(Function(k) k.Mandator = oMandator.Id).
ToList()
Dim oSelectedKind = oMandatorKinds.
Where(Function(k) k.Id.ToString = oHead.Belegart).
SingleOrDefault()
cmbDocumentKind.Properties.Items.Clear()
cmbDocumentKind.Properties.Items.AddRange(oMandatorKinds)
If oSelectedKind Is Nothing Then
cmbDocumentKind.ErrorText = "Es wurde keine passende Belegart gefunden."
cmbDocumentKind.SelectedItem = Nothing
Else
cmbDocumentKind.SelectedItem = oSelectedKind
End If
' --- Find Accounts --------------------------------------------------------------------------------------
Dim oMandatorAccounts = Winline.Accounts.
Where(Function(a) a.Mandator = oMandator.Id).
ToList()
cmbCustomer.Properties.DataSource = oMandatorAccounts
cmbDeliveryAddress.Properties.DataSource = oMandatorAccounts
' FAKTURA
If oHead.Fakt_Kontonummer = oHeadOriginal.Fakt_Kontonummer Then
cmbCustomer.ErrorText = GetValidationMessage("Faktura Konto")
cmbCustomer.EditValue = Nothing
Else
Dim oMatchingAccounts = oMandatorAccounts.
Where(Function(oAccount) oAccount.Id = oHead.Fakt_Kontonummer)
If oMatchingAccounts.Count() > 1 Then
cmbCustomer.EditValue = Nothing
cmbCustomer.ErrorText = "Für die Kontonummer wurden mehrere Konten gefunden."
ElseIf oMatchingAccounts.Count() = 0 Then
cmbCustomer.EditValue = Nothing
cmbCustomer.ErrorText = "Für die Kontonummer wurde kein Konto gefunden."
Else
cmbCustomer.EditValue = oMatchingAccounts.SingleOrDefault()
End If
End If
' CONTACTS
If cmbCustomer.EditValue IsNot Nothing Then
Dim oContacts = Winline.GetContacts(oHead.Fakt_Kontonummer, oMandator)
cmbOrderIssuer.Properties.DataSource = oContacts
End If
' DEVLIERY
If oHead.Lief_Kontonummer = oHeadOriginal.Lief_Kontonummer Then
If oHeadOriginal.Lief_Kontonummer = String.Empty Then
txtPlace.EditValue = oHeadOriginal.Lief_Ort
txtZIP.EditValue = oHeadOriginal.Lief_PLZ
txtStreetName.EditValue = oHeadOriginal.Lief_Strasse
txtName.EditValue = oHeadOriginal.Lief_Name
Else
cmbDeliveryAddress.ErrorText = GetValidationMessage("Lieferanten Konto")
cmbDeliveryAddress.EditValue = Nothing
End If
Else
Dim oMatchingAccounts = oMandatorAccounts.
Where(Function(oAccount) oAccount.Id = oHead.Lief_Kontonummer)
If oMatchingAccounts.Count() > 1 Then
cmbDeliveryAddress.EditValue = Nothing
cmbDeliveryAddress.ErrorText = "Für die Kontonummer wurden mehrere Konten gefunden."
ElseIf oMatchingAccounts.Count() = 0 Then
cmbDeliveryAddress.EditValue = Nothing
cmbDeliveryAddress.ErrorText = "Für die Kontonummer wurde kein Konto gefunden."
Else
cmbDeliveryAddress.EditValue = oMatchingAccounts.SingleOrDefault()
End If
End If
' --- Find Positions ------------------------------------------------------------------------------------
Dim oPositionList = PositionData.Load(oMandator, oData, oDataOriginal)
GridControlPositions.DataSource = oPositionList
GridViewPositions.BestFitColumns()
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
TryOpenDirectory(ConfigManager.Config.InputDirectory, "Eingangsverzeichnis")
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
TryOpenDirectory(ConfigManager.Config.OutputDirectory, "Ausgangsverzeichnis")
End Sub
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick
Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory
TryOpenDirectory(oUserConfigDirectory.FullName, "Konfigurationsverzeichnis")
End Sub
Private Sub checkShowXml_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles checkShowXml.CheckedChanged
SplitContainerControl3.Collapsed = Not checkShowXml.Checked
End Sub
Private Async Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
Dim oMessageText As String = ""
Dim oMessageStyle As MsgBoxStyle = MsgBoxStyle.Critical
Dim oDocument As Document = GetFocusedDocument()
If oDocument Is Nothing Then
Exit Sub
End If
SplashScreenManager1.ShowWaitForm()
ChangeUIState(False)
Try
Dim oFinalDocument As Document = TransferChangesToDocument(oDocument)
Dim oResult = Await WebService.TransferDocumentToWinLine(oFinalDocument)
oMessageText = "Beleg wurde erfolgreich übertragen!"
oMessageStyle = MsgBoxStyle.Information
Catch ex As Exception
Logger.Error(ex)
oMessageText = $"Fehler beim Übertragen des Dokuments:{vbNewLine}{vbNewLine}{ex.Message}"
oMessageStyle = MsgBoxStyle.Critical
Finally
SplashScreenManager1.CloseWaitForm()
ChangeUIState(True)
MsgBox(oMessageText, oMessageStyle, Text)
End Try
End Sub
Private Sub ChangeUIState(pEnabled As Boolean)
GridControlPositions.Enabled = pEnabled
GridControlFiles.Enabled = pEnabled
LayoutControlHead.Enabled = pEnabled
RibbonGroupDataTransmission.Enabled = pEnabled
RibbonGroupDataLoading.Enabled = pEnabled
RibbonGroupDocument.Enabled = pEnabled
RibbonGroupPositions.Enabled = pEnabled
End Sub
Private Function TransferChangesToDocument(pDocument As Document)
Dim oData As Orders.Input.MESOWebService = pDocument.Data
Try
Orders.Helpers.SetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oData, AddressOf UpdateOrderHead)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
Return pDocument
End Function
Private Function UpdateOrderHead(pObject As Orders.Input.MESOWebServiceEXIMVRG_ordersT025) As Orders.Input.MESOWebServiceEXIMVRG_ordersT025
' Update DocumentKind
If cmbDocumentKind.EditValue IsNot Nothing AndAlso TypeOf cmbDocumentKind.EditValue Is DocumentKind Then
pObject.Belegart = DirectCast(cmbDocumentKind.EditValue, DocumentKind).Id
End If
' Update Talking Person lol
If cmbOrderIssuer.EditValue IsNot Nothing AndAlso TypeOf cmbOrderIssuer.EditValue Is Contact Then
pObject.Fakt_Ansprechpartner = DirectCast(cmbOrderIssuer.EditValue, Contact).Id
End If
' Update Delivery Address
If cmbDeliveryAddress.EditValue IsNot Nothing AndAlso TypeOf cmbDeliveryAddress.EditValue Is Account Then
pObject.Lief_Kontonummer = DirectCast(cmbDeliveryAddress.EditValue, Account)?.Id
End If
' Update Order Number
If txtOrderNumber.EditValue IsNot Nothing AndAlso txtOrderNumber.EditValue <> String.Empty Then
pObject.Auftragsreferenz = txtOrderNumber.EditValue
End If
' Update Order Date
If dateOrderDate IsNot Nothing Then
pObject.Datum_AuftragBestellung = DirectCast(dateOrderDate.EditValue, Date).ToString("yyyy-MM-dd")
End If
' Update Extra Address
pObject.Lief_Name = txtName.EditValue
pObject.Lief_Ort = txtPlace.EditValue
pObject.Lief_PLZ = txtZIP.EditValue
pObject.Lief_Strasse = txtStreetName.EditValue
Return pObject
End Function
Private Sub BarButtonItem8_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem8.ItemClick
TryOpenDirectory(LogConfig.LogDirectory, "Logverzeichnis")
End Sub
Private Sub cmbCustomer_Validating(sender As BaseEdit, e As System.ComponentModel.CancelEventArgs) Handles cmbCustomer.Validating, cmbDocumentKind.Validating, cmbMandator.Validating, cmbYear.Validating
If sender.EditValue Is Nothing Then
sender.ErrorText = "Dieses Feld muss ausgefüllt werden"
Else
sender.ErrorText = ""
End If
End Sub
Private Sub btnPreviewReport_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnPreviewReport.ItemClick
Dim oDocument As Document = GetFocusedDocument()
If oDocument Is Nothing Then
Exit Sub
End If
Dim oReport As New OrderReport()
Dim oDataSource = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource With {
.DataSource = New Orders.ReportSource With {
.Head = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDocument.Data),
.Positions = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDocument.Data)
}
}
oDataSource.Fill()
oReport.DataSource = oDataSource
Dim oReportPrintTool As New ReportPrintTool(oReport)
oReportPrintTool.ShowPreview()
End Sub
Private Sub btnReloadDocument_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnReloadDocument.ItemClick
Dim oResult = MsgBox("Wenn sie das Dokument neu laden, werden alle manuell geänderten Wert verworfen. Wollen Sie fortfahren?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, Text)
If oResult = MsgBoxResult.Yes Then
Dim oDocument As Document = GetFocusedDocument()
If oDocument Is Nothing Then
Exit Sub
End If
ShowDocument(oDocument)
End If
End Sub
Private Sub btnDeletePosition_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeletePosition.ItemClick
Dim oPosition = GetFocusedPosition()
If oPosition Is Nothing Then
MsgBox("Bitte wählen Sie eine Position aus!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
Dim oResult = MsgBox($"Wollen Sie die ausgewählte Position Artikel [{oPosition.ArticleNumber}] wirklich löschen?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text)
If oResult = MsgBoxResult.Yes Then
GridViewPositions.DeleteSelectedRows()
MsgBox("Position gelöscht")
End If
End Sub
Private Sub BarButtonItem7_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem7.ItemClick
MsgBox("Mach et!")
End Sub
Private Sub BarButtonItem6_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory
TryOpenDirectory(oUserConfigDirectory.FullName, "Konfigurationsverzeichnis")
End Sub
End Class