Deserialize EXG

This commit is contained in:
2026-10-15 21:31:09 +02:00
parent 718134608e
commit eec4e8e3dd
3 changed files with 84 additions and 11 deletions

View File

@@ -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

View File

@@ -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)