diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj
index 9d1493d3..12f1da96 100644
--- a/SDL/SDL.vbproj
+++ b/SDL/SDL.vbproj
@@ -562,7 +562,6 @@
-
@@ -582,24 +581,12 @@
-
- frmVAT_ATEZ.vb
-
-
- Form
-
frmCreditSafeSearch.vb
Form
-
- usrcntlVAT_ATEZ.vb
-
-
- UserControl
-
usrcntlCreditsafe.vb
@@ -612,7 +599,6 @@
Component
-
frmSendEmail.vb
@@ -793,12 +779,6 @@
Form
-
- frmKundenLinkedGruppe.vb
-
-
- Form
-
frmKundenTOBBKdNr.vb
@@ -895,6 +875,10 @@
UserControl
+
+ frmDatumsabfrage.vb
+
+
frmMDMLieferantenrechnungen.vb
@@ -3270,15 +3254,9 @@
subRptVM.vb
-
- frmVAT_ATEZ.vb
-
frmCreditSafeSearch.vb
-
- usrcntlVAT_ATEZ.vb
-
usrcntlCreditsafe.vb
@@ -3373,9 +3351,6 @@
frmGoMautBoxen_Bestellung.vb
-
- frmKundenLinkedGruppe.vb
-
frmKundenTOBBKdNr.vb
@@ -3424,6 +3399,9 @@
usrCntlBesuchsberichte.vb
+
+ frmDatumsabfrage.vb
+
frmMDMLieferantenrechnungen.vb
@@ -5017,11 +4995,7 @@
Always
-
- Always
-
-
-
+
Always
diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/TELOTEC/cTelotecAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/TELOTEC/cTelotecAPI.vb
new file mode 100644
index 00000000..b79cb469
--- /dev/null
+++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/TELOTEC/cTelotecAPI.vb
@@ -0,0 +1,741 @@
+Imports System
+Imports System.Collections.Generic
+ Imports Chilkat
+Imports System.Web.Script.Serialization
+Imports System.IO
+Imports System.Text
+Public Class cTelotecAPI
+
+ Public API_KEY = "YlcbZryXuKPSzQTzkGIJK9UdScGuSnhBBji94Z7A8UMoWPR0qDvVOvmlWNuUCMrQ" 'VERAG
+ Public BASE_URL = "https://accscustomsapi.teloweb.at/accscustomsapi120"
+ Dim TELOTEC_JSON As String = "\\datenarchiv\Datenarchiv\TELOTEC\ECHTSYSTEM\Nachrichtendaten_Ablage_JSON" ' <-- Deinen Pfad hier setzen
+
+ Sub Main()
+ Console.WriteLine("ACCS Customs API Demo")
+ Dim taRequest As StoreTADeclarationsRequest = CreateSampleTARequest()
+ PostStoreTADeclarations(taRequest)
+ Dim messages As List(Of TAMessage) = GetTAMessages()
+ Console.WriteLine("Nachrichten: " & messages.Count)
+ End Sub
+
+ Function getAPIKEY(Firma) As String
+ Select Case Firma
+ Case "DURMAZ" : Return "Kh8FqcBXx26fK65f4KQMQ3ExW2QbkPEPZpT9ZWS3spn6YjpZERd3SmZAY7Vda2SG" ' Durmaz
+ Case "IMEX" : Return "A8V4zAhNHygwApz3b9UPR2dzzdHvsBTGkV4zm8KKewCh7VYbXeKkXmeRBJaFKGcc" 'IMEX
+ Case Else : Return "YlcbZryXuKPSzQTzkGIJK9UdScGuSnhBBji94Z7A8UMoWPR0qDvVOvmlWNuUCMrQ" 'VERAG / ATILLA
+ End Select
+ End Function
+
+
+ Function CreateSampleTARequest() As StoreTADeclarationsRequest
+ Dim decl As New TADeclaration() With {
+ .mandant_ID = "DemoMandant",
+ .interfaceReferenceId = "REF123",
+ .ifcCustomerId = "CUST001",
+ .anmeldedatum = DateTime.Now,
+ .lrn = "LRN001",
+ .totNet = 1000D,
+ .totNetSplit_IND = True,
+ .frankatur = "FOB",
+ .flugInfo = "LH123",
+ .fillPackList_IND = True,
+ .memo = "Test",
+ .erstellDatum = DateTime.Now,
+ .erstellPersonalID = "USER001",
+ .declarationType = "T1",
+ .additionalDeclarationType = "A",
+ .presentationOfTheGoodsDateAndTime = DateTime.Now.AddHours(1),
+ .security = 0,
+ .specificCircumstanceIndicator = "S1",
+ .containerIndicator = False,
+ .grossMass = 1500D,
+ .inlandModeOfTransport = 1,
+ .modeOfTransportAtTheBorder = 4,
+ .referenceNumberUCR = "UCR001",
+ .methodOfPayment = "CASH",
+ .customsOfficeOfDeparture = "AT000001",
+ .customsOfficeOfPresentation = "AT000002",
+ .customsOfficeOfDestinationDeclared = "DE000003"
+ }
+
+ Return New StoreTADeclarationsRequest With {
+ .allowExistingReferenceId = False,
+ .enableGrouping = False,
+ .declarations = New List(Of TADeclaration) From {decl}
+ }
+ End Function
+
+ Sub PostStoreTADeclarations(request As StoreTADeclarationsRequest)
+ Dim http As New Http()
+ http.SetRequestHeader("X-API-KEY", API_KEY)
+ http.Accept = "application/json"
+
+ Dim jsonObj As New JsonObject()
+ jsonObj.UpdateBool("allowExistingReferenceId", request.allowExistingReferenceId)
+ jsonObj.UpdateBool("enableGrouping", request.enableGrouping)
+
+ Dim declArray As JsonArray = jsonObj.AppendArray("declarations")
+
+ For Each decl In request.declarations
+ Dim serializer As New JavaScriptSerializer()
+ Dim jsonString As String = serializer.Serialize(decl)
+
+ Dim declJson As New JsonObject()
+ declJson.Load(jsonString)
+ declArray.AddObjectAt(-1)
+ declArray.ObjectAt(declArray.Size - 1).Load(declJson.Emit())
+ Next
+
+ Dim url As String = "https://accscustomsapi.teloweb.at/accscustomsapi120/api/Interface/StoreTADeclarations"
+ Dim resp As HttpResponse = http.PostJson3(url, "application/json", jsonObj)
+
+ If http.LastMethodSuccess = False Then
+ Console.WriteLine("❌ Fehler beim Senden: " & http.LastErrorText)
+ Exit Sub
+ End If
+
+ Console.WriteLine("✅ StoreTADeclarations Antwort: " & resp.BodyStr)
+ End Sub
+
+ Sub PostStoreEXDeclarations(request As StoreTADeclarationsRequest)
+ Dim http As New Http()
+ http.SetRequestHeader("X-API-KEY", API_KEY)
+ http.Accept = "application/json"
+
+ Dim jsonObj As New JsonObject()
+ jsonObj.UpdateBool("allowExistingReferenceId", request.allowExistingReferenceId)
+ jsonObj.UpdateBool("enableGrouping", request.enableGrouping)
+
+ Dim declArray As JsonArray = jsonObj.AppendArray("declarations")
+
+ For Each decl In request.declarations
+ Dim serializer As New JavaScriptSerializer()
+ Dim jsonString As String = serializer.Serialize(decl)
+
+ Dim declJson As New JsonObject()
+ declJson.Load(jsonString)
+ declArray.AddObjectAt(-1)
+ declArray.ObjectAt(declArray.Size - 1).Load(declJson.Emit())
+ Next
+
+ Dim url As String = "https://accscustomsapi.teloweb.at/accscustomsapi120/api/Interface/StoreEXDeclarations"
+ Dim resp As HttpResponse = http.PostJson3(url, "application/json", jsonObj)
+
+ If http.LastMethodSuccess = False Then
+ Console.WriteLine("❌ Fehler beim Senden: " & http.LastErrorText)
+ Exit Sub
+ End If
+
+ Console.WriteLine("✅ StoreEXDeclarations Antwort: " & resp.BodyStr)
+ End Sub
+
+ Function GetTAMessages() As List(Of TAMessage)
+ Dim messages As New List(Of TAMessage)()
+
+ Dim http As New Http()
+ http.SetRequestHeader("X-API-KEY", getAPIKEY("ATILLA"))
+ ' http.SetRequestHeader("X-API-KEY", http.AuthToken = getAPIKEY("ATILLA"))
+ http.Accept = "application/json"
+
+ Dim url As String = BASE_URL & "/api/Interface/GetTAMessages"
+ Dim resp As HttpResponse = http.QuickGetObj(url)
+
+ If http.LastMethodSuccess = False Then
+ Console.WriteLine("❌ HTTP-Anfrage fehlgeschlagen:")
+ Console.WriteLine(http.LastErrorText)
+ Return messages
+ End If
+
+ Console.WriteLine("📡 HTTP-Statuscode: " & resp.StatusCode)
+ If resp.StatusCode <> 200 Then
+ Console.WriteLine("❌ Fehler: Erwartet wurde Statuscode 200, erhalten: " & resp.StatusCode)
+ Console.WriteLine("Antworttext:")
+ Console.WriteLine(resp.BodyStr)
+ Return messages
+ End If
+
+ Dim json As New JsonObject()
+ Dim success As Boolean = json.Load(resp.BodyStr)
+
+ If Not success Then
+ Console.WriteLine("❌ Fehler beim Parsen der JSON-Antwort:")
+ Console.WriteLine(json.LastErrorText)
+ Return messages
+ End If
+
+ Dim msgArray As JsonArray = json.ArrayOf("messages")
+ If msgArray Is Nothing Then
+ Console.WriteLine("⚠️ 'messages' war null oder nicht vorhanden.")
+ Return messages
+ End If
+
+ Dim jsonText As String = resp.BodyStr
+ SaveJsonResponseToFile(jsonText, TELOTEC_JSON)
+
+
+ Dim serializer As New JavaScriptSerializer()
+ Console.WriteLine("✅ Empfangene Nachrichten: " & msgArray.Size)
+ For i As Integer = 0 To msgArray.Size - 1
+ Dim jmsg As Chilkat.JsonObject = msgArray.ObjectAt(i)
+ Dim msg As New TAMessage()
+ msg.mrn = jmsg.StringOf("mrn")
+ msg.lrn = jmsg.StringOf("lrn")
+ msg.externalReference = jmsg.StringOf("externalReference")
+ msg.msgType = jmsg.StringOf("msgType")
+
+ Dim contentObj As Chilkat.JsonObject = jmsg.ObjectOf("declarationContent")
+ If Not contentObj Is Nothing Then
+ Dim decl As New TADeclaration()
+
+ decl.mandant_ID = contentObj.StringOf("mandant_ID")
+ decl.interfaceReferenceId = contentObj.StringOf("interfaceReferenceId")
+ decl.ifcCustomerId = contentObj.StringOf("ifcCustomerId")
+ decl.dec2_ID = SafeParseInt(contentObj.StringOf("dec2_ID"))
+ decl.anmeldedatum = SafeParseDate(contentObj.StringOf("anmeldedatum"))
+ decl.lrn = contentObj.StringOf("lrn")
+ decl.mrn = contentObj.StringOf("mrn")
+ decl.totNet = SafeParseDecimal(contentObj.StringOf("totNet"))
+ decl.totNetSplit_IND = contentObj.BoolOf("totNetSplit_IND")
+ decl.frankatur = contentObj.StringOf("frankatur")
+ decl.flugInfo = contentObj.StringOf("flugInfo")
+ decl.fillPackList_IND = contentObj.BoolOf("fillPackList_IND")
+ decl.memo = contentObj.StringOf("memo")
+ decl.erstellDatum = SafeParseDate(contentObj.StringOf("erstellDatum"))
+ decl.erstellPersonalID = contentObj.StringOf("erstellPersonalID")
+ decl.declarationType = contentObj.StringOf("declarationType")
+ decl.additionalDeclarationType = contentObj.StringOf("additionalDeclarationType")
+ decl.tirCarnetNumber = contentObj.StringOf("tirCarnetNumber")
+ decl.presentationOfTheGoodsDateAndTime = SafeParseDate(contentObj.StringOf("presentationOfTheGoodsDateAndTime"))
+ decl.security = SafeParseInt(contentObj.StringOf("security"))
+ decl.reducedDatasetIndicator = contentObj.BoolOf("reducedDatasetIndicator")
+ decl.specificCircumstanceIndicator = contentObj.StringOf("specificCircumstanceIndicator")
+ decl.communicationLanguageAtDeparture = contentObj.StringOf("communicationLanguageAtDeparture")
+ decl.bindingItinerary = contentObj.BoolOf("bindingItinerary")
+ decl.limitDate = SafeParseDate(contentObj.StringOf("limitDate"))
+ decl.declarationAcceptanceDate = SafeParseDate(contentObj.StringOf("declarationAcceptanceDate"))
+ decl.releaseDate = SafeParseDate(contentObj.StringOf("releaseDate"))
+ decl.writeOffDate = SafeParseDate(contentObj.StringOf("writeOffDate"))
+ decl.countryOfDispatch = contentObj.StringOf("countryOfDispatch")
+ decl.countryOfDestination = contentObj.StringOf("countryOfDestination")
+ decl.containerIndicator = contentObj.BoolOf("containerIndicator")
+ decl.inlandModeOfTransport = SafeParseInt(contentObj.StringOf("inlandModeOfTransport"))
+ decl.modeOfTransportAtTheBorder = SafeParseInt(contentObj.StringOf("modeOfTransportAtTheBorder"))
+ decl.grossMass = SafeParseDecimal(contentObj.StringOf("grossMass"))
+ decl.methodOfPayment = contentObj.StringOf("methodOfPayment")
+ decl.referenceNumberUCR = contentObj.StringOf("referenceNumberUCR")
+ decl.locationOfGoods_CustomsOffice = contentObj.StringOf("locationOfGoods_CustomsOffice")
+ decl.locationOfGoods_PlaceOfGoods = contentObj.StringOf("locationOfGoods_PlaceOfGoods")
+ decl.placeOfLoading_UNLocode = contentObj.StringOf("placeOfLoading_UNLocode")
+ decl.placeOfLoading_Country = contentObj.StringOf("placeOfLoading_Country")
+ decl.placeOfLoading_Location = contentObj.StringOf("placeOfLoading_Location")
+ decl.placeOfUnloading_UNLocode = contentObj.StringOf("placeOfUnloading_UNLocode")
+ decl.placeOfUnloading_Country = contentObj.StringOf("placeOfUnloading_Country")
+ decl.placeOfUnloading_Location = contentObj.StringOf("placeOfUnloading_Location")
+ decl.customsOfficeOfDeparture = contentObj.StringOf("customsOfficeOfDeparture")
+ decl.customsOfficeOfDestinationDeclared = contentObj.StringOf("customsOfficeOfDestinationDeclared")
+ decl.customsOfficeOfPresentation = contentObj.StringOf("customsOfficeOfPresentation")
+ decl.controlResult_Date = SafeParseDate(contentObj.StringOf("controlResult_Date"))
+ decl.controlResult_ControlledBy = contentObj.StringOf("controlResult_ControlledBy")
+ decl.controlResult_Text = contentObj.StringOf("controlResult_Text")
+ decl.controlResult_Code = contentObj.StringOf("controlResult_Code")
+ decl.groupId = contentObj.StringOf("groupId")
+ decl.template_ID = SafeParseInt(contentObj.StringOf("template_ID"))
+
+ ' Parsen von komplexen Objekten
+ Dim arr1 = contentObj.ArrayOf("activeBorderTransportMeans")
+ If arr1 IsNot Nothing Then decl.activeBorderTransportMeans = ParseActiveBorderTransportMeans(arr1)
+
+ Dim c = contentObj.ObjectOf("carrier")
+ If c IsNot Nothing Then decl.carrier = ParseCarrier(c)
+
+ Dim arr2 = contentObj.ArrayOf("guarantee")
+ If arr2 IsNot Nothing Then decl.guarantee = ParseGuarantee(arr2)
+
+ msg.declarationContent = decl
+ Else
+ Console.WriteLine("⚠️ Keine declarationContent für Nachricht: " & msg.lrn)
+ End If
+
+ messages.Add(msg)
+ Next
+
+ Return messages
+ End Function
+
+
+
+
+ Public Sub SaveJsonResponseToFile(jsonText As String, ByVal TELOTEC_JSON As String)
+ Try
+ Dim yearDir As String = Path.Combine(TELOTEC_JSON, Date.Now.Year.ToString())
+ Dim dayDir As String = Path.Combine(yearDir, Date.Now.ToString("dd.MM.yyyy"))
+
+ Directory.CreateDirectory(dayDir)
+
+ Dim fileName As String = "GetTAMessages_" & Date.Now.ToString("HHmmss") & ".json"
+ Dim filePath As String = Path.Combine(dayDir, fileName)
+
+ File.WriteAllText(filePath, jsonText, Encoding.UTF8)
+ Console.WriteLine("📁 JSON gespeichert unter: " & filePath)
+ Catch ex As Exception
+ Console.WriteLine("❌ Fehler beim Speichern des JSON: " & ex.Message)
+ End Try
+ End Sub
+
+ Function SafeParseDate(value As String) As Date?
+ If String.IsNullOrWhiteSpace(value) Then
+ Return Nothing
+ End If
+ Return Date.Parse(value)
+ End Function
+
+ Function SafeParseDecimal(value As String) As Decimal
+ Dim result As Decimal
+ If Decimal.TryParse(value, result) Then
+ Return result
+ Else
+ Return 0D
+ End If
+ End Function
+
+ Function SafeParseInt(value As String) As Integer
+ Dim result As Integer
+ If Integer.TryParse(value, result) Then
+ Return result
+ Else
+ Return 0
+ End If
+ End Function
+
+
+ ' Parser für Liste: activeBorderTransportMeans
+ Function ParseActiveBorderTransportMeans(arr As JsonArray) As List(Of BorderTransportMeans)
+ Dim result As New List(Of BorderTransportMeans)()
+ For i As Integer = 0 To arr.Size - 1
+ Dim item As JsonObject = arr.ObjectAt(i)
+ Dim obj As New BorderTransportMeans()
+ obj.sequenceNumber = item.IntOf("sequenceNumber")
+ obj.customsOfficeAtBorderReferenceNumber = item.StringOf("customsOfficeAtBorderReferenceNumber")
+ obj.typeOfIdentification = item.IntOf("typeOfIdentification")
+ obj.identificationNumber = item.StringOf("identificationNumber")
+ obj.nationality = item.StringOf("nationality")
+ obj.conveyanceReferenceNumber = item.StringOf("conveyanceReferenceNumber")
+ result.Add(obj)
+ Next
+ Return result
+ End Function
+
+ ' Parser für carrier (PartyWithContact)
+ Function ParseCarrier(obj As JsonObject) As PartyWithContact
+ If obj Is Nothing Then Return Nothing
+ Dim party As New PartyWithContact()
+ party.identificationNumber = obj.StringOf("identificationNumber")
+ party.contactPersonName = obj.StringOf("contactPersonName")
+ party.phoneNumber = obj.StringOf("phoneNumber")
+ party.eMailAddress = obj.StringOf("eMailAddress")
+ party.customerAddressReference = obj.StringOf("customerAddressReference")
+ party.adressID = obj.IntOf("adressID")
+ Return party
+ End Function
+
+ ' Parser für guarantee
+ Function ParseGuarantee(arr As JsonArray) As List(Of Guarantee)
+ Dim list As New List(Of Guarantee)()
+ For i As Integer = 0 To arr.Size - 1
+ Dim obj As JsonObject = arr.ObjectAt(i)
+ Dim g As New Guarantee()
+ g.sequenceNumber = obj.IntOf("sequenceNumber")
+ g.guaranteeType = obj.StringOf("guaranteeType")
+ g.otherGuaranteeReference = obj.StringOf("otherGuaranteeReference")
+
+ Dim gRefArray As JsonArray = obj.ArrayOf("guaranteeReference")
+ If Not gRefArray Is Nothing Then
+ g.guaranteeReference = New List(Of GuaranteeReference)()
+ For j As Integer = 0 To gRefArray.Size - 1
+ Dim grefObj As JsonObject = gRefArray.ObjectAt(j)
+ Dim gr As New GuaranteeReference()
+ gr.sequenceNumber = grefObj.IntOf("sequenceNumber")
+ gr.grn = grefObj.StringOf("grn")
+ gr.accessCode = grefObj.StringOf("accessCode")
+ gr.amountToBeCovered = grefObj.StringOf("amountToBeCovered")
+ gr.currency = grefObj.StringOf("currency")
+ g.guaranteeReference.Add(gr)
+ Next
+ End If
+
+ list.Add(g)
+ Next
+ Return list
+ End Function
+
+
+
+ Public Class StoreTADeclarationsRequest
+ Public Property allowExistingReferenceId As Boolean
+ Public Property enableGrouping As Boolean
+ Public Property declarations As List(Of TADeclaration)
+ End Class
+
+
+ Public Class TADeclaration
+ Public Property mandant_ID As String
+ Public Property interfaceReferenceId As String
+ Public Property ifcCustomerId As String
+ Public Property dec2_ID As Integer
+ Public Property anmeldedatum As Date
+ Public Property lrn As String
+ Public Property mrn As String
+ Public Property totNet As Decimal
+ Public Property totNetSplit_IND As Boolean
+ Public Property frankatur As String
+ Public Property flugInfo As String
+ Public Property fillPackList_IND As Boolean
+ Public Property memo As String
+ Public Property erstellDatum As Date
+ Public Property erstellPersonalID As String
+ Public Property declarationType As String
+ Public Property additionalDeclarationType As String
+ Public Property tirCarnetNumber As String
+ Public Property presentationOfTheGoodsDateAndTime As Date
+ Public Property security As Integer
+ Public Property reducedDatasetIndicator As Boolean
+ Public Property specificCircumstanceIndicator As String
+ Public Property communicationLanguageAtDeparture As String
+ Public Property bindingItinerary As Boolean
+ Public Property limitDate As Date
+ Public Property declarationAcceptanceDate As Date
+ Public Property releaseDate As Date
+ Public Property writeOffDate As Date
+ Public Property countryOfDispatch As String
+ Public Property countryOfDestination As String
+ Public Property containerIndicator As Boolean
+ Public Property inlandModeOfTransport As Integer
+ Public Property modeOfTransportAtTheBorder As Integer
+ Public Property grossMass As Decimal
+ Public Property methodOfPayment As String
+ Public Property referenceNumberUCR As String
+ Public Property locationOfGoods_CustomsOffice As String
+ Public Property locationOfGoods_PlaceOfGoods As String
+ Public Property placeOfLoading_UNLocode As String
+ Public Property placeOfLoading_Country As String
+ Public Property placeOfLoading_Location As String
+ Public Property placeOfUnloading_UNLocode As String
+ Public Property placeOfUnloading_Country As String
+ Public Property placeOfUnloading_Location As String
+ Public Property customsOfficeOfDeparture As String
+ Public Property customsOfficeOfDestinationDeclared As String
+ Public Property customsOfficeOfPresentation As String
+ Public Property controlResult_Date As Date
+ Public Property controlResult_ControlledBy As String
+ Public Property controlResult_Text As String
+ Public Property controlResult_Code As String
+ Public Property groupId As String
+ Public Property template_ID As Integer
+
+ ' Nested/Complex Properties
+ Public Property activeBorderTransportMeans As List(Of BorderTransportMeans)
+ Public Property additionalInformation As List(Of AdditionalInformation)
+ Public Property additionalReference As List(Of AdditionalReference)
+ Public Property additionalSupplyChainActor As List(Of SupplyChainActor)
+ Public Property authorisation As List(Of Authorisation)
+ Public Property carrier As PartyWithContact
+ Public Property consignee As PartyWithAddress
+ Public Property consignor As PartyWithContact
+ Public Property countryOfRoutingOfConsignment As List(Of RoutingCountry)
+ Public Property customsOfficeOfExitForTransitDeclared As List(Of SimpleReference)
+ Public Property customsOfficeOfTransitDeclared As List(Of TransitOffice)
+ Public Property departureTransportMeans As List(Of DepartureTransportMeans)
+ Public Property guarantee As List(Of Guarantee)
+ Public Property guarantor As PartyWithAddress
+ Public Property holderOfTheTransitProcedure As PartyWithContact
+ Public Property houseConsignment As List(Of HouseConsignment)
+ Public Property previousDocument As List(Of PreviousDocument)
+ Public Property representative As PartyWithContact
+ Public Property supportingDocument As List(Of SupportingDocument)
+ Public Property transportDocument As List(Of TransportDocument)
+ Public Property transportEquipment As List(Of TransportEquipment)
+ End Class
+
+ Public Class BorderTransportMeans
+ Public Property sequenceNumber As Integer
+ Public Property customsOfficeAtBorderReferenceNumber As String
+ Public Property typeOfIdentification As Integer
+ Public Property identificationNumber As String
+ Public Property nationality As String
+ Public Property conveyanceReferenceNumber As String
+ End Class
+
+ Public Class AdditionalInformation
+ Public Property sequenceNumber As Integer
+ Public Property code As String
+ Public Property text As String
+ End Class
+
+ Public Class AdditionalReference
+ Public Property sequenceNumber As Integer
+ Public Property type As String
+ Public Property referenceNumber As String
+ End Class
+
+ Public Class SupplyChainActor
+ Public Property sequenceNumber As Integer
+ Public Property role As String
+ Public Property identificationNumber As String
+ Public Property customerAddressReference As String
+ Public Property adressID As Integer
+ End Class
+
+ Public Class Authorisation
+ Public Property sequenceNumber As Integer
+ Public Property type As String
+ Public Property referenceNumber As String
+ End Class
+
+ Public Class PartyWithContact
+ Public Property identificationNumber As String
+ Public Property contactPersonName As String
+ Public Property phoneNumber As String
+ Public Property eMailAddress As String
+ Public Property customerAddressReference As String
+ Public Property adressID As Integer
+ End Class
+
+ Public Class PartyWithAddress
+ Public Property identificationNumber As String
+ Public Property consigneeName As String
+ Public Property streetAndNumber As String
+ Public Property postcode As String
+ Public Property city As String
+ Public Property country As String
+ Public Property customerAddressReference As String
+ Public Property adressID As Integer
+ End Class
+
+ Public Class RoutingCountry
+ Public Property sequenceNumber As Integer
+ Public Property country As String
+ End Class
+
+ Public Class SimpleReference
+ Public Property sequenceNumber As Integer
+ Public Property referenceNumber As String
+ End Class
+
+ Public Class TransitOffice
+ Public Property sequenceNumber As Integer
+ Public Property referenceNumber As String
+ Public Property arrivalDateAndTimeEstimated As Date
+ End Class
+
+ Public Class DepartureTransportMeans
+ Public Property sequenceNumber As Integer
+ Public Property typeOfIdentification As Integer
+ Public Property identificationNumber As String
+ Public Property nationality As String
+ End Class
+
+ Public Class Guarantee
+ Public Property sequenceNumber As Integer
+ Public Property guaranteeType As String
+ Public Property otherGuaranteeReference As String
+ Public Property guaranteeReference As List(Of GuaranteeReference)
+ End Class
+
+ Public Class GuaranteeReference
+ Public Property sequenceNumber As Integer
+ Public Property grn As String
+ Public Property accessCode As String
+ Public Property amountToBeCovered As Decimal
+ Public Property currency As String
+ End Class
+
+ Public Class HouseConsignment
+ ' This would also need to include full nested structure like consignor, consignee, etc.
+ End Class
+
+ Public Class PreviousDocument
+ Public Property sequenceNumber As Integer
+ Public Property type As String
+ Public Property referenceNumber As String
+ Public Property complementOfInformation As String
+ End Class
+
+ Public Class SupportingDocument
+ Public Property sequenceNumber As Integer
+ Public Property type As String
+ Public Property referenceNumber As String
+ Public Property documentLineItemNumber As Integer
+ Public Property complementOfInformation As String
+ End Class
+
+ Public Class TransportDocument
+ Public Property sequenceNumber As Integer
+ Public Property type As String
+ Public Property referenceNumber As String
+ End Class
+
+ Public Class TransportEquipment
+ Public Property sequenceNumber As Integer
+ Public Property containerIdentificationNumber As String
+ Public Property numberOfSeals As Integer
+ Public Property goodsReference As List(Of GoodsReference)
+ Public Property seal As List(Of Seal)
+ End Class
+
+ Public Class GoodsReference
+ Public Property sequenceNumber As Integer
+ Public Property declarationGoodsItemNumber As Integer
+ End Class
+
+ Public Class Seal
+ Public Property sequenceNumber As Integer
+ Public Property identifier As String
+ End Class
+
+ Public Class TAMessage
+ Public Property mrn As String
+ Public Property lrn As String
+ Public Property externalReference As String
+ Public Property msgType As String
+ Public Property declarationContent As TADeclaration
+ End Class
+
+
+
+
+ 'Public Function ConvertTAMessageToTelotec(msg As TAMessage) As cTelotec_Anmeldung
+ ' Dim telotec As New cTelotec_Anmeldung()
+
+ ' With msg
+ ' If .declarationContent IsNot Nothing Then
+ ' Dim decl = .declarationContent
+
+ ' telotec.telanm_ART = "TA"
+ ' telotec.telanm_BezugsNr = .lrn
+ ' telotec.telanm_CRN = .mrn
+ ' telotec.MsgType = .msgType
+ ' telotec.Refs_LRN = .lrn
+ ' telotec.Refs_CRN = .mrn
+
+ ' telotec.Mandant_ID = decl.mandant_ID
+ ' telotec.Referenz_ID = decl.interfaceReferenceId
+ ' telotec.dec_CreatePersonalID = decl.erstellPersonalID
+ ' telotec.dec_CreateDate = decl.erstellDatum
+ ' telotec.dec_Template_ID = decl.template_ID
+ ' telotec.dec_TotNet = decl.totNet
+ ' telotec.dec_TotNetSplit_IND = decl.totNetSplit_IND
+ ' telotec.dec_FillPackList_IND = decl.fillPackList_IND
+ ' telotec.dec_Memo = decl.memo
+
+ ' telotec.Hea_DecTy = decl.declarationType
+ ' telotec.Hea_Simp = decl.reducedDatasetIndicator
+ ' telotec.Hea_DecDT = decl.declarationAcceptanceDate
+ ' telotec.Hea_WoffD = decl.writeOffDate
+ ' telotec.Hea_AccDT = decl.declarationAcceptanceDate
+ ' telotec.Hea_ProArrDT = decl.presentationOfTheGoodsDateAndTime
+ ' telotec.Hea_PlaDepDT = decl.presentationOfTheGoodsDateAndTime
+ ' telotec.Hea_TotGross = decl.grossMass
+ ' telotec.Hea_PayMet = decl.methodOfPayment
+ ' telotec.Hea_SecInd = decl.security
+ ' telotec.Hea_DestLNG = decl.countryOfDestination
+ ' telotec.Hea_DepLNG = decl.countryOfDispatch
+ ' telotec.Transp_InMo = decl.inlandModeOfTransport
+ ' telotec.Transp_BordMo = decl.modeOfTransportAtTheBorder
+ ' telotec.Transp_ContInd = decl.containerIndicator
+ ' telotec.Transp_DepIdnt = SafeFirst(decl.departureTransportMeans, Function(dt) dt.identificationNumber)
+ ' telotec.Transp_DepNat = SafeFirst(decl.departureTransportMeans, Function(dt) dt.nationality)
+
+ ' ' Consignor/Consignee
+ ' telotec.ConorTra_Na = SafeGetName(decl.consignor)
+ ' telotec.ConorTra_Strt = decl.consignor?.streetAndNumber
+ ' telotec.ConorTra_Pst = decl.consignor?.postcode
+ ' telotec.ConorTra_Cty = decl.consignor?.city
+ ' telotec.ConorTra_Ctry = decl.consignor?.country
+ ' telotec.ConorTra_TIN = decl.consignor?.identificationNumber
+
+ ' telotec.ConeeTra_Na = SafeGetName(decl.consignee)
+ ' telotec.ConeeTra_Strt = decl.consignee?.streetAndNumber
+ ' telotec.ConeeTra_Pst = decl.consignee?.postcode
+ ' telotec.ConeeTra_Cty = decl.consignee?.city
+ ' telotec.ConeeTra_Ctry = decl.consignee?.country
+ ' telotec.ConeeTra_TIN = decl.consignee?.identificationNumber
+
+ ' telotec.Represent_Na = decl.representative?.contactPersonName
+ ' telotec.Represent_RIN = decl.representative?.identificationNumber
+
+ ' telotec.Locs_Disp = decl.countryOfDispatch
+ ' telotec.Locs_Dest = decl.countryOfDestination
+ ' telotec.Locs_GdsLoc = decl.locationOfGoods_PlaceOfGoods
+ ' telotec.Locs_GdsLocCd = decl.locationOfGoods_CustomsOffice
+
+ ' ' HouseConsignments inkl. ConsignmentItems und Packaging
+ ' If decl.houseConsignment IsNot Nothing Then
+ ' telotec.HouseConsignments = New List(Of cTelotec_HouseConsignment)()
+ ' For Each hc In decl.houseConsignment
+ ' Dim newHc As New cTelotec_HouseConsignment()
+ ' newHc.CountryOfDispatch = hc.countryOfDispatch
+ ' newHc.CountryOfDestination = hc.countryOfDestination
+ ' newHc.GrossMass = hc.grossMass
+ ' newHc.ReferenceNumberUCR = hc.referenceNumberUCR
+ ' newHc.MethodOfPayment = hc.methodOfPayment
+
+ ' If hc.consignmentItem IsNot Nothing Then
+ ' newHc.ConsignmentItems = New List(Of cTelotec_ConsignmentItem)()
+ ' For Each item In hc.consignmentItem
+ ' Dim newItem As New cTelotec_ConsignmentItem()
+ ' newItem.GoodsItemNumber = item.goodsItemNumber
+ ' newItem.DeclarationGoodsItemNumber = item.declarationGoodsItemNumber
+ ' newItem.DeclarationType = item.declarationType
+ ' newItem.CountryOfDispatch = item.countryOfDispatch
+ ' newItem.CountryOfDestination = item.countryOfDestination
+ ' newItem.DescriptionOfGoods = item.descriptionOfGoods
+ ' newItem.GrossMass = item.grossMass
+ ' newItem.NetMass = item.netMass
+ ' newItem.MethodOfPayment = item.methodOfPayment
+ ' newItem.ReferenceNumberUCR = item.referenceNumberUCR
+
+ ' If item.packaging IsNot Nothing Then
+ ' newItem.Packaging = New List(Of cTelotec_Packaging)()
+ ' For Each pack In item.packaging
+ ' Dim newPack As New cTelotec_Packaging()
+ ' newPack.TypeOfPackages = pack.typeOfPackages
+ ' newPack.NumberOfPackages = pack.numberOfPackages
+ ' newPack.ShippingMarks = pack.shippingMarks
+ ' newItem.Packaging.Add(newPack)
+ ' Next
+ ' End If
+
+ ' newHc.ConsignmentItems.Add(newItem)
+ ' Next
+ ' End If
+
+ ' telotec.HouseConsignments.Add(newHc)
+ ' Next
+ ' End If
+ ' End If
+ ' End With
+
+ ' telotec.telanm_LetzteBearbeitung = Now
+ ' telotec.telanm_Erstellung = Now
+ ' telotec.telanm_Erstellung_SB = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
+ ' telotec.telanm_LetzteBearbeitung_SB = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
+ ' telotec.ComIndicator = True
+ ' telotec.initData()
+
+ ' Return telotec
+ 'End Function
+
+ 'Private Function SafeFirst(Of T, R)(list As List(Of T), selector As Func(Of T, R)) As R
+ ' If list Is Nothing OrElse list.Count = 0 Then Return Nothing
+ ' Return selector(list(0))
+ 'End Function
+
+ 'Private Function SafeGetName(party As Object) As String
+ ' If party Is Nothing Then Return Nothing
+ ' Return If(party?.consignorName, party?.consigneeName, "")
+ 'End Function
+
+
+End Class
+
+
diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
index 935ecac6..2df980cc 100644
--- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
+++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
@@ -150,6 +150,7 @@
+
@@ -371,6 +372,7 @@
+