ADMIN UsrParam, DHF Import
This commit is contained in:
@@ -24,17 +24,8 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Private Sub InitializeComponent()
|
Private Sub InitializeComponent()
|
||||||
Me.components = New System.ComponentModel.Container()
|
Me.components = New System.ComponentModel.Container()
|
||||||
Me.SplitContainer = New System.Windows.Forms.SplitContainer()
|
Me.SplitContainer = New System.Windows.Forms.SplitContainer()
|
||||||
Me.MyFlowLayoutPanel1 = New VERAG_PROG_ALLGEMEIN.MyFlowLayoutPanel(Me.components)
|
|
||||||
Me.btnAllgemein = New System.Windows.Forms.Button()
|
|
||||||
Me.btnAdressen = New System.Windows.Forms.Button()
|
|
||||||
Me.btnAktiveVeredelung = New System.Windows.Forms.Button()
|
|
||||||
Me.btnPositionen = New System.Windows.Forms.Button()
|
|
||||||
Me.btnDV1 = New System.Windows.Forms.Button()
|
|
||||||
Me.Button5 = New System.Windows.Forms.Button()
|
|
||||||
Me.pnl = New System.Windows.Forms.Panel()
|
Me.pnl = New System.Windows.Forms.Panel()
|
||||||
Me.Label6 = New System.Windows.Forms.Label()
|
Me.Label6 = New System.Windows.Forms.Label()
|
||||||
Me.cboDakosyAction = New VERAG_PROG_ALLGEMEIN.MyComboBox()
|
|
||||||
Me.cboStammreferenz = New VERAG_PROG_ALLGEMEIN.MyComboBox()
|
|
||||||
Me.Button1 = New System.Windows.Forms.Button()
|
Me.Button1 = New System.Windows.Forms.Button()
|
||||||
Me.Label4 = New System.Windows.Forms.Label()
|
Me.Label4 = New System.Windows.Forms.Label()
|
||||||
Me.Label5 = New System.Windows.Forms.Label()
|
Me.Label5 = New System.Windows.Forms.Label()
|
||||||
@@ -56,17 +47,27 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.DateiimportToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
Me.DateiimportToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.DynamicAutomotiveXLSToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
Me.DynamicAutomotiveXLSToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.GEZEXLSXToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
Me.GEZEXLSXToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
|
Me.MEYLEXLSXToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem()
|
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.EZAIDToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
Me.EZAIDToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
Me.MEYLEXLSXToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
Me.FressnapToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||||
|
Me.MyFlowLayoutPanel1 = New VERAG_PROG_ALLGEMEIN.MyFlowLayoutPanel(Me.components)
|
||||||
|
Me.btnAllgemein = New System.Windows.Forms.Button()
|
||||||
|
Me.btnAdressen = New System.Windows.Forms.Button()
|
||||||
|
Me.btnAktiveVeredelung = New System.Windows.Forms.Button()
|
||||||
|
Me.btnPositionen = New System.Windows.Forms.Button()
|
||||||
|
Me.btnDV1 = New System.Windows.Forms.Button()
|
||||||
|
Me.Button5 = New System.Windows.Forms.Button()
|
||||||
|
Me.cboDakosyAction = New VERAG_PROG_ALLGEMEIN.MyComboBox()
|
||||||
|
Me.cboStammreferenz = New VERAG_PROG_ALLGEMEIN.MyComboBox()
|
||||||
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
Me.SplitContainer.Panel1.SuspendLayout()
|
Me.SplitContainer.Panel1.SuspendLayout()
|
||||||
Me.SplitContainer.SuspendLayout()
|
Me.SplitContainer.SuspendLayout()
|
||||||
Me.MyFlowLayoutPanel1.SuspendLayout()
|
|
||||||
Me.pnl.SuspendLayout()
|
Me.pnl.SuspendLayout()
|
||||||
Me.cntxtBezugsnr.SuspendLayout()
|
Me.cntxtBezugsnr.SuspendLayout()
|
||||||
Me.Panel1.SuspendLayout()
|
Me.Panel1.SuspendLayout()
|
||||||
Me.MenuStrip.SuspendLayout()
|
Me.MenuStrip.SuspendLayout()
|
||||||
|
Me.MyFlowLayoutPanel1.SuspendLayout()
|
||||||
Me.SuspendLayout()
|
Me.SuspendLayout()
|
||||||
'
|
'
|
||||||
'SplitContainer
|
'SplitContainer
|
||||||
@@ -92,128 +93,6 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.SplitContainer.SplitterWidth = 1
|
Me.SplitContainer.SplitterWidth = 1
|
||||||
Me.SplitContainer.TabIndex = 0
|
Me.SplitContainer.TabIndex = 0
|
||||||
'
|
'
|
||||||
'MyFlowLayoutPanel1
|
|
||||||
'
|
|
||||||
Me.MyFlowLayoutPanel1.BackColor = System.Drawing.Color.WhiteSmoke
|
|
||||||
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnAllgemein)
|
|
||||||
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnAdressen)
|
|
||||||
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnAktiveVeredelung)
|
|
||||||
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnPositionen)
|
|
||||||
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnDV1)
|
|
||||||
Me.MyFlowLayoutPanel1.Controls.Add(Me.Button5)
|
|
||||||
Me.MyFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill
|
|
||||||
Me.MyFlowLayoutPanel1.Location = New System.Drawing.Point(0, 0)
|
|
||||||
Me.MyFlowLayoutPanel1.Margin = New System.Windows.Forms.Padding(1)
|
|
||||||
Me.MyFlowLayoutPanel1.Name = "MyFlowLayoutPanel1"
|
|
||||||
Me.MyFlowLayoutPanel1.Size = New System.Drawing.Size(573, 72)
|
|
||||||
Me.MyFlowLayoutPanel1.TabIndex = 0
|
|
||||||
'
|
|
||||||
'btnAllgemein
|
|
||||||
'
|
|
||||||
Me.btnAllgemein.BackColor = System.Drawing.Color.SteelBlue
|
|
||||||
Me.btnAllgemein.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
|
||||||
Me.btnAllgemein.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnAllgemein.ForeColor = System.Drawing.SystemColors.ControlLightLight
|
|
||||||
Me.btnAllgemein.Image = Global.SDL.My.Resources.Resources.android_note12
|
|
||||||
Me.btnAllgemein.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
|
||||||
Me.btnAllgemein.Location = New System.Drawing.Point(2, 2)
|
|
||||||
Me.btnAllgemein.Margin = New System.Windows.Forms.Padding(2)
|
|
||||||
Me.btnAllgemein.Name = "btnAllgemein"
|
|
||||||
Me.btnAllgemein.Padding = New System.Windows.Forms.Padding(0, 12, 0, 3)
|
|
||||||
Me.btnAllgemein.Size = New System.Drawing.Size(75, 67)
|
|
||||||
Me.btnAllgemein.TabIndex = 0
|
|
||||||
Me.btnAllgemein.Text = "Allgemein"
|
|
||||||
Me.btnAllgemein.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
|
||||||
Me.btnAllgemein.UseVisualStyleBackColor = False
|
|
||||||
'
|
|
||||||
'btnAdressen
|
|
||||||
'
|
|
||||||
Me.btnAdressen.BackColor = System.Drawing.Color.White
|
|
||||||
Me.btnAdressen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
|
||||||
Me.btnAdressen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnAdressen.Image = Global.SDL.My.Resources.Resources.house1
|
|
||||||
Me.btnAdressen.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
|
||||||
Me.btnAdressen.Location = New System.Drawing.Point(81, 2)
|
|
||||||
Me.btnAdressen.Margin = New System.Windows.Forms.Padding(2)
|
|
||||||
Me.btnAdressen.Name = "btnAdressen"
|
|
||||||
Me.btnAdressen.Padding = New System.Windows.Forms.Padding(0, 0, 0, 3)
|
|
||||||
Me.btnAdressen.Size = New System.Drawing.Size(75, 67)
|
|
||||||
Me.btnAdressen.TabIndex = 1
|
|
||||||
Me.btnAdressen.Text = "Adressen"
|
|
||||||
Me.btnAdressen.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
|
||||||
Me.btnAdressen.UseVisualStyleBackColor = False
|
|
||||||
'
|
|
||||||
'btnAktiveVeredelung
|
|
||||||
'
|
|
||||||
Me.btnAktiveVeredelung.BackColor = System.Drawing.Color.White
|
|
||||||
Me.btnAktiveVeredelung.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
|
||||||
Me.btnAktiveVeredelung.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnAktiveVeredelung.Image = Global.SDL.My.Resources.Resources.aktiveVeredelung1
|
|
||||||
Me.btnAktiveVeredelung.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
|
||||||
Me.btnAktiveVeredelung.Location = New System.Drawing.Point(160, 2)
|
|
||||||
Me.btnAktiveVeredelung.Margin = New System.Windows.Forms.Padding(2)
|
|
||||||
Me.btnAktiveVeredelung.Name = "btnAktiveVeredelung"
|
|
||||||
Me.btnAktiveVeredelung.Padding = New System.Windows.Forms.Padding(0, 6, 0, 3)
|
|
||||||
Me.btnAktiveVeredelung.Size = New System.Drawing.Size(94, 67)
|
|
||||||
Me.btnAktiveVeredelung.TabIndex = 3
|
|
||||||
Me.btnAktiveVeredelung.Text = "Pass. Veredel."
|
|
||||||
Me.btnAktiveVeredelung.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
|
||||||
Me.btnAktiveVeredelung.UseVisualStyleBackColor = False
|
|
||||||
Me.btnAktiveVeredelung.Visible = False
|
|
||||||
'
|
|
||||||
'btnPositionen
|
|
||||||
'
|
|
||||||
Me.btnPositionen.BackColor = System.Drawing.Color.White
|
|
||||||
Me.btnPositionen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
|
||||||
Me.btnPositionen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnPositionen.Image = Global.SDL.My.Resources.Resources.list_new_small2
|
|
||||||
Me.btnPositionen.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
|
||||||
Me.btnPositionen.Location = New System.Drawing.Point(258, 2)
|
|
||||||
Me.btnPositionen.Margin = New System.Windows.Forms.Padding(2)
|
|
||||||
Me.btnPositionen.Name = "btnPositionen"
|
|
||||||
Me.btnPositionen.Padding = New System.Windows.Forms.Padding(0, 0, 0, 3)
|
|
||||||
Me.btnPositionen.Size = New System.Drawing.Size(81, 67)
|
|
||||||
Me.btnPositionen.TabIndex = 4
|
|
||||||
Me.btnPositionen.Text = "Positionen"
|
|
||||||
Me.btnPositionen.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
|
||||||
Me.btnPositionen.UseVisualStyleBackColor = False
|
|
||||||
'
|
|
||||||
'btnDV1
|
|
||||||
'
|
|
||||||
Me.btnDV1.BackColor = System.Drawing.Color.White
|
|
||||||
Me.btnDV1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
|
||||||
Me.btnDV1.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.btnDV1.Image = Global.SDL.My.Resources.Resources.moneybag1
|
|
||||||
Me.btnDV1.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
|
||||||
Me.btnDV1.Location = New System.Drawing.Point(343, 2)
|
|
||||||
Me.btnDV1.Margin = New System.Windows.Forms.Padding(2)
|
|
||||||
Me.btnDV1.Name = "btnDV1"
|
|
||||||
Me.btnDV1.Padding = New System.Windows.Forms.Padding(0, 2, 0, 3)
|
|
||||||
Me.btnDV1.Size = New System.Drawing.Size(94, 67)
|
|
||||||
Me.btnDV1.TabIndex = 6
|
|
||||||
Me.btnDV1.Text = "D.V.1"
|
|
||||||
Me.btnDV1.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
|
||||||
Me.btnDV1.UseVisualStyleBackColor = False
|
|
||||||
Me.btnDV1.Visible = False
|
|
||||||
'
|
|
||||||
'Button5
|
|
||||||
'
|
|
||||||
Me.Button5.BackColor = System.Drawing.Color.White
|
|
||||||
Me.Button5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
|
||||||
Me.Button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.Button5.Image = Global.SDL.My.Resources.Resources.android_note12
|
|
||||||
Me.Button5.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
|
||||||
Me.Button5.Location = New System.Drawing.Point(441, 2)
|
|
||||||
Me.Button5.Margin = New System.Windows.Forms.Padding(2)
|
|
||||||
Me.Button5.Name = "Button5"
|
|
||||||
Me.Button5.Padding = New System.Windows.Forms.Padding(0, 12, 0, 3)
|
|
||||||
Me.Button5.Size = New System.Drawing.Size(81, 67)
|
|
||||||
Me.Button5.TabIndex = 5
|
|
||||||
Me.Button5.Text = "Referenzen"
|
|
||||||
Me.Button5.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
|
||||||
Me.Button5.UseVisualStyleBackColor = False
|
|
||||||
Me.Button5.Visible = False
|
|
||||||
'
|
|
||||||
'pnl
|
'pnl
|
||||||
'
|
'
|
||||||
Me.pnl.BackColor = System.Drawing.Color.WhiteSmoke
|
Me.pnl.BackColor = System.Drawing.Color.WhiteSmoke
|
||||||
@@ -242,35 +121,6 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.Label6.Text = "Stammref.:"
|
Me.Label6.Text = "Stammref.:"
|
||||||
Me.Label6.TextAlign = System.Drawing.ContentAlignment.TopRight
|
Me.Label6.TextAlign = System.Drawing.ContentAlignment.TopRight
|
||||||
'
|
'
|
||||||
'cboDakosyAction
|
|
||||||
'
|
|
||||||
Me.cboDakosyAction._allowedValuesFreiText = Nothing
|
|
||||||
Me.cboDakosyAction._allowFreiText = False
|
|
||||||
Me.cboDakosyAction._value = ""
|
|
||||||
Me.cboDakosyAction.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
|
||||||
Me.cboDakosyAction.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
|
|
||||||
Me.cboDakosyAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
|
||||||
Me.cboDakosyAction.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.cboDakosyAction.FormattingEnabled = True
|
|
||||||
Me.cboDakosyAction.Location = New System.Drawing.Point(200, 48)
|
|
||||||
Me.cboDakosyAction.Name = "cboDakosyAction"
|
|
||||||
Me.cboDakosyAction.Size = New System.Drawing.Size(158, 21)
|
|
||||||
Me.cboDakosyAction.TabIndex = 1
|
|
||||||
'
|
|
||||||
'cboStammreferenz
|
|
||||||
'
|
|
||||||
Me.cboStammreferenz._allowedValuesFreiText = Nothing
|
|
||||||
Me.cboStammreferenz._allowFreiText = True
|
|
||||||
Me.cboStammreferenz._value = ""
|
|
||||||
Me.cboStammreferenz.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
|
|
||||||
Me.cboStammreferenz.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
|
||||||
Me.cboStammreferenz.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
|
||||||
Me.cboStammreferenz.FormattingEnabled = True
|
|
||||||
Me.cboStammreferenz.Location = New System.Drawing.Point(71, 48)
|
|
||||||
Me.cboStammreferenz.Name = "cboStammreferenz"
|
|
||||||
Me.cboStammreferenz.Size = New System.Drawing.Size(129, 21)
|
|
||||||
Me.cboStammreferenz.TabIndex = 13
|
|
||||||
'
|
|
||||||
'Button1
|
'Button1
|
||||||
'
|
'
|
||||||
Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
@@ -445,7 +295,7 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
'
|
'
|
||||||
'DateiimportToolStripMenuItem
|
'DateiimportToolStripMenuItem
|
||||||
'
|
'
|
||||||
Me.DateiimportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DynamicAutomotiveXLSToolStripMenuItem, Me.GEZEXLSXToolStripMenuItem, Me.MEYLEXLSXToolStripMenuItem})
|
Me.DateiimportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DynamicAutomotiveXLSToolStripMenuItem, Me.GEZEXLSXToolStripMenuItem, Me.MEYLEXLSXToolStripMenuItem, Me.FressnapToolStripMenuItem})
|
||||||
Me.DateiimportToolStripMenuItem.Name = "DateiimportToolStripMenuItem"
|
Me.DateiimportToolStripMenuItem.Name = "DateiimportToolStripMenuItem"
|
||||||
Me.DateiimportToolStripMenuItem.Size = New System.Drawing.Size(87, 20)
|
Me.DateiimportToolStripMenuItem.Size = New System.Drawing.Size(87, 20)
|
||||||
Me.DateiimportToolStripMenuItem.Text = "Datei-Import"
|
Me.DateiimportToolStripMenuItem.Text = "Datei-Import"
|
||||||
@@ -462,6 +312,12 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.GEZEXLSXToolStripMenuItem.Size = New System.Drawing.Size(224, 22)
|
Me.GEZEXLSXToolStripMenuItem.Size = New System.Drawing.Size(224, 22)
|
||||||
Me.GEZEXLSXToolStripMenuItem.Text = "GEZE (XLSX)"
|
Me.GEZEXLSXToolStripMenuItem.Text = "GEZE (XLSX)"
|
||||||
'
|
'
|
||||||
|
'MEYLEXLSXToolStripMenuItem
|
||||||
|
'
|
||||||
|
Me.MEYLEXLSXToolStripMenuItem.Name = "MEYLEXLSXToolStripMenuItem"
|
||||||
|
Me.MEYLEXLSXToolStripMenuItem.Size = New System.Drawing.Size(224, 22)
|
||||||
|
Me.MEYLEXLSXToolStripMenuItem.Text = "MEYLE (XLSX)"
|
||||||
|
'
|
||||||
'ToolStripMenuItem1
|
'ToolStripMenuItem1
|
||||||
'
|
'
|
||||||
Me.ToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.EZAIDToolStripMenuItem})
|
Me.ToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.EZAIDToolStripMenuItem})
|
||||||
@@ -475,11 +331,162 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.EZAIDToolStripMenuItem.Size = New System.Drawing.Size(109, 22)
|
Me.EZAIDToolStripMenuItem.Size = New System.Drawing.Size(109, 22)
|
||||||
Me.EZAIDToolStripMenuItem.Text = "EZA ID"
|
Me.EZAIDToolStripMenuItem.Text = "EZA ID"
|
||||||
'
|
'
|
||||||
'MEYLEXLSXToolStripMenuItem
|
'FressnapToolStripMenuItem
|
||||||
'
|
'
|
||||||
Me.MEYLEXLSXToolStripMenuItem.Name = "MEYLEXLSXToolStripMenuItem"
|
Me.FressnapToolStripMenuItem.Name = "FressnapToolStripMenuItem"
|
||||||
Me.MEYLEXLSXToolStripMenuItem.Size = New System.Drawing.Size(224, 22)
|
Me.FressnapToolStripMenuItem.Size = New System.Drawing.Size(224, 22)
|
||||||
Me.MEYLEXLSXToolStripMenuItem.Text = "MEYLE (XLSX)"
|
Me.FressnapToolStripMenuItem.Text = "Fressnapf (XLSX)"
|
||||||
|
'
|
||||||
|
'MyFlowLayoutPanel1
|
||||||
|
'
|
||||||
|
Me.MyFlowLayoutPanel1.BackColor = System.Drawing.Color.WhiteSmoke
|
||||||
|
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnAllgemein)
|
||||||
|
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnAdressen)
|
||||||
|
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnAktiveVeredelung)
|
||||||
|
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnPositionen)
|
||||||
|
Me.MyFlowLayoutPanel1.Controls.Add(Me.btnDV1)
|
||||||
|
Me.MyFlowLayoutPanel1.Controls.Add(Me.Button5)
|
||||||
|
Me.MyFlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||||
|
Me.MyFlowLayoutPanel1.Location = New System.Drawing.Point(0, 0)
|
||||||
|
Me.MyFlowLayoutPanel1.Margin = New System.Windows.Forms.Padding(1)
|
||||||
|
Me.MyFlowLayoutPanel1.Name = "MyFlowLayoutPanel1"
|
||||||
|
Me.MyFlowLayoutPanel1.Size = New System.Drawing.Size(573, 72)
|
||||||
|
Me.MyFlowLayoutPanel1.TabIndex = 0
|
||||||
|
'
|
||||||
|
'btnAllgemein
|
||||||
|
'
|
||||||
|
Me.btnAllgemein.BackColor = System.Drawing.Color.SteelBlue
|
||||||
|
Me.btnAllgemein.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
||||||
|
Me.btnAllgemein.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnAllgemein.ForeColor = System.Drawing.SystemColors.ControlLightLight
|
||||||
|
Me.btnAllgemein.Image = Global.SDL.My.Resources.Resources.android_note12
|
||||||
|
Me.btnAllgemein.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
||||||
|
Me.btnAllgemein.Location = New System.Drawing.Point(2, 2)
|
||||||
|
Me.btnAllgemein.Margin = New System.Windows.Forms.Padding(2)
|
||||||
|
Me.btnAllgemein.Name = "btnAllgemein"
|
||||||
|
Me.btnAllgemein.Padding = New System.Windows.Forms.Padding(0, 12, 0, 3)
|
||||||
|
Me.btnAllgemein.Size = New System.Drawing.Size(75, 67)
|
||||||
|
Me.btnAllgemein.TabIndex = 0
|
||||||
|
Me.btnAllgemein.Text = "Allgemein"
|
||||||
|
Me.btnAllgemein.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
||||||
|
Me.btnAllgemein.UseVisualStyleBackColor = False
|
||||||
|
'
|
||||||
|
'btnAdressen
|
||||||
|
'
|
||||||
|
Me.btnAdressen.BackColor = System.Drawing.Color.White
|
||||||
|
Me.btnAdressen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
||||||
|
Me.btnAdressen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnAdressen.Image = Global.SDL.My.Resources.Resources.house1
|
||||||
|
Me.btnAdressen.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
||||||
|
Me.btnAdressen.Location = New System.Drawing.Point(81, 2)
|
||||||
|
Me.btnAdressen.Margin = New System.Windows.Forms.Padding(2)
|
||||||
|
Me.btnAdressen.Name = "btnAdressen"
|
||||||
|
Me.btnAdressen.Padding = New System.Windows.Forms.Padding(0, 0, 0, 3)
|
||||||
|
Me.btnAdressen.Size = New System.Drawing.Size(75, 67)
|
||||||
|
Me.btnAdressen.TabIndex = 1
|
||||||
|
Me.btnAdressen.Text = "Adressen"
|
||||||
|
Me.btnAdressen.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
||||||
|
Me.btnAdressen.UseVisualStyleBackColor = False
|
||||||
|
'
|
||||||
|
'btnAktiveVeredelung
|
||||||
|
'
|
||||||
|
Me.btnAktiveVeredelung.BackColor = System.Drawing.Color.White
|
||||||
|
Me.btnAktiveVeredelung.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
||||||
|
Me.btnAktiveVeredelung.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnAktiveVeredelung.Image = Global.SDL.My.Resources.Resources.aktiveVeredelung1
|
||||||
|
Me.btnAktiveVeredelung.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
||||||
|
Me.btnAktiveVeredelung.Location = New System.Drawing.Point(160, 2)
|
||||||
|
Me.btnAktiveVeredelung.Margin = New System.Windows.Forms.Padding(2)
|
||||||
|
Me.btnAktiveVeredelung.Name = "btnAktiveVeredelung"
|
||||||
|
Me.btnAktiveVeredelung.Padding = New System.Windows.Forms.Padding(0, 6, 0, 3)
|
||||||
|
Me.btnAktiveVeredelung.Size = New System.Drawing.Size(94, 67)
|
||||||
|
Me.btnAktiveVeredelung.TabIndex = 3
|
||||||
|
Me.btnAktiveVeredelung.Text = "Pass. Veredel."
|
||||||
|
Me.btnAktiveVeredelung.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
||||||
|
Me.btnAktiveVeredelung.UseVisualStyleBackColor = False
|
||||||
|
Me.btnAktiveVeredelung.Visible = False
|
||||||
|
'
|
||||||
|
'btnPositionen
|
||||||
|
'
|
||||||
|
Me.btnPositionen.BackColor = System.Drawing.Color.White
|
||||||
|
Me.btnPositionen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
||||||
|
Me.btnPositionen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnPositionen.Image = Global.SDL.My.Resources.Resources.list_new_small2
|
||||||
|
Me.btnPositionen.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
||||||
|
Me.btnPositionen.Location = New System.Drawing.Point(258, 2)
|
||||||
|
Me.btnPositionen.Margin = New System.Windows.Forms.Padding(2)
|
||||||
|
Me.btnPositionen.Name = "btnPositionen"
|
||||||
|
Me.btnPositionen.Padding = New System.Windows.Forms.Padding(0, 0, 0, 3)
|
||||||
|
Me.btnPositionen.Size = New System.Drawing.Size(81, 67)
|
||||||
|
Me.btnPositionen.TabIndex = 4
|
||||||
|
Me.btnPositionen.Text = "Positionen"
|
||||||
|
Me.btnPositionen.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
||||||
|
Me.btnPositionen.UseVisualStyleBackColor = False
|
||||||
|
'
|
||||||
|
'btnDV1
|
||||||
|
'
|
||||||
|
Me.btnDV1.BackColor = System.Drawing.Color.White
|
||||||
|
Me.btnDV1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
||||||
|
Me.btnDV1.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.btnDV1.Image = Global.SDL.My.Resources.Resources.moneybag1
|
||||||
|
Me.btnDV1.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
||||||
|
Me.btnDV1.Location = New System.Drawing.Point(343, 2)
|
||||||
|
Me.btnDV1.Margin = New System.Windows.Forms.Padding(2)
|
||||||
|
Me.btnDV1.Name = "btnDV1"
|
||||||
|
Me.btnDV1.Padding = New System.Windows.Forms.Padding(0, 2, 0, 3)
|
||||||
|
Me.btnDV1.Size = New System.Drawing.Size(94, 67)
|
||||||
|
Me.btnDV1.TabIndex = 6
|
||||||
|
Me.btnDV1.Text = "D.V.1"
|
||||||
|
Me.btnDV1.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
||||||
|
Me.btnDV1.UseVisualStyleBackColor = False
|
||||||
|
Me.btnDV1.Visible = False
|
||||||
|
'
|
||||||
|
'Button5
|
||||||
|
'
|
||||||
|
Me.Button5.BackColor = System.Drawing.Color.White
|
||||||
|
Me.Button5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
|
||||||
|
Me.Button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.Button5.Image = Global.SDL.My.Resources.Resources.android_note12
|
||||||
|
Me.Button5.ImageAlign = System.Drawing.ContentAlignment.TopCenter
|
||||||
|
Me.Button5.Location = New System.Drawing.Point(441, 2)
|
||||||
|
Me.Button5.Margin = New System.Windows.Forms.Padding(2)
|
||||||
|
Me.Button5.Name = "Button5"
|
||||||
|
Me.Button5.Padding = New System.Windows.Forms.Padding(0, 12, 0, 3)
|
||||||
|
Me.Button5.Size = New System.Drawing.Size(81, 67)
|
||||||
|
Me.Button5.TabIndex = 5
|
||||||
|
Me.Button5.Text = "Referenzen"
|
||||||
|
Me.Button5.TextAlign = System.Drawing.ContentAlignment.BottomCenter
|
||||||
|
Me.Button5.UseVisualStyleBackColor = False
|
||||||
|
Me.Button5.Visible = False
|
||||||
|
'
|
||||||
|
'cboDakosyAction
|
||||||
|
'
|
||||||
|
Me.cboDakosyAction._allowedValuesFreiText = Nothing
|
||||||
|
Me.cboDakosyAction._allowFreiText = False
|
||||||
|
Me.cboDakosyAction._value = ""
|
||||||
|
Me.cboDakosyAction.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||||
|
Me.cboDakosyAction.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
|
||||||
|
Me.cboDakosyAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||||
|
Me.cboDakosyAction.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.cboDakosyAction.FormattingEnabled = True
|
||||||
|
Me.cboDakosyAction.Location = New System.Drawing.Point(200, 48)
|
||||||
|
Me.cboDakosyAction.Name = "cboDakosyAction"
|
||||||
|
Me.cboDakosyAction.Size = New System.Drawing.Size(158, 21)
|
||||||
|
Me.cboDakosyAction.TabIndex = 1
|
||||||
|
'
|
||||||
|
'cboStammreferenz
|
||||||
|
'
|
||||||
|
Me.cboStammreferenz._allowedValuesFreiText = Nothing
|
||||||
|
Me.cboStammreferenz._allowFreiText = True
|
||||||
|
Me.cboStammreferenz._value = ""
|
||||||
|
Me.cboStammreferenz.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
|
||||||
|
Me.cboStammreferenz.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||||
|
Me.cboStammreferenz.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||||
|
Me.cboStammreferenz.FormattingEnabled = True
|
||||||
|
Me.cboStammreferenz.Location = New System.Drawing.Point(71, 48)
|
||||||
|
Me.cboStammreferenz.Name = "cboStammreferenz"
|
||||||
|
Me.cboStammreferenz.Size = New System.Drawing.Size(129, 21)
|
||||||
|
Me.cboStammreferenz.TabIndex = 13
|
||||||
'
|
'
|
||||||
'usrCntlATLAS_EZA
|
'usrCntlATLAS_EZA
|
||||||
'
|
'
|
||||||
@@ -493,7 +500,6 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.SplitContainer.Panel1.ResumeLayout(False)
|
Me.SplitContainer.Panel1.ResumeLayout(False)
|
||||||
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).EndInit()
|
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).EndInit()
|
||||||
Me.SplitContainer.ResumeLayout(False)
|
Me.SplitContainer.ResumeLayout(False)
|
||||||
Me.MyFlowLayoutPanel1.ResumeLayout(False)
|
|
||||||
Me.pnl.ResumeLayout(False)
|
Me.pnl.ResumeLayout(False)
|
||||||
Me.pnl.PerformLayout()
|
Me.pnl.PerformLayout()
|
||||||
Me.cntxtBezugsnr.ResumeLayout(False)
|
Me.cntxtBezugsnr.ResumeLayout(False)
|
||||||
@@ -501,6 +507,7 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Me.Panel1.PerformLayout()
|
Me.Panel1.PerformLayout()
|
||||||
Me.MenuStrip.ResumeLayout(False)
|
Me.MenuStrip.ResumeLayout(False)
|
||||||
Me.MenuStrip.PerformLayout()
|
Me.MenuStrip.PerformLayout()
|
||||||
|
Me.MyFlowLayoutPanel1.ResumeLayout(False)
|
||||||
Me.ResumeLayout(False)
|
Me.ResumeLayout(False)
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
@@ -540,4 +547,5 @@ Partial Class usrCntlATLAS_EZA
|
|||||||
Friend WithEvents XMLExampleToolStripMenuItem As ToolStripMenuItem
|
Friend WithEvents XMLExampleToolStripMenuItem As ToolStripMenuItem
|
||||||
Friend WithEvents GEZEXLSXToolStripMenuItem As ToolStripMenuItem
|
Friend WithEvents GEZEXLSXToolStripMenuItem As ToolStripMenuItem
|
||||||
Friend WithEvents MEYLEXLSXToolStripMenuItem As ToolStripMenuItem
|
Friend WithEvents MEYLEXLSXToolStripMenuItem As ToolStripMenuItem
|
||||||
|
Friend WithEvents FressnapToolStripMenuItem As ToolStripMenuItem
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
@@ -1428,24 +1428,7 @@ Public Class usrCntlATLAS_EZA
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|
||||||
Private Function ToDoubleSafe(o As Object) As Double
|
|
||||||
If o Is Nothing OrElse IsDBNull(o) Then Return 0
|
|
||||||
|
|
||||||
' Direkte Numerik
|
|
||||||
If TypeOf o Is Double Then Return DirectCast(o, Double)
|
|
||||||
If TypeOf o Is Decimal Then Return Convert.ToDouble(o)
|
|
||||||
If TypeOf o Is Integer OrElse TypeOf o Is Int64 OrElse TypeOf o Is Int16 Then Return Convert.ToDouble(o)
|
|
||||||
|
|
||||||
' String-Fälle (leer, deutsch, englisch)
|
|
||||||
Dim s = o.ToString().Trim()
|
|
||||||
If s = "" Then Return 0
|
|
||||||
|
|
||||||
Dim v As Double
|
|
||||||
If Double.TryParse(s, NumberStyles.Any, CultureInfo.CurrentCulture, v) Then Return v
|
|
||||||
If Double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, v) Then Return v
|
|
||||||
|
|
||||||
Return 0 ' Notfalls 0
|
|
||||||
End Function
|
|
||||||
|
|
||||||
Private Sub pnl_Paint_1(sender As Object, e As PaintEventArgs) Handles pnl.Paint
|
Private Sub pnl_Paint_1(sender As Object, e As PaintEventArgs) Handles pnl.Paint
|
||||||
|
|
||||||
@@ -1497,5 +1480,309 @@ Public Class usrCntlATLAS_EZA
|
|||||||
Private Sub MEYLEXLSXToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MEYLEXLSXToolStripMenuItem.Click
|
Private Sub MEYLEXLSXToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MEYLEXLSXToolStripMenuItem.Click
|
||||||
importExcel_MEYLE()
|
importExcel_MEYLE()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub FressnapToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FressnapToolStripMenuItem.Click
|
||||||
|
|
||||||
|
importExcel_Fressnapf()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Function importExcel_Fressnapf() As Boolean
|
||||||
|
Dim fd As New OpenFileDialog With {
|
||||||
|
.Filter = "Excel Dateien|*.xls;*.xlsx",
|
||||||
|
.Multiselect = True,
|
||||||
|
.Title = "Bitte eine oder mehrere Excel-Dateien auswählen"
|
||||||
|
}
|
||||||
|
|
||||||
|
If fd.ShowDialog() <> DialogResult.OK Then
|
||||||
|
Me.Cursor = Cursors.Default
|
||||||
|
MsgBox("Keine Datei ausgewählt!")
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim cnt As Integer = 0
|
||||||
|
|
||||||
|
If EZA.eza_WARENPOS.Count > 0 Then
|
||||||
|
If vbYes = MsgBox("Sollten die aktuellen Einträge gelöscht werden?", vbYesNo) Then
|
||||||
|
EZA.eza_WARENPOS.Clear()
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Me.Cursor = Cursors.WaitCursor
|
||||||
|
|
||||||
|
For Each filePath As String In fd.FileNames
|
||||||
|
If Not (filePath.ToLower().EndsWith(".xls") OrElse filePath.ToLower().EndsWith(".xlsx")) Then
|
||||||
|
Continue For
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim exclApp As Excel.Application = Nothing
|
||||||
|
Dim Datei As Excel.Workbook = Nothing
|
||||||
|
Dim Blatt As Excel.Worksheet = Nothing
|
||||||
|
|
||||||
|
Try
|
||||||
|
exclApp = New Excel.Application With {
|
||||||
|
.CutCopyMode = False,
|
||||||
|
.DisplayAlerts = False
|
||||||
|
}
|
||||||
|
|
||||||
|
Datei = exclApp.Workbooks.Open(filePath)
|
||||||
|
Blatt = CType(Datei.Worksheets(1), Excel.Worksheet)
|
||||||
|
Datei.Activate()
|
||||||
|
|
||||||
|
Try : Blatt.ShowAllData() : Catch : End Try
|
||||||
|
|
||||||
|
' --- Prüfe, ob Kopfzeile in Zeile 17 existiert
|
||||||
|
If Not checkExcelHeader_Fressnapf(Blatt) Then
|
||||||
|
Throw New ApplicationException("Excel-Struktur entspricht nicht dem erwarteten Layout (Header-Zeile 17).")
|
||||||
|
End If
|
||||||
|
|
||||||
|
' --- Spalten dynamisch per Header ermitteln (Zeile 17)
|
||||||
|
Dim colDesc = FindHeaderColumn(Blatt, 17, {"warenbeschreibung"})
|
||||||
|
Dim colImpCode = FindHeaderColumn(Blatt, 17, {"importcodenummer", "warentarifnummer", "eztnummer", "ezt-nummer"})
|
||||||
|
Dim colOrigin = FindHeaderColumn(Blatt, 17, {"ursprungsland", "ursprungslandcode"})
|
||||||
|
Dim colCurrency = FindHeaderColumn(Blatt, 17, {"währung", "waehrung", "currency"})
|
||||||
|
Dim colNetMass = FindHeaderColumn(Blatt, 17, {"nettomasse", "nettomasse", "nettomasse kg", "eigenmasse"})
|
||||||
|
Dim colQty = FindHeaderColumn(Blatt, 17, {"menge", "quantity", "qty"})
|
||||||
|
Dim colValue = FindHeaderColumn(Blatt, 17, {"warenwert", "invoice value", "value"})
|
||||||
|
|
||||||
|
' Minimal erforderliche Spalten prüfen
|
||||||
|
If colDesc = -1 OrElse colImpCode = -1 OrElse colOrigin = -1 OrElse colCurrency = -1 OrElse colValue = -1 Then
|
||||||
|
Throw New ApplicationException("Nicht alle erforderlichen Spaltenköpfe gefunden (Beschreibung/Warentarifnummer/Ursprungsland/Währung/Warenwert).")
|
||||||
|
End If
|
||||||
|
|
||||||
|
' --- Datenbereich bestimmen: ab Zeile 18 bis erste Leerzeile in Spalte A (Pos.)
|
||||||
|
Dim startRows As Integer = 18
|
||||||
|
Dim endRows As Integer = startRows
|
||||||
|
Dim usedRows As Integer = Blatt.UsedRange.Rows.Count
|
||||||
|
|
||||||
|
Do While endRows <= usedRows
|
||||||
|
Dim val = Blatt.Range("A" & endRows).Value
|
||||||
|
If val Is Nothing OrElse val.ToString().Trim() = "" Then Exit Do
|
||||||
|
endRows += 1
|
||||||
|
Loop
|
||||||
|
endRows -= 1
|
||||||
|
|
||||||
|
If endRows < startRows Then
|
||||||
|
Throw New ApplicationException("Keine Positionsdaten im Excel gefunden.")
|
||||||
|
End If
|
||||||
|
|
||||||
|
' --- Spaltenanzahl mindestens so groß wie letzte genutzte Spalte
|
||||||
|
Dim colCount As Integer = Math.Max(Blatt.UsedRange.Columns.Count, Math.Max(Math.Max(Math.Max(colDesc, colImpCode), Math.Max(colOrigin, colCurrency)), Math.Max(colValue, If(colNetMass < 0, 0, colNetMass))) + 1)
|
||||||
|
If colCount < 19 Then colCount = 19 ' typischerweise A..S
|
||||||
|
|
||||||
|
' --- Rohdaten in DataTable übernehmen
|
||||||
|
Dim DATA As New DataTable()
|
||||||
|
For c As Integer = 1 To colCount
|
||||||
|
DATA.Columns.Add("Spalte" & c, GetType(String))
|
||||||
|
Next
|
||||||
|
|
||||||
|
For r As Integer = startRows To endRows
|
||||||
|
Dim newRow As DataRow = DATA.NewRow()
|
||||||
|
For c As Integer = 1 To colCount
|
||||||
|
Dim value = Blatt.Cells(r, c).Value
|
||||||
|
newRow(c - 1) = If(value IsNot Nothing, value.ToString(), "")
|
||||||
|
Next
|
||||||
|
' Normalisierung für Gruppierung
|
||||||
|
If colCurrency >= 0 Then newRow(colCurrency) = newRow(colCurrency).ToString().Trim().ToUpper()
|
||||||
|
If colOrigin >= 0 Then newRow(colOrigin) = newRow(colOrigin).ToString().Trim().ToUpper()
|
||||||
|
DATA.Rows.Add(newRow)
|
||||||
|
Next
|
||||||
|
|
||||||
|
' --- Nur numerische Pos.-Zeilen behalten (Spalte A / Index 0)
|
||||||
|
For i As Integer = DATA.Rows.Count - 1 To 0 Step -1
|
||||||
|
Dim posTxt As String = DATA.Rows(i)(0).ToString().Trim()
|
||||||
|
Dim posNum As Integer
|
||||||
|
If Not Integer.TryParse(posTxt, posNum) Then
|
||||||
|
DATA.Rows.RemoveAt(i)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
' --- Gruppieren nach: Beschreibung, Warentarifnummer, Ursprungsland, Währung
|
||||||
|
Dim resultDATA As DataTable = DATA.Clone()
|
||||||
|
|
||||||
|
Dim groups = From row In DATA.AsEnumerable()
|
||||||
|
Group row By
|
||||||
|
keyDesc = row(colDesc),
|
||||||
|
keyTariff = row(colImpCode),
|
||||||
|
keyOrigin = row(colOrigin),
|
||||||
|
keyCurr = row(colCurrency)
|
||||||
|
Into grp = Group
|
||||||
|
Select keyDesc, keyTariff, keyOrigin, keyCurr, grp
|
||||||
|
|
||||||
|
For Each g In groups
|
||||||
|
Dim newRow As DataRow = resultDATA.NewRow()
|
||||||
|
|
||||||
|
newRow(colDesc) = g.keyDesc
|
||||||
|
newRow(colImpCode) = g.keyTariff
|
||||||
|
newRow(colOrigin) = g.keyOrigin
|
||||||
|
newRow(colCurrency) = g.keyCurr
|
||||||
|
|
||||||
|
' Summenfelder (nur wenn vorhanden)
|
||||||
|
If colQty >= 0 Then newRow(colQty) = g.grp.Sum(Function(r) ToDoubleSafe(r(colQty))).ToString()
|
||||||
|
If colNetMass >= 0 Then newRow(colNetMass) = g.grp.Sum(Function(r) ToDoubleSafe(r(colNetMass))).ToString()
|
||||||
|
newRow(colValue) = g.grp.Sum(Function(r) ToDoubleSafe(r(colValue))).ToString()
|
||||||
|
|
||||||
|
resultDATA.Rows.Add(newRow)
|
||||||
|
Next
|
||||||
|
|
||||||
|
' --- Kopfwerte optional (z. B. Belegnummer)
|
||||||
|
Dim HandlesRgNr As String = ""
|
||||||
|
Try
|
||||||
|
If Blatt.Range("A8") IsNot Nothing AndAlso Blatt.Range("A8").Value IsNot Nothing Then
|
||||||
|
HandlesRgNr = Blatt.Range("A8").Value.ToString().Trim()
|
||||||
|
End If
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
|
||||||
|
' --- Ergebniszeilen in EZA schreiben
|
||||||
|
For Each row As DataRow In resultDATA.Rows
|
||||||
|
Dim tariff As String = row(colImpCode).ToString().Trim()
|
||||||
|
Dim desc As String = row(colDesc).ToString().Trim()
|
||||||
|
If tariff = "" AndAlso desc = "" Then Continue For
|
||||||
|
|
||||||
|
Dim POSITION As New DAKOSY_Worker.cDakosy_EZA_Warenposition
|
||||||
|
|
||||||
|
' *** WARENTARIFNUMMER ***
|
||||||
|
POSITION.ezaWP_WarennummerEZT = tariff
|
||||||
|
|
||||||
|
' Packstücke (nicht aus Excel, Standardwerte)
|
||||||
|
POSITION.ezaWP_PackstueckAnzahl = "0"
|
||||||
|
POSITION.ezaWP_PackstueckArt = "PK"
|
||||||
|
|
||||||
|
' *** ARTIKELPREIS (Warenwert) ***
|
||||||
|
Dim warenwert As Double = ToDoubleSafe(row(colValue))
|
||||||
|
POSITION.ezaWP_Artikelpreis = warenwert.ToString("N2")
|
||||||
|
|
||||||
|
' *** WÄHRUNG ***
|
||||||
|
POSITION.ezaWP_ArtikelpreisWaehrung = row(colCurrency).ToString()
|
||||||
|
|
||||||
|
' *** BESCHREIBUNG ***
|
||||||
|
POSITION.ezaWP_Warenbezeichnung = desc
|
||||||
|
|
||||||
|
' *** EIGENMASSE (aus Nettomasse, wenn vorhanden) ***
|
||||||
|
If colNetMass >= 0 Then
|
||||||
|
Dim netto As Double = ToDoubleSafe(row(colNetMass))
|
||||||
|
POSITION.ezaWP_Eigenmasse = netto.ToString("N1")
|
||||||
|
Else
|
||||||
|
POSITION.ezaWP_Eigenmasse = "0.0"
|
||||||
|
End If
|
||||||
|
|
||||||
|
' *** URSPRUNGSLAND (2-stellig) ***
|
||||||
|
Dim ursprung As String = row(colOrigin).ToString().Trim().ToUpper()
|
||||||
|
If ursprung.Length >= 2 Then POSITION.ezaWP_UrsprungslandCode = ursprung.Substring(0, 2)
|
||||||
|
|
||||||
|
' Unterlagen (optional)
|
||||||
|
If Not String.IsNullOrWhiteSpace(HandlesRgNr) Then
|
||||||
|
POSITION.ezaWP_UNTERLAGEN.Add(New DAKOSY_Worker.cDakosy_EZA_WarenpositionVorgelegteUnterlagen With {
|
||||||
|
.ezaWpUl_Art = "N380",
|
||||||
|
.ezaWpUl_Bereich = "4",
|
||||||
|
.ezaWpUl_VorlageKz = "J",
|
||||||
|
.ezaWpUl_Nummer = HandlesRgNr,
|
||||||
|
.ezaWpUl_DatumAusstellung = Nothing
|
||||||
|
})
|
||||||
|
End If
|
||||||
|
|
||||||
|
EZA.eza_WARENPOS.Add(POSITION)
|
||||||
|
cnt += 1
|
||||||
|
Next
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
Me.Cursor = Cursors.Default
|
||||||
|
MsgBox("FEHLER beim Einlesen: " & vbCrLf & ex.Message)
|
||||||
|
Finally
|
||||||
|
' Ressourcen sauber freigeben
|
||||||
|
Try
|
||||||
|
If Datei IsNot Nothing Then Datei.Close(False)
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
Try
|
||||||
|
If exclApp IsNot Nothing Then exclApp.Quit()
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
Try
|
||||||
|
If Blatt IsNot Nothing Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Blatt)
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
Try
|
||||||
|
If Datei IsNot Nothing Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Datei)
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
Try
|
||||||
|
If exclApp IsNot Nothing Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(exclApp)
|
||||||
|
Catch
|
||||||
|
End Try
|
||||||
|
Blatt = Nothing : Datei = Nothing : exclApp = Nothing
|
||||||
|
GC.Collect()
|
||||||
|
GC.WaitForPendingFinalizers()
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Console.WriteLine("Verarbeite Datei: " & filePath)
|
||||||
|
Next
|
||||||
|
|
||||||
|
Me.FindForm.SuspendLayout()
|
||||||
|
POSITIONEN.setValues(EZA, True)
|
||||||
|
btnPositionen.PerformClick()
|
||||||
|
Me.FindForm.ResumeLayout()
|
||||||
|
|
||||||
|
MsgBox(cnt & " Datensätze wurden eingelesen.")
|
||||||
|
Me.Cursor = Cursors.Default
|
||||||
|
Return True
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' Liefert die 0-basierte Spaltennummer (DataTable-Index) anhand eines Header-Texts in rowIdx.
|
||||||
|
' Gibt -1 zurück, wenn keine der gesuchten Varianten gefunden wird.
|
||||||
|
Private Function FindHeaderColumn(ws As Excel.Worksheet, rowIdx As Integer, headerVariants As IEnumerable(Of String)) As Integer
|
||||||
|
Dim maxScanCols As Integer = 35 ' etwas Puffer
|
||||||
|
For c As Integer = 1 To maxScanCols
|
||||||
|
Dim cell = ws.Cells(rowIdx, c).Value
|
||||||
|
If cell Is Nothing Then Continue For
|
||||||
|
Dim norm = cell.ToString().Trim().ToLower()
|
||||||
|
For Each hv In headerVariants
|
||||||
|
If norm.Contains(hv.ToLower()) Then
|
||||||
|
Return c - 1 ' DataTable ist 0-basiert
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
Return -1
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function ToDoubleSafe(obj As Object) As Double
|
||||||
|
If obj Is Nothing Then Return 0
|
||||||
|
Dim s As String = obj.ToString().Trim()
|
||||||
|
If s = "" Then Return 0
|
||||||
|
' Komma/Punkt robust behandeln, kulturinvariant parsen
|
||||||
|
Dim d As Double
|
||||||
|
' Erst alle Tausenderpunkte/Kommas vereinheitlichen
|
||||||
|
s = s.Replace(" ", "")
|
||||||
|
' Häufigster Fall: deutsches Komma
|
||||||
|
If s.Contains(",") AndAlso Not s.Contains(".") Then
|
||||||
|
s = s.Replace(".", "")
|
||||||
|
s = s.Replace(",", ".")
|
||||||
|
ElseIf s.Contains(".") AndAlso s.Contains(",") Then
|
||||||
|
' Entferne Tausender-Trenner, behalte Dezimaltrennzeichen als Punkt
|
||||||
|
s = s.Replace(".", "")
|
||||||
|
s = s.Replace(",", ".")
|
||||||
|
End If
|
||||||
|
If Double.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, d) Then
|
||||||
|
Return d
|
||||||
|
End If
|
||||||
|
Return 0
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' Prüft Kopfzeile in Zeile 17:
|
||||||
|
' A17="Pos.", D17 beginnt mit "Warenbeschreibung",
|
||||||
|
' P17 beginnt mit "Importcodenummer", R17 beginnt mit "Ursprungsland"
|
||||||
|
Private Function checkExcelHeader_Fressnapf(ws As Excel.Worksheet) As Boolean
|
||||||
|
Try
|
||||||
|
Dim a = CStr(ws.Range("A17").Value)
|
||||||
|
Dim d = CStr(ws.Range("D17").Value)
|
||||||
|
If a Is Nothing OrElse d Is Nothing Then Return False
|
||||||
|
Return a.Trim().ToLower() = "pos." AndAlso
|
||||||
|
d.Trim().ToLower().StartsWith("warenbeschreibung")
|
||||||
|
Catch
|
||||||
|
Return False
|
||||||
|
End Try
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ Public Class cAuditFlow
|
|||||||
pruefung.wartPruef_Erledigung_Datum = Date.Now
|
pruefung.wartPruef_Erledigung_Datum = Date.Now
|
||||||
pruefung.wartPruef_Erledigung = True
|
pruefung.wartPruef_Erledigung = True
|
||||||
pruefung.wartPruef_Anhaenge_daId = dsId
|
pruefung.wartPruef_Anhaenge_daId = dsId
|
||||||
pruefung.wartPruef_Bemerkung = dsId
|
pruefung.wartPruef_Bemerkung = Bemerkung
|
||||||
|
|
||||||
' 3. Speichern
|
' 3. Speichern
|
||||||
Return pruefung.SAVE()
|
Return pruefung.SAVE()
|
||||||
|
|||||||
729
VERAG_PROG_ALLGEMEIN/Schnittstellen/DHF/cDHF_Import.vb
Normal file
729
VERAG_PROG_ALLGEMEIN/Schnittstellen/DHF/cDHF_Import.vb
Normal file
@@ -0,0 +1,729 @@
|
|||||||
|
Imports System.Data.SqlClient
|
||||||
|
Imports System.Reflection
|
||||||
|
|
||||||
|
|
||||||
|
' ===========================================================
|
||||||
|
' =============== KOPF (imDHFAnm) ======================
|
||||||
|
' ===========================================================
|
||||||
|
Public Class cDHF_Import
|
||||||
|
' ====== Primärschlüssel (zusammengesetzt) ======
|
||||||
|
|
||||||
|
Public LizenzNr As String = "S01122"
|
||||||
|
Public Property OperatorID As String
|
||||||
|
Public Property VorgangID As String
|
||||||
|
Public Property AnmID As String
|
||||||
|
Public Property Kennung As String
|
||||||
|
|
||||||
|
' ====== Datenfelder Kopf imDHFAnm (wie geliefert) ======
|
||||||
|
Public Property DatenKomplett As Object
|
||||||
|
Public Property LRN As Object
|
||||||
|
Public Property TotPack As Object
|
||||||
|
Public Property TotGross As Object
|
||||||
|
Public Property Dest As Object
|
||||||
|
Public Property InMo As Object
|
||||||
|
Public Property BordMo As Object
|
||||||
|
Public Property DepIdnt As Object
|
||||||
|
Public Property DepNat As Object
|
||||||
|
Public Property CrossIdnt As Object
|
||||||
|
Public Property CrossIdntNat As Object
|
||||||
|
Public Property TermDelCd As Object
|
||||||
|
Public Property TermDelSit As Object
|
||||||
|
Public Property InvCurr As Object
|
||||||
|
Public Property InvVal As Object
|
||||||
|
Public Property ConeeTraNa As Object
|
||||||
|
Public Property ConeeTraStrt As Object
|
||||||
|
Public Property ConeeTraPst As Object
|
||||||
|
Public Property ConeeTraCty As Object
|
||||||
|
Public Property ConeeTraCtry As Object
|
||||||
|
Public Property ConeeTraFremdAdressID As Object
|
||||||
|
Public Property ExitCORef As Object
|
||||||
|
Public Property RechnungsNr As Object
|
||||||
|
Public Property RechnungsDatum As Object
|
||||||
|
Public Property DecTy As Object
|
||||||
|
Public Property Disp As Object
|
||||||
|
Public Property ArrLocAuth As Object
|
||||||
|
Public Property ContInd As Object
|
||||||
|
Public Property TransacCd As Object
|
||||||
|
Public Property ConorTraNa As Object
|
||||||
|
Public Property ConorTraStrt As Object
|
||||||
|
Public Property ConorTraPst As Object
|
||||||
|
Public Property ConorTraCty As Object
|
||||||
|
Public Property ConorTraCtry As Object
|
||||||
|
Public Property ConorTraFremdAdressID As Object
|
||||||
|
Public Property KzPool As Object
|
||||||
|
Public Property ConeeTraUIDCtry As Object
|
||||||
|
Public Property ConeeTraUID As Object
|
||||||
|
Public Property EntryCORef As Object
|
||||||
|
Public Property SendungsDatum As Object
|
||||||
|
Public Property PDTy As Object
|
||||||
|
Public Property DRef As Object
|
||||||
|
Public Property CInf As Object
|
||||||
|
Public Property Cat As Object
|
||||||
|
Public Property InfoText As Object
|
||||||
|
Public Property SendungsNr As Object
|
||||||
|
Public Property ConorTraUIDCtry As Object
|
||||||
|
Public Property ConorTraUID As Object
|
||||||
|
Public Property AnschreibeNr As Object
|
||||||
|
Public Property RIN As Object
|
||||||
|
Public Property KzAutomatik As Object
|
||||||
|
Public Property SecInd As Object
|
||||||
|
Public Property SpecCirc As Object
|
||||||
|
Public Property TransPayTy As Object
|
||||||
|
Public Property ComRef As Object
|
||||||
|
Public Property LodCoRef As Object
|
||||||
|
Public Property ResCd As Object
|
||||||
|
Public Property DLimit As Object
|
||||||
|
Public Property Route As Object
|
||||||
|
Public Property SNr As Object
|
||||||
|
Public Property KzEigenmassenaufteilung As Object
|
||||||
|
Public Property MusterName As Object
|
||||||
|
Public Property ConvRef As Object
|
||||||
|
Public Property ProArrDT As Object
|
||||||
|
Public Property LoadPlc As Object
|
||||||
|
Public Property UnloadPlcCd As Object
|
||||||
|
Public Property UnloadPlc As Object
|
||||||
|
Public Property FirEntryCoRef As Object
|
||||||
|
Public Property CarrTraNa As Object
|
||||||
|
Public Property CarrTraStrt As Object
|
||||||
|
Public Property CarrTraPst As Object
|
||||||
|
Public Property CarrTraCty As Object
|
||||||
|
Public Property CarrTraCtry As Object
|
||||||
|
Public Property CarrTraFremdAdressID As Object
|
||||||
|
Public Property NotifyTraNa As Object
|
||||||
|
Public Property NotifyTraStrt As Object
|
||||||
|
Public Property NotifyTraPst As Object
|
||||||
|
Public Property NotifyTraCty As Object
|
||||||
|
Public Property NotifyTraCtry As Object
|
||||||
|
Public Property NotifyTraFremdAdressID As Object
|
||||||
|
Public Property RepTraFremdAdressID As Object
|
||||||
|
Public Property SumDecTraFremdAdressID As Object
|
||||||
|
Public Property DecPlc As Object
|
||||||
|
Public Property DecDT As Object
|
||||||
|
Public Property RelationsID As Object
|
||||||
|
Public Property SSt_LizenzNr As Object
|
||||||
|
Public Property SSt_ID As Object
|
||||||
|
Public Property SSt_ArtID As Object
|
||||||
|
Public Property SSt_ProtokollKopfID As Object
|
||||||
|
Public Property KzPredeclaration As Object
|
||||||
|
Public Property AccDT As Object
|
||||||
|
Public Property PayTy As Object
|
||||||
|
Public Property DepoCd As Object
|
||||||
|
Public Property WarTy As Object
|
||||||
|
Public Property WarCtry As Object
|
||||||
|
Public Property War As Object
|
||||||
|
Public Property ZLID As Object
|
||||||
|
Public Property TermDelCtry As Object
|
||||||
|
Public Property TermDelPlc As Object
|
||||||
|
|
||||||
|
' ====== Navigation / Unterobjekte ======
|
||||||
|
Public Property GdsItems As New List(Of cDHF_Import_GdsItem)
|
||||||
|
|
||||||
|
Private Const TBL As String = "imDHFAnm"
|
||||||
|
Private ReadOnly SQL As New SQL
|
||||||
|
|
||||||
|
' ---- Konstruktor (Leeres Objekt) ----
|
||||||
|
Public Sub New()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' ---- Konstruktor mit Schlüssel + Auto-Load ----
|
||||||
|
Public Sub New(lizenzNr As String, operatorId As String, vorgangId As String, anmId As String, kennung As String)
|
||||||
|
Me.LizenzNr = lizenzNr : Me.OperatorID = operatorId : Me.VorgangID = vorgangId : Me.AnmID = anmId : Me.Kennung = kennung
|
||||||
|
Load()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' ---- Parameterliste dynamisch erzeugen (PK markiert) ----
|
||||||
|
Private Function GetVarList(Optional includePK As Boolean = True) As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
Dim l As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
|
||||||
|
' PK
|
||||||
|
If includePK Then
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, "LizenzNr", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OperatorID", OperatorID, "OperatorID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VorgangID", VorgangID, "VorgangID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnmID", AnmID, "AnmID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kennung", Kennung, "Kennung", True))
|
||||||
|
End If
|
||||||
|
|
||||||
|
' Alle Felder (Non-PK)
|
||||||
|
Dim allProps = Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance).
|
||||||
|
Where(Function(p) p.CanRead AndAlso p.CanWrite AndAlso p.Name <> NameOf(GdsItems))
|
||||||
|
For Each p In allProps
|
||||||
|
If {"LizenzNr", "OperatorID", "VorgangID", "AnmID", "Kennung"}.Contains(p.Name) Then Continue For
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable(p.Name, p.GetValue(Me), p.Name, False))
|
||||||
|
Next
|
||||||
|
Return l
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' ---- Save: Upsert + Kinder in Transaktion ----
|
||||||
|
Public Function Save() As Boolean
|
||||||
|
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
|
||||||
|
Using tr = conn.BeginTransaction()
|
||||||
|
Try
|
||||||
|
' Upsert Kopf
|
||||||
|
Dim vars = GetVarList(includePK:=True)
|
||||||
|
Dim wherePk = "WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung"
|
||||||
|
Dim sqlCheck = $"IF EXISTS(SELECT 1 FROM [{TBL}] {wherePk}) BEGIN {_SqlDyn.BuildUpdateCmd(TBL, vars)} END ELSE BEGIN {_SqlDyn.BuildInsertCmd(TBL, vars)} END"
|
||||||
|
|
||||||
|
Using cmd As New SqlCommand(sqlCheck, conn, tr)
|
||||||
|
_SqlDyn.AddParams(cmd, vars)
|
||||||
|
cmd.ExecuteNonQuery()
|
||||||
|
End Using
|
||||||
|
|
||||||
|
' Kinder neu schreiben: erst löschen, dann einfügen (vereinfachte Konsistenz)
|
||||||
|
DeleteChildren(conn, tr)
|
||||||
|
|
||||||
|
' Positionen + Unterpositionen schreiben
|
||||||
|
For Each it In GdsItems
|
||||||
|
it.LizenzNr = Me.LizenzNr
|
||||||
|
it.OperatorID = Me.OperatorID
|
||||||
|
it.VorgangID = Me.VorgangID
|
||||||
|
it.AnmID = Me.AnmID
|
||||||
|
it.Kennung = Me.Kennung
|
||||||
|
it.Save(conn, tr)
|
||||||
|
Next
|
||||||
|
|
||||||
|
tr.Commit()
|
||||||
|
Return True
|
||||||
|
Catch ex As Exception
|
||||||
|
tr.Rollback()
|
||||||
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodBase.GetCurrentMethod().Name)
|
||||||
|
Return False
|
||||||
|
End Try
|
||||||
|
End Using
|
||||||
|
End Using
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Sub DeleteChildren(conn As SqlConnection, tr As SqlTransaction)
|
||||||
|
' Löscht alle abhängigen Einträge (DocCerts + Pack zuerst, dann GdsItems)
|
||||||
|
Dim pkWhere = "WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung"
|
||||||
|
Dim delDoc = $"DELETE d FROM [imDHFAnmGdsItemDocCerts] d INNER JOIN [imDHFAnmGdsItem] i ON d.LizenzNr=i.LizenzNr AND d.OperatorID=i.OperatorID AND d.VorgangID=i.VorgangID AND d.AnmID=i.AnmID AND d.Kennung=i.Kennung AND d.GdsItemID=i.GdsItemID {pkWhere.Replace("WHERE", "WHERE i.")}"
|
||||||
|
Dim delPack = $"DELETE p FROM [imDHFAnmGdsItemPack] p INNER JOIN [imDHFAnmGdsItem] i ON p.LizenzNr=i.LizenzNr AND p.OperatorID=i.OperatorID AND p.VorgangID=i.VorgangID AND p.AnmID=i.AnmID AND p.Kennung=i.Kennung AND p.GdsItemID=i.GdsItemID {pkWhere.Replace("WHERE", "WHERE i.")}"
|
||||||
|
Dim delIt = $"DELETE FROM [imDHFAnmGdsItem] {pkWhere}"
|
||||||
|
|
||||||
|
Dim pars As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
|
||||||
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, "LizenzNr", True),
|
||||||
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("OperatorID", OperatorID, "OperatorID", True),
|
||||||
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("VorgangID", VorgangID, "VorgangID", True),
|
||||||
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("AnmID", AnmID, "AnmID", True),
|
||||||
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("Kennung", Kennung, "Kennung", True)
|
||||||
|
}
|
||||||
|
|
||||||
|
For Each s In {delDoc, delPack, delIt}
|
||||||
|
Using cmd As New SqlCommand(s, conn, tr)
|
||||||
|
_SqlDyn.AddParams(cmd, pars)
|
||||||
|
cmd.ExecuteNonQuery()
|
||||||
|
End Using
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' ---- Load: Kopf + Kinder ----
|
||||||
|
Public Sub Load()
|
||||||
|
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
|
||||||
|
' Kopf
|
||||||
|
Dim selectHead = $"SELECT * FROM [{TBL}] WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung"
|
||||||
|
Using cmd As New SqlCommand(selectHead, conn)
|
||||||
|
cmd.Parameters.AddWithValue("@LizenzNr", LizenzNr)
|
||||||
|
cmd.Parameters.AddWithValue("@OperatorID", OperatorID)
|
||||||
|
cmd.Parameters.AddWithValue("@VorgangID", VorgangID)
|
||||||
|
cmd.Parameters.AddWithValue("@AnmID", AnmID)
|
||||||
|
cmd.Parameters.AddWithValue("@Kennung", Kennung)
|
||||||
|
Using dr = cmd.ExecuteReader()
|
||||||
|
If dr.Read() Then
|
||||||
|
_SqlDyn.DataReaderToObject(dr, Me, GetVarList(includePK:=False))
|
||||||
|
End If
|
||||||
|
End Using
|
||||||
|
End Using
|
||||||
|
|
||||||
|
' Kinder laden
|
||||||
|
Me.GdsItems.Clear()
|
||||||
|
Dim selectIt = "SELECT * FROM [imDHFAnmGdsItem] WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung ORDER BY ItNr"
|
||||||
|
Using cmd As New SqlCommand(selectIt, conn)
|
||||||
|
cmd.Parameters.AddWithValue("@LizenzNr", LizenzNr)
|
||||||
|
cmd.Parameters.AddWithValue("@OperatorID", OperatorID)
|
||||||
|
cmd.Parameters.AddWithValue("@VorgangID", VorgangID)
|
||||||
|
cmd.Parameters.AddWithValue("@AnmID", AnmID)
|
||||||
|
cmd.Parameters.AddWithValue("@Kennung", Kennung)
|
||||||
|
Using dr = cmd.ExecuteReader()
|
||||||
|
While dr.Read()
|
||||||
|
Dim it As New cDHF_Import_GdsItem() With {
|
||||||
|
.LizenzNr = dr("LizenzNr").ToString(),
|
||||||
|
.OperatorID = dr("OperatorID").ToString(),
|
||||||
|
.VorgangID = dr("VorgangID").ToString(),
|
||||||
|
.AnmID = dr("AnmID").ToString(),
|
||||||
|
.Kennung = dr("Kennung").ToString(),
|
||||||
|
.GdsItemID = dr("GdsItemID").ToString()
|
||||||
|
}
|
||||||
|
it.FillFromReader(dr)
|
||||||
|
GdsItems.Add(it)
|
||||||
|
End While
|
||||||
|
End Using
|
||||||
|
End Using
|
||||||
|
|
||||||
|
' Unterobjekte je Position laden
|
||||||
|
For Each it In GdsItems
|
||||||
|
it.LoadChildren(conn)
|
||||||
|
Next
|
||||||
|
End Using
|
||||||
|
End Sub
|
||||||
|
End Class
|
||||||
|
|
||||||
|
' ===========================================================
|
||||||
|
' =============== POSITION (imDHFAnmGdsItem) ===========
|
||||||
|
' ===========================================================
|
||||||
|
Public Class cDHF_Import_GdsItem
|
||||||
|
' ====== FK/PK-Teil (Kopfbezug + pos-ID) ======
|
||||||
|
Public Property LizenzNr As String
|
||||||
|
Public Property OperatorID As String
|
||||||
|
Public Property VorgangID As String
|
||||||
|
Public Property AnmID As String
|
||||||
|
Public Property Kennung As String
|
||||||
|
Public Property GdsItemID As String
|
||||||
|
|
||||||
|
' ====== Positionsfelder ======
|
||||||
|
Public Property ItNr As Object
|
||||||
|
Public Property ComCd As Object
|
||||||
|
Public Property GdsDes As Object
|
||||||
|
Public Property Gross As Object
|
||||||
|
Public Property Net As Object
|
||||||
|
Public Property ProcCd As Object
|
||||||
|
Public Property ProcAddCd As Object
|
||||||
|
Public Property ItVal As Object
|
||||||
|
Public Property Orig As Object
|
||||||
|
Public Property Pref As Object
|
||||||
|
Public Property Quota As Object
|
||||||
|
Public Property ValMet As Object
|
||||||
|
Public Property VATInd As Object
|
||||||
|
Public Property ArtikelCode As Object
|
||||||
|
Public Property InfoText As Object
|
||||||
|
Public Property ArtikelMenge As Object
|
||||||
|
Public Property ArtikelMengenEH As Object
|
||||||
|
Public Property RezOrt As Object
|
||||||
|
Public Property SNr As Object
|
||||||
|
Public Property ProcTxt As Object
|
||||||
|
Public Property ComplPer As Object
|
||||||
|
Public Property ProsYield As Object
|
||||||
|
Public Property SpecMod As Object
|
||||||
|
Public Property RecCd As Object
|
||||||
|
Public Property SurvCORef As Object
|
||||||
|
Public Property EndCORef As Object
|
||||||
|
Public Property ComRef As Object
|
||||||
|
Public Property UNDangCd As Object
|
||||||
|
Public Property GlobCd As Object
|
||||||
|
Public Property GlobPer As Object
|
||||||
|
Public Property CondCd As Object
|
||||||
|
Public Property TransPayTy As Object
|
||||||
|
Public Property ConorTraNa As Object
|
||||||
|
Public Property ConorTraStrt As Object
|
||||||
|
Public Property ConorTraPst As Object
|
||||||
|
Public Property ConorTraCty As Object
|
||||||
|
Public Property ConorTraCtry As Object
|
||||||
|
Public Property ConorTraTIN As Object
|
||||||
|
Public Property ConorTraAdressIDDHF As Object
|
||||||
|
Public Property ConeeTraNa As Object
|
||||||
|
Public Property ConeeTraStrt As Object
|
||||||
|
Public Property ConeeTraPst As Object
|
||||||
|
Public Property ConeeTraCty As Object
|
||||||
|
Public Property ConeeTraCtry As Object
|
||||||
|
Public Property ConeeTraTIN As Object
|
||||||
|
Public Property ConeeTraAdressIDDHF As Object
|
||||||
|
Public Property ExtraDEBundesland As Object
|
||||||
|
|
||||||
|
' ====== Unterlisten ======
|
||||||
|
Public Property DocCerts As New List(Of cDHF_Import_GdsItemDocCerts)
|
||||||
|
Public Property Packs As New List(Of cDHF_Import_GdsItemPack)
|
||||||
|
|
||||||
|
Private Const TBL As String = "imDHFAnmGdsItem"
|
||||||
|
|
||||||
|
Friend Sub FillFromReader(dr As SqlDataReader)
|
||||||
|
Dim props = Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance).
|
||||||
|
Where(Function(p) p.CanRead AndAlso p.CanWrite AndAlso p.Name <> NameOf(DocCerts) AndAlso p.Name <> NameOf(Packs))
|
||||||
|
For Each p In props
|
||||||
|
If dr.GetSchemaTable().Rows.Cast(Of DataRow)().Any(Function(r) r("ColumnName").ToString() = p.Name) Then
|
||||||
|
If dr.IsDBNull(dr.GetOrdinal(p.Name)) Then
|
||||||
|
p.SetValue(Me, Nothing)
|
||||||
|
Else
|
||||||
|
p.SetValue(Me, dr(p.Name))
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Function GetVarList(Optional includePK As Boolean = True) As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
Dim l As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
If includePK Then
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, "LizenzNr", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OperatorID", OperatorID, "OperatorID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VorgangID", VorgangID, "VorgangID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnmID", AnmID, "AnmID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kennung", Kennung, "Kennung", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("GdsItemID", GdsItemID, "GdsItemID", True))
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim skip = New HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {
|
||||||
|
"LizenzNr", "OperatorID", "VorgangID", "AnmID", "Kennung", "GdsItemID",
|
||||||
|
NameOf(DocCerts), NameOf(Packs)
|
||||||
|
}
|
||||||
|
For Each p In Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
If Not p.CanRead OrElse Not p.CanWrite OrElse skip.Contains(p.Name) Then Continue For
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable(p.Name, p.GetValue(Me), p.Name, False))
|
||||||
|
Next
|
||||||
|
Return l
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Sub Save(conn As SqlConnection, tr As SqlTransaction)
|
||||||
|
' Upsert Position
|
||||||
|
Dim vars = GetVarList(includePK:=True)
|
||||||
|
Dim wherePk = "WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung AND [GdsItemID]=@GdsItemID"
|
||||||
|
Dim sqlCheck = $"IF EXISTS(SELECT 1 FROM [{TBL}] {wherePk}) BEGIN {_SqlDyn.BuildUpdateCmd(TBL, vars)} END ELSE BEGIN {_SqlDyn.BuildInsertCmd(TBL, vars)} END"
|
||||||
|
Using cmd As New SqlCommand(sqlCheck, conn, tr)
|
||||||
|
_SqlDyn.AddParams(cmd, vars)
|
||||||
|
cmd.ExecuteNonQuery()
|
||||||
|
End Using
|
||||||
|
|
||||||
|
' Kinder neu schreiben (DocCerts, Packs): delete + insert
|
||||||
|
DeleteChildren(conn, tr)
|
||||||
|
|
||||||
|
For Each d In DocCerts
|
||||||
|
d.LizenzNr = LizenzNr : d.OperatorID = OperatorID : d.VorgangID = VorgangID : d.AnmID = AnmID : d.Kennung = Kennung
|
||||||
|
d.GdsItemID = GdsItemID
|
||||||
|
d.Save(conn, tr)
|
||||||
|
Next
|
||||||
|
For Each p In Packs
|
||||||
|
p.LizenzNr = LizenzNr : p.OperatorID = OperatorID : p.VorgangID = VorgangID : p.AnmID = AnmID : p.Kennung = Kennung
|
||||||
|
p.GdsItemID = GdsItemID
|
||||||
|
p.Save(conn, tr)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub DeleteChildren(conn As SqlConnection, tr As SqlTransaction)
|
||||||
|
Dim wherePk = "WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung AND [GdsItemID]=@GdsItemID"
|
||||||
|
For Each ttt In {"imDHFAnmGdsItemDocCerts", "imDHFAnmGdsItemPack"}
|
||||||
|
Using cmd As New SqlCommand($"DELETE FROM [{ttt}] {wherePk}", conn, tr)
|
||||||
|
cmd.Parameters.AddWithValue("@LizenzNr", LizenzNr)
|
||||||
|
cmd.Parameters.AddWithValue("@OperatorID", OperatorID)
|
||||||
|
cmd.Parameters.AddWithValue("@VorgangID", VorgangID)
|
||||||
|
cmd.Parameters.AddWithValue("@AnmID", AnmID)
|
||||||
|
cmd.Parameters.AddWithValue("@Kennung", Kennung)
|
||||||
|
cmd.Parameters.AddWithValue("@GdsItemID", GdsItemID)
|
||||||
|
cmd.ExecuteNonQuery()
|
||||||
|
End Using
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub LoadChildren(conn As SqlConnection)
|
||||||
|
' DocCerts
|
||||||
|
DocCerts.Clear()
|
||||||
|
Dim sDoc = "SELECT * FROM [imDHFAnmGdsItemDocCerts] WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung AND [GdsItemID]=@GdsItemID ORDER BY DocCertsID"
|
||||||
|
Using cmd As New SqlCommand(sDoc, conn)
|
||||||
|
cmd.Parameters.AddWithValue("@LizenzNr", LizenzNr)
|
||||||
|
cmd.Parameters.AddWithValue("@OperatorID", OperatorID)
|
||||||
|
cmd.Parameters.AddWithValue("@VorgangID", VorgangID)
|
||||||
|
cmd.Parameters.AddWithValue("@AnmID", AnmID)
|
||||||
|
cmd.Parameters.AddWithValue("@Kennung", Kennung)
|
||||||
|
cmd.Parameters.AddWithValue("@GdsItemID", GdsItemID)
|
||||||
|
Using dr = cmd.ExecuteReader()
|
||||||
|
While dr.Read()
|
||||||
|
Dim d As New cDHF_Import_GdsItemDocCerts() With {
|
||||||
|
.LizenzNr = LizenzNr, .OperatorID = OperatorID, .VorgangID = VorgangID,
|
||||||
|
.AnmID = AnmID, .Kennung = Kennung, .GdsItemID = GdsItemID,
|
||||||
|
.DocCertsID = dr("DocCertsID").ToString()
|
||||||
|
}
|
||||||
|
d.FillFromReader(dr)
|
||||||
|
DocCerts.Add(d)
|
||||||
|
End While
|
||||||
|
End Using
|
||||||
|
End Using
|
||||||
|
|
||||||
|
' Packs
|
||||||
|
Packs.Clear()
|
||||||
|
Dim sPack = "SELECT * FROM [imDHFAnmGdsItemPack] WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung AND [GdsItemID]=@GdsItemID ORDER BY PackID"
|
||||||
|
Using cmd As New SqlCommand(sPack, conn)
|
||||||
|
cmd.Parameters.AddWithValue("@LizenzNr", LizenzNr)
|
||||||
|
cmd.Parameters.AddWithValue("@OperatorID", OperatorID)
|
||||||
|
cmd.Parameters.AddWithValue("@VorgangID", VorgangID)
|
||||||
|
cmd.Parameters.AddWithValue("@AnmID", AnmID)
|
||||||
|
cmd.Parameters.AddWithValue("@Kennung", Kennung)
|
||||||
|
cmd.Parameters.AddWithValue("@GdsItemID", GdsItemID)
|
||||||
|
Using dr = cmd.ExecuteReader()
|
||||||
|
While dr.Read()
|
||||||
|
Dim p As New cDHF_Import_GdsItemPack() With {
|
||||||
|
.LizenzNr = LizenzNr, .OperatorID = OperatorID, .VorgangID = VorgangID,
|
||||||
|
.AnmID = AnmID, .Kennung = Kennung, .GdsItemID = GdsItemID,
|
||||||
|
.PackID = dr("PackID").ToString()
|
||||||
|
}
|
||||||
|
p.FillFromReader(dr)
|
||||||
|
Packs.Add(p)
|
||||||
|
End While
|
||||||
|
End Using
|
||||||
|
End Using
|
||||||
|
End Sub
|
||||||
|
End Class
|
||||||
|
|
||||||
|
' ===========================================================
|
||||||
|
' ============ DOC/CERTS (imDHFAnmGdsItemDocCerts) =====
|
||||||
|
' ===========================================================
|
||||||
|
Public Class cDHF_Import_GdsItemDocCerts
|
||||||
|
' FK/PK
|
||||||
|
Public Property LizenzNr As String
|
||||||
|
Public Property OperatorID As String
|
||||||
|
Public Property VorgangID As String
|
||||||
|
Public Property AnmID As String
|
||||||
|
Public Property Kennung As String
|
||||||
|
Public Property GdsItemID As String
|
||||||
|
Public Property DocCertsID As String
|
||||||
|
|
||||||
|
' Felder
|
||||||
|
Public Property DocCd As Object
|
||||||
|
Public Property DTy As Object
|
||||||
|
Public Property DRef As Object
|
||||||
|
Public Property IssD As Object
|
||||||
|
Public Property IssCtry As Object
|
||||||
|
Public Property DTIN As Object
|
||||||
|
Public Property Curr As Object
|
||||||
|
Public Property Avail As Object
|
||||||
|
Public Property UidVid As Object
|
||||||
|
Public Property IssAdm As Object
|
||||||
|
Public Property ValD As Object
|
||||||
|
Public Property MaxValD As Object
|
||||||
|
Public Property CInf As Object
|
||||||
|
Public Property InfoLNG As Object
|
||||||
|
Public Property Unit As Object
|
||||||
|
Public Property Quant As Object
|
||||||
|
Public Property MaxQuant As Object
|
||||||
|
Public Property WOUnit As Object
|
||||||
|
Public Property WOoUnit As Object
|
||||||
|
Public Property WOCurr As Object
|
||||||
|
Public Property WOInQuant As Object
|
||||||
|
Public Property WOQuant As Object
|
||||||
|
Public Property WORemQunat As Object
|
||||||
|
Public Property CRefTy As Object
|
||||||
|
Public Property CRefRef As Object
|
||||||
|
Public Property CRefIt As Object
|
||||||
|
Public Property CRefLNG As Object
|
||||||
|
Public Property AvailDT As Object
|
||||||
|
Public Property AdressIDDHF As Object
|
||||||
|
Public Property Na As Object
|
||||||
|
Public Property Strt As Object
|
||||||
|
Public Property Pst As Object
|
||||||
|
Public Property Cty As Object
|
||||||
|
Public Property Ctry As Object
|
||||||
|
Public Property LNG As Object
|
||||||
|
|
||||||
|
Private Const TBL As String = "imDHFAnmGdsItemDocCerts"
|
||||||
|
|
||||||
|
Private Function GetVarList(Optional includePK As Boolean = True) As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
Dim l As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
If includePK Then
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, "LizenzNr", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OperatorID", OperatorID, "OperatorID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VorgangID", VorgangID, "VorgangID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnmID", AnmID, "AnmID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kennung", Kennung, "Kennung", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("GdsItemID", GdsItemID, "GdsItemID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DocCertsID", DocCertsID, "DocCertsID", True))
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim skip = New HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {
|
||||||
|
"LizenzNr", "OperatorID", "VorgangID", "AnmID", "Kennung", "GdsItemID", "DocCertsID"
|
||||||
|
}
|
||||||
|
For Each p In Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
If Not p.CanRead OrElse Not p.CanWrite OrElse skip.Contains(p.Name) Then Continue For
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable(p.Name, p.GetValue(Me), p.Name, False))
|
||||||
|
Next
|
||||||
|
Return l
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Sub Save(conn As SqlConnection, tr As SqlTransaction)
|
||||||
|
Dim vars = GetVarList(includePK:=True)
|
||||||
|
Dim wherePk = "WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung AND [GdsItemID]=@GdsItemID AND [DocCertsID]=@DocCertsID"
|
||||||
|
Dim sqlCheck = $"IF EXISTS(SELECT 1 FROM [{TBL}] {wherePk}) BEGIN {_SqlDyn.BuildUpdateCmd(TBL, vars)} END ELSE BEGIN {_SqlDyn.BuildInsertCmd(TBL, vars)} END"
|
||||||
|
Using cmd As New SqlCommand(sqlCheck, conn, tr)
|
||||||
|
_SqlDyn.AddParams(cmd, vars)
|
||||||
|
cmd.ExecuteNonQuery()
|
||||||
|
End Using
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub FillFromReader(dr As SqlDataReader)
|
||||||
|
Dim props = Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
For Each p In props
|
||||||
|
If {"LizenzNr", "OperatorID", "VorgangID", "AnmID", "Kennung", "GdsItemID", "DocCertsID"}.Contains(p.Name) Then Continue For
|
||||||
|
If dr.GetSchemaTable().Rows.Cast(Of DataRow)().Any(Function(r) r("ColumnName").ToString() = p.Name) Then
|
||||||
|
If dr.IsDBNull(dr.GetOrdinal(p.Name)) Then
|
||||||
|
p.SetValue(Me, Nothing)
|
||||||
|
Else
|
||||||
|
p.SetValue(Me, dr(p.Name))
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
End Class
|
||||||
|
|
||||||
|
' ===========================================================
|
||||||
|
' ================ PACK (imDHFAnmGdsItemPack) ==========
|
||||||
|
' ===========================================================
|
||||||
|
Public Class cDHF_Import_GdsItemPack
|
||||||
|
' FK/PK
|
||||||
|
Public Property LizenzNr As String
|
||||||
|
Public Property OperatorID As String
|
||||||
|
Public Property VorgangID As String
|
||||||
|
Public Property AnmID As String
|
||||||
|
Public Property Kennung As String
|
||||||
|
Public Property GdsItemID As String
|
||||||
|
Public Property PackID As String
|
||||||
|
|
||||||
|
' Felder
|
||||||
|
Public Property Mark As Object
|
||||||
|
Public Property Kind As Object
|
||||||
|
Public Property Nr As Object
|
||||||
|
Public Property Piec As Object
|
||||||
|
|
||||||
|
Private Const TBL As String = "imDHFAnmGdsItemPack"
|
||||||
|
|
||||||
|
Private Function GetVarList(Optional includePK As Boolean = True) As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
Dim l As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
||||||
|
If includePK Then
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, "LizenzNr", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OperatorID", OperatorID, "OperatorID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VorgangID", VorgangID, "VorgangID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnmID", AnmID, "AnmID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kennung", Kennung, "Kennung", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("GdsItemID", GdsItemID, "GdsItemID", True))
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PackID", PackID, "PackID", True))
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim skip = New HashSet(Of String)(StringComparer.OrdinalIgnoreCase) From {
|
||||||
|
"LizenzNr", "OperatorID", "VorgangID", "AnmID", "Kennung", "GdsItemID", "PackID"
|
||||||
|
}
|
||||||
|
For Each p In Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
If Not p.CanRead OrElse Not p.CanWrite OrElse skip.Contains(p.Name) Then Continue For
|
||||||
|
l.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable(p.Name, p.GetValue(Me), p.Name, False))
|
||||||
|
Next
|
||||||
|
Return l
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Sub Save(conn As SqlConnection, tr As SqlTransaction)
|
||||||
|
Dim vars = GetVarList(includePK:=True)
|
||||||
|
Dim wherePk = "WHERE [LizenzNr]=@LizenzNr AND [OperatorID]=@OperatorID AND [VorgangID]=@VorgangID AND [AnmID]=@AnmID AND [Kennung]=@Kennung AND [GdsItemID]=@GdsItemID AND [PackID]=@PackID"
|
||||||
|
Dim sqlCheck = $"IF EXISTS(SELECT 1 FROM [{TBL}] {wherePk}) BEGIN {_SqlDyn.BuildUpdateCmd(TBL, vars)} END ELSE BEGIN {_SqlDyn.BuildInsertCmd(TBL, vars)} END"
|
||||||
|
Using cmd As New SqlCommand(sqlCheck, conn, tr)
|
||||||
|
_SqlDyn.AddParams(cmd, vars)
|
||||||
|
cmd.ExecuteNonQuery()
|
||||||
|
End Using
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub FillFromReader(dr As SqlDataReader)
|
||||||
|
Dim props = Me.GetType().GetProperties(BindingFlags.Public Or BindingFlags.Instance)
|
||||||
|
For Each p In props
|
||||||
|
If {"LizenzNr", "OperatorID", "VorgangID", "AnmID", "Kennung", "GdsItemID", "PackID"}.Contains(p.Name) Then Continue For
|
||||||
|
If dr.GetSchemaTable().Rows.Cast(Of DataRow)().Any(Function(r) r("ColumnName").ToString() = p.Name) Then
|
||||||
|
If dr.IsDBNull(dr.GetOrdinal(p.Name)) Then
|
||||||
|
p.SetValue(Me, Nothing)
|
||||||
|
Else
|
||||||
|
p.SetValue(Me, dr(p.Name))
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|
||||||
|
|
||||||
|
' -----------------------------------------------
|
||||||
|
' Gemeinsame Utilities für dynamische SQLs nach dem Muster aus _BASE
|
||||||
|
' -----------------------------------------------
|
||||||
|
Friend Module _SqlDyn
|
||||||
|
Friend Function BuildUpdateCmd(tableName As String, vars As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As String
|
||||||
|
Dim sets As New List(Of String)
|
||||||
|
Dim wheres As New List(Of String)
|
||||||
|
For Each v In vars
|
||||||
|
If v.isPrimaryParam Then
|
||||||
|
wheres.Add("[" & v.Text & "] = @" & v.Scalarvariable)
|
||||||
|
Else
|
||||||
|
sets.Add("[" & v.Text & "] = @" & v.Scalarvariable)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
If sets.Count = 0 Then Throw New Exception("Keine Non-PK-Spalten für UPDATE.")
|
||||||
|
Return $"UPDATE [{tableName}] SET {String.Join(",", sets)} WHERE {String.Join(" AND ", wheres)}"
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Function BuildInsertCmd(tableName As String, vars As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As String
|
||||||
|
Dim cols As New List(Of String)
|
||||||
|
Dim pars As New List(Of String)
|
||||||
|
For Each v In vars
|
||||||
|
If Not v.isPrimaryParam Then
|
||||||
|
cols.Add("[" & v.Text & "]")
|
||||||
|
pars.Add("@" & v.Scalarvariable)
|
||||||
|
Else
|
||||||
|
' PK-Spalten oft ebenfalls explizit spaltenseitig – hier mit aufnehmen,
|
||||||
|
' sofern in DB nicht als IDENTITY definiert:
|
||||||
|
cols.Add("[" & v.Text & "]")
|
||||||
|
pars.Add("@" & v.Scalarvariable)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Return $"INSERT INTO [{tableName}] ({String.Join(",", cols)}) VALUES({String.Join(",", pars)})"
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Friend Sub AddParams(cmd As SqlCommand, vars As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable))
|
||||||
|
For Each v In vars
|
||||||
|
cmd.Parameters.AddWithValue("@" & v.Scalarvariable, If(v.Value, DBNull.Value))
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Friend Sub DataReaderToObject(dr As SqlDataReader, target As Object, vars As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable))
|
||||||
|
Dim t = target.GetType()
|
||||||
|
For Each v In vars
|
||||||
|
Dim pi = t.GetProperty(v.Text)
|
||||||
|
If pi IsNot Nothing AndAlso Not dr.IsDBNull(dr.GetOrdinal(v.Text)) Then
|
||||||
|
pi.SetValue(target, dr(v.Text))
|
||||||
|
ElseIf pi IsNot Nothing Then
|
||||||
|
pi.SetValue(target, Nothing)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Sub test()
|
||||||
|
|
||||||
|
'' Verwendung(Beispiel)
|
||||||
|
|
||||||
|
' Kopf anlegen
|
||||||
|
Dim imp As New cDHF_Import("LIC", "OP", "VORG", "ANM", "KENN")
|
||||||
|
imp.RechnungsNr = "INV-2025-001"
|
||||||
|
imp.InvCurr = "EUR"
|
||||||
|
imp.InvVal = 12345D
|
||||||
|
|
||||||
|
' Position hinzufügen
|
||||||
|
Dim it = New cDHF_Import_GdsItem() With {
|
||||||
|
.GdsItemID = "1",
|
||||||
|
.ItNr = 1,
|
||||||
|
.ComCd = "85044030",
|
||||||
|
.GdsDes = "Power Supply",
|
||||||
|
.Net = 12.34D,
|
||||||
|
.ItVal = 999D
|
||||||
|
}
|
||||||
|
' Doc/Certs
|
||||||
|
it.DocCerts.Add(New cDHF_Import_GdsItemDocCerts() With {
|
||||||
|
.DocCertsID = "1",
|
||||||
|
.DocCd = "N380",
|
||||||
|
.DRef = "REF-123",
|
||||||
|
.Avail = 1
|
||||||
|
})
|
||||||
|
' Packstücke
|
||||||
|
it.Packs.Add(New cDHF_Import_GdsItemPack() With {
|
||||||
|
.PackID = "1",
|
||||||
|
.Kind = "PK",
|
||||||
|
.Piec = 3
|
||||||
|
})
|
||||||
|
|
||||||
|
imp.GdsItems.Add(it)
|
||||||
|
|
||||||
|
' Speichern -> speichert Kopf + Position + Unterzeilen in einer Transaktion
|
||||||
|
Dim ok = imp.Save()
|
||||||
|
|
||||||
|
' Laden
|
||||||
|
Dim imp2 As New cDHF_Import("S01122", "1", "VORG", "ANM", "KENN")
|
||||||
|
' -> imp2 ist nun inkl. GdsItems, DocCerts und Packs befüllt
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
End Module
|
||||||
@@ -396,6 +396,7 @@
|
|||||||
<Compile Include="Schnittstellen\BZST\cBZST_UID.vb" />
|
<Compile Include="Schnittstellen\BZST\cBZST_UID.vb" />
|
||||||
<Compile Include="Schnittstellen\cHMRC.vb" />
|
<Compile Include="Schnittstellen\cHMRC.vb" />
|
||||||
<Compile Include="Schnittstellen\DHF\cDHF_Artikel.vb" />
|
<Compile Include="Schnittstellen\DHF\cDHF_Artikel.vb" />
|
||||||
|
<Compile Include="Schnittstellen\DHF\cDHF_Import.vb" />
|
||||||
<Compile Include="Schnittstellen\TELOTEC\cTelotecAPI.vb" />
|
<Compile Include="Schnittstellen\TELOTEC\cTelotecAPI.vb" />
|
||||||
<Compile Include="Schnittstellen\HMRC\cHMRCToken.vb" />
|
<Compile Include="Schnittstellen\HMRC\cHMRCToken.vb" />
|
||||||
<Compile Include="Classes\cKundenAufschubkonten.vb" />
|
<Compile Include="Classes\cKundenAufschubkonten.vb" />
|
||||||
|
|||||||
Reference in New Issue
Block a user