From eec4e8e3dd13598d2fb528fa59306786aa0ea50b Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Thu, 15 Oct 2026 21:31:09 +0200 Subject: [PATCH] Deserialize EXG --- .../DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb | 80 ++++++++++++++++--- DAKOSY_Worker/cImporter_DakosyToVERAG.vb | 6 ++ initATLASAufschubkonten/cWorker_AES_EXG.vb | 9 ++- 3 files changed, 84 insertions(+), 11 deletions(-) diff --git a/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb b/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb index 5e4d639..1420a48 100644 --- a/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb +++ b/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb @@ -1615,7 +1615,8 @@ Public Class cDakosyNCTSOut004 'Transaktion: XML.Transaktion = New VersandanmeldungNCTSDE_004.TransaktionNCTSTyp - XML.Transaktion.IOPartner = "UNAT" ' cDakosyFunftions.getIOPartner(cDY.ncts_firma, Art) 'If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "VERA", "VERG") + ' XML.Transaktion.IOPartner = "UNAT" ' cDakosyFunftions.getIOPartner(cDY.ncts_firma, Art) 'If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "VERA", "VERG") + XML.Transaktion.IOPartner = cDakosyFunftions.getIOPartner(cDY.ncts_firma, Art) 'If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "VERA", "VERG") XML.Transaktion.IODatumZeit = Now XML.Transaktion.IOReferenz = cDY.ncts_Trans_Referenz 'If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then XML.Transaktion.IODivision3 = cDakosyFunftions.getDivision(cDY.ncts_firma, Art) '"SUW" @@ -1886,22 +1887,26 @@ Public Class cDakosyNCTSOut004 End If + If XML.Transaktion.IOPartner = "UNAT" Then - 'Ansprechpartner Inhaber Versandverfahren (Inhaber selbst bleibt unverändert) - If XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure IsNot Nothing Then - Dim holder = XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure - - If holder.ContactPerson Is Nothing Then holder.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType - - holder.ContactPerson.Name = If(String.IsNullOrWhiteSpace(cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name), VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.Fullname, cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name) - holder.ContactPerson.PhoneNumber = If(String.IsNullOrWhiteSpace(cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_PhoneNumber), getTelefon(), cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_PhoneNumber) - holder.ContactPerson.EMailAddress = If(String.IsNullOrWhiteSpace(cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_EMailAddress), If(String.IsNullOrWhiteSpace(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email), getDefaultMail_FIRMA(), VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email), cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_EMailAddress) + 'Inhaber aus DAKOSY-Stammreferenz beibehalten, nur Kontakt ergänzen + If XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure Is Nothing Then + XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure = New VersandanmeldungNCTSDE_004.HolderOfTheTransitProcedureVAType End If + Dim holder = XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure + + If holder.ContactPerson Is Nothing Then holder.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType + + holder.ContactPerson.Name = If(String.IsNullOrWhiteSpace(cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name), VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.Fullname, cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name) + holder.ContactPerson.PhoneNumber = If(String.IsNullOrWhiteSpace(cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_PhoneNumber), getTelefon(), cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_PhoneNumber) + holder.ContactPerson.EMailAddress = If(String.IsNullOrWhiteSpace(cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_EMailAddress), If(String.IsNullOrWhiteSpace(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email), getDefaultMail_FIRMA(), VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_email), cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_EMailAddress) + End If + 'Vertreter Inhaber Versandverfahren If cDY.ncts_Representative_IdentificationNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Representative = New VersandanmeldungNCTSDE_004.RepresentativeVAType @@ -2974,6 +2979,37 @@ Public Class cDakosyNCTSOut004 Next End If + '======================================================================================================================== + 'Einheitliche Versender/Empfänger auf Kopfebene zusammenfassen + Dim transit = XML.EinzelVersandanmeldung.TransitOperation + + If transit.HouseConsignment IsNot Nothing AndAlso transit.HouseConsignment.Count > 0 Then + Dim houses = transit.HouseConsignment + + Dim firstConsignor = houses(0).Consignor + Dim firstConsignee = houses(0).Consignee + + Dim sameConsignor As Boolean = firstConsignor IsNot Nothing AndAlso houses.All(Function(h) SameNCTSParty(firstConsignor, h.Consignor)) + Dim sameConsignee As Boolean = firstConsignee IsNot Nothing AndAlso houses.All(Function(h) SameNCTSParty(firstConsignee, h.Consignee)) + + If sameConsignor Then + transit.Consignor = firstConsignor + For Each h In houses + h.Consignor = Nothing + Next + End If + + If sameConsignee Then + transit.Consignee = firstConsignee + For Each h In houses + h.Consignee = Nothing + Next + End If + End If + '======================================================================================================================== + + + Dim saveDir = StartupPath & "\Dakosy_SEND\" If Not System.IO.Directory.Exists(saveDir) Then System.IO.Directory.CreateDirectory(saveDir) @@ -2993,6 +3029,30 @@ Public Class cDakosyNCTSOut004 Return False End Function + Private Shared Function SameNCTSParty(a As VersandanmeldungNCTSDE_004.AddressVA1Type, b As VersandanmeldungNCTSDE_004.AddressVA1Type) As Boolean + If a Is Nothing OrElse b Is Nothing Then Return False + + Dim eoriA As String = If(a.IdentificationNumber, "").Trim().ToUpperInvariant() + Dim eoriB As String = If(b.IdentificationNumber, "").Trim().ToUpperInvariant() + + If eoriA <> "" AndAlso eoriB <> "" Then + Return eoriA = eoriB + End If + + 'Wenn nur eine EORI vorhanden ist, keine automatische Gleichsetzung + If eoriA <> eoriB Then Return False + + Dim norm As Func(Of String, String) = Function(s) String.Join(" ", If(s, "").Trim().ToUpperInvariant().Split(New Char() {" "c, ControlChars.Tab}, StringSplitOptions.RemoveEmptyEntries)) + + If norm(a.Name) = "" OrElse norm(b.Name) = "" Then Return False + + Return norm(a.Name) = norm(b.Name) AndAlso + norm(a.StreetAndNumber) = norm(b.StreetAndNumber) AndAlso + norm(a.Postcode) = norm(b.Postcode) AndAlso + norm(a.City) = norm(b.City) AndAlso + norm(a.Country) = norm(b.Country) + End Function + Private Shared Function getTelefon() As String Dim defaultDW = "200" Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA diff --git a/DAKOSY_Worker/cImporter_DakosyToVERAG.vb b/DAKOSY_Worker/cImporter_DakosyToVERAG.vb index 2503465..d6f6b0a 100644 --- a/DAKOSY_Worker/cImporter_DakosyToVERAG.vb +++ b/DAKOSY_Worker/cImporter_DakosyToVERAG.vb @@ -245,6 +245,12 @@ Public Class cImporter_DakosyToVERAG item.zaItem_PackageColli = (wp.ezaWP_PackstueckAnzahl) item.zaItem_PackageType = wp.ezaWP_PackstueckArt + Dim packageNumber As Integer + item.Packages.Add(New cVERAG_CustomsDeclarations_ItemPackage With { + .zaPkg_Type = item.zaItem_PackageType, + .zaPkg_Number = If(Integer.TryParse(item.zaItem_PackageColli, packageNumber), CType(packageNumber, Integer?), Nothing), + .zaPkg_Marks = item.zaItem_PackageMark + }) item.zaItem_GrossMass = ToNullableDecimal(wp.ezaWP_Rohmasse) item.zaItem_NetMass = ToNullableDecimal(wp.ezaWP_Eigenmasse) diff --git a/initATLASAufschubkonten/cWorker_AES_EXG.vb b/initATLASAufschubkonten/cWorker_AES_EXG.vb index 6d883c7..77d8b63 100644 --- a/initATLASAufschubkonten/cWorker_AES_EXG.vb +++ b/initATLASAufschubkonten/cWorker_AES_EXG.vb @@ -11,7 +11,14 @@ Public Class cWorker_AES_EXG Shared Function readEZA_DatenZumAusgang_DataEXITDE_005(FORM As frmDYNachrichtenVerarbeitung, d As String, saveVerwahrung As Boolean) As String Try - Dim VWI As DAKOSY_Worker.DataEXITDE.DatenZumAusgangXDTyp = DAKOSY_Worker.DataEXITDE.DatenZumAusgangXDTyp.LoadFromFile(d) + + Dim VWI As DAKOSY_Worker.DataEXITDE.DatenZumAusgangXDTyp + + Using fs As New System.IO.FileStream(d, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read) + VWI = DAKOSY_Worker.DataEXITDE.DatenZumAusgangXDTyp.Deserialize(fs) + End Using + + Dim MRN = "" Dim RegistriernummerATLAS = "" Dim ankungsdatum As Object = Nothing