Merge branch 'newMaster2024' of https://git.it.verag.ag/edv/SDL into newMaster2024

This commit is contained in:
2026-10-19 15:33:02 +02:00
10 changed files with 765 additions and 128 deletions

View File

@@ -175,15 +175,15 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
<bindingRedirect oldVersion="0.0.0.0-4.1.5.0" newVersion="4.1.5.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\..\AVISO\Aviso\packages\PdfiumViewer.Native.x86_64.v8-xfa.2018.4.8.256\build\PdfiumViewer.Native.x86_64.v8-xfa.props" Condition="Exists('..\..\..\AVISO\Aviso\packages\PdfiumViewer.Native.x86_64.v8-xfa.2018.4.8.256\build\PdfiumViewer.Native.x86_64.v8-xfa.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -33,6 +34,8 @@
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
@@ -425,6 +428,9 @@
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.HashCode, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\Microsoft.Bcl.HashCode.6.0.0\lib\net462\Microsoft.Bcl.HashCode.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=5.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\Microsoft.Extensions.DependencyInjection.5.0.0\lib\net461\Microsoft.Extensions.DependencyInjection.dll</HintPath>
@@ -467,6 +473,9 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\dll\SharpSSH\Org.Mentalis.Security.dll</HintPath>
</Reference>
<Reference Include="PdfiumViewer, Version=2.13.0.0, Culture=neutral, PublicKeyToken=91e4789cfb0609e0, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfiumViewer.2.13.0.0\lib\net20\PdfiumViewer.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="QRCode">
@@ -486,8 +495,8 @@
<HintPath>..\packages\ZUGFeRD-csharp.17.4.0\lib\net48\s2industries.ZUGFeRD.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.ComponentModel.Composition.Registration" />
@@ -523,8 +532,8 @@
<HintPath>..\..\..\Aviso\AVISO\packages\System.Linq.Async.4.0.0\lib\net461\System.Linq.Async.dll</HintPath>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
@@ -532,8 +541,8 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
<Reference Include="System.Numerics.Vectors, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
@@ -601,6 +610,27 @@
<Reference Include="Tamir.SharpSSH">
<HintPath>..\..\..\dll\SharpSSH\Tamir.SharpSSH.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig, Version=0.1.17.0, Culture=neutral, PublicKeyToken=605d367334e74123, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig.Core, Version=0.1.17.0, Culture=neutral, PublicKeyToken=605d367334e74123, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.Core.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig.DocumentLayoutAnalysis, Version=0.1.17.0, Culture=neutral, PublicKeyToken=605d367334e74123, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.DocumentLayoutAnalysis.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig.Fonts, Version=0.1.17.0, Culture=neutral, PublicKeyToken=605d367334e74123, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.Fonts.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig.Package, Version=0.1.17.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.Package.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig.Tokenization, Version=0.1.17.0, Culture=neutral, PublicKeyToken=605d367334e74123, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.Tokenization.dll</HintPath>
</Reference>
<Reference Include="UglyToad.PdfPig.Tokens, Version=0.1.17.0, Culture=neutral, PublicKeyToken=605d367334e74123, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\PdfPig.0.1.17-alpha-202610150035-3452b\lib\net471\UglyToad.PdfPig.Tokens.dll</HintPath>
</Reference>
<Reference Include="UIAutomationProvider" />
<Reference Include="WindowsBase">
<Private>True</Private>
@@ -613,6 +643,12 @@
<Reference Include="ZUGFeRD.NET, Version=1.0.0.0, Culture=neutral, PublicKeyToken=807dc6d06b184af9, processorArchitecture=MSIL">
<HintPath>..\packages\ZUGFeRD.NET.1.0.1\lib\ZUGFeRD.NET.dll</HintPath>
</Reference>
<Reference Include="zxing, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\ZXing.Net.0.16.11\lib\net48\zxing.dll</HintPath>
</Reference>
<Reference Include="zxing.presentation, Version=0.16.11.0, Culture=neutral, PublicKeyToken=4e88037ac681fe60, processorArchitecture=MSIL">
<HintPath>..\..\..\AVISO\Aviso\packages\ZXing.Net.0.16.11\lib\net48\zxing.presentation.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="com.esendex.sdk.optouts" />
@@ -5937,6 +5973,12 @@
<PropertyGroup>
<PostBuildEvent>\\192.168.0.90\f\Zertifikate\signtool.exe sign /f \\192.168.0.90\f\Zertifikate\AL20231110.pfx /p zYGNNJRG+tzlw90Rz6NqOXnoeBycFCy07YcUsY5iD0M= "SDL.exe"</PostBuildEvent>
</PropertyGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\AVISO\Aviso\packages\PdfiumViewer.Native.x86_64.v8-xfa.2018.4.8.256\build\PdfiumViewer.Native.x86_64.v8-xfa.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\AVISO\Aviso\packages\PdfiumViewer.Native.x86_64.v8-xfa.2018.4.8.256\build\PdfiumViewer.Native.x86_64.v8-xfa.props'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@@ -22,18 +22,21 @@ Partial Class usrCntlATLAS_EXGestellung
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.SplitContainer = New System.Windows.Forms.SplitContainer()
Me.MyFlowLayoutPanel1 = New VERAG_PROG_ALLGEMEIN.MyFlowLayoutPanel(Me.components)
Me.MyFlowLayoutPanel1 = New VERAG_PROG_ALLGEMEIN.MyFlowLayoutPanel()
Me.btnAllgemein = New System.Windows.Forms.Button()
Me.pnl = New System.Windows.Forms.Panel()
Me.cboDakosyAction = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.Button1 = New System.Windows.Forms.Button()
Me.Label10 = New System.Windows.Forms.Label()
Me.Button5 = New System.Windows.Forms.Button()
Me.Label9 = New System.Windows.Forms.Label()
Me.Button4 = New System.Windows.Forms.Button()
Me.Label5 = New System.Windows.Forms.Label()
Me.Button2 = New System.Windows.Forms.Button()
Me.cbxNCTS = New System.Windows.Forms.CheckBox()
Me.MyPanel1 = New VERAG_PROG_ALLGEMEIN.MyPanel(Me.components)
Me.Button3 = New System.Windows.Forms.Button()
Me.MyPanel1 = New VERAG_PROG_ALLGEMEIN.MyPanel()
Me.MyDatagridview1 = New VERAG_PROG_ALLGEMEIN.MyDatagridview()
Me.Label7 = New System.Windows.Forms.Label()
Me.Label4 = New System.Windows.Forms.Label()
Me.TextBox1 = New System.Windows.Forms.TextBox()
@@ -43,22 +46,22 @@ Partial Class usrCntlATLAS_EXGestellung
Me.Label2 = New System.Windows.Forms.Label()
Me.cboStammreferenz = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.MyPanel2 = New VERAG_PROG_ALLGEMEIN.MyPanel(Me.components)
Me.MyPanel2 = New VERAG_PROG_ALLGEMEIN.MyPanel()
Me.cboStammreferenz2 = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.cbxAutoTranslate = New System.Windows.Forms.CheckBox()
Me.Label8 = New System.Windows.Forms.Label()
Me.cbxForceTranslate = New System.Windows.Forms.CheckBox()
Me.Panel3 = New System.Windows.Forms.Panel()
Me.Button3 = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
Me.lblBezugsnummer = New System.Windows.Forms.Label()
Me.cntxtBezugsnr = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.cntxtBezugsnr = New System.Windows.Forms.ContextMenuStrip()
Me.NeueBezugsnummerVergebenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.txtDyMandant = New System.Windows.Forms.Label()
Me.txtDyNiederlassung = New System.Windows.Forms.Label()
Me.MenuStrip = New System.Windows.Forms.MenuStrip()
Me.OptionenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.MyDatagridview1 = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.cboStammreferenz2 = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.Label8 = New System.Windows.Forms.Label()
Me.Panel3 = New System.Windows.Forms.Panel()
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer.Panel1.SuspendLayout()
Me.SplitContainer.Panel2.SuspendLayout()
@@ -66,12 +69,12 @@ Partial Class usrCntlATLAS_EXGestellung
Me.MyFlowLayoutPanel1.SuspendLayout()
Me.pnl.SuspendLayout()
Me.MyPanel1.SuspendLayout()
CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.MyPanel2.SuspendLayout()
Me.Panel3.SuspendLayout()
Me.cntxtBezugsnr.SuspendLayout()
Me.Panel1.SuspendLayout()
Me.MenuStrip.SuspendLayout()
CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel3.SuspendLayout()
Me.SuspendLayout()
'
'SplitContainer
@@ -92,6 +95,10 @@ Partial Class usrCntlATLAS_EXGestellung
'SplitContainer.Panel2
'
Me.SplitContainer.Panel2.BackColor = System.Drawing.Color.White
Me.SplitContainer.Panel2.Controls.Add(Me.Label10)
Me.SplitContainer.Panel2.Controls.Add(Me.Button5)
Me.SplitContainer.Panel2.Controls.Add(Me.Label9)
Me.SplitContainer.Panel2.Controls.Add(Me.Button4)
Me.SplitContainer.Panel2.Controls.Add(Me.Label5)
Me.SplitContainer.Panel2.Controls.Add(Me.Button2)
Me.SplitContainer.Panel2.Controls.Add(Me.cbxNCTS)
@@ -106,7 +113,7 @@ Partial Class usrCntlATLAS_EXGestellung
Me.SplitContainer.Panel2.Controls.Add(Me.Label6)
Me.SplitContainer.Panel2.Controls.Add(Me.MyPanel2)
Me.SplitContainer.Panel2.Controls.Add(Me.Panel3)
Me.SplitContainer.Size = New System.Drawing.Size(1014, 633)
Me.SplitContainer.Size = New System.Drawing.Size(1014, 671)
Me.SplitContainer.SplitterDistance = 72
Me.SplitContainer.SplitterWidth = 1
Me.SplitContainer.TabIndex = 0
@@ -181,6 +188,54 @@ Partial Class usrCntlATLAS_EXGestellung
Me.Button1.Text = "An DAKOSY senden -->"
Me.Button1.UseVisualStyleBackColor = False
'
'Label10
'
Me.Label10.Location = New System.Drawing.Point(18, 153)
Me.Label10.Name = "Label10"
Me.Label10.Size = New System.Drawing.Size(120, 67)
Me.Label10.TabIndex = 31
Me.Label10.Text = "-"
Me.Label10.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'Button5
'
Me.Button5.BackColor = System.Drawing.Color.White
Me.Button5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
Me.Button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!)
Me.Button5.ImageAlign = System.Drawing.ContentAlignment.TopCenter
Me.Button5.Location = New System.Drawing.Point(20, 107)
Me.Button5.Margin = New System.Windows.Forms.Padding(2)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(118, 44)
Me.Button5.TabIndex = 30
Me.Button5.Text = "MRN aus Datei ..."
Me.Button5.UseVisualStyleBackColor = False
'
'Label9
'
Me.Label9.Location = New System.Drawing.Point(281, 547)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(139, 13)
Me.Label9.TabIndex = 29
Me.Label9.Text = "Anzahl:"
Me.Label9.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'Button4
'
Me.Button4.BackColor = System.Drawing.Color.White
Me.Button4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
Me.Button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!)
Me.Button4.ImageAlign = System.Drawing.ContentAlignment.TopCenter
Me.Button4.Location = New System.Drawing.Point(144, 542)
Me.Button4.Margin = New System.Windows.Forms.Padding(2)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(132, 28)
Me.Button4.TabIndex = 28
Me.Button4.Text = "Duplikate entfernen"
Me.Button4.UseVisualStyleBackColor = False
'
'Label5
'
Me.Label5.AutoSize = True
@@ -222,31 +277,30 @@ Partial Class usrCntlATLAS_EXGestellung
'
'MyPanel1
'
Me.MyPanel1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.MyPanel1.BackColor = System.Drawing.Color.WhiteSmoke
Me.MyPanel1.Controls.Add(Me.MyDatagridview1)
Me.MyPanel1.Controls.Add(Me.Label7)
Me.MyPanel1.Enabled = False
Me.MyPanel1.Location = New System.Drawing.Point(454, 88)
Me.MyPanel1.Name = "MyPanel1"
Me.MyPanel1.Size = New System.Drawing.Size(560, 472)
Me.MyPanel1.Size = New System.Drawing.Size(560, 525)
Me.MyPanel1.TabIndex = 20
Me.MyPanel1.Visible = False
'
'Button3
'MyDatagridview1
'
Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button3.BackColor = System.Drawing.Color.White
Me.Button3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Button3.ImageAlign = System.Drawing.ContentAlignment.TopCenter
Me.Button3.Location = New System.Drawing.Point(9, 2)
Me.Button3.Margin = New System.Windows.Forms.Padding(2)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(159, 42)
Me.Button3.TabIndex = 25
Me.Button3.Text = "NCTS an DAKOSY senden -->"
Me.Button3.UseVisualStyleBackColor = False
Me.MyDatagridview1.AKTUALISIERUNGS_INTERVALL = -1
Me.MyDatagridview1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.MyDatagridview1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.MyDatagridview1.Location = New System.Drawing.Point(20, 51)
Me.MyDatagridview1.Name = "MyDatagridview1"
Me.MyDatagridview1.Size = New System.Drawing.Size(537, 457)
Me.MyDatagridview1.TabIndex = 26
'
'Label7
'
@@ -368,6 +422,20 @@ Partial Class usrCntlATLAS_EXGestellung
Me.MyPanel2.TabIndex = 26
Me.MyPanel2.Visible = False
'
'cboStammreferenz2
'
Me.cboStammreferenz2._allowedValuesFreiText = Nothing
Me.cboStammreferenz2._allowFreiText = False
Me.cboStammreferenz2._value = ""
Me.cboStammreferenz2.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
Me.cboStammreferenz2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboStammreferenz2.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.cboStammreferenz2.FormattingEnabled = True
Me.cboStammreferenz2.Location = New System.Drawing.Point(113, 22)
Me.cboStammreferenz2.Name = "cboStammreferenz2"
Me.cboStammreferenz2.Size = New System.Drawing.Size(271, 21)
Me.cboStammreferenz2.TabIndex = 27
'
'cbxAutoTranslate
'
Me.cbxAutoTranslate.AutoSize = True
@@ -378,6 +446,16 @@ Partial Class usrCntlATLAS_EXGestellung
Me.cbxAutoTranslate.Text = "KN8 Texte bei nicht D-A-CH"
Me.cbxAutoTranslate.UseVisualStyleBackColor = True
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(17, 25)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(57, 13)
Me.Label8.TabIndex = 28
Me.Label8.Text = "Stammref.:"
Me.Label8.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'cbxForceTranslate
'
Me.cbxForceTranslate.AutoSize = True
@@ -388,6 +466,32 @@ Partial Class usrCntlATLAS_EXGestellung
Me.cbxForceTranslate.Text = "Übersetzung erzwingen"
Me.cbxForceTranslate.UseVisualStyleBackColor = True
'
'Panel3
'
Me.Panel3.BackColor = System.Drawing.Color.WhiteSmoke
Me.Panel3.Controls.Add(Me.Button3)
Me.Panel3.Location = New System.Drawing.Point(844, 41)
Me.Panel3.Name = "Panel3"
Me.Panel3.Size = New System.Drawing.Size(170, 49)
Me.Panel3.TabIndex = 27
Me.Panel3.Visible = False
'
'Button3
'
Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Button3.BackColor = System.Drawing.Color.White
Me.Button3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Button3.ImageAlign = System.Drawing.ContentAlignment.TopCenter
Me.Button3.Location = New System.Drawing.Point(9, 2)
Me.Button3.Margin = New System.Windows.Forms.Padding(2)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(159, 42)
Me.Button3.TabIndex = 25
Me.Button3.Text = "NCTS an DAKOSY senden -->"
Me.Button3.UseVisualStyleBackColor = False
'
'Label1
'
Me.Label1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
@@ -472,55 +576,12 @@ Partial Class usrCntlATLAS_EXGestellung
Me.OptionenToolStripMenuItem.Size = New System.Drawing.Size(69, 20)
Me.OptionenToolStripMenuItem.Text = "Optionen"
'
'MyDatagridview1
'
Me.MyDatagridview1.AKTUALISIERUNGS_INTERVALL = -1
Me.MyDatagridview1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.MyDatagridview1.Location = New System.Drawing.Point(20, 51)
Me.MyDatagridview1.Name = "MyDatagridview1"
Me.MyDatagridview1.Size = New System.Drawing.Size(537, 398)
Me.MyDatagridview1.TabIndex = 26
'
'cboStammreferenz2
'
Me.cboStammreferenz2._allowedValuesFreiText = Nothing
Me.cboStammreferenz2._allowFreiText = False
Me.cboStammreferenz2._value = ""
Me.cboStammreferenz2.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
Me.cboStammreferenz2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboStammreferenz2.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.cboStammreferenz2.FormattingEnabled = True
Me.cboStammreferenz2.Location = New System.Drawing.Point(113, 22)
Me.cboStammreferenz2.Name = "cboStammreferenz2"
Me.cboStammreferenz2.Size = New System.Drawing.Size(271, 21)
Me.cboStammreferenz2.TabIndex = 27
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(17, 25)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(57, 13)
Me.Label8.TabIndex = 28
Me.Label8.Text = "Stammref.:"
Me.Label8.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'Panel3
'
Me.Panel3.BackColor = System.Drawing.Color.WhiteSmoke
Me.Panel3.Controls.Add(Me.Button3)
Me.Panel3.Location = New System.Drawing.Point(844, 41)
Me.Panel3.Name = "Panel3"
Me.Panel3.Size = New System.Drawing.Size(170, 49)
Me.Panel3.TabIndex = 27
Me.Panel3.Visible = False
'
'usrCntlATLAS_EXGestellung
'
Me.Controls.Add(Me.SplitContainer)
Me.Controls.Add(Me.Panel1)
Me.Name = "usrCntlATLAS_EXGestellung"
Me.Size = New System.Drawing.Size(1014, 658)
Me.Size = New System.Drawing.Size(1014, 696)
Me.SplitContainer.Panel1.ResumeLayout(False)
Me.SplitContainer.Panel2.ResumeLayout(False)
Me.SplitContainer.Panel2.PerformLayout()
@@ -530,15 +591,15 @@ Partial Class usrCntlATLAS_EXGestellung
Me.pnl.ResumeLayout(False)
Me.MyPanel1.ResumeLayout(False)
Me.MyPanel1.PerformLayout()
CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).EndInit()
Me.MyPanel2.ResumeLayout(False)
Me.MyPanel2.PerformLayout()
Me.Panel3.ResumeLayout(False)
Me.cntxtBezugsnr.ResumeLayout(False)
Me.Panel1.ResumeLayout(False)
Me.Panel1.PerformLayout()
Me.MenuStrip.ResumeLayout(False)
Me.MenuStrip.PerformLayout()
CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).EndInit()
Me.Panel3.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
@@ -578,4 +639,8 @@ Partial Class usrCntlATLAS_EXGestellung
Friend WithEvents Label8 As Label
Friend WithEvents MyDatagridview1 As VERAG_PROG_ALLGEMEIN.MyDatagridview
Friend WithEvents Panel3 As Panel
Friend WithEvents Button4 As Button
Friend WithEvents Label9 As Label
Friend WithEvents Button5 As Button
Friend WithEvents Label10 As Label
End Class

View File

@@ -1,6 +1,7 @@
Imports System.Data.SqlClient
Imports com.sun.tools.doclets.internal.toolkit.util
Imports DAKOSY_Worker
Imports TAlex.WPF.Helpers
Public Class usrCntlATLAS_EXGestellung
@@ -35,7 +36,7 @@ Public Class usrCntlATLAS_EXGestellung
Private Sub usrCntlATLAS_Load(sender As Object, e As EventArgs) Handles Me.Load
Button4.Visible = True
cboDakosyAction.Items.Clear()
cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Neuen Datensatz erstellen", DY_ObjektAktion.OBJ_CREATE))
cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vohr. DS ändern", DY_ObjektAktion.OBJ_CHANGE))
@@ -176,16 +177,19 @@ Public Class usrCntlATLAS_EXGestellung
If rtbMRN.Text.Trim = "" Then MsgBox("MRN auswählen!") : Me.Cursor = Cursors.Default : Exit Sub
delDuplicates() 'Duplikate entfernen
Dim exg_list = New List(Of Integer)
Dim dblcheck = ""
'MRN Prüfung:
For Each l In rtbMRN.Lines
If l.Trim <> "" Then
If l.Trim.Length >= 18 And dblcheck.Contains(l.Trim) Then
MsgBox("Doppelte MRN !: " & l)
Me.Cursor = Cursors.Default
Exit Sub
End If
'If l.Trim.Length >= 18 And dblcheck.Contains(l.Trim) Then
' MsgBox("Doppelte MRN !: " & l)
' Me.Cursor = Cursors.Default
' Exit Sub
'End If
If Not IsValidMRN(l.Trim) Then
MsgBox("Ungültige MRN (Format): " & l)
Me.Cursor = Cursors.Default
@@ -243,6 +247,110 @@ Public Class usrCntlATLAS_EXGestellung
Me.Cursor = Cursors.Default
End Sub
Private isFormattingMRN As Boolean = False
Private Sub rtbMRN_KeyPress(sender As Object, e As KeyPressEventArgs) Handles rtbMRN.KeyPress
If e.KeyChar = ChrW(13) OrElse e.KeyChar = ChrW(10) Then
e.Handled = True
Exit Sub
End If
If Char.IsControl(e.KeyChar) Then Exit Sub
Dim pos = rtbMRN.SelectionStart
Dim lineIndex = rtbMRN.GetLineFromCharIndex(pos)
Dim lineStart = rtbMRN.GetFirstCharIndexFromLine(lineIndex)
If lineStart < 0 Then Exit Sub
Dim lineLength = pos - lineStart
If lineLength = 17 AndAlso rtbMRN.SelectionLength = 0 Then
e.Handled = True
rtbMRN.SelectedText = Char.ToUpperInvariant(e.KeyChar) & vbCrLf
rtbMRN.Select(rtbMRN.TextLength, 0)
rtbMRN.ScrollToCaret()
End If
End Sub
Private Sub rtbMRN_KeyDown(sender As Object, e As KeyEventArgs) Handles rtbMRN.KeyDown
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
e.Handled = True
Dim pos = rtbMRN.SelectionStart
Dim lineIndex = rtbMRN.GetLineFromCharIndex(pos)
Dim lineStart = rtbMRN.GetFirstCharIndexFromLine(lineIndex)
If lineStart < 0 Then Exit Sub
Dim lineText = If(lineIndex >= 0 AndAlso lineIndex < rtbMRN.Lines.Length, rtbMRN.Lines(lineIndex), "")
If String.IsNullOrWhiteSpace(lineText) Then Exit Sub
If pos <> lineStart + lineText.Length Then Exit Sub
' Keine weitere Zeile, wenn bereits ein Umbruch folgt
If pos < rtbMRN.TextLength AndAlso
(rtbMRN.Text(pos) = ChrW(13) OrElse rtbMRN.Text(pos) = ChrW(10)) Then Exit Sub
rtbMRN.SelectedText = vbCrLf
rtbMRN.Select(rtbMRN.TextLength, 0)
Exit Sub
End If
If e.KeyCode <> Keys.Back OrElse rtbMRN.SelectionLength > 0 Then Exit Sub
Dim posBack = rtbMRN.SelectionStart
If posBack = 0 Then Exit Sub
Dim lineIndexBack = rtbMRN.GetLineFromCharIndex(posBack)
Dim lineStartBack = rtbMRN.GetFirstCharIndexFromLine(lineIndexBack)
If lineIndexBack > 0 AndAlso posBack = lineStartBack Then
e.SuppressKeyPress = True
Dim prevStart = rtbMRN.GetFirstCharIndexFromLine(lineIndexBack - 1)
Dim prevText = rtbMRN.Lines(lineIndexBack - 1)
If prevText.Length > 0 Then
rtbMRN.Select(prevStart + prevText.Length - 1, 1)
rtbMRN.SelectedText = ""
rtbMRN.SelectionStart = prevStart + prevText.Length - 1
End If
End If
End Sub
Private Sub rtbMRN_TextChanged(sender As Object, e As EventArgs) Handles rtbMRN.TextChanged
If isFormattingMRN Then Exit Sub
Dim original = rtbMRN.Text
Dim pos = rtbMRN.SelectionStart
Dim normalized = original.Replace(vbCrLf, vbLf).Replace(vbCr, vbLf)
Dim lines = normalized.Split(ControlChars.Lf)
Dim resultLines As New List(Of String)
For Each l In lines
If l.Trim() <> "" Then resultLines.Add(l)
Next
Dim result = String.Join(vbCrLf, resultLines)
' Eine leere letzte Zeile erlauben
If normalized.EndsWith(vbLf) AndAlso result <> "" Then result &= vbCrLf
If original <> result Then
isFormattingMRN = True
Try
rtbMRN.Text = result
rtbMRN.SelectionStart = Math.Min(pos, rtbMRN.TextLength)
rtbMRN.SelectionLength = 0
Finally
isFormattingMRN = False
End Try
End If
Label9.Text = "Anzahl: " & resultLines.Count.ToString()
End Sub
Function sendEXP_MRN(MRN As String, Zollstelle As String, zeile As String, ByRef exg_list As List(Of Integer), Optional FIRMA_DY_TEMP As String = "") As Boolean
Me.Refresh()
@@ -650,6 +758,262 @@ Public Class usrCntlATLAS_EXGestellung
'Return saveFile
End Function
Sub delDuplicates()
rtbMRN.Lines = rtbMRN.Lines.
Select(Function(l) l.Trim().ToUpperInvariant()).
Where(Function(l) l <> "").
Distinct().
ToArray()
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
delDuplicates()
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Label10.Text = "MRNs werden gelesen..."
Label10.Refresh()
Dim mrns As List(Of cPDFMRNResult) = readEXDataFromPDF()
If mrns IsNot Nothing AndAlso mrns.Count > 0 Then
Dim uniqueMRNs = mrns.Select(Function(x) x.MRN).Distinct().ToList()
rtbMRN.Text = String.Join(Environment.NewLine, uniqueMRNs)
Label10.Text = $"{uniqueMRNs.Count} MRN erkannt"
Else
Label10.Text = "Keine MRNs gefunden."
End If
End Sub
Private Function readEXDataFromPDF() As List(Of cPDFMRNResult)
Dim f As New frmImportFromAVISOAnhaenge(AVISO, SENDUNG)
f.ShowDialog(Me)
If f.DialogResult <> DialogResult.OK Then Return New List(Of cPDFMRNResult)
If f.LIST_FILES Is Nothing OrElse f.LIST_FILES.Count = 0 Then Return New List(Of cPDFMRNResult)
Cursor.Current = Cursors.WaitCursor
Try
Return ExtractMRNsFromPDFs(f.LIST_FILES, Label10)
Finally
Cursor.Current = Cursors.Default
End Try
End Function
Public Shared Function ExtractMRNsFromPDFs(files As IEnumerable(Of String), Optional lblProgress As Label = Nothing) As List(Of cPDFMRNResult)
Dim results As New List(Of cPDFMRNResult)
Dim pdfFiles = files.ToList()
Dim fileNr As Integer = 0
For Each pdfPath In pdfFiles
fileNr += 1
Console.WriteLine("PDF: " & pdfPath)
If String.IsNullOrWhiteSpace(pdfPath) OrElse Not System.IO.File.Exists(pdfPath) Then Continue For
Try
Using textPdf = UglyToad.PdfPig.PdfDocument.Open(pdfPath)
Dim imagePdf As PdfiumViewer.PdfDocument = Nothing
Try
'Console.WriteLine("Seiten: " & textPdf.NumberOfPages)
For pageIndex As Integer = 0 To textPdf.NumberOfPages - 1
Dim found As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
' Fortschritt anzeigen
If lblProgress IsNot Nothing Then
lblProgress.Text = $"PDF: {fileNr}/{pdfFiles.Count}" & vbCrLf &
$"Seite: {pageIndex + 1}/{textPdf.NumberOfPages}" & vbCrLf &
$"MRNs: {results.Count}"
lblProgress.Refresh()
End If
' 1. Zuerst Text auslesen
Try
For Each mrn In ExtractMRNsFromPDFText(textPdf, pageIndex)
found.Add(mrn)
Next
Catch ex As Exception
' Console.WriteLine($"TEXT-FEHLER | Seite={pageIndex + 1} | {ex.Message}")
End Try
' 2. Nur wenn keine MRN im Text gefunden wurde
If found.Count = 0 Then
Try
If imagePdf Is Nothing Then imagePdf = PdfiumViewer.PdfDocument.Load(pdfPath)
For Each mrn In ExtractMRNsFromPDFImage(imagePdf, pageIndex)
found.Add(mrn)
Next
Catch ex As Exception
' Console.WriteLine($"BILD-FEHLER | Seite={pageIndex + 1} | {ex.Message}")
End Try
End If
For Each mrn In found
results.Add(New cPDFMRNResult With {
.FileName = System.IO.Path.GetFileName(pdfPath),
.PageNumber = pageIndex + 1,
.MRN = mrn
})
Next
' Console.WriteLine($"SEITE {pageIndex + 1} ENDE | MRNs={found.Count}")
' Fortschritt nach abgeschlossener Seite aktualisieren
If lblProgress IsNot Nothing Then
lblProgress.Text = $"PDF {fileNr}/{pdfFiles.Count} | Seite {pageIndex + 1}/{textPdf.NumberOfPages} | MRNs: {results.Count}"
lblProgress.Refresh()
End If
Next
Finally
If imagePdf IsNot Nothing Then imagePdf.Dispose()
End Try
End Using
Catch ex As Exception
' Console.WriteLine("PDF FEHLER: " & ex.ToString())
End Try
Next
' Console.WriteLine("FERTIG | MRNs gesamt: " & results.Count)
If lblProgress IsNot Nothing Then
lblProgress.Text = $"Fertig: {results.Count} MRNs"
lblProgress.Refresh()
End If
Return results
End Function
Private Shared Function ExtractMRNsFromPDFText(pdf As UglyToad.PdfPig.PdfDocument, pageIndex As Integer) As List(Of String)
Dim results As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
Dim pageText = pdf.GetPage(pageIndex + 1).Text
' Console.WriteLine($"TEXT | Seite={pageIndex + 1} | Zeichen={pageText.Length}")
Dim matches = System.Text.RegularExpressions.Regex.Matches(
pageText.ToUpperInvariant(),
"(?<![A-Z0-9])[0-9]{2}[A-Z]{2}[A-Z0-9]{14}(?![A-Z0-9])")
For Each match As System.Text.RegularExpressions.Match In matches
If results.Add(match.Value) Then
' Console.WriteLine($"TEXT-MRN | Seite={pageIndex + 1} | {match.Value}")
End If
Next
Return results.ToList()
End Function
Private Shared Function ExtractMRNsFromPDFImage(pdf As PdfiumViewer.PdfDocument, pageIndex As Integer) As List(Of String)
Dim results As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
Dim reader As New ZXing.BarcodeReader With {
.AutoRotate = True,
.Options = New ZXing.Common.DecodingOptions With {
.TryHarder = True,
.PossibleFormats = New List(Of ZXing.BarcodeFormat) From {
ZXing.BarcodeFormat.CODE_128,
ZXing.BarcodeFormat.CODE_39,
ZXing.BarcodeFormat.ITF,
ZXing.BarcodeFormat.CODABAR
}
}
}
' Console.WriteLine($"BILD | Seite={pageIndex + 1} | Barcode-Erkennung gestartet")
For Each dpi As Integer In {200, 300}
Try
Dim pageSize = pdf.PageSizes(pageIndex)
Dim width = CInt(Math.Ceiling(pageSize.Width * dpi / 72.0))
Dim height = CInt(Math.Ceiling(pageSize.Height * dpi / 72.0))
' Console.WriteLine($"Rendering | Seite={pageIndex + 1} | DPI={dpi} | {width}x{height}")
Using img As System.Drawing.Image = pdf.Render(pageIndex, width, height, dpi, dpi, PdfiumViewer.PdfRenderFlags.Annotations)
Using bmp As New Bitmap(img)
' Gesamte Seite und zusätzlich oberen rechten Bereich prüfen
Dim cropX = CInt(bmp.Width * 0.59)
Dim cropY = CInt(bmp.Height * 0.025)
Dim cropW = CInt(bmp.Width * 0.39)
Dim cropH = CInt(bmp.Height * 0.12)
Dim rect As New Rectangle(cropX, cropY, cropW, cropH)
rect.Intersect(New Rectangle(0, 0, bmp.Width, bmp.Height))
Dim images As New List(Of Bitmap)
images.Add(bmp)
Try
If rect.Width > 0 AndAlso rect.Height > 0 Then
images.Add(bmp.Clone(rect, System.Drawing.Imaging.PixelFormat.Format24bppRgb))
End If
For imageIndex As Integer = 0 To images.Count - 1
Dim currentImage = images(imageIndex)
Dim decoded = reader.DecodeMultiple(currentImage)
If decoded Is Nothing OrElse decoded.Length = 0 Then
Dim singleResult = reader.Decode(currentImage)
If singleResult IsNot Nothing Then decoded = {singleResult}
End If
If decoded IsNot Nothing Then
For Each barcode In decoded
' Console.WriteLine($"BARCODE | Seite={pageIndex + 1} | Typ={barcode.BarcodeFormat} | Inhalt={barcode.Text}")
Dim mrn = GetMRNFromBarcode(barcode.Text)
If mrn IsNot Nothing Then
results.Add(mrn)
' Console.WriteLine("MRN ERKANNT: " & mrn)
End If
Next
End If
Next
Finally
' Nur den zusätzlich erzeugten Ausschnitt freigeben
For imageIndex As Integer = 1 To images.Count - 1
images(imageIndex).Dispose()
Next
End Try
End Using
End Using
Catch ex As Exception
' Console.WriteLine($"BILD-FEHLER | Seite={pageIndex + 1} | DPI={dpi} | {ex.Message}")
End Try
If results.Count > 0 Then Exit For
Next
Return results.ToList()
End Function
Private Shared Function GetMRNFromBarcode(value As String) As String
If String.IsNullOrWhiteSpace(value) Then Return Nothing
Dim match = System.Text.RegularExpressions.Regex.Match(
value.ToUpperInvariant(),
"(?<![A-Z0-9])[0-9]{2}[A-Z]{2}[A-Z0-9]{14}(?![A-Z0-9])")
Return If(match.Success, match.Value, Nothing)
End Function
End Class
Public Class cPDFMRNResult
Public Property FileName As String
Public Property PageNumber As Integer
Public Property MRN As String
End Class

View File

@@ -62,6 +62,7 @@
<package id="MESCIUS.Data.ExpressionInfo" version="4.0.3" targetFramework="net48" />
<package id="MESCIUS.Data.VBFunctionLib" version="4.0.3" targetFramework="net48" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net48" />
<package id="Microsoft.Bcl.HashCode" version="6.0.0" targetFramework="net48" />
<package id="Microsoft.CSharp" version="4.7.0" targetFramework="net47" />
<package id="Microsoft.Extensions.DependencyInjection" version="5.0.0" targetFramework="net48" />
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="5.0.0" targetFramework="net48" />
@@ -70,18 +71,21 @@
<package id="Microsoft.Extensions.Options" version="5.0.0" targetFramework="net48" />
<package id="Microsoft.Extensions.Primitives" version="5.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="13.0.4" targetFramework="net48" />
<package id="PdfiumViewer" version="2.13.0.0" targetFramework="net48" />
<package id="PdfiumViewer.Native.x86_64.v8-xfa" version="2018.4.8.256" targetFramework="net48" />
<package id="PdfPig" version="0.1.17-alpha-202610150035-3452b" targetFramework="net48" />
<package id="Portable.BouncyCastle" version="1.8.5" targetFramework="net48" />
<package id="QRCoder" version="1.8.0" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Buffers" version="4.6.0" targetFramework="net48" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.0" targetFramework="net48" />
<package id="System.Interactive.Async" version="4.0.0" targetFramework="net48" />
<package id="System.IO" version="4.3.0" targetFramework="net48" />
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
<package id="System.IO.Packaging" version="4.5.0" targetFramework="net48" />
<package id="System.Linq.Async" version="4.0.0" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Memory" version="4.6.0" targetFramework="net48" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.6.0" targetFramework="net48" />
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net48" />
<package id="System.Security.AccessControl" version="6.0.1" targetFramework="net48" />
@@ -97,4 +101,5 @@
<package id="WpfAnimatedGif" version="1.4.14" targetFramework="net45" />
<package id="ZUGFeRD.NET" version="1.0.1" targetFramework="net48" />
<package id="ZUGFeRD-csharp" version="17.4.0" targetFramework="net48" />
<package id="ZXing.Net" version="0.16.11" targetFramework="net48" />
</packages>

View File

@@ -0,0 +1,101 @@
Imports System.Data.SqlClient
Imports System.Reflection
Imports System.Linq
'Fachdaten zu einem bereits gespeicherten tblSendungen-Datensatz.
'Zuerst cSendungen.SAVE(), anschließend cSendungCustomsCases.SAVE() aufrufen.
Public Class cSendungCustomsCases
Public hasEntry As Boolean = False
Private ReadOnly SQL As New VERAG_PROG_ALLGEMEIN.SQL
Public Property scc_SendungID As Integer = 0
Public Property scc_Type As Short = 0
Public Property scc_Subject As String = Nothing
Public Property scc_CustomsOffice As String = Nothing
Public Property scc_CustomsReference As String = Nothing
Public Property scc_DocumentDate As Date? = Nothing
Public Property scc_ReceivedDate As Date? = Nothing
Public Property scc_Deadline As Date? = Nothing
Public Property scc_ReminderDate As Date? = Nothing
Public Property scc_ReferenceMRN As String = Nothing
Public Property scc_Amount As Decimal? = Nothing
Public Property scc_Currency As String = Nothing
Public Property scc_Status As Short = 0
Public Property scc_Result As Short? = Nothing
Public Property scc_ClosedDate As Date? = Nothing
Public Sub New(sendungId As Integer, Optional autoLoad As Boolean = True)
scc_SendungID = sendungId
If autoLoad AndAlso sendungId > 0 Then LOAD()
End Sub
Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_SendungID", scc_SendungID,, True))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Type", scc_Type))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Subject", scc_Subject))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_CustomsOffice", scc_CustomsOffice))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_CustomsReference", scc_CustomsReference))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_DocumentDate", scc_DocumentDate))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_ReceivedDate", scc_ReceivedDate))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Deadline", scc_Deadline))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_ReminderDate", scc_ReminderDate))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_ReferenceMRN", scc_ReferenceMRN))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Amount", scc_Amount))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Currency", scc_Currency))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Status", scc_Status))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_Result", scc_Result))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("scc_ClosedDate", scc_ClosedDate))
Return list
End Function
Public Sub LOAD()
Try
hasEntry = False
If scc_SendungID <= 0 Then Exit Sub
Using conn As SqlConnection = SQL.GetNewOpenConnectionAVISO()
Using cmd As New SqlCommand("SELECT * FROM dbo.tblSendungCustomsCases WHERE scc_SendungID=@scc_SendungID", conn)
cmd.Parameters.Add("@scc_SendungID", SqlDbType.Int).Value = scc_SendungID
Using dr As SqlDataReader = cmd.ExecuteReader()
If dr.Read() Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType().GetProperty(li.Scalarvariable)
If propInfo Is Nothing Then Continue For
Dim value As Object = dr(li.Text)
If value Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
Dim targetType As Type = Nullable.GetUnderlyingType(propInfo.PropertyType)
If targetType Is Nothing Then targetType = propInfo.PropertyType
propInfo.SetValue(Me, Convert.ChangeType(value, targetType))
End If
Next
hasEntry = True
End If
End Using
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Throw
End Try
End Sub
Public Function SAVE() As Boolean
If scc_SendungID <= 0 Then Throw New InvalidOperationException("Zuerst die Sendung speichern; SendungID fehlt.")
Dim sqlstr As String = "SET XACT_ABORT ON; BEGIN TRAN; " &
"IF EXISTS(SELECT 1 FROM dbo.tblSendungCustomsCases WITH (UPDLOCK,HOLDLOCK) WHERE scc_SendungID=@scc_SendungID) " &
"BEGIN " & getUpdateCmd() & " END ELSE BEGIN " & getInsertCmd() & " END; COMMIT TRAN;"
Return SQL.doSQLVarList(sqlstr, "AVISO", , getParameterList())
End Function
Public Function getUpdateCmd() As String
Dim cols = getParameterList().Where(Function(x) Not x.isPrimaryParam).Select(Function(x) "[" & x.Text & "]=@" & x.Scalarvariable)
Return "UPDATE dbo.tblSendungCustomsCases SET " & String.Join(",", cols) & " WHERE scc_SendungID=@scc_SendungID;"
End Function
Public Function getInsertCmd() As String
Dim list = getParameterList()
Return "INSERT INTO dbo.tblSendungCustomsCases (" & String.Join(",", list.Select(Function(x) "[" & x.Text & "]")) & ") VALUES (" & String.Join(",", list.Select(Function(x) "@" & x.Scalarvariable)) & ");"
End Function
End Class

View File

@@ -5,6 +5,7 @@ Public Class cSendungen
Property tblSnd_SendungID As Integer = Nothing
Property tblSnd_PosUnterNr As Integer = Nothing
Property tblSnd_AvisoID As Integer = Nothing
Public Property tblSnd_AktTyp As String = "CLEARANCE"
Property tblSnd_Zollsystem_Land As Object = Nothing
Property tblSnd_Abfertigungsart_ID As Integer = Nothing
Property tblSnd_EmpfaengerKdNr As Integer = Nothing
@@ -386,6 +387,7 @@ Public Class cSendungen
Me.tblSnd_SendungID = SQL.checkNullReturnValue(dr.Item("tblSnd_SendungID"), Nothing)
Me.tblSnd_PosUnterNr = SQL.checkNullReturnValue(dr.Item("tblSnd_PosUnterNr"), Nothing)
Me.tblSnd_AvisoID = SQL.checkNullReturnValue(dr.Item("tblSnd_AvisoID"), Nothing)
Me.tblSnd_AktTyp = If(dr.Item("tblSnd_AktTyp") Is DBNull.Value, "CLEARANCE", Convert.ToString(dr.Item("tblSnd_AktTyp")))
Me.tblSnd_Zollsystem_Land = SQL.checkNullReturnValue(dr.Item("tblSnd_Zollsystem_Land"), Nothing)
Me.tblSnd_Abfertigungsart_ID = SQL.checkNullReturnValue(dr.Item("tblSnd_Abfertigungsart_ID"), Nothing)
Me.tblSnd_EmpfaengerKdNr = SQL.checkNullReturnValue(dr.Item("tblSnd_EmpfaengerKdNr"), Nothing)
@@ -614,6 +616,7 @@ Public Class cSendungen
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_SendungID", tblSnd_SendungID, , True)) 'UPDATE INSERT ISPRIMARY!
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_PosUnterNr", tblSnd_PosUnterNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_AvisoID", tblSnd_AvisoID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_AktTyp", If(String.IsNullOrWhiteSpace(tblSnd_AktTyp), "CLEARANCE", tblSnd_AktTyp)))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_Zollsystem_Land", tblSnd_Zollsystem_Land))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_Abfertigungsart_ID", tblSnd_Abfertigungsart_ID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("tblSnd_EmpfaengerKdNr", tblSnd_EmpfaengerKdNr))

View File

@@ -192,51 +192,108 @@ Public Class cDATENSERVER
Return False
End Function
Function moveTo_ARCHIVARCHIV()
Dim oldDIR = DATENVERVER_OPTIONS.getDescPath(rootDir, da_kategorie, da_ordner, da_uOrdner1, da_uOrdner2, da_uOrdner3, da_KundenNr, "", "", True)
Function moveTo_ARCHIVARCHIV(Optional fehlerListe As List(Of String) = Nothing, Optional logPfad As String = Nothing) As Boolean
Dim hasErrors As Boolean = False
Try
Dim oldDIR = DATENVERVER_OPTIONS.getDescPath(rootDir, da_kategorie, da_ordner, da_uOrdner1, da_uOrdner2, da_uOrdner3, da_KundenNr, "", "", True)
Dim newDIR = DATENVERVER_OPTIONS.getDescPath(rootDirARCHIVARCHIV, da_kategorie, da_ordner, da_uOrdner1, da_uOrdner2, da_uOrdner3, da_KundenNr, "", "", True)
Try
' My.Computer.FileSystem.RenameDirectory(oldDIR, newname)
Dim oldBase = System.IO.Path.GetFullPath(oldDIR).TrimEnd("\"c) & "\"
Dim newBase = System.IO.Path.GetFullPath(newDIR).TrimEnd("\"c) & "\"
Dim createdDirectories As New HashSet(Of String)(StringComparer.OrdinalIgnoreCase)
For Each li In DATA_LIST.LIST
Dim alterPfad As String = li.coll_pfad
Dim newPfad = li.coll_pfad.Replace(oldDIR, newDIR)
'MsgBox(li.coll_pfad)
' MsgBox(newPfad)
If Not System.IO.Directory.Exists(newDIR) Then System.IO.Directory.CreateDirectory(newDIR)
Try
If Not li.coll_pfad.ToLower.StartsWith("\\stor01.verag.ost.dmn\datenarchivarchiv") Then
If Not li.coll_pfad.Contains("?") Then
If System.IO.File.Exists(li.coll_pfad) Then
My.Computer.FileSystem.CopyFile(li.coll_pfad, newPfad, True)
My.Computer.FileSystem.DeleteFile(li.coll_pfad)
If String.IsNullOrWhiteSpace(alterPfad) Then Continue For
If alterPfad.StartsWith("\\stor01.verag.ost.dmn\datenarchivarchiv\", StringComparison.OrdinalIgnoreCase) Then Continue For
If alterPfad.StartsWith("\\DELETED\", StringComparison.OrdinalIgnoreCase) Then Continue For
If alterPfad.Contains("?") Then Continue For
If System.IO.File.Exists(alterPfad) Then
Dim fullPath = System.IO.Path.GetFullPath(alterPfad)
If Not fullPath.StartsWith(oldBase, StringComparison.OrdinalIgnoreCase) Then
Throw New Exception("Datei liegt nicht im Quellverzeichnis: " & alterPfad)
End If
Dim newPfad = newBase & fullPath.Substring(oldBase.Length)
Dim zielOrdner = System.IO.Path.GetDirectoryName(newPfad)
If createdDirectories.Add(zielOrdner) Then
System.IO.Directory.CreateDirectory(zielOrdner)
End If
System.IO.File.Copy(alterPfad, newPfad, True)
li.coll_pfad = newPfad
If Not li.UPDATE() Then
Return False
li.coll_pfad = alterPfad
Throw New Exception("Datenbankupdate fehlgeschlagen: " & alterPfad)
End If
Try
System.IO.File.Delete(alterPfad)
Catch exDelete As Exception
hasErrors = True
LogArchivFehler("LÖSCHEN FEHLGESCHLAGEN | da_id=" & da_id & " | " & alterPfad & " | " & exDelete.Message, fehlerListe, logPfad)
End Try
Else
'Datei Existiert nicht!
li.coll_pfad = li.coll_pfad.Replace("\\datenarchiv.verag.ost.dmn\", "\\DELETED\")
Dim deletedPfad = alterPfad.Replace("\\datenarchiv.verag.ost.dmn\", "\\DELETED\")
If deletedPfad <> alterPfad Then
li.coll_pfad = deletedPfad
If Not li.UPDATE() Then
Return False
End If
li.coll_pfad = alterPfad
Throw New Exception("Datenbankupdate fehlgeschlagen: " & alterPfad)
End If
End If
End If
Catch ex2 As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex2.Message, li.coll_pfad & vbNewLine & newPfad & vbNewLine & vbNewLine & ex2.Message & vbNewLine & ex2.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
hasErrors = True
li.coll_pfad = alterPfad
LogArchivFehler("FEHLER | da_id=" & da_id & " | " & alterPfad & " | " & ex2.Message, fehlerListe, logPfad)
End Try
Next
Return UPDATE()
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
If Not UPDATE() Then
hasErrors = True
LogArchivFehler("UPDATE FEHLGESCHLAGEN | da_id=" & da_id, fehlerListe, logPfad)
End If
Catch ex As Exception
hasErrors = True
LogArchivFehler("ALLGEMEINER FEHLER | da_id=" & da_id & " | " & ex.Message, fehlerListe, logPfad)
End Try
Return False
Return Not hasErrors
End Function
Private Sub LogArchivFehler(fehlerText As String, fehlerListe As List(Of String), logPfad As String)
Dim eintrag As String = Date.Now.ToString("dd.MM.yyyy HH:mm:ss") & " | " & fehlerText
If fehlerListe IsNot Nothing Then fehlerListe.Add(eintrag)
If Not String.IsNullOrWhiteSpace(logPfad) Then
Try
System.IO.File.AppendAllText(logPfad, eintrag & Environment.NewLine, System.Text.Encoding.UTF8)
Catch ex As Exception
Debug.WriteLine("Archiv-Log konnte nicht geschrieben werden: " & ex.Message)
End Try
End If
End Sub
Function UPDATE() As Boolean
Try
'If coll_id < 0 Then 'Wenn noch keine ID vergeben

View File

@@ -24,7 +24,6 @@ Partial Class frmMessenger
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
@@ -39,12 +38,12 @@ Partial Class frmMessenger
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMessenger))
Me.SplitContainer = New System.Windows.Forms.SplitContainer()
Me.SplitContainer2 = New System.Windows.Forms.SplitContainer()
Me.dgvChats = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.dgvChats = New VERAG_PROG_ALLGEMEIN.MyDatagridview()
Me.Panel6 = New System.Windows.Forms.Panel()
Me.Label3 = New System.Windows.Forms.Label()
Me.lblLKWChat_MsgCntInaktiv = New System.Windows.Forms.Label()
Me.cbxInaktiveChats = New System.Windows.Forms.CheckBox()
Me.DGVSonstige = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.DGVSonstige = New VERAG_PROG_ALLGEMEIN.MyDatagridview()
Me.Panel5 = New System.Windows.Forms.Panel()
Me.MyTextBox2 = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.PictureBox2 = New System.Windows.Forms.PictureBox()
@@ -65,7 +64,7 @@ Partial Class frmMessenger
Me.btnNeu = New System.Windows.Forms.Button()
Me.Button1 = New System.Windows.Forms.Button()
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.MyFlowLayoutPanel1 = New VERAG_PROG_ALLGEMEIN.MyFlowLayoutPanel(Me.components)
Me.MyFlowLayoutPanel1 = New VERAG_PROG_ALLGEMEIN.MyFlowLayoutPanel()
Me.UsrCntlMessenger_ChatElement1 = New VERAG_PROG_ALLGEMEIN.usrCntlMessenger_ChatElement()
Me.Panel3 = New System.Windows.Forms.Panel()
Me.btnTeilnehmer = New System.Windows.Forms.Button()
@@ -93,9 +92,9 @@ Partial Class frmMessenger
Me.btnSendAtt = New System.Windows.Forms.Button()
Me.btnSenden = New System.Windows.Forms.Button()
Me.rtbChatMessage = New System.Windows.Forms.RichTextBox()
Me.TimerNEW_MESSAGE = New System.Windows.Forms.Timer(Me.components)
Me.Timer_REFRESH = New System.Windows.Forms.Timer(Me.components)
Me.cntxt = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.TimerNEW_MESSAGE = New System.Windows.Forms.Timer()
Me.Timer_REFRESH = New System.Windows.Forms.Timer()
Me.cntxt = New System.Windows.Forms.ContextMenuStrip()
Me.ChatDeaktivierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.toolChatReminder = New System.Windows.Forms.ToolStripMenuItem()
Me.DataGridViewTextBoxColumn1 = New System.Windows.Forms.DataGridViewTextBoxColumn()

View File

@@ -423,6 +423,7 @@
<Compile Include="Classes\cMDMZinsberechnung.vb" />
<Compile Include="Classes\cKundenportal.vb" />
<Compile Include="Classes\cKundenSicherheiten.vb" />
<Compile Include="Classes\cSendungCustomsCases.vb" />
<Compile Include="frmTimasabfrage.Designer.vb">
<DependentUpon>frmTimasabfrage.vb</DependentUpon>
</Compile>