diff --git a/GUIs.Common/Common.vbproj b/GUIs.Common/Common.vbproj index e2a874b6..8ee7a874 100644 --- a/GUIs.Common/Common.vbproj +++ b/GUIs.Common/Common.vbproj @@ -118,6 +118,7 @@ Form + diff --git a/GUIs.Common/DocumentResultList/CheckInOut.vb b/GUIs.Common/DocumentResultList/CheckInOut.vb new file mode 100644 index 00000000..08ebf524 --- /dev/null +++ b/GUIs.Common/DocumentResultList/CheckInOut.vb @@ -0,0 +1,49 @@ +Imports DigitalData.Modules.Base +Imports DigitalData.Modules.EDMI.API +Imports DigitalData.Modules.Logging + +Namespace DocumentResultList + Public Class CheckInOut + Inherits BaseClass + Private Client As Client + + Public Sub New(pLogConfig As LogConfig, pClient As Client) + MyBase.New(pLogConfig) + Client = pClient + End Sub + + Public Async Function GetCheckoutState(pObjectId As Long) As Task(Of CheckoutState) + Try + Dim oSQL = $"SELECT * FROM VWOBJECT_CHECKED_OUT WHERE IDB_OBJ_ID = {pObjectId}" + Dim oResponse = Await Client.GetDatatableFromIDBAsync(oSQL) + + If oResponse.ok = False Then + Return Nothing + End If + + If oResponse.Table.Rows.Count = 0 Then + Return New CheckoutState() + End If + + Dim oRow = oResponse.Table.Rows.Item(0) + Dim oState As New CheckoutState With { + .IsCheckedOut = True, + .CheckedOutWhen = oRow.Item("CHECKED_OUT_WHEN"), + .CheckedOutWho = oRow.Item("EMAIL") + } + + Return oState + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + + Public Class CheckoutState + Public Property IsCheckedOut As Boolean = False + Public Property CheckedOutWhen As Date = Nothing + Public Property CheckedOutWho As String = Nothing + End Class + End Class +End Namespace diff --git a/GUIs.Common/My Project/licenses.licx b/GUIs.Common/My Project/licenses.licx index a411537a..d7156af2 100644 --- a/GUIs.Common/My Project/licenses.licx +++ b/GUIs.Common/My Project/licenses.licx @@ -1,10 +1,11 @@ -DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.Repository.RepositoryItemDateEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.ProgressBarControl, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ProgressBarControl, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.Designer.vb b/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.Designer.vb index 788532c8..6bacebd3 100644 --- a/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.Designer.vb +++ b/GUIs.Common/ObjectPropertyDialog/ctrlObjectPropertyDialog.Designer.vb @@ -122,7 +122,6 @@ Partial Class ctrlObjectPropertyDialog 'XtraTabControl1 ' Me.XtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill - Me.XtraTabControl1.HeaderLocation = DevExpress.XtraTab.TabHeaderLocation.Bottom Me.XtraTabControl1.Location = New System.Drawing.Point(0, 30) Me.XtraTabControl1.Name = "XtraTabControl1" Me.XtraTabControl1.SelectedTabPage = Me.XtraTabPageObject diff --git a/GUIs.Common/frmDocumentResultList.Designer.vb b/GUIs.Common/frmDocumentResultList.Designer.vb index d08b87ca..49456117 100644 --- a/GUIs.Common/frmDocumentResultList.Designer.vb +++ b/GUIs.Common/frmDocumentResultList.Designer.vb @@ -21,7 +21,7 @@ Partial Class frmDocumentResultList Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmDocumentResultList)) - Dim PushTransition1 As DevExpress.Utils.Animation.PushTransition = New DevExpress.Utils.Animation.PushTransition() + Dim FadeTransition1 As DevExpress.Utils.Animation.FadeTransition = New DevExpress.Utils.Animation.FadeTransition() Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl() Me.GridControl1 = New DevExpress.XtraGrid.GridControl() Me.GridView1 = New DevExpress.XtraGrid.Views.BandedGrid.BandedGridView() @@ -96,6 +96,17 @@ Partial Class frmDocumentResultList Me.DockManager1 = New DevExpress.XtraBars.Docking.DockManager(Me.components) Me.DockPanelFileList = New DevExpress.XtraBars.Docking.DockPanel() Me.DockPanel2_Container = New DevExpress.XtraBars.Docking.ControlContainer() + Me.panelContainer1 = New DevExpress.XtraBars.Docking.DockPanel() + Me.DockPanelStatus = New DevExpress.XtraBars.Docking.DockPanel() + Me.ControlContainer1 = New DevExpress.XtraBars.Docking.ControlContainer() + Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl() + Me.txtCheckedOutWho = New DevExpress.XtraEditors.TextEdit() + Me.dateCheckedOutWhen = New DevExpress.XtraEditors.DateEdit() + Me.Root = New DevExpress.XtraLayout.LayoutControlGroup() + Me.LayoutControlGroup1 = New DevExpress.XtraLayout.LayoutControlGroup() + Me.LayoutControlItem1 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem2 = New DevExpress.XtraLayout.LayoutControlItem() + Me.EmptySpaceItem1 = New DevExpress.XtraLayout.EmptySpaceItem() Me.DockPanelMetadata = New DevExpress.XtraBars.Docking.DockPanel() Me.DockPanel3_Container = New DevExpress.XtraBars.Docking.ControlContainer() Me.CtrlObjectPropertyDialog = New DigitalData.GUIs.Common.ctrlObjectPropertyDialog() @@ -126,6 +137,19 @@ Partial Class frmDocumentResultList CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).BeginInit() Me.DockPanelFileList.SuspendLayout() Me.DockPanel2_Container.SuspendLayout() + Me.panelContainer1.SuspendLayout() + Me.DockPanelStatus.SuspendLayout() + Me.ControlContainer1.SuspendLayout() + CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.LayoutControl1.SuspendLayout() + CType(Me.txtCheckedOutWho.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.dateCheckedOutWhen.Properties.CalendarTimeProperties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.dateCheckedOutWhen.Properties, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.Root, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.EmptySpaceItem1, System.ComponentModel.ISupportInitialize).BeginInit() Me.DockPanelMetadata.SuspendLayout() Me.DockPanel3_Container.SuspendLayout() Me.DockPanelDocViewer.SuspendLayout() @@ -192,7 +216,7 @@ Partial Class frmDocumentResultList Me.RibbonControl.ExpandCollapseItem.Id = 0 Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.SwitchMainContainerHorizontal, Me.SwitchDetailContainerHorizontal, Me.BarButtonItemExportGrid1, Me.BarStaticItem1, Me.labelResultCount, Me.BarButtonBack, Me.BarButtonResetLayout, Me.labelCriticalError, Me.labelWarning, Me.MenuItemFileOpen, Me.MenuItemPropertiesIDB, Me.MenuItemFolderOpen, Me.MenuItemFilepathCopy, Me.MenuItemFolderpathCopy, Me.MenuItemProperties, Me.MenuItemsOpenFileZooFlow, Me.MenuItemPropertiesZooFlow, Me.ButtonRefresh, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarButtonItem5, Me.BarButtonItem6, Me.MenuItemStartAdhocWorkflow, Me.MenuItemCheckInFile, Me.MenuItemCheckOutFile, Me.MenuItemVersionFile, Me.chkGridShowQuickfilter, Me.chkGridShowGrouping, Me.chkGridShowTitle, Me.MenuItemSaveProperties, Me.BarButtonItem11, Me.BarWorkspaceMenuItem1}) resources.ApplyResources(Me.RibbonControl, "RibbonControl") - Me.RibbonControl.MaxItemId = 46 + Me.RibbonControl.MaxItemId = 48 Me.RibbonControl.Name = "RibbonControl" Me.RibbonControl.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategoryFile, Me.RibbonPageCategoryAttribute}) Me.RibbonControl.PageHeaderItemLinks.Add(Me.BarWorkspaceMenuItem1) @@ -321,7 +345,7 @@ Partial Class frmDocumentResultList ' resources.ApplyResources(Me.MenuItemProperties, "MenuItemProperties") Me.MenuItemProperties.Id = 26 - Me.MenuItemProperties.ImageOptions.SvgImage = CType(resources.GetObject("MenuItemPropertiesECM.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.MenuItemProperties.ImageOptions.SvgImage = CType(resources.GetObject("MenuItemProperties.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.MenuItemProperties.Name = "MenuItemProperties" ' 'MenuItemsOpenFileZooFlow @@ -455,7 +479,7 @@ Partial Class frmDocumentResultList 'WorkspaceManager1 ' Me.WorkspaceManager1.TargetControl = Me - Me.WorkspaceManager1.TransitionType = PushTransition1 + Me.WorkspaceManager1.TransitionType = FadeTransition1 ' 'RibbonPageCategoryFile ' @@ -695,7 +719,7 @@ Partial Class frmDocumentResultList 'DockManager1 ' Me.DockManager1.Form = Me - Me.DockManager1.RootPanels.AddRange(New DevExpress.XtraBars.Docking.DockPanel() {Me.DockPanelFileList, Me.DockPanelMetadata, Me.DockPanelDocViewer}) + Me.DockManager1.RootPanels.AddRange(New DevExpress.XtraBars.Docking.DockPanel() {Me.DockPanelFileList, Me.panelContainer1, Me.DockPanelDocViewer}) Me.DockManager1.TopZIndexControls.AddRange(New String() {"DevExpress.XtraBars.BarDockControl", "DevExpress.XtraBars.StandaloneBarDockControl", "System.Windows.Forms.MenuStrip", "System.Windows.Forms.StatusStrip", "System.Windows.Forms.StatusBar", "DevExpress.XtraBars.Ribbon.RibbonStatusBar", "DevExpress.XtraBars.Ribbon.RibbonControl", "DevExpress.XtraBars.Navigation.OfficeNavigationBar", "DevExpress.XtraBars.Navigation.TileNavPane", "DevExpress.XtraBars.TabFormControl", "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl", "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl"}) ' 'DockPanelFileList @@ -714,10 +738,109 @@ Partial Class frmDocumentResultList resources.ApplyResources(Me.DockPanel2_Container, "DockPanel2_Container") Me.DockPanel2_Container.Name = "DockPanel2_Container" ' + 'panelContainer1 + ' + Me.panelContainer1.ActiveChild = Me.DockPanelStatus + Me.panelContainer1.Controls.Add(Me.DockPanelStatus) + Me.panelContainer1.Controls.Add(Me.DockPanelMetadata) + Me.panelContainer1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right + Me.panelContainer1.ID = New System.Guid("3d77391e-21ef-4574-8521-d9f3b7468ebe") + resources.ApplyResources(Me.panelContainer1, "panelContainer1") + Me.panelContainer1.Name = "panelContainer1" + Me.panelContainer1.OriginalSize = New System.Drawing.Size(275, 200) + Me.panelContainer1.Tabbed = True + ' + 'DockPanelStatus + ' + Me.DockPanelStatus.Controls.Add(Me.ControlContainer1) + Me.DockPanelStatus.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill + Me.DockPanelStatus.FloatVertical = True + Me.DockPanelStatus.ID = New System.Guid("ef61c6cb-3dbd-4dd5-9df0-9d331a859d3d") + resources.ApplyResources(Me.DockPanelStatus, "DockPanelStatus") + Me.DockPanelStatus.Name = "DockPanelStatus" + Me.DockPanelStatus.Options.ShowCloseButton = False + Me.DockPanelStatus.OriginalSize = New System.Drawing.Size(273, 97) + ' + 'ControlContainer1 + ' + Me.ControlContainer1.Controls.Add(Me.LayoutControl1) + resources.ApplyResources(Me.ControlContainer1, "ControlContainer1") + Me.ControlContainer1.Name = "ControlContainer1" + ' + 'LayoutControl1 + ' + Me.LayoutControl1.Controls.Add(Me.txtCheckedOutWho) + Me.LayoutControl1.Controls.Add(Me.dateCheckedOutWhen) + resources.ApplyResources(Me.LayoutControl1, "LayoutControl1") + Me.LayoutControl1.Name = "LayoutControl1" + Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(1068, 325, 650, 400) + Me.LayoutControl1.Root = Me.Root + ' + 'txtCheckedOutWho + ' + resources.ApplyResources(Me.txtCheckedOutWho, "txtCheckedOutWho") + Me.txtCheckedOutWho.MenuManager = Me.RibbonControl + Me.txtCheckedOutWho.Name = "txtCheckedOutWho" + Me.txtCheckedOutWho.Properties.ReadOnly = True + Me.txtCheckedOutWho.StyleController = Me.LayoutControl1 + ' + 'dateCheckedOutWhen + ' + resources.ApplyResources(Me.dateCheckedOutWhen, "dateCheckedOutWhen") + Me.dateCheckedOutWhen.MenuManager = Me.RibbonControl + Me.dateCheckedOutWhen.Name = "dateCheckedOutWhen" + Me.dateCheckedOutWhen.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(CType(resources.GetObject("DateEdit1.Properties.Buttons"), DevExpress.XtraEditors.Controls.ButtonPredefines))}) + Me.dateCheckedOutWhen.Properties.CalendarTimeProperties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(CType(resources.GetObject("DateEdit1.Properties.CalendarTimeProperties.Buttons"), DevExpress.XtraEditors.Controls.ButtonPredefines))}) + Me.dateCheckedOutWhen.Properties.ReadOnly = True + Me.dateCheckedOutWhen.StyleController = Me.LayoutControl1 + ' + 'Root + ' + Me.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True] + Me.Root.GroupBordersVisible = False + Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroup1, Me.EmptySpaceItem1}) + Me.Root.Name = "Root" + Me.Root.Size = New System.Drawing.Size(268, 434) + Me.Root.TextVisible = False + ' + 'LayoutControlGroup1 + ' + Me.LayoutControlGroup1.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem1, Me.LayoutControlItem2}) + Me.LayoutControlGroup1.Location = New System.Drawing.Point(0, 0) + Me.LayoutControlGroup1.Name = "LayoutControlGroup1" + Me.LayoutControlGroup1.Size = New System.Drawing.Size(248, 93) + resources.ApplyResources(Me.LayoutControlGroup1, "LayoutControlGroup1") + ' + 'LayoutControlItem1 + ' + Me.LayoutControlItem1.Control = Me.txtCheckedOutWho + Me.LayoutControlItem1.Location = New System.Drawing.Point(0, 0) + Me.LayoutControlItem1.Name = "LayoutControlItem1" + Me.LayoutControlItem1.Size = New System.Drawing.Size(224, 24) + resources.ApplyResources(Me.LayoutControlItem1, "LayoutControlItem1") + Me.LayoutControlItem1.TextSize = New System.Drawing.Size(126, 13) + ' + 'LayoutControlItem2 + ' + Me.LayoutControlItem2.Control = Me.dateCheckedOutWhen + Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 24) + Me.LayoutControlItem2.Name = "LayoutControlItem2" + Me.LayoutControlItem2.Size = New System.Drawing.Size(224, 24) + resources.ApplyResources(Me.LayoutControlItem2, "LayoutControlItem2") + Me.LayoutControlItem2.TextSize = New System.Drawing.Size(126, 13) + ' + 'EmptySpaceItem1 + ' + Me.EmptySpaceItem1.AllowHotTrack = False + Me.EmptySpaceItem1.Location = New System.Drawing.Point(0, 93) + Me.EmptySpaceItem1.Name = "EmptySpaceItem1" + Me.EmptySpaceItem1.Size = New System.Drawing.Size(248, 321) + Me.EmptySpaceItem1.TextSize = New System.Drawing.Size(0, 0) + ' 'DockPanelMetadata ' Me.DockPanelMetadata.Controls.Add(Me.DockPanel3_Container) - Me.DockPanelMetadata.Dock = DevExpress.XtraBars.Docking.DockingStyle.Right + Me.DockPanelMetadata.Dock = DevExpress.XtraBars.Docking.DockingStyle.Fill Me.DockPanelMetadata.ID = New System.Guid("a7688cec-f13e-448b-82cf-a6bb020fb3f7") resources.ApplyResources(Me.DockPanelMetadata, "DockPanelMetadata") Me.DockPanelMetadata.Name = "DockPanelMetadata" @@ -743,7 +866,7 @@ Partial Class frmDocumentResultList resources.ApplyResources(Me.DockPanelDocViewer, "DockPanelDocViewer") Me.DockPanelDocViewer.Name = "DockPanelDocViewer" Me.DockPanelDocViewer.Options.ShowCloseButton = False - Me.DockPanelDocViewer.OriginalSize = New System.Drawing.Size(324, 200) + Me.DockPanelDocViewer.OriginalSize = New System.Drawing.Size(329, 200) ' 'DockPanel1_Container ' @@ -761,7 +884,7 @@ Partial Class frmDocumentResultList resources.ApplyResources(Me, "$this") Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.Controls.Add(Me.DockPanelDocViewer) - Me.Controls.Add(Me.DockPanelMetadata) + Me.Controls.Add(Me.panelContainer1) Me.Controls.Add(Me.DockPanelFileList) Me.Controls.Add(Me.RibbonStatusBar) Me.Controls.Add(Me.RibbonControl) @@ -794,6 +917,19 @@ Partial Class frmDocumentResultList CType(Me.DockManager1, System.ComponentModel.ISupportInitialize).EndInit() Me.DockPanelFileList.ResumeLayout(False) Me.DockPanel2_Container.ResumeLayout(False) + Me.panelContainer1.ResumeLayout(False) + Me.DockPanelStatus.ResumeLayout(False) + Me.ControlContainer1.ResumeLayout(False) + CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.LayoutControl1.ResumeLayout(False) + CType(Me.txtCheckedOutWho.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.dateCheckedOutWhen.Properties.CalendarTimeProperties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.dateCheckedOutWhen.Properties, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.Root, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.EmptySpaceItem1, System.ComponentModel.ISupportInitialize).EndInit() Me.DockPanelMetadata.ResumeLayout(False) Me.DockPanel3_Container.ResumeLayout(False) Me.DockPanelDocViewer.ResumeLayout(False) @@ -884,4 +1020,15 @@ Partial Class frmDocumentResultList Friend WithEvents RibbonPageCategoryAttribute As DevExpress.XtraBars.Ribbon.RibbonPageCategory Friend WithEvents RibbonPageAttribute As DevExpress.XtraBars.Ribbon.RibbonPage Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents DockPanelStatus As DevExpress.XtraBars.Docking.DockPanel + Friend WithEvents ControlContainer1 As DevExpress.XtraBars.Docking.ControlContainer + Friend WithEvents panelContainer1 As DevExpress.XtraBars.Docking.DockPanel + Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl + Friend WithEvents txtCheckedOutWho As DevExpress.XtraEditors.TextEdit + Friend WithEvents dateCheckedOutWhen As DevExpress.XtraEditors.DateEdit + Friend WithEvents Root As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents LayoutControlGroup1 As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents LayoutControlItem1 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents LayoutControlItem2 As DevExpress.XtraLayout.LayoutControlItem + Friend WithEvents EmptySpaceItem1 As DevExpress.XtraLayout.EmptySpaceItem End Class diff --git a/GUIs.Common/frmDocumentResultList.resx b/GUIs.Common/frmDocumentResultList.resx index b73617c4..fa4484e5 100644 --- a/GUIs.Common/frmDocumentResultList.resx +++ b/GUIs.Common/frmDocumentResultList.resx @@ -391,7 +391,7 @@ Eigenschaften - + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -496,7 +496,7 @@ 0, 0 - 318, 459 + 323, 459 @@ -518,7 +518,7 @@ 3, 26 - 318, 459 + 323, 459 0 @@ -539,7 +539,7 @@ 585, 158 - 324, 489 + 329, 489 Vorschau @@ -556,6 +556,136 @@ 0 + + 162, 45 + + + 82, 20 + + + 4 + + + txtCheckedOutWho + + + DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + LayoutControl1 + + + 4 + + + + + + 162, 69 + + + + Combo + + + Combo + + + 82, 20 + + + 5 + + + dateCheckedOutWhen + + + DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + LayoutControl1 + + + 5 + + + Fill + + + 0, 0 + + + Bearbeitet von + + + In Bearbeitung genommen + + + In Bearbeitung + + + 268, 434 + + + 0 + + + LayoutControl1 + + + LayoutControl1 + + + DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + ControlContainer1 + + + 0 + + + 0, 0 + + + 268, 434 + + + 0 + + + ControlContainer1 + + + DevExpress.XtraBars.Docking.ControlContainer, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + DockPanelStatus + + + 0 + + + 4, 26 + + + 268, 434 + + + Status + + + DockPanelStatus + + + DevExpress.XtraBars.Docking.DockPanel, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + panelContainer1 + + + 0 + Fill @@ -563,7 +693,7 @@ 0, 0 - 273, 460 + 268, 434 0 @@ -581,10 +711,10 @@ 0 - 4, 26 + 0, 0 - 273, 460 + 268, 434 0 @@ -602,10 +732,10 @@ 0 - 909, 158 + 4, 26 - 280, 489 + 268, 434 Eigenschaften @@ -617,11 +747,32 @@ DevExpress.XtraBars.Docking.DockPanel, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - $this + panelContainer1 1 + + 914, 158 + + + 275, 489 + + + panelContainer1 + + + panelContainer1 + + + DevExpress.XtraBars.Docking.DockPanel, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + $this + + + 1 + 3, 26 @@ -1149,6 +1300,36 @@ DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + Root + + + DevExpress.XtraLayout.LayoutControlGroup, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + LayoutControlGroup1 + + + DevExpress.XtraLayout.LayoutControlGroup, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + LayoutControlItem1 + + + DevExpress.XtraLayout.LayoutControlItem, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + LayoutControlItem2 + + + DevExpress.XtraLayout.LayoutControlItem, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + EmptySpaceItem1 + + + DevExpress.XtraLayout.EmptySpaceItem, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + SvgImageCollection1 diff --git a/GUIs.Common/frmDocumentResultList.vb b/GUIs.Common/frmDocumentResultList.vb index bc5f9cf1..5f4c7e71 100644 --- a/GUIs.Common/frmDocumentResultList.vb +++ b/GUIs.Common/frmDocumentResultList.vb @@ -6,7 +6,6 @@ Imports DevExpress.Utils Imports DevExpress.XtraBars Imports DevExpress.XtraEditors Imports DevExpress.XtraGrid -Imports DevExpress.XtraGrid.Columns Imports DevExpress.XtraGrid.Views.BandedGrid Imports DevExpress.XtraGrid.Views.Base Imports DevExpress.XtraGrid.Views.Grid @@ -21,6 +20,7 @@ Imports DigitalData.Modules.ZooFlow.Constants Imports DigitalData.Modules.Base.IDB.FileStore Imports DigitalData.Controls.MessageBoxEx Imports DigitalData.GUIs.Common.Base +Imports DigitalData.GUIs.Common.DocumentResultList Public Class frmDocumentResultList Implements IResultForm, IBaseForm @@ -39,6 +39,7 @@ Public Class frmDocumentResultList Private Client As Client Private Documentloader As DocumentResultList.Loader Private ControlManager As AttributeControls + Private CheckoutManager As CheckInOut Private ReadOnly Config As ConfigManager(Of DocumentResultList.Config) Private ReadOnly Environment As Environment @@ -63,6 +64,7 @@ Public Class frmDocumentResultList Private ReadOnly ColumnFilename As String = "Filename" Private ReadOnly ColumnDocumentId As String = "DocID" Private ReadOnly ColumnIcon As String = "ICON" + Private ReadOnly ColumnCheckedOut As String = "CHECKED_OUT" Private Property _ActiveGrid As GridControl = Nothing Private Property _ActiveGridBand As GridBand = Nothing @@ -98,15 +100,15 @@ Public Class frmDocumentResultList Params = pParams ResultLists = pParams.Results - Config = New ConfigManager(Of DocumentResultList.Config)(pLogConfig, oConfigPath, oConfigPath) + Config = New ConfigManager(Of Config)(pLogConfig, oConfigPath, oConfigPath) Helpers = New DocumentResultList.Helpers(pLogConfig) Filesystem = New Modules.Filesystem.File(pLogConfig) GridBuilder = New GridBuilder(New List(Of GridView) From {GridView1, GridView2, GridView3}) FileEx = New Modules.Windows.File(pLogConfig) - Watcher = New DocumentResultList.Watcher(pLogConfig) - LayoutManager = New DocumentResultList.Layout(pLogConfig, Config, New List(Of GridView) From {GridView1, GridView2, GridView3}) + Watcher = New Watcher(pLogConfig) + LayoutManager = New Layout(pLogConfig, Config, New List(Of GridView) From {GridView1, GridView2, GridView3}) - UserLanguage = Utils.NotNull(Me.Environment.User.Language, State.UserState.LANG_EN_US) + UserLanguage = Utils.NotNull(Environment.User.Language, State.UserState.LANG_EN_US) End Sub Private Function GetOperationMode() As OperationMode @@ -254,6 +256,15 @@ Public Class frmDocumentResultList 'End If Await CtrlObjectPropertyDialog.LoadObject(oObjectId) + + Dim oCheckoutState = Await CheckOutManager.GetCheckoutState(oObjectId) + If oCheckoutState IsNot Nothing Then + txtCheckedOutWho.EditValue = oCheckoutState.CheckedOutWho + dateCheckedOutWhen.EditValue = oCheckoutState.CheckedOutWhen + Else + txtCheckedOutWho.EditValue = Nothing + dateCheckedOutWhen.EditValue = Nothing + End If End If Else RibbonPageCategoryFile.Visible = False @@ -381,6 +392,7 @@ Public Class frmDocumentResultList Client = New Client(LogConfig, oAddress, oPort) ControlManager = New AttributeControls(LogConfig, Environment, Client) + CheckoutManager = New CheckInOut(LogConfig, Client) If Not Client.Connect() Then Logger.Warn("Client could not connect to Service at [{0}]", Environment.Service.Address) @@ -540,7 +552,7 @@ Public Class frmDocumentResultList Private Sub CreateDocumentGrid(GridView As BandedGridView, Result As DocumentResultList.DocumentResult) Try - If IsNothing(GridView.Columns(ColumnIcon)) Then + If GridView.Columns.Item(ColumnIcon) Is Nothing Then Dim oIconColumn = GridView.Columns.AddVisible(ColumnIcon, ColumnIcon) With oIconColumn .OptionsColumn.AllowSort = False @@ -557,7 +569,6 @@ Public Class frmDocumentResultList oFirstBand.Columns.MoveTo(0, oIconColumn) End If - Dim oColumnsToHide As New List(Of String) From { ColumnDocumentId, ColumnFilepath, @@ -632,40 +643,43 @@ Public Class frmDocumentResultList - 'Private Sub GridView1_CustomDrawCell(sender As Object, e As RowCellCustomDrawEventArgs) Handles GridView1.CustomDrawCell - ' If e.RowHandle <> GridControl.NewItemRowHandle AndAlso e.Column.FieldName = COLUMN_ICON Then - ' Dim oRow As DataRow = TryCast(sender, GridView)?.GetDataRow(e.RowHandle) - ' Dim oValue = oRow.Item(COLUMN_FILENAME) + Private Sub GridView1_CustomDrawCell(sender As Object, e As RowCellCustomDrawEventArgs) Handles GridView1.CustomDrawCell - ' If oValue.ToString.EndsWith(".pdf") Then - ' Dim oIcon = My.Resources.pdf - ' e.Cache.DrawImage(oIcon, e.Bounds.X + 0, e.Bounds.Y + 0, 18, 18) - ' End If - ' End If - ' 'Try - ' ' If e.RowHandle < 0 Then - ' ' Exit Sub - ' ' End If - ' ' e.DefaultDraw() + 'If e.RowHandle <> GridControl.NewItemRowHandle AndAlso e.Column.FieldName = ColumnIcon Then + ' Dim oRow As DataRow = TryCast(sender, GridView)?.GetDataRow(e.RowHandle) + ' Dim oValue = oRow.Item(COLUMN_FILENAME) - ' ' Dim oView As GridView = TryCast(sender, GridView) - ' ' Dim oCellInfo As GridCellInfo = TryCast(e.Cell, GridCellInfo) - ' ' Dim oRow As DataRow = oView.GetDataRow(e.RowHandle) - ' ' Dim oValue = oRow.Item(COLUMN_FILENAME) + ' If oValue.ToString.EndsWith(".pdf") Then + ' Dim oIcon = My.Resources.pdf + ' e.Cache.DrawImage(oIcon, e.Bounds.X + 0, e.Bounds.Y + 0, 18, 18) + ' End If + 'End If - ' ' If e.Column.FieldName = COLUMN_ICON Then - ' ' Dim oIcon = Helpers.GetIconByExtension(oValue) - ' ' Dim offsetX = 0 - ' ' Dim offsetY = 0 + 'Try + ' If e.RowHandle < 0 Then + ' Exit Sub + ' End If - ' ' e.Cache.DrawImage(oIcon, e.Bounds.X + offsetX, e.Bounds.Y + offsetY, 18, 18) - ' ' End If - ' 'Catch ex As Exception - ' ' Logger.Error(ex) - ' 'End Try - 'End Sub + ' e.DefaultDraw() + + ' Dim oView As GridView = TryCast(sender, GridView) + ' Dim oCellInfo As GridCellInfo = TryCast(e.Cell, GridCellInfo) + ' Dim oRow As DataRow = oView.GetDataRow(e.RowHandle) + ' Dim oValue = oRow.Item(COLUMN_FILENAME) + + ' If e.Column.FieldName = COLUMN_ICON Then + ' Dim oIcon = Helpers.GetIconByExtension(oValue) + ' Dim offsetX = 0 + ' Dim offsetY = 0 + + ' e.Cache.DrawImage(oIcon, e.Bounds.X + offsetX, e.Bounds.Y + offsetY, 18, 18) + ' End If + 'Catch ex As Exception + ' Logger.Error(ex) + 'End Try + End Sub Private Sub BarButtonItemExportGrid1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemExportGrid1.ItemClick Dim oActiveGrid = GetActiveGridControl() @@ -856,6 +870,43 @@ Public Class frmDocumentResultList Process.Start(oInfo) End Sub + Private Async Sub MenuItemCheckOutFile_ItemClick(sender As Object, e As ItemClickEventArgs) Handles MenuItemCheckOutFile.ItemClick + Dim oObjectId = _CurrentDocument?.Id + Dim oResultComment As String = ShowCheckInOutCommentForm() + If IsNothing(oResultComment) Then + Exit Sub + End If + + Await Client.CheckOutFile(oObjectId, oResultComment) + + End Sub + + Private Sub MenuItemCheckInFile_ItemClick(sender As Object, e As ItemClickEventArgs) Handles MenuItemCheckInFile.ItemClick + Dim oObjectId = _CurrentDocument?.Id + Client.CheckInFile(oObjectId) + End Sub + + Private Function ShowCheckInOutCommentForm() + Dim editor As New MemoEdit() + Dim args As New XtraInputBoxArgs With { + .Caption = "Checkout/in Kommentar", + .Prompt = "Kommentar", + .DefaultButtonIndex = 0, + .Editor = editor, + .DefaultResponse = "" + } + args.ContentPadding = args.ButtonPadding + + AddHandler args.Showing, AddressOf Args_Showing + + Dim result = XtraInputBox.Show(args).ToString() + Return result + End Function + + Private Sub Args_Showing(ByVal sender As Object, ByVal e As XtraMessageShowingArgs) + e.Form.Icon = Me.Icon + End Sub + #End Region #Region "Drag to Export" @@ -974,4 +1025,13 @@ Public Class frmDocumentResultList Private Sub CtrlObjectPropertyDialog_Leave(sender As Object, e As EventArgs) Handles CtrlObjectPropertyDialog.Leave RibbonPageCategoryAttribute.Visible = False End Sub + + Private Sub GridView1_RowStyle(sender As Object, e As RowStyleEventArgs) Handles GridView1.RowStyle + Dim oGridView As BandedGridView = sender + Dim oRow As DataRowView = oGridView.GetRow(e.RowHandle) + + If oRow IsNot Nothing AndAlso oRow.Row.Item(ColumnCheckedOut) IsNot Nothing AndAlso oRow.Row.Item(ColumnCheckedOut) = True Then + e.Appearance.BackColor = Color.LightSalmon + End If + End Sub End Class \ No newline at end of file diff --git a/GUIs.Test.ZUGFeRDTest/Form1.vb b/GUIs.Test.ZUGFeRDTest/Form1.vb index 7cfdb15e..91cb7341 100644 --- a/GUIs.Test.ZUGFeRDTest/Form1.vb +++ b/GUIs.Test.ZUGFeRDTest/Form1.vb @@ -105,10 +105,13 @@ Public Class Form1 Dim oArgs As New WorkerArgs() If oResult = DialogResult.OK Then - Dim oDoc = _zugferd.ValidateZUGFeRDFileWithGDPicture(OpenFileDialog1.FileName) - Dim oZUGFERD = _zugferd.SerializeZUGFeRDDocument(oDoc) - Console.WriteLine() - + Try + Dim oDoc = _zugferd.ValidateZUGFeRDFileWithGDPicture(OpenFileDialog1.FileName) + Dim oZUGFERD = _zugferd.SerializeZUGFeRDDocument(oDoc) + Console.WriteLine() + Catch ex As Exception + MsgBox(ex.Message) + End Try End If End Sub diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb index 4ab2ba5b..811203cb 100644 --- a/Modules.EDMIAPI/Client.vb +++ b/Modules.EDMIAPI/Client.vb @@ -236,6 +236,42 @@ Public Class Client End Try End Function + Public Async Function CheckOutFile(pObjectId As Long, pComment As String, Optional pOptions As Options.CheckOutInOptions = Nothing) As Task(Of Long) + Try + Dim oCheckOutFile As New Modules.IDB.CheckOutFile(LogConfig, Channel) + Return Await oCheckOutFile.RunAsync(pObjectId, pComment, pOptions) + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + + End Try + End Function + + Public Async Function CheckOutFile(pObjectId As Long, Optional pOptions As Options.CheckOutInOptions = Nothing) As Task(Of Long) + Try + Dim oCheckOutFile As New Modules.IDB.CheckOutFile(LogConfig, Channel) + Return Await oCheckOutFile.RunAsync(pObjectId, String.Empty, pOptions) + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + + End Try + End Function + + Public Async Function CheckInFile(pObjectId As Long, Optional pOptions As Options.CheckOutInOptions = Nothing) As Task(Of Long) + Try + Dim oCheckInFile As New Modules.IDB.CheckInFile(LogConfig, Channel) + Return Await oCheckInFile.RunAsync(pObjectId, pOptions) + + Catch ex As Exception + Logger.Error(ex) + Return Nothing + + End Try + End Function + Public Async Function Globix_ImportFileAsync( pFilePath As String, pProfileId As Integer, diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd index a5fef09c..5464821b 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.CheckInOutFile.xsd @@ -5,7 +5,7 @@ - + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb index ba0a54dc..ca2bcac0 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb @@ -2371,47 +2371,47 @@ Namespace EDMIServiceReference _ Private ActionField As EDMIServiceReference.CheckInOutFileAction - - _ - Private CommentField As Long - - _ + + + Private CommentField As String + + Private ObjectIdField As Long - - _ + + Private UserField As EDMIServiceReference.UserState - - _ + + Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = value + Me.extensionDataField = Value End Set End Property - - _ + + Public Property Action() As EDMIServiceReference.CheckInOutFileAction Get Return Me.ActionField End Get Set - If (Me.ActionField.Equals(value) <> true) Then - Me.ActionField = value + If (Me.ActionField.Equals(Value) <> True) Then + Me.ActionField = Value Me.RaisePropertyChanged("Action") End If End Set End Property - - _ - Public Property Comment() As Long + + + Public Property Comment() As String Get Return Me.CommentField End Get Set - If (Me.CommentField.Equals(value) <> true) Then - Me.CommentField = value + If (Object.ReferenceEquals(Me.CommentField, Value) <> True) Then + Me.CommentField = Value Me.RaisePropertyChanged("Comment") End If End Set diff --git a/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb b/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb index af853037..4fe96ac2 100644 --- a/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb +++ b/Modules.EDMIAPI/Modules/IDB/CheckInFile.vb @@ -20,12 +20,12 @@ Namespace Modules.IDB .Language = pOptions.Language, .UserName = pOptions.Username }, - .Action = CheckInOutFileAction.CheckOut, + .Action = CheckInOutFileAction.CheckIn, .ObjectId = pObjectId }) If oCheckInFileResponse.OK = False Then - Throw New ApplicationException("Could not Import File Contents!") + Throw New ApplicationException(oCheckInFileResponse.ErrorMessage) End If Return oCheckInFileResponse.ObjectId diff --git a/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb b/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb index 8707752d..1980cd73 100644 --- a/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb +++ b/Modules.EDMIAPI/Modules/IDB/CheckOutFile.vb @@ -15,7 +15,7 @@ Namespace Modules.IDB pOptions = New Options.CheckOutInOptions() End If - Dim oCheckOutFileResponse = Await Channel.CheckInOutFileAsync(New CheckInOutFileRequest With { + Dim oArgs = New CheckInOutFileRequest With { .User = New UserState With { .Language = pOptions.Language, .UserName = pOptions.Username @@ -23,10 +23,11 @@ Namespace Modules.IDB .Action = CheckInOutFileAction.CheckOut, .Comment = pComment, .ObjectId = pObjectId - }) + } + Dim oCheckOutFileResponse = Await Channel.CheckInOutFileAsync(oArgs) If oCheckOutFileResponse.OK = False Then - Throw New ApplicationException("Could not Import File Contents!") + Throw New ApplicationException(oCheckOutFileResponse.ErrorMessage) End If Return oCheckOutFileResponse.ObjectId diff --git a/Modules.Interfaces/GdPicture.NET.14.Imaging.Rendering.Skia.dll b/Modules.Interfaces/GdPicture.NET.14.Imaging.Rendering.Skia.dll index a1de3ab7..c469e776 100644 Binary files a/Modules.Interfaces/GdPicture.NET.14.Imaging.Rendering.Skia.dll and b/Modules.Interfaces/GdPicture.NET.14.Imaging.Rendering.Skia.dll differ diff --git a/Modules.Interfaces/GdPicture.NET.14.filters.dll b/Modules.Interfaces/GdPicture.NET.14.filters.dll index 8602ea57..62cdd939 100644 Binary files a/Modules.Interfaces/GdPicture.NET.14.filters.dll and b/Modules.Interfaces/GdPicture.NET.14.filters.dll differ diff --git a/Modules.Interfaces/GdPicture.NET.14.image.gdimgplug.dll b/Modules.Interfaces/GdPicture.NET.14.image.gdimgplug.dll index 78edb600..b45db24a 100644 Binary files a/Modules.Interfaces/GdPicture.NET.14.image.gdimgplug.dll and b/Modules.Interfaces/GdPicture.NET.14.image.gdimgplug.dll differ diff --git a/Modules.Interfaces/Interfaces.vbproj b/Modules.Interfaces/Interfaces.vbproj index 995732ff..999be9ee 100644 --- a/Modules.Interfaces/Interfaces.vbproj +++ b/Modules.Interfaces/Interfaces.vbproj @@ -116,6 +116,7 @@ + @@ -154,15 +155,15 @@ - + PreserveNewest - - + + PreserveNewest - - + + PreserveNewest - + \ No newline at end of file diff --git a/Modules.Interfaces/ZUGFeRDInterface.vb b/Modules.Interfaces/ZUGFeRDInterface.vb index d86d104c..1b24c0f2 100644 --- a/Modules.Interfaces/ZUGFeRDInterface.vb +++ b/Modules.Interfaces/ZUGFeRDInterface.vb @@ -123,25 +123,26 @@ Public Class ZUGFeRDInterface Dim oXmlDocument As XPathDocument If Results Is Nothing Then - Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei.") + Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil die Attachments nicht gelesen werden konnten.") End If If Results.Count = 0 Then - Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei.") + Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil sie keine Attachments enthält.") End If - Dim oFound As Boolean = False - Dim oFoundResult As PDFEmbeds.EmbeddedFile = Nothing + Dim oValidFilenames As New List(Of String) From { + PDFEmbeds.ZUGFERD_XML_FILENAME.ToUpper, + PDFEmbeds.FACTUR_X_XML_FILENAME_DE.ToUpper, + PDFEmbeds.FACTUR_X_XML_FILENAME_FR.ToUpper + } - For Each oResult In Results - If oResult.FileName.ToUpper() = PDFEmbeds.ZUGFERD_XML_FILENAME.ToUpper() Then - oFound = True - oFoundResult = oResult - End If - Next + ' Find the first file which filename matches the valid filenames for embedded invoice files + Dim oFoundResult As PDFEmbeds.EmbeddedFile = Results. + Where(Function(result) oValidFilenames.Contains(result.FileName.ToUpper)). + FirstOrDefault() - If Not oFound Then - Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei.") + If oFoundResult Is Nothing Then + Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei, weil die zugferd-invoice.xml nicht gefunden wurde.") End If Try @@ -170,7 +171,8 @@ Public Class ZUGFeRDInterface Dim oTypes As New List(Of Type) From { GetType(ZUGFeRD.Version1_0.CrossIndustryDocumentType), GetType(ZUGFeRD.Version2_0.CrossIndustryInvoiceType), - GetType(ZUGFeRD.Version2_1_1.CrossIndustryInvoiceType) + GetType(ZUGFeRD.Version2_1_1.CrossIndustryInvoiceType), + GetType(ZUGFeRD.Version2_2_FacturX.CrossIndustryInvoiceType) } For Each oType In oTypes diff --git a/Modules.Interfaces/ZUGFeRDInterface/PDFEmbeds.vb b/Modules.Interfaces/ZUGFeRDInterface/PDFEmbeds.vb index 215b7198..b9143772 100644 --- a/Modules.Interfaces/ZUGFeRDInterface/PDFEmbeds.vb +++ b/Modules.Interfaces/ZUGFeRDInterface/PDFEmbeds.vb @@ -7,6 +7,8 @@ Public Class PDFEmbeds Private ReadOnly Logger As Logger Public Const ZUGFERD_XML_FILENAME = "ZUGFeRD-invoice.xml" + Public Const FACTUR_X_XML_FILENAME_FR = "factur-x.xml" + Public Const FACTUR_X_XML_FILENAME_DE = "xrechnung.xml" Public Class EmbeddedFile Public FileName As String diff --git a/Modules.Interfaces/ZUGFeRDInterface/Version2.2_FacturX/CrossIndustryInvoiceType.vb b/Modules.Interfaces/ZUGFeRDInterface/Version2.2_FacturX/CrossIndustryInvoiceType.vb new file mode 100644 index 00000000..61d654b2 --- /dev/null +++ b/Modules.Interfaces/ZUGFeRDInterface/Version2.2_FacturX/CrossIndustryInvoiceType.vb @@ -0,0 +1,4427 @@ +'------------------------------------------------------------------------------ +' +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 +' +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. +' +'------------------------------------------------------------------------------ + +Option Strict Off +Option Explicit On + +' +'This source code was auto-generated by xsd, Version=4.6.1055.0. +'Source: Factur-X_1.0.06_BASIC_XSD + +Namespace ZUGFeRD.Version2_2_FacturX + ''' + + Partial Public Class CrossIndustryInvoiceType + + Private exchangedDocumentContextField As ExchangedDocumentContextType + + Private exchangedDocumentField As ExchangedDocumentType + + Private supplyChainTradeTransactionField As SupplyChainTradeTransactionType + + ''' + Public Property ExchangedDocumentContext() As ExchangedDocumentContextType + Get + Return Me.exchangedDocumentContextField + End Get + Set + Me.exchangedDocumentContextField = Value + End Set + End Property + + ''' + Public Property ExchangedDocument() As ExchangedDocumentType + Get + Return Me.exchangedDocumentField + End Get + Set + Me.exchangedDocumentField = Value + End Set + End Property + + ''' + Public Property SupplyChainTradeTransaction() As SupplyChainTradeTransactionType + Get + Return Me.supplyChainTradeTransactionField + End Get + Set + Me.supplyChainTradeTransactionField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class ExchangedDocumentContextType + + Private businessProcessSpecifiedDocumentContextParameterField As DocumentContextParameterType + + Private guidelineSpecifiedDocumentContextParameterField As DocumentContextParameterType + + ''' + Public Property BusinessProcessSpecifiedDocumentContextParameter() As DocumentContextParameterType + Get + Return Me.businessProcessSpecifiedDocumentContextParameterField + End Get + Set + Me.businessProcessSpecifiedDocumentContextParameterField = Value + End Set + End Property + + ''' + Public Property GuidelineSpecifiedDocumentContextParameter() As DocumentContextParameterType + Get + Return Me.guidelineSpecifiedDocumentContextParameterField + End Get + Set + Me.guidelineSpecifiedDocumentContextParameterField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class DocumentContextParameterType + + Private idField As IDType + + ''' + Public Property ID() As IDType + Get + Return Me.idField + End Get + Set + Me.idField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class IDType + + Private schemeIDField As String + + Private valueField As String + + ''' + + Public Property schemeID() As String + Get + Return Me.schemeIDField + End Get + Set + Me.schemeIDField = Value + End Set + End Property + + ''' + + Public Property Value() As String + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeAccountingAccountType + + Private idField As IDType + + ''' + Public Property ID() As IDType + Get + Return Me.idField + End Get + Set + Me.idField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeSettlementHeaderMonetarySummationType + + Private lineTotalAmountField As AmountType + + Private chargeTotalAmountField As AmountType + + Private allowanceTotalAmountField As AmountType + + Private taxBasisTotalAmountField As AmountType + + Private taxTotalAmountField() As AmountType + + Private grandTotalAmountField As AmountType + + Private totalPrepaidAmountField As AmountType + + Private duePayableAmountField As AmountType + + ''' + Public Property LineTotalAmount() As AmountType + Get + Return Me.lineTotalAmountField + End Get + Set + Me.lineTotalAmountField = Value + End Set + End Property + + ''' + Public Property ChargeTotalAmount() As AmountType + Get + Return Me.chargeTotalAmountField + End Get + Set + Me.chargeTotalAmountField = Value + End Set + End Property + + ''' + Public Property AllowanceTotalAmount() As AmountType + Get + Return Me.allowanceTotalAmountField + End Get + Set + Me.allowanceTotalAmountField = Value + End Set + End Property + + ''' + Public Property TaxBasisTotalAmount() As AmountType + Get + Return Me.taxBasisTotalAmountField + End Get + Set + Me.taxBasisTotalAmountField = Value + End Set + End Property + + ''' + + Public Property TaxTotalAmount() As AmountType() + Get + Return Me.taxTotalAmountField + End Get + Set + Me.taxTotalAmountField = Value + End Set + End Property + + ''' + Public Property GrandTotalAmount() As AmountType + Get + Return Me.grandTotalAmountField + End Get + Set + Me.grandTotalAmountField = Value + End Set + End Property + + ''' + Public Property TotalPrepaidAmount() As AmountType + Get + Return Me.totalPrepaidAmountField + End Get + Set + Me.totalPrepaidAmountField = Value + End Set + End Property + + ''' + Public Property DuePayableAmount() As AmountType + Get + Return Me.duePayableAmountField + End Get + Set + Me.duePayableAmountField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class AmountType + + Private currencyIDField As String + + Private valueField As Decimal + + ''' + + Public Property currencyID() As String + Get + Return Me.currencyIDField + End Get + Set + Me.currencyIDField = Value + End Set + End Property + + ''' + + Public Property Value() As Decimal + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradePaymentTermsType + + Private descriptionField As TextType + + Private dueDateDateTimeField As DateTimeType + + Private directDebitMandateIDField As IDType + + ''' + Public Property Description() As TextType + Get + Return Me.descriptionField + End Get + Set + Me.descriptionField = Value + End Set + End Property + + ''' + Public Property DueDateDateTime() As DateTimeType + Get + Return Me.dueDateDateTimeField + End Get + Set + Me.dueDateDateTimeField = Value + End Set + End Property + + ''' + Public Property DirectDebitMandateID() As IDType + Get + Return Me.directDebitMandateIDField + End Get + Set + Me.directDebitMandateIDField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TextType + + Private valueField As String + + ''' + + Public Property Value() As String + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class DateTimeType + + Private itemField As DateTimeTypeDateTimeString + + ''' + + Public Property Item() As DateTimeTypeDateTimeString + Get + Return Me.itemField + End Get + Set + Me.itemField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class DateTimeTypeDateTimeString + + Private formatField As String + + Private valueField As String + + ''' + + Public Property format() As String + Get + Return Me.formatField + End Get + Set + Me.formatField = Value + End Set + End Property + + ''' + + Public Property Value() As String + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class CreditorFinancialAccountType + + Private iBANIDField As IDType + + Private proprietaryIDField As IDType + + ''' + Public Property IBANID() As IDType + Get + Return Me.iBANIDField + End Get + Set + Me.iBANIDField = Value + End Set + End Property + + ''' + Public Property ProprietaryID() As IDType + Get + Return Me.proprietaryIDField + End Get + Set + Me.proprietaryIDField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class DebtorFinancialAccountType + + Private iBANIDField As IDType + + ''' + Public Property IBANID() As IDType + Get + Return Me.iBANIDField + End Get + Set + Me.iBANIDField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class PaymentMeansCodeType + + Private valueField As PaymentMeansCodeContentType + + ''' + + Public Property Value() As PaymentMeansCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum PaymentMeansCodeContentType + + ''' + + Item10 + + ''' + + Item20 + + ''' + + Item30 + + ''' + + Item42 + + ''' + + Item48 + + ''' + + Item49 + + ''' + + Item57 + + ''' + + Item58 + + ''' + + Item59 + + ''' + + Item97 + + ''' + ZZZ + End Enum + + ''' + + Partial Public Class TradeSettlementPaymentMeansType + + Private typeCodeField As PaymentMeansCodeType + + Private payerPartyDebtorFinancialAccountField As DebtorFinancialAccountType + + Private payeePartyCreditorFinancialAccountField As CreditorFinancialAccountType + + ''' + Public Property TypeCode() As PaymentMeansCodeType + Get + Return Me.typeCodeField + End Get + Set + Me.typeCodeField = Value + End Set + End Property + + ''' + Public Property PayerPartyDebtorFinancialAccount() As DebtorFinancialAccountType + Get + Return Me.payerPartyDebtorFinancialAccountField + End Get + Set + Me.payerPartyDebtorFinancialAccountField = Value + End Set + End Property + + ''' + Public Property PayeePartyCreditorFinancialAccount() As CreditorFinancialAccountType + Get + Return Me.payeePartyCreditorFinancialAccountField + End Get + Set + Me.payeePartyCreditorFinancialAccountField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class CurrencyCodeType + + Private valueField As CurrencyCodeContentType + + ''' + + Public Property Value() As CurrencyCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum CurrencyCodeContentType + + ''' + AED + + ''' + AFN + + ''' + ALL + + ''' + AMD + + ''' + ANG + + ''' + AOA + + ''' + ARS + + ''' + AUD + + ''' + AWG + + ''' + AZN + + ''' + BAM + + ''' + BBD + + ''' + BDT + + ''' + BGN + + ''' + BHD + + ''' + BIF + + ''' + BMD + + ''' + BND + + ''' + BOB + + ''' + BOV + + ''' + BRL + + ''' + BSD + + ''' + BTN + + ''' + BWP + + ''' + BYN + + ''' + BZD + + ''' + CAD + + ''' + CDF + + ''' + CHE + + ''' + CHF + + ''' + CHW + + ''' + CLF + + ''' + CLP + + ''' + CNY + + ''' + COP + + ''' + COU + + ''' + CRC + + ''' + CUC + + ''' + CUP + + ''' + CVE + + ''' + CZK + + ''' + DJF + + ''' + DKK + + ''' + DOP + + ''' + DZD + + ''' + EGP + + ''' + ERN + + ''' + ETB + + ''' + EUR + + ''' + FJD + + ''' + FKP + + ''' + GBP + + ''' + GEL + + ''' + GHS + + ''' + GIP + + ''' + GMD + + ''' + GNF + + ''' + GTQ + + ''' + GYD + + ''' + HKD + + ''' + HNL + + ''' + HRK + + ''' + HTG + + ''' + HUF + + ''' + IDR + + ''' + ILS + + ''' + INR + + ''' + IQD + + ''' + IRR + + ''' + ISK + + ''' + JMD + + ''' + JOD + + ''' + JPY + + ''' + KES + + ''' + KGS + + ''' + KHR + + ''' + KMF + + ''' + KPW + + ''' + KRW + + ''' + KWD + + ''' + KYD + + ''' + KZT + + ''' + LAK + + ''' + LBP + + ''' + LKR + + ''' + LRD + + ''' + LSL + + ''' + LYD + + ''' + MAD + + ''' + MDL + + ''' + MGA + + ''' + MKD + + ''' + MMK + + ''' + MNT + + ''' + MOP + + ''' + MRU + + ''' + MUR + + ''' + MVR + + ''' + MWK + + ''' + MXN + + ''' + MXV + + ''' + MYR + + ''' + MZN + + ''' + NAD + + ''' + NGN + + ''' + NIO + + ''' + NOK + + ''' + NPR + + ''' + NZD + + ''' + OMR + + ''' + PAB + + ''' + PEN + + ''' + PGK + + ''' + PHP + + ''' + PKR + + ''' + PLN + + ''' + PYG + + ''' + QAR + + ''' + RON + + ''' + RSD + + ''' + RUB + + ''' + RWF + + ''' + SAR + + ''' + SBD + + ''' + SCR + + ''' + SDG + + ''' + SEK + + ''' + SGD + + ''' + SHP + + ''' + SLL + + ''' + SOS + + ''' + SRD + + ''' + SSP + + ''' + STN + + ''' + SVC + + ''' + SYP + + ''' + SZL + + ''' + THB + + ''' + TJS + + ''' + TMT + + ''' + TND + + ''' + TOP + + ''' + [TRY] + + ''' + TTD + + ''' + TWD + + ''' + TZS + + ''' + UAH + + ''' + UGX + + ''' + USD + + ''' + USN + + ''' + UYI + + ''' + UYU + + ''' + UYW + + ''' + UZS + + ''' + VES + + ''' + VND + + ''' + VUV + + ''' + WST + + ''' + XAF + + ''' + XAG + + ''' + XAU + + ''' + XBA + + ''' + XBB + + ''' + XBC + + ''' + XBD + + ''' + XCD + + ''' + XDR + + ''' + XOF + + ''' + XPD + + ''' + XPF + + ''' + XPT + + ''' + XSU + + ''' + XTS + + ''' + XUA + + ''' + XXX + + ''' + YER + + ''' + ZAR + + ''' + ZMW + + ''' + ZWL + End Enum + + ''' + + Partial Public Class HeaderTradeSettlementType + + Private creditorReferenceIDField As IDType + + Private paymentReferenceField As TextType + + Private taxCurrencyCodeField As CurrencyCodeType + + Private invoiceCurrencyCodeField As CurrencyCodeType + + Private payeeTradePartyField As TradePartyType + + Private specifiedTradeSettlementPaymentMeansField As TradeSettlementPaymentMeansType + + Private applicableTradeTaxField() As TradeTaxType + + Private billingSpecifiedPeriodField As SpecifiedPeriodType + + Private specifiedTradeAllowanceChargeField() As TradeAllowanceChargeType + + Private specifiedTradePaymentTermsField As TradePaymentTermsType + + Private specifiedTradeSettlementHeaderMonetarySummationField As TradeSettlementHeaderMonetarySummationType + + Private invoiceReferencedDocumentField As ReferencedDocumentType + + Private receivableSpecifiedTradeAccountingAccountField As TradeAccountingAccountType + + ''' + Public Property CreditorReferenceID() As IDType + Get + Return Me.creditorReferenceIDField + End Get + Set + Me.creditorReferenceIDField = Value + End Set + End Property + + ''' + Public Property PaymentReference() As TextType + Get + Return Me.paymentReferenceField + End Get + Set + Me.paymentReferenceField = Value + End Set + End Property + + ''' + Public Property TaxCurrencyCode() As CurrencyCodeType + Get + Return Me.taxCurrencyCodeField + End Get + Set + Me.taxCurrencyCodeField = Value + End Set + End Property + + ''' + Public Property InvoiceCurrencyCode() As CurrencyCodeType + Get + Return Me.invoiceCurrencyCodeField + End Get + Set + Me.invoiceCurrencyCodeField = Value + End Set + End Property + + ''' + Public Property PayeeTradeParty() As TradePartyType + Get + Return Me.payeeTradePartyField + End Get + Set + Me.payeeTradePartyField = Value + End Set + End Property + + ''' + Public Property SpecifiedTradeSettlementPaymentMeans() As TradeSettlementPaymentMeansType + Get + Return Me.specifiedTradeSettlementPaymentMeansField + End Get + Set + Me.specifiedTradeSettlementPaymentMeansField = Value + End Set + End Property + + ''' + + Public Property ApplicableTradeTax() As TradeTaxType() + Get + Return Me.applicableTradeTaxField + End Get + Set + Me.applicableTradeTaxField = Value + End Set + End Property + + ''' + Public Property BillingSpecifiedPeriod() As SpecifiedPeriodType + Get + Return Me.billingSpecifiedPeriodField + End Get + Set + Me.billingSpecifiedPeriodField = Value + End Set + End Property + + ''' + + Public Property SpecifiedTradeAllowanceCharge() As TradeAllowanceChargeType() + Get + Return Me.specifiedTradeAllowanceChargeField + End Get + Set + Me.specifiedTradeAllowanceChargeField = Value + End Set + End Property + + ''' + Public Property SpecifiedTradePaymentTerms() As TradePaymentTermsType + Get + Return Me.specifiedTradePaymentTermsField + End Get + Set + Me.specifiedTradePaymentTermsField = Value + End Set + End Property + + ''' + Public Property SpecifiedTradeSettlementHeaderMonetarySummation() As TradeSettlementHeaderMonetarySummationType + Get + Return Me.specifiedTradeSettlementHeaderMonetarySummationField + End Get + Set + Me.specifiedTradeSettlementHeaderMonetarySummationField = Value + End Set + End Property + + ''' + Public Property InvoiceReferencedDocument() As ReferencedDocumentType + Get + Return Me.invoiceReferencedDocumentField + End Get + Set + Me.invoiceReferencedDocumentField = Value + End Set + End Property + + ''' + Public Property ReceivableSpecifiedTradeAccountingAccount() As TradeAccountingAccountType + Get + Return Me.receivableSpecifiedTradeAccountingAccountField + End Get + Set + Me.receivableSpecifiedTradeAccountingAccountField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradePartyType + + Private idField() As IDType + + Private globalIDField() As IDType + + Private nameField As TextType + + Private specifiedLegalOrganizationField As LegalOrganizationType + + Private postalTradeAddressField As TradeAddressType + + Private uRIUniversalCommunicationField As UniversalCommunicationType + + Private specifiedTaxRegistrationField() As TaxRegistrationType + + ''' + + Public Property ID() As IDType() + Get + Return Me.idField + End Get + Set + Me.idField = Value + End Set + End Property + + ''' + + Public Property GlobalID() As IDType() + Get + Return Me.globalIDField + End Get + Set + Me.globalIDField = Value + End Set + End Property + + ''' + Public Property Name() As TextType + Get + Return Me.nameField + End Get + Set + Me.nameField = Value + End Set + End Property + + ''' + Public Property SpecifiedLegalOrganization() As LegalOrganizationType + Get + Return Me.specifiedLegalOrganizationField + End Get + Set + Me.specifiedLegalOrganizationField = Value + End Set + End Property + + ''' + Public Property PostalTradeAddress() As TradeAddressType + Get + Return Me.postalTradeAddressField + End Get + Set + Me.postalTradeAddressField = Value + End Set + End Property + + ''' + Public Property URIUniversalCommunication() As UniversalCommunicationType + Get + Return Me.uRIUniversalCommunicationField + End Get + Set + Me.uRIUniversalCommunicationField = Value + End Set + End Property + + ''' + + Public Property SpecifiedTaxRegistration() As TaxRegistrationType() + Get + Return Me.specifiedTaxRegistrationField + End Get + Set + Me.specifiedTaxRegistrationField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class LegalOrganizationType + + Private idField As IDType + + Private tradingBusinessNameField As TextType + + ''' + Public Property ID() As IDType + Get + Return Me.idField + End Get + Set + Me.idField = Value + End Set + End Property + + ''' + Public Property TradingBusinessName() As TextType + Get + Return Me.tradingBusinessNameField + End Get + Set + Me.tradingBusinessNameField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeAddressType + + Private postcodeCodeField As CodeType + + Private lineOneField As TextType + + Private lineTwoField As TextType + + Private lineThreeField As TextType + + Private cityNameField As TextType + + Private countryIDField As CountryIDType + + Private countrySubDivisionNameField As TextType + + ''' + Public Property PostcodeCode() As CodeType + Get + Return Me.postcodeCodeField + End Get + Set + Me.postcodeCodeField = Value + End Set + End Property + + ''' + Public Property LineOne() As TextType + Get + Return Me.lineOneField + End Get + Set + Me.lineOneField = Value + End Set + End Property + + ''' + Public Property LineTwo() As TextType + Get + Return Me.lineTwoField + End Get + Set + Me.lineTwoField = Value + End Set + End Property + + ''' + Public Property LineThree() As TextType + Get + Return Me.lineThreeField + End Get + Set + Me.lineThreeField = Value + End Set + End Property + + ''' + Public Property CityName() As TextType + Get + Return Me.cityNameField + End Get + Set + Me.cityNameField = Value + End Set + End Property + + ''' + Public Property CountryID() As CountryIDType + Get + Return Me.countryIDField + End Get + Set + Me.countryIDField = Value + End Set + End Property + + ''' + Public Property CountrySubDivisionName() As TextType + Get + Return Me.countrySubDivisionNameField + End Get + Set + Me.countrySubDivisionNameField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class CodeType + + Private valueField As String + + ''' + + Public Property Value() As String + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class CountryIDType + + Private valueField As CountryIDContentType + + ''' + + Public Property Value() As CountryIDContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum CountryIDContentType + + ''' + + Item1A + + ''' + AD + + ''' + AE + + ''' + AF + + ''' + AG + + ''' + AI + + ''' + AL + + ''' + AM + + ''' + AO + + ''' + AQ + + ''' + AR + + ''' + [AS] + + ''' + AT + + ''' + AU + + ''' + AW + + ''' + AX + + ''' + AZ + + ''' + BA + + ''' + BB + + ''' + BD + + ''' + BE + + ''' + BF + + ''' + BG + + ''' + BH + + ''' + BI + + ''' + BJ + + ''' + BL + + ''' + BM + + ''' + BN + + ''' + BO + + ''' + BQ + + ''' + BR + + ''' + BS + + ''' + BT + + ''' + BV + + ''' + BW + + ''' + BY + + ''' + BZ + + ''' + CA + + ''' + CC + + ''' + CD + + ''' + CF + + ''' + CG + + ''' + CH + + ''' + CI + + ''' + CK + + ''' + CL + + ''' + CM + + ''' + CN + + ''' + CO + + ''' + CR + + ''' + CU + + ''' + CV + + ''' + CW + + ''' + CX + + ''' + CY + + ''' + CZ + + ''' + DE + + ''' + DJ + + ''' + DK + + ''' + DM + + ''' + [DO] + + ''' + DZ + + ''' + EC + + ''' + EE + + ''' + EG + + ''' + EH + + ''' + ER + + ''' + ES + + ''' + ET + + ''' + FI + + ''' + FJ + + ''' + FK + + ''' + FM + + ''' + FO + + ''' + FR + + ''' + GA + + ''' + GB + + ''' + GD + + ''' + GE + + ''' + GF + + ''' + GG + + ''' + GH + + ''' + GI + + ''' + GL + + ''' + GM + + ''' + GN + + ''' + GP + + ''' + GQ + + ''' + GR + + ''' + GS + + ''' + GT + + ''' + GU + + ''' + GW + + ''' + GY + + ''' + HK + + ''' + HM + + ''' + HN + + ''' + HR + + ''' + HT + + ''' + HU + + ''' + ID + + ''' + IE + + ''' + IL + + ''' + IM + + ''' + [IN] + + ''' + IO + + ''' + IQ + + ''' + IR + + ''' + [IS] + + ''' + IT + + ''' + JE + + ''' + JM + + ''' + JO + + ''' + JP + + ''' + KE + + ''' + KG + + ''' + KH + + ''' + KI + + ''' + KM + + ''' + KN + + ''' + KP + + ''' + KR + + ''' + KW + + ''' + KY + + ''' + KZ + + ''' + LA + + ''' + LB + + ''' + LC + + ''' + LI + + ''' + LK + + ''' + LR + + ''' + LS + + ''' + LT + + ''' + LU + + ''' + LV + + ''' + LY + + ''' + MA + + ''' + MC + + ''' + MD + + ''' + [ME] + + ''' + MF + + ''' + MG + + ''' + MH + + ''' + MK + + ''' + ML + + ''' + MM + + ''' + MN + + ''' + MO + + ''' + MP + + ''' + MQ + + ''' + MR + + ''' + MS + + ''' + MT + + ''' + MU + + ''' + MV + + ''' + MW + + ''' + MX + + ''' + MY + + ''' + MZ + + ''' + NA + + ''' + NC + + ''' + NE + + ''' + NF + + ''' + NG + + ''' + NI + + ''' + NL + + ''' + NO + + ''' + NP + + ''' + NR + + ''' + NU + + ''' + NZ + + ''' + OM + + ''' + PA + + ''' + PE + + ''' + PF + + ''' + PG + + ''' + PH + + ''' + PK + + ''' + PL + + ''' + PM + + ''' + PN + + ''' + PR + + ''' + PS + + ''' + PT + + ''' + PW + + ''' + PY + + ''' + QA + + ''' + RE + + ''' + RO + + ''' + RS + + ''' + RU + + ''' + RW + + ''' + SA + + ''' + SB + + ''' + SC + + ''' + SD + + ''' + SE + + ''' + SG + + ''' + SH + + ''' + SI + + ''' + SJ + + ''' + SK + + ''' + SL + + ''' + SM + + ''' + SN + + ''' + SO + + ''' + SR + + ''' + SS + + ''' + ST + + ''' + SV + + ''' + SX + + ''' + SY + + ''' + SZ + + ''' + TC + + ''' + TD + + ''' + TF + + ''' + TG + + ''' + TH + + ''' + TJ + + ''' + TK + + ''' + TL + + ''' + TM + + ''' + TN + + ''' + [TO] + + ''' + TR + + ''' + TT + + ''' + TV + + ''' + TW + + ''' + TZ + + ''' + UA + + ''' + UG + + ''' + UM + + ''' + US + + ''' + UY + + ''' + UZ + + ''' + VA + + ''' + VC + + ''' + VE + + ''' + VG + + ''' + VI + + ''' + VN + + ''' + VU + + ''' + WF + + ''' + WS + + ''' + XI + + ''' + YE + + ''' + YT + + ''' + ZA + + ''' + ZM + + ''' + ZW + End Enum + + ''' + + Partial Public Class UniversalCommunicationType + + Private uRIIDField As IDType + + ''' + Public Property URIID() As IDType + Get + Return Me.uRIIDField + End Get + Set + Me.uRIIDField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TaxRegistrationType + + Private idField As IDType + + ''' + Public Property ID() As IDType + Get + Return Me.idField + End Get + Set + Me.idField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeTaxType + + Private calculatedAmountField As AmountType + + Private typeCodeField As TaxTypeCodeType + + Private exemptionReasonField As TextType + + Private basisAmountField As AmountType + + Private categoryCodeField As TaxCategoryCodeType + + Private exemptionReasonCodeField As CodeType + + Private dueDateTypeCodeField As TimeReferenceCodeType + + Private rateApplicablePercentField As PercentType + + ''' + Public Property CalculatedAmount() As AmountType + Get + Return Me.calculatedAmountField + End Get + Set + Me.calculatedAmountField = Value + End Set + End Property + + ''' + Public Property TypeCode() As TaxTypeCodeType + Get + Return Me.typeCodeField + End Get + Set + Me.typeCodeField = Value + End Set + End Property + + ''' + Public Property ExemptionReason() As TextType + Get + Return Me.exemptionReasonField + End Get + Set + Me.exemptionReasonField = Value + End Set + End Property + + ''' + Public Property BasisAmount() As AmountType + Get + Return Me.basisAmountField + End Get + Set + Me.basisAmountField = Value + End Set + End Property + + ''' + Public Property CategoryCode() As TaxCategoryCodeType + Get + Return Me.categoryCodeField + End Get + Set + Me.categoryCodeField = Value + End Set + End Property + + ''' + Public Property ExemptionReasonCode() As CodeType + Get + Return Me.exemptionReasonCodeField + End Get + Set + Me.exemptionReasonCodeField = Value + End Set + End Property + + ''' + Public Property DueDateTypeCode() As TimeReferenceCodeType + Get + Return Me.dueDateTypeCodeField + End Get + Set + Me.dueDateTypeCodeField = Value + End Set + End Property + + ''' + Public Property RateApplicablePercent() As PercentType + Get + Return Me.rateApplicablePercentField + End Get + Set + Me.rateApplicablePercentField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TaxTypeCodeType + + Private valueField As TaxTypeCodeContentType + + ''' + + Public Property Value() As TaxTypeCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum TaxTypeCodeContentType + + ''' + VAT + End Enum + + ''' + + Partial Public Class TaxCategoryCodeType + + Private valueField As TaxCategoryCodeContentType + + ''' + + Public Property Value() As TaxCategoryCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum TaxCategoryCodeContentType + + ''' + AE + + ''' + E + + ''' + G + + ''' + K + + ''' + L + + ''' + M + + ''' + O + + ''' + S + + ''' + Z + End Enum + + ''' + + Partial Public Class TimeReferenceCodeType + + Private valueField As TimeReferenceCodeContentType + + ''' + + Public Property Value() As TimeReferenceCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum TimeReferenceCodeContentType + + ''' + + Item5 + + ''' + + Item29 + + ''' + + Item72 + End Enum + + ''' + + Partial Public Class PercentType + + Private valueField As Decimal + + ''' + + Public Property Value() As Decimal + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class SpecifiedPeriodType + + Private startDateTimeField As DateTimeType + + Private endDateTimeField As DateTimeType + + ''' + Public Property StartDateTime() As DateTimeType + Get + Return Me.startDateTimeField + End Get + Set + Me.startDateTimeField = Value + End Set + End Property + + ''' + Public Property EndDateTime() As DateTimeType + Get + Return Me.endDateTimeField + End Get + Set + Me.endDateTimeField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeAllowanceChargeType + + Private chargeIndicatorField As IndicatorType + + Private calculationPercentField As PercentType + + Private basisAmountField As AmountType + + Private actualAmountField As AmountType + + Private reasonCodeField As AllowanceChargeReasonCodeType + + Private reasonField As TextType + + Private categoryTradeTaxField As TradeTaxType + + ''' + Public Property ChargeIndicator() As IndicatorType + Get + Return Me.chargeIndicatorField + End Get + Set + Me.chargeIndicatorField = Value + End Set + End Property + + ''' + Public Property CalculationPercent() As PercentType + Get + Return Me.calculationPercentField + End Get + Set + Me.calculationPercentField = Value + End Set + End Property + + ''' + Public Property BasisAmount() As AmountType + Get + Return Me.basisAmountField + End Get + Set + Me.basisAmountField = Value + End Set + End Property + + ''' + Public Property ActualAmount() As AmountType + Get + Return Me.actualAmountField + End Get + Set + Me.actualAmountField = Value + End Set + End Property + + ''' + Public Property ReasonCode() As AllowanceChargeReasonCodeType + Get + Return Me.reasonCodeField + End Get + Set + Me.reasonCodeField = Value + End Set + End Property + + ''' + Public Property Reason() As TextType + Get + Return Me.reasonField + End Get + Set + Me.reasonField = Value + End Set + End Property + + ''' + Public Property CategoryTradeTax() As TradeTaxType + Get + Return Me.categoryTradeTaxField + End Get + Set + Me.categoryTradeTaxField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class IndicatorType + + Private itemField As Boolean + + ''' + + Public Property Item() As Boolean + Get + Return Me.itemField + End Get + Set + Me.itemField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class AllowanceChargeReasonCodeType + + Private valueField As AllowanceChargeReasonCodeContentType + + ''' + + Public Property Value() As AllowanceChargeReasonCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum AllowanceChargeReasonCodeContentType + + ''' + AA + + ''' + AAA + + ''' + AAC + + ''' + AAD + + ''' + AAE + + ''' + AAF + + ''' + AAH + + ''' + AAI + + ''' + AAS + + ''' + AAT + + ''' + AAV + + ''' + AAY + + ''' + AAZ + + ''' + ABA + + ''' + ABB + + ''' + ABC + + ''' + ABD + + ''' + ABF + + ''' + ABK + + ''' + ABL + + ''' + ABN + + ''' + ABR + + ''' + ABS + + ''' + ABT + + ''' + ABU + + ''' + ACF + + ''' + ACG + + ''' + ACH + + ''' + ACI + + ''' + ACJ + + ''' + ACK + + ''' + ACL + + ''' + ACM + + ''' + ACS + + ''' + ADC + + ''' + ADE + + ''' + ADJ + + ''' + ADK + + ''' + ADL + + ''' + ADM + + ''' + ADN + + ''' + ADO + + ''' + ADP + + ''' + ADQ + + ''' + ADR + + ''' + ADT + + ''' + ADW + + ''' + ADY + + ''' + ADZ + + ''' + AEA + + ''' + AEB + + ''' + AEC + + ''' + AED + + ''' + AEF + + ''' + AEH + + ''' + AEI + + ''' + AEJ + + ''' + AEK + + ''' + AEL + + ''' + AEM + + ''' + AEN + + ''' + AEO + + ''' + AEP + + ''' + AES + + ''' + AET + + ''' + AEU + + ''' + AEV + + ''' + AEW + + ''' + AEX + + ''' + AEY + + ''' + AEZ + + ''' + AJ + + ''' + AU + + ''' + CA + + ''' + CAB + + ''' + CAD + + ''' + CAE + + ''' + CAF + + ''' + CAI + + ''' + CAJ + + ''' + CAK + + ''' + CAL + + ''' + CAM + + ''' + CAN + + ''' + CAO + + ''' + CAP + + ''' + CAQ + + ''' + CAR + + ''' + CAS + + ''' + CAT + + ''' + CAU + + ''' + CAV + + ''' + CAW + + ''' + CAX + + ''' + CAY + + ''' + CAZ + + ''' + CD + + ''' + CG + + ''' + CS + + ''' + CT + + ''' + DAB + + ''' + DAC + + ''' + DAD + + ''' + DAF + + ''' + DAG + + ''' + DAH + + ''' + DAI + + ''' + DAJ + + ''' + DAK + + ''' + DAL + + ''' + DAM + + ''' + DAN + + ''' + DAO + + ''' + DAP + + ''' + DAQ + + ''' + DL + + ''' + EG + + ''' + EP + + ''' + ER + + ''' + FAA + + ''' + FAB + + ''' + FAC + + ''' + FC + + ''' + FH + + ''' + FI + + ''' + GAA + + ''' + HAA + + ''' + HD + + ''' + HH + + ''' + IAA + + ''' + IAB + + ''' + ID + + ''' + [IF] + + ''' + IR + + ''' + [IS] + + ''' + KO + + ''' + L1 + + ''' + LA + + ''' + LAA + + ''' + LAB + + ''' + LF + + ''' + MAE + + ''' + MI + + ''' + ML + + ''' + NAA + + ''' + OA + + ''' + PA + + ''' + PAA + + ''' + PC + + ''' + PL + + ''' + RAB + + ''' + RAC + + ''' + RAD + + ''' + RAF + + ''' + RE + + ''' + RF + + ''' + RH + + ''' + RV + + ''' + SA + + ''' + SAA + + ''' + SAD + + ''' + SAE + + ''' + SAI + + ''' + SG + + ''' + SH + + ''' + SM + + ''' + SU + + ''' + TAB + + ''' + TAC + + ''' + TT + + ''' + TV + + ''' + V1 + + ''' + V2 + + ''' + WH + + ''' + XAA + + ''' + YY + + ''' + ZZZ + + ''' + + Item41 + + ''' + + Item42 + + ''' + + Item60 + + ''' + + Item62 + + ''' + + Item63 + + ''' + + Item64 + + ''' + + Item65 + + ''' + + Item66 + + ''' + + Item67 + + ''' + + Item68 + + ''' + + Item70 + + ''' + + Item71 + + ''' + + Item88 + + ''' + + Item95 + + ''' + + Item100 + + ''' + + Item102 + + ''' + + Item103 + + ''' + + Item104 + + ''' + + Item105 + End Enum + + ''' + + Partial Public Class ReferencedDocumentType + + Private issuerAssignedIDField As IDType + + Private formattedIssueDateTimeField As FormattedDateTimeType + + ''' + Public Property IssuerAssignedID() As IDType + Get + Return Me.issuerAssignedIDField + End Get + Set + Me.issuerAssignedIDField = Value + End Set + End Property + + ''' + Public Property FormattedIssueDateTime() As FormattedDateTimeType + Get + Return Me.formattedIssueDateTimeField + End Get + Set + Me.formattedIssueDateTimeField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class FormattedDateTimeType + + Private dateTimeStringField As FormattedDateTimeTypeDateTimeString + + ''' + Public Property DateTimeString() As FormattedDateTimeTypeDateTimeString + Get + Return Me.dateTimeStringField + End Get + Set + Me.dateTimeStringField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class FormattedDateTimeTypeDateTimeString + + Private formatField As String + + Private valueField As String + + ''' + + Public Property format() As String + Get + Return Me.formatField + End Get + Set + Me.formatField = Value + End Set + End Property + + ''' + + Public Property Value() As String + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class SupplyChainEventType + + Private occurrenceDateTimeField As DateTimeType + + ''' + Public Property OccurrenceDateTime() As DateTimeType + Get + Return Me.occurrenceDateTimeField + End Get + Set + Me.occurrenceDateTimeField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class HeaderTradeDeliveryType + + Private shipToTradePartyField As TradePartyType + + Private actualDeliverySupplyChainEventField As SupplyChainEventType + + Private despatchAdviceReferencedDocumentField As ReferencedDocumentType + + ''' + Public Property ShipToTradeParty() As TradePartyType + Get + Return Me.shipToTradePartyField + End Get + Set + Me.shipToTradePartyField = Value + End Set + End Property + + ''' + Public Property ActualDeliverySupplyChainEvent() As SupplyChainEventType + Get + Return Me.actualDeliverySupplyChainEventField + End Get + Set + Me.actualDeliverySupplyChainEventField = Value + End Set + End Property + + ''' + Public Property DespatchAdviceReferencedDocument() As ReferencedDocumentType + Get + Return Me.despatchAdviceReferencedDocumentField + End Get + Set + Me.despatchAdviceReferencedDocumentField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class HeaderTradeAgreementType + + Private buyerReferenceField As TextType + + Private sellerTradePartyField As TradePartyType + + Private buyerTradePartyField As TradePartyType + + Private sellerTaxRepresentativeTradePartyField As TradePartyType + + Private buyerOrderReferencedDocumentField As ReferencedDocumentType + + Private contractReferencedDocumentField As ReferencedDocumentType + + ''' + Public Property BuyerReference() As TextType + Get + Return Me.buyerReferenceField + End Get + Set + Me.buyerReferenceField = Value + End Set + End Property + + ''' + Public Property SellerTradeParty() As TradePartyType + Get + Return Me.sellerTradePartyField + End Get + Set + Me.sellerTradePartyField = Value + End Set + End Property + + ''' + Public Property BuyerTradeParty() As TradePartyType + Get + Return Me.buyerTradePartyField + End Get + Set + Me.buyerTradePartyField = Value + End Set + End Property + + ''' + Public Property SellerTaxRepresentativeTradeParty() As TradePartyType + Get + Return Me.sellerTaxRepresentativeTradePartyField + End Get + Set + Me.sellerTaxRepresentativeTradePartyField = Value + End Set + End Property + + ''' + Public Property BuyerOrderReferencedDocument() As ReferencedDocumentType + Get + Return Me.buyerOrderReferencedDocumentField + End Get + Set + Me.buyerOrderReferencedDocumentField = Value + End Set + End Property + + ''' + Public Property ContractReferencedDocument() As ReferencedDocumentType + Get + Return Me.contractReferencedDocumentField + End Get + Set + Me.contractReferencedDocumentField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeSettlementLineMonetarySummationType + + Private lineTotalAmountField As AmountType + + ''' + Public Property LineTotalAmount() As AmountType + Get + Return Me.lineTotalAmountField + End Get + Set + Me.lineTotalAmountField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class LineTradeSettlementType + + Private applicableTradeTaxField As TradeTaxType + + Private billingSpecifiedPeriodField As SpecifiedPeriodType + + Private specifiedTradeAllowanceChargeField() As TradeAllowanceChargeType + + Private specifiedTradeSettlementLineMonetarySummationField As TradeSettlementLineMonetarySummationType + + ''' + Public Property ApplicableTradeTax() As TradeTaxType + Get + Return Me.applicableTradeTaxField + End Get + Set + Me.applicableTradeTaxField = Value + End Set + End Property + + ''' + Public Property BillingSpecifiedPeriod() As SpecifiedPeriodType + Get + Return Me.billingSpecifiedPeriodField + End Get + Set + Me.billingSpecifiedPeriodField = Value + End Set + End Property + + ''' + + Public Property SpecifiedTradeAllowanceCharge() As TradeAllowanceChargeType() + Get + Return Me.specifiedTradeAllowanceChargeField + End Get + Set + Me.specifiedTradeAllowanceChargeField = Value + End Set + End Property + + ''' + Public Property SpecifiedTradeSettlementLineMonetarySummation() As TradeSettlementLineMonetarySummationType + Get + Return Me.specifiedTradeSettlementLineMonetarySummationField + End Get + Set + Me.specifiedTradeSettlementLineMonetarySummationField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class LineTradeDeliveryType + + Private billedQuantityField As QuantityType + + ''' + Public Property BilledQuantity() As QuantityType + Get + Return Me.billedQuantityField + End Get + Set + Me.billedQuantityField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class QuantityType + + Private unitCodeField As String + + Private valueField As Decimal + + ''' + + Public Property unitCode() As String + Get + Return Me.unitCodeField + End Get + Set + Me.unitCodeField = Value + End Set + End Property + + ''' + + Public Property Value() As Decimal + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradePriceType + + Private chargeAmountField As AmountType + + Private basisQuantityField As QuantityType + + Private appliedTradeAllowanceChargeField As TradeAllowanceChargeType + + ''' + Public Property ChargeAmount() As AmountType + Get + Return Me.chargeAmountField + End Get + Set + Me.chargeAmountField = Value + End Set + End Property + + ''' + Public Property BasisQuantity() As QuantityType + Get + Return Me.basisQuantityField + End Get + Set + Me.basisQuantityField = Value + End Set + End Property + + ''' + Public Property AppliedTradeAllowanceCharge() As TradeAllowanceChargeType + Get + Return Me.appliedTradeAllowanceChargeField + End Get + Set + Me.appliedTradeAllowanceChargeField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class LineTradeAgreementType + + Private grossPriceProductTradePriceField As TradePriceType + + Private netPriceProductTradePriceField As TradePriceType + + ''' + Public Property GrossPriceProductTradePrice() As TradePriceType + Get + Return Me.grossPriceProductTradePriceField + End Get + Set + Me.grossPriceProductTradePriceField = Value + End Set + End Property + + ''' + Public Property NetPriceProductTradePrice() As TradePriceType + Get + Return Me.netPriceProductTradePriceField + End Get + Set + Me.netPriceProductTradePriceField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class TradeProductType + + Private globalIDField As IDType + + Private nameField As TextType + + ''' + Public Property GlobalID() As IDType + Get + Return Me.globalIDField + End Get + Set + Me.globalIDField = Value + End Set + End Property + + ''' + Public Property Name() As TextType + Get + Return Me.nameField + End Get + Set + Me.nameField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class DocumentLineDocumentType + + Private lineIDField As IDType + + Private includedNoteField As NoteType + + ''' + Public Property LineID() As IDType + Get + Return Me.lineIDField + End Get + Set + Me.lineIDField = Value + End Set + End Property + + ''' + Public Property IncludedNote() As NoteType + Get + Return Me.includedNoteField + End Get + Set + Me.includedNoteField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class NoteType + + Private contentField As TextType + + Private subjectCodeField As CodeType + + ''' + Public Property Content() As TextType + Get + Return Me.contentField + End Get + Set + Me.contentField = Value + End Set + End Property + + ''' + Public Property SubjectCode() As CodeType + Get + Return Me.subjectCodeField + End Get + Set + Me.subjectCodeField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class SupplyChainTradeLineItemType + + Private associatedDocumentLineDocumentField As DocumentLineDocumentType + + Private specifiedTradeProductField As TradeProductType + + Private specifiedLineTradeAgreementField As LineTradeAgreementType + + Private specifiedLineTradeDeliveryField As LineTradeDeliveryType + + Private specifiedLineTradeSettlementField As LineTradeSettlementType + + ''' + Public Property AssociatedDocumentLineDocument() As DocumentLineDocumentType + Get + Return Me.associatedDocumentLineDocumentField + End Get + Set + Me.associatedDocumentLineDocumentField = Value + End Set + End Property + + ''' + Public Property SpecifiedTradeProduct() As TradeProductType + Get + Return Me.specifiedTradeProductField + End Get + Set + Me.specifiedTradeProductField = Value + End Set + End Property + + ''' + Public Property SpecifiedLineTradeAgreement() As LineTradeAgreementType + Get + Return Me.specifiedLineTradeAgreementField + End Get + Set + Me.specifiedLineTradeAgreementField = Value + End Set + End Property + + ''' + Public Property SpecifiedLineTradeDelivery() As LineTradeDeliveryType + Get + Return Me.specifiedLineTradeDeliveryField + End Get + Set + Me.specifiedLineTradeDeliveryField = Value + End Set + End Property + + ''' + Public Property SpecifiedLineTradeSettlement() As LineTradeSettlementType + Get + Return Me.specifiedLineTradeSettlementField + End Get + Set + Me.specifiedLineTradeSettlementField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class SupplyChainTradeTransactionType + + Private includedSupplyChainTradeLineItemField() As SupplyChainTradeLineItemType + + Private applicableHeaderTradeAgreementField As HeaderTradeAgreementType + + Private applicableHeaderTradeDeliveryField As HeaderTradeDeliveryType + + Private applicableHeaderTradeSettlementField As HeaderTradeSettlementType + + ''' + + Public Property IncludedSupplyChainTradeLineItem() As SupplyChainTradeLineItemType() + Get + Return Me.includedSupplyChainTradeLineItemField + End Get + Set + Me.includedSupplyChainTradeLineItemField = Value + End Set + End Property + + ''' + Public Property ApplicableHeaderTradeAgreement() As HeaderTradeAgreementType + Get + Return Me.applicableHeaderTradeAgreementField + End Get + Set + Me.applicableHeaderTradeAgreementField = Value + End Set + End Property + + ''' + Public Property ApplicableHeaderTradeDelivery() As HeaderTradeDeliveryType + Get + Return Me.applicableHeaderTradeDeliveryField + End Get + Set + Me.applicableHeaderTradeDeliveryField = Value + End Set + End Property + + ''' + Public Property ApplicableHeaderTradeSettlement() As HeaderTradeSettlementType + Get + Return Me.applicableHeaderTradeSettlementField + End Get + Set + Me.applicableHeaderTradeSettlementField = Value + End Set + End Property + End Class + + ''' + + Partial Public Class DocumentCodeType + + Private valueField As DocumentCodeContentType + + ''' + + Public Property Value() As DocumentCodeContentType + Get + Return Me.valueField + End Get + Set + Me.valueField = Value + End Set + End Property + End Class + + ''' + + Public Enum DocumentCodeContentType + + ''' + + Item80 + + ''' + + Item81 + + ''' + + Item82 + + ''' + + Item83 + + ''' + + Item84 + + ''' + + Item130 + + ''' + + Item202 + + ''' + + Item203 + + ''' + + Item204 + + ''' + + Item211 + + ''' + + Item261 + + ''' + + Item262 + + ''' + + Item295 + + ''' + + Item296 + + ''' + + Item308 + + ''' + + Item325 + + ''' + + Item326 + + ''' + + Item380 + + ''' + + Item381 + + ''' + + Item383 + + ''' + + Item384 + + ''' + + Item385 + + ''' + + Item386 + + ''' + + Item387 + + ''' + + Item388 + + ''' + + Item389 + + ''' + + Item390 + + ''' + + Item393 + + ''' + + Item394 + + ''' + + Item395 + + ''' + + Item396 + + ''' + + Item420 + + ''' + + Item456 + + ''' + + Item457 + + ''' + + Item458 + + ''' + + Item527 + + ''' + + Item575 + + ''' + + Item623 + + ''' + + Item633 + + ''' + + Item751 + + ''' + + Item780 + + ''' + + Item875 + + ''' + + Item876 + + ''' + + Item877 + + ''' + + Item935 + End Enum + + ''' + + Partial Public Class ExchangedDocumentType + + Private idField As IDType + + Private typeCodeField As DocumentCodeType + + Private issueDateTimeField As DateTimeType + + Private includedNoteField() As NoteType + + ''' + Public Property ID() As IDType + Get + Return Me.idField + End Get + Set + Me.idField = Value + End Set + End Property + + ''' + Public Property TypeCode() As DocumentCodeType + Get + Return Me.typeCodeField + End Get + Set + Me.typeCodeField = Value + End Set + End Property + + ''' + Public Property IssueDateTime() As DateTimeType + Get + Return Me.issueDateTimeField + End Get + Set + Me.issueDateTimeField = Value + End Set + End Property + + ''' + + Public Property IncludedNote() As NoteType() + Get + Return Me.includedNoteField + End Get + Set + Me.includedNoteField = Value + End Set + End Property + End Class + +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 3e7928b7..07993a73 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -155,6 +155,10 @@ + + + + diff --git a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb index 5bd479d5..5e784a18 100644 --- a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb +++ b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileMethod.vb @@ -8,6 +8,18 @@ Namespace Methods.IDB.CheckInOutFile Public Class CheckInOutFileMethod Inherits BaseMethod + Private Enum CheckOutResult + CheckoutSuccessful + AlreadyCheckedOut + InternalError + End Enum + + Private Enum CheckInResult + CheckinSuccessful + NotCheckedOut + InternalError + End Enum + Private ReadOnly Connection As SqlConnection Private ReadOnly Transaction As SqlTransaction @@ -23,10 +35,30 @@ Namespace Methods.IDB.CheckInOutFile Dim oResult = False If pData.Action = CheckInOutFileAction.CheckOut Then - oResult = CheckOutFile(pData.ObjectId, pData.User.UserName, pData.Comment) + Select Case CheckOutFile(pData.ObjectId, pData.User.UserName, pData.Comment) + Case CheckOutResult.CheckoutSuccessful + oResult = True + + Case CheckOutResult.AlreadyCheckedOut + LogAndThrow($"File '{pData.ObjectId}' is already checked out.") + + Case CheckOutResult.InternalError + LogAndThrow($"Internal Error occurred while checking out file [{pData.ObjectId}].") + + End Select ElseIf pData.Action = CheckInOutFileAction.CheckIn Then - oResult = CheckInFile(pData.ObjectId, pData.User.UserName) + Select Case CheckInFile(pData.ObjectId, pData.User.UserName) + Case CheckInResult.CheckinSuccessful + oResult = True + + Case CheckInResult.NotCheckedOut + LogAndThrow($"File '{pData.ObjectId}' is not checked out.") + + Case CheckInResult.InternalError + LogAndThrow($"Internal Error occurred while checking in file [{pData.ObjectId}].") + + End Select Else LogAndThrow("Invalid action supplied!") @@ -50,22 +82,31 @@ Namespace Methods.IDB.CheckInOutFile End Try End Function - Private Function CheckOutFile(pObjectId As Long, pUsername As String, pComment As String) As Boolean + Private Function CheckOutFile(pObjectId As Long, pUsername As String, pComment As String) As CheckOutResult Try Dim oTable = TestFileIsCheckedOut(pObjectId) If oTable Is Nothing Then - Return False + Logger.Warn("File [{0}] could not be checked out because of an internal error!", pObjectId) + Return CheckOutResult.InternalError End If ' If there are rows, the file is already checked out (either by the calling user or somebody else) If oTable.Rows.Count > 0 Then ' TODO: Return the person who has this file checked out - Return False + Logger.Warn("File [{0}] is already checked out!", pObjectId) + Return CheckOutResult.AlreadyCheckedOut End If Dim oSQL = $"INSERT INTO TBIDB_OBJECT_CHECK_IN_OUT (IDB_OBJ_ID, CHECKED_OUT_WHEN, COMMENT, ADDED_WHO) VALUES ({pObjectId}, GETDATE(), '{pComment}', '{pUsername}')" - Return DatabaseIDB.ExecuteNonQuery(oSQL) + + If DatabaseIDB.ExecuteNonQuery(oSQL) = True Then + Logger.Info("File [{0}] checked out successfully!", pObjectId) + Return CheckOutResult.CheckoutSuccessful + Else + Logger.Warn("File [{0}] could not be checked out because of an internal error!", pObjectId) + Return CheckOutResult.InternalError + End If Catch ex As Exception Logger.Error(ex) @@ -78,18 +119,27 @@ Namespace Methods.IDB.CheckInOutFile Try Dim oTable = TestFileIsCheckedOut(pObjectId) If oTable Is Nothing Then - Return False + Logger.Warn("File [{0}] could not be checked in because of an internal error!", pObjectId) + Return CheckOutResult.InternalError End If ' If there are no rows, the file is not checked out - If oTable.Rows.Count > 0 Then - Return True + If oTable.Rows.Count = 0 Then + Logger.Warn("File [{0}] is not checked out!", pObjectId) + Return CheckInResult.NotCheckedOut End If Dim oSQL = $"UPDATE TBIDB_OBJECT_CHECK_IN_OUT SET CHECKED_IN_WHEN = GETDATE(), CHANGED_WHO = '{pUsername}' WHERE IDB_OBJ_ID = {pObjectId} AND ADDED_WHO = '{pUsername}' AND CHECKED_IN_WHEN IS NULL" - Return DatabaseIDB.ExecuteNonQuery(oSQL) + + If DatabaseIDB.ExecuteNonQuery(oSQL) = True Then + Logger.Info("File [{0}] checked in successfully!", pObjectId) + Return CheckInResult.CheckinSuccessful + Else + Logger.Warn("File [{0}] could not be checked in because of an internal error!", pObjectId) + Return CheckInResult.InternalError + End If Catch ex As Exception Logger.Error(ex) @@ -100,6 +150,7 @@ Namespace Methods.IDB.CheckInOutFile Private Function TestFileIsCheckedOut(pObjectId As Long) As DataTable Try + Logger.Debug("Checking if file [{0}] is checked out.", pObjectId) Dim oSqlCheck = $"SELECT * FROM TBIDB_OBJECT_CHECK_IN_OUT WHERE IDB_OBJ_ID = {pObjectId} AND CHECKED_IN_WHEN IS NULL" Dim oTable As DataTable = DatabaseIDB.GetDatatable(oSqlCheck) diff --git a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb index e6e1cb2e..0af74e7f 100644 --- a/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb +++ b/Service.EDMIService/Methods/IDB/CheckInOutFile/CheckInOutFileRequest.vb @@ -9,7 +9,7 @@ Namespace Methods.IDB.CheckInOutFile Public Property ObjectId As Long - Public Property Comment As Long + Public Property Comment As String Public Property Action As CheckInOutFileAction diff --git a/Service.EDMIService/Methods/IDB/GetFileInfo/FileInfo.vb b/Service.EDMIService/Methods/IDB/GetFileInfo/FileInfo.vb new file mode 100644 index 00000000..4c4af604 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/GetFileInfo/FileInfo.vb @@ -0,0 +1,13 @@ +Imports System.Runtime.Serialization + +Namespace Methods.IDB.GetFileInfo + + Public Class FileInfo + + Public Property IsCheckedOut As Boolean + + + Public Property CheckoutUser As String + End Class + +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoMethod.vb b/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoMethod.vb new file mode 100644 index 00000000..74bce373 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoMethod.vb @@ -0,0 +1,21 @@ +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Logging + +Namespace Methods.IDB.GetFileInfo + Public Class GetFileInfoMethod + Inherits BaseMethod + + Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState) + MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState) + End Sub + + Public Function Run(pData As GetFileInfoRequest) As GetFileInfoResponse + Dim oFileInfo = New FileInfo() With { + .CheckoutUser = Nothing, + .IsCheckedOut = False + } + Return New GetFileInfoResponse(oFileInfo) + + End Function + End Class +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoRequest.vb b/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoRequest.vb new file mode 100644 index 00000000..54ebe2b6 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoRequest.vb @@ -0,0 +1,10 @@ +Imports System.Runtime.Serialization + +Namespace Methods.IDB.GetFileInfo + + + Public Class GetFileInfoRequest + + Public Property ObjectId As Long + End Class +End Namespace diff --git a/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoResponse.vb b/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoResponse.vb new file mode 100644 index 00000000..60841f8d --- /dev/null +++ b/Service.EDMIService/Methods/IDB/GetFileInfo/GetFileInfoResponse.vb @@ -0,0 +1,24 @@ +Imports System.Runtime.Serialization + +Namespace Methods.IDB.GetFileInfo + + + Public Class GetFileInfoResponse + Inherits Messages.BaseResponse + + + Public Property ObjectId As Long + + + Public Property FileInfo As FileInfo + + Public Sub New(pFileInfo As FileInfo) + MyBase.New() + FileInfo = pFileInfo + End Sub + + Public Sub New(pException As Exception, Optional pDetails As String = "") + MyBase.New(pException, pDetails) + End Sub + End Class +End Namespace diff --git a/Service.EDMIService/Scheduler/JobListener.vb b/Service.EDMIService/Scheduler/JobListener.vb index 995c2d55..84a664f0 100644 --- a/Service.EDMIService/Scheduler/JobListener.vb +++ b/Service.EDMIService/Scheduler/JobListener.vb @@ -75,7 +75,7 @@ Public Class JobListener ' Remove the temp table if it exists If DataSet.Tables.Contains(oDatatableNameTemp) Then - _Logger.Debug("Removing Table [{0}]", oDatatableNameTemp) + _Logger.Debug("Removing Temp-Table [{0}]", oDatatableNameTemp) DataSet.Tables.Item(oDatatableNameTemp).ChildRelations.Clear() DataSet.Tables.Item(oDatatableNameTemp).Constraints.Clear()