diff --git a/DAKOSY_Worker/DAKOSY/ATLAS/EXG/cDakosyEXG.vb b/DAKOSY_Worker/DAKOSY/ATLAS/EXG/cDakosyEXG.vb
index 87e0ee5..3a37592 100644
--- a/DAKOSY_Worker/DAKOSY/ATLAS/EXG/cDakosyEXG.vb
+++ b/DAKOSY_Worker/DAKOSY/ATLAS/EXG/cDakosyEXG.vb
@@ -858,7 +858,10 @@ Public Class cDakosyEXG
'dy_Status = status
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
- Return SQL.doSQLVarList(" UPDATE [tblDakosy_EXG] SET [exg_AutoFill_DyId]=@dyId WHERE exg_Id=@exg_Id ", "FMZOLL", , list)
+ Return SQL.doSQLVarList("UPDATE tblDakosy_EXG SET exg_AutoFill_DyId=@dyId,
+ exg_AutoFill_DyId_Complete=0
+ WHERE exg_Id=@exg_Id",
+ "FMZOLL", , list)
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
@@ -886,23 +889,27 @@ Public Class cDakosyEXG
End Function
Shared Function isFillNCTS_ID_ALLCompleted(dyId As Integer) As Boolean
- If dyId > 0 Then
- Try
- Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
+ If dyId <= 0 Then Return False
- Dim cnt = SQL.getValueTxtBySql(" SELECT COUNT(*) FROM [tblDakosy_EXG] where [exg_AutoFill_DyId] ='" & dyId & "' and exg_AutoFill_DyId=1 AND [exg_AutoFill_DyId_Complete]=0 ", "FMZOLL", ,, -1)
+ Try
+ Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
+ Dim sqlText = "SELECT
+ COUNT(*) AS Gesamt,
+ SUM(CASE
+ WHEN ISNULL(exg_AutoFill_DyId_Complete, 0) = 0
+ THEN 1 ELSE 0
+ END) AS Offen
+ FROM tblDakosy_EXG
+ WHERE exg_AutoFill_DyId= " & dyId & ""
- If cnt = 0 Then
- Return True
- End If
- Catch ex As Exception
- VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
- End Try
- End If
- Return False
+ Dim cnt = SQL.getValueTxtBySql(sqlText, "FMZOLL", ,, -1)
+ Return Convert.ToInt32(cnt) = 0
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ Return False
+ End Try
End Function
-
'Public Function LOADByBezugsNr(exg_ObjectName As String, loadALL As Boolean) As Boolean
' Try
' LOADByBezugsNr = False
@@ -945,7 +952,7 @@ Public Class cDakosyEXG
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
' Using cmd As New SqlCommand("SELECT TOP 1 * FROM (SELECT * FROM tblDakosy_EXGOut WHERE exg_ObjectName LIKE @bezugsNr " & If(checkValidStatus, " AND exg_status BETWEEN 40 and 90 ", "") & " ) AS T order by exg_status desc, (SELECT top 1 dySt_ts FROM [tblDakosy_Statusmeldungen] WHERE exg_dyaAnmID=exg_dyaAnmID order by dySt_ts desc) desc,exg_LetzteBearbeitung desc ", conn)
'Using cmd As New SqlCommand("SELECT TOP 1 * FROM tblDakosy_EXGOut WHERE exg_ObjectName LIKE @bezugsNr " & If(checkValidStatus, " AND exg_status BETWEEN 40 and 90 ", "") & " order by exg_status desc, (SELECT top 1 dySt_ts FROM [tblDakosy_Statusmeldungen] WHERE exg_dyaAnmID=exg_dyaAnmID order by dySt_ts desc) desc,exg_LetzteBearbeitung desc ", conn)
- Using cmd As New SqlCommand("SELECT TOP 1 * FROM tblDakosy_EXG WHERE exg_ObjectName LIKE @bezugsNr order by exg_LetzteBearbeitung desc", conn)
+ Using cmd As New SqlCommand("SELECT TOP 1 * FROM tblDakosy_EXG WHERE exg_ObjectName = @bezugsNr ORDER BY exg_LetzteBearbeitung DESC", conn)
'MsgBox("SELECT TOP 1 * FROM tblDakosy_EXGOut WHERE exg_ObjectName LIKE " & bezugsNr & " " & If(checkValidStatus, " AND exg_status BETWEEN 40 and 90 ", "") & " order by exg_status desc, (SELECT top 1 dySt_ts FROM [tblDakosy_Statusmeldungen] inner join tblDakosy_Zollanmeldungen on dy_id = dySt_dyId WHERE exg_dyaAnmID=dy_id order by dySt_ts desc) desc,exg_LetzteBearbeitung desc ")
cmd.Parameters.AddWithValue("@bezugsNr", bezugsNr)
Dim dr = cmd.ExecuteReader()
diff --git a/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb b/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb
index 234efcb..5e4d639 100644
--- a/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb
+++ b/DAKOSY_Worker/DAKOSY/ATLAS/NCTS/cDakosyNCTSOut004.vb
@@ -1603,10 +1603,11 @@ Public Class cDakosyNCTSOut004
End Function
-
Shared Function generateVersandanmeldungNCTSDE_004(cDY As cDakosyNCTSOut004, ByRef saveFile As String, DY_ACTION As String, StartupPath As String, Art As String, Optional DY_Mitarbeiter As String = "") As Boolean
Try
+ '5601/26019055_EXG223
+
Dim Interface_VERSION = "004"
Dim ObjectAktion = DY_ACTION
@@ -1614,17 +1615,17 @@ Public Class cDakosyNCTSOut004
'Transaktion:
XML.Transaktion = New VersandanmeldungNCTSDE_004.TransaktionNCTSTyp
- XML.Transaktion.IOPartner = 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.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"
+ 'If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then XML.Transaktion.IODivision3 = cDakosyFunftions.getDivision(cDY.ncts_firma, Art) '"SUW"
XML.Transaktion.Version = Interface_VERSION
' XML.Transaktion.IODivision3 = "DUR"
XML.EinzelVersandanmeldung = New VersandanmeldungNCTSDE_004.EinzelVersandanmeldungTyp
'ObjektIdentifizierung:
- XML.EinzelVersandanmeldung.ObjektIdentifizierung.NameAbsendendesSystem = "VERAG_ZOLL"
XML.EinzelVersandanmeldung.ObjektIdentifizierung = New VersandanmeldungNCTSDE_004.ObjektIdentifizierungVATyp
+ XML.EinzelVersandanmeldung.ObjektIdentifizierung.NameAbsendendesSystem = "AVISO"
XML.EinzelVersandanmeldung.ObjektIdentifizierung.ObjektName = cDY.ncts_ObjectName
If cDY.ncts_ObjectAlias IsNot Nothing Then XML.EinzelVersandanmeldung.ObjektIdentifizierung.ObjektAliasname = cDY.ncts_ObjectAlias
@@ -1640,8 +1641,6 @@ Public Class cDakosyNCTSOut004
'TransitOperation:
XML.EinzelVersandanmeldung.TransitOperation = New VersandanmeldungNCTSDE_004.TransitOperationType
- If cDY.ncts_CountryOfDispatch IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.CountryOfDispatch = cDY.ncts_CountryOfDispatch
- If cDY.ncts_CountryOfDestination IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.CountryOfDestination = cDY.ncts_CountryOfDestination
If cDY.ncts_TIRCarnetNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.TIRCarnetNumber = cDY.ncts_TIRCarnetNumber
If cDY.ncts_ReductedDatasetIndicator IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.ReducedDatasetIndicator = CInt(Int(cDY.ncts_ReductedDatasetIndicator))
@@ -1670,11 +1669,46 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_CustomsOfficeOfExitForTransitDeclared IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.CustomsOfficeOfExitForTransitDeclared = cDY.ncts_CustomsOfficeOfExitForTransitDeclared
If cDY.ncts_LimitDate IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.LimitDate = cDY.ncts_LimitDate
If cDY.ncts_TransitDeclarationType IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.TransitDeclarationType = cDY.ncts_TransitDeclarationType
- If cDY.ncts_Declarationtype IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.DeclarationType = cDY.ncts_Declarationtype
If cDY.ncts_GrossMass IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.GrossMass = cDY.ncts_GrossMass
If cDY.ncts_BindingItinerary IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.BindingItinerary = cDY.ncts_BindingItinerary
+ ' If cDY.ncts_Declarationtype IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.DeclarationType = cDY.ncts_Declarationtype
+ Dim declType As String = ""
+ Dim hasItemTypes As Boolean = False
+ Dim hasMissingTypes As Boolean = False
+
+ If cDY.ncts_HOUSE_CONSIGNMENT IsNot Nothing Then
+ declType = GetDeclarationType(cDY.ncts_HOUSE_CONSIGNMENT)
+
+ For Each hc In cDY.ncts_HOUSE_CONSIGNMENT
+ For Each item In hc.nctsWP_CONSIGNMENT_ITEM
+ If String.IsNullOrWhiteSpace(Convert.ToString(item.nctsHCCI_DeclarationType)) Then
+ hasMissingTypes = True
+ Else
+ hasItemTypes = True
+ End If
+ Next
+ Next
+ End If
+
+ If hasItemTypes AndAlso hasMissingTypes Then
+ Throw New Exception("NCTS: Positions-Verfahrensarten sind nur teilweise befüllt.")
+ End If
+
+ If declType = "" Then
+ If hasItemTypes Then
+ declType = "T-"
+ Else
+ declType = Convert.ToString(cDY.ncts_Declarationtype).Trim()
+ End If
+ End If
+
+ If Not String.IsNullOrWhiteSpace(declType) Then
+ XML.EinzelVersandanmeldung.TransitOperation.DeclarationType = declType
+ End If
+
+
'TRANSPORTEQUIPMENT:
If cDY.ncts_TRANSPORTEQUIPMENT.Count > 0 Then
@@ -1809,7 +1843,7 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_Consignor_Country IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignor.Country = cDY.ncts_Consignor_Country
If cDY.ncts_Consignor_ContactPerson_Name IsNot Nothing Then
XML.EinzelVersandanmeldung.TransitOperation.Consignor.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
- If cDY.ncts_Consignor_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignor.ContactPerson.Name = cDY.ncts_LocationOfGoods_ContactPerson_Name
+ If cDY.ncts_Consignor_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignor.ContactPerson.Name = cDY.ncts_Consignor_ContactPerson_Name
If cDY.ncts_Consignor_ContactPerson_PhoneNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignor.ContactPerson.PhoneNumber = cDY.ncts_Consignor_ContactPerson_PhoneNumber
If cDY.ncts_Consignor_ContactPerson_EMailAddress IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignor.ContactPerson.EMailAddress = cDY.ncts_Consignor_ContactPerson_EMailAddress
End If
@@ -1827,7 +1861,7 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_Consignee_Country IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignee.Country = cDY.ncts_Consignee_Country
If cDY.ncts_Consignee_ContactPerson_Name IsNot Nothing Then
XML.EinzelVersandanmeldung.TransitOperation.Consignee.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
- If cDY.ncts_Consignee_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignee.ContactPerson.Name = cDY.ncts_LocationOfGoods_ContactPerson_Name
+ If cDY.ncts_Consignee_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignee.ContactPerson.Name = cDY.ncts_Consignee_ContactPerson_Name
If cDY.ncts_Consignee_ContactPerson_PhoneNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignee.ContactPerson.PhoneNumber = cDY.ncts_Consignee_ContactPerson_PhoneNumber
If cDY.ncts_Consignee_ContactPerson_EMailAddress IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Consignee.ContactPerson.EMailAddress = cDY.ncts_Consignee_ContactPerson_EMailAddress
End If
@@ -1845,13 +1879,28 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_HolderOfTheTransitProcedure_TIRHolderIdentificationNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure.TIRHolderIdentificationNumber = cDY.ncts_HolderOfTheTransitProcedure_TIRHolderIdentificationNumber
If cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name IsNot Nothing Then
XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
- If cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure.ContactPerson.Name = cDY.ncts_LocationOfGoods_ContactPerson_Name
+ If cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure.ContactPerson.Name = cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_Name
If cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_PhoneNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure.ContactPerson.PhoneNumber = cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_PhoneNumber
If cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_EMailAddress IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.HolderOfTheTransitProcedure.ContactPerson.EMailAddress = cDY.ncts_HolderOfTheTransitProcedure_ContactPerson_EMailAddress
End If
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)
+ End If
+
+ End If
+
'Vertreter Inhaber Versandverfahren
If cDY.ncts_Representative_IdentificationNumber IsNot Nothing Then
@@ -1859,7 +1908,7 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_Representative_IdentificationNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Representative.IdentificationNumber = cDY.ncts_Representative_IdentificationNumber
If cDY.ncts_Representative_ContactPerson_Name IsNot Nothing Then
XML.EinzelVersandanmeldung.TransitOperation.Representative.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
- If cDY.ncts_Representative_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Representative.ContactPerson.Name = cDY.ncts_LocationOfGoods_ContactPerson_Name
+ If cDY.ncts_Representative_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Representative.ContactPerson.Name = cDY.ncts_Representative_ContactPerson_Name
If cDY.ncts_Representative_ContactPerson_PhoneNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Representative.ContactPerson.PhoneNumber = cDY.ncts_Representative_ContactPerson_PhoneNumber
If cDY.ncts_Representative_ContactPerson_EMailAddress IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Representative.ContactPerson.EMailAddress = cDY.ncts_Representative_ContactPerson_EMailAddress
End If
@@ -1873,7 +1922,7 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_Carrier_IdentificationNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Carrier.IdentificationNumber = cDY.ncts_Carrier_IdentificationNumber
If cDY.ncts_Carrier_ContactPerson_Name IsNot Nothing Then
XML.EinzelVersandanmeldung.TransitOperation.Carrier.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
- If cDY.ncts_Carrier_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Carrier.ContactPerson.Name = cDY.ncts_LocationOfGoods_ContactPerson_Name
+ If cDY.ncts_Carrier_ContactPerson_Name IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Carrier.ContactPerson.Name = cDY.ncts_Carrier_ContactPerson_Name
If cDY.ncts_Carrier_ContactPerson_PhoneNumber IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Carrier.ContactPerson.PhoneNumber = cDY.ncts_Carrier_ContactPerson_PhoneNumber
If cDY.ncts_Carrier_ContactPerson_EMailAddress IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.Carrier.ContactPerson.EMailAddress = cDY.ncts_Carrier_ContactPerson_EMailAddress
End If
@@ -1882,10 +1931,10 @@ Public Class cDakosyNCTSOut004
'Zus.Lieferkettenbeteiligter 1
- If cDY.ncts_AdditionalSupplyChainActor_2_IdentificationNumber IsNot Nothing Then
+ If cDY.ncts_AdditionalSupplyChainActor_1_IdentificationNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.AdditionalSupplyChainActorVAType
- If cDY.ncts_AdditionalSupplyChainActor_2_IdentificationNumber IsNot Nothing Then TM.IdentificationNumber = cDY.ncts_AdditionalSupplyChainActor_2_IdentificationNumber
- If cDY.ncts_AdditionalSupplyChainActor_2_Role IsNot Nothing Then TM.Role = cDY.ncts_AdditionalSupplyChainActor_2_Role
+ If cDY.ncts_AdditionalSupplyChainActor_1_IdentificationNumber IsNot Nothing Then TM.IdentificationNumber = cDY.ncts_AdditionalSupplyChainActor_1_IdentificationNumber
+ If cDY.ncts_AdditionalSupplyChainActor_1_Role IsNot Nothing Then TM.Role = cDY.ncts_AdditionalSupplyChainActor_1_Role
XML.EinzelVersandanmeldung.TransitOperation.AdditionalSupplyChainActor.Add(TM)
End If
'Zus.Lieferkettenbeteiligter 2
@@ -1896,10 +1945,10 @@ Public Class cDakosyNCTSOut004
XML.EinzelVersandanmeldung.TransitOperation.AdditionalSupplyChainActor.Add(TM)
End If
'Zus.Lieferkettenbeteiligter 3
- If cDY.ncts_AdditionalSupplyChainActor_2_IdentificationNumber IsNot Nothing Then
+ If cDY.ncts_AdditionalSupplyChainActor_3_IdentificationNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.AdditionalSupplyChainActorVAType
- If cDY.ncts_AdditionalSupplyChainActor_2_IdentificationNumber IsNot Nothing Then TM.IdentificationNumber = cDY.ncts_AdditionalSupplyChainActor_2_IdentificationNumber
- If cDY.ncts_AdditionalSupplyChainActor_2_Role IsNot Nothing Then TM.Role = cDY.ncts_AdditionalSupplyChainActor_2_Role
+ If cDY.ncts_AdditionalSupplyChainActor_3_IdentificationNumber IsNot Nothing Then TM.IdentificationNumber = cDY.ncts_AdditionalSupplyChainActor_3_IdentificationNumber
+ If cDY.ncts_AdditionalSupplyChainActor_3_Role IsNot Nothing Then TM.Role = cDY.ncts_AdditionalSupplyChainActor_3_Role
XML.EinzelVersandanmeldung.TransitOperation.AdditionalSupplyChainActor.Add(TM)
End If
@@ -1914,7 +1963,9 @@ Public Class cDakosyNCTSOut004
If cDY.ncts_PlaceOfLoading_Country IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.PlaceOfLoading.Country = cDY.ncts_PlaceOfLoading_Country
If cDY.ncts_PlaceOfUnLoading_Location IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.PlaceOfUnloading.Location = cDY.ncts_PlaceOfUnLoading_Location
If cDY.ncts_PlaceOfUnLoading_Country IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.PlaceOfUnloading.Country = cDY.ncts_PlaceOfUnLoading_Country
- If cDY.ncts_ObjectName IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.ReferenceNumberUCR = cDY.ncts_ObjectName
+ If String.IsNullOrWhiteSpace(cDY.ncts_ReferenceNumberUCR) AndAlso Not String.IsNullOrWhiteSpace(cDY.ncts_ObjectName) Then
+ XML.EinzelVersandanmeldung.TransitOperation.ReferenceNumberUCR = cDY.ncts_ObjectName
+ End If
If cDY.ncts_TransportCharges IsNot Nothing Then XML.EinzelVersandanmeldung.TransitOperation.TransportCharges = cDY.ncts_TransportCharges
@@ -2275,9 +2326,36 @@ Public Class cDakosyNCTSOut004
-
-
-
+ 'Länder je Position ermitteln, mit Fallback auf HC und Kopf
+ Dim allDispatch As New List(Of String)
+ Dim allDestination As New List(Of String)
+ If cDY.ncts_HOUSE_CONSIGNMENT IsNot Nothing Then
+ For Each p In cDY.ncts_HOUSE_CONSIGNMENT
+ If p.nctsWP_CONSIGNMENT_ITEM IsNot Nothing AndAlso p.nctsWP_CONSIGNMENT_ITEM.Count > 0 Then
+ For Each pp In p.nctsWP_CONSIGNMENT_ITEM
+ Dim d As String = Convert.ToString(pp.nctsHCCI_CountryOfDispatch).Trim().ToUpperInvariant()
+ Dim z As String = Convert.ToString(pp.nctsHCCI_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ allDispatch.Add(d)
+ allDestination.Add(z)
+ Next
+ Else
+ Dim d As String = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ Dim z As String = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ allDispatch.Add(d)
+ allDestination.Add(z)
+ End If
+ Next
+ End If
+ Dim sameDispatchCountry As Boolean = allDispatch.Count > 0 AndAlso allDispatch.All(Function(x) x <> "" AndAlso x = allDispatch(0))
+ Dim sameDestinationCountry As Boolean = allDestination.Count > 0 AndAlso allDestination.All(Function(x) x <> "" AndAlso x = allDestination(0))
+ If sameDispatchCountry Then XML.EinzelVersandanmeldung.TransitOperation.CountryOfDispatch = allDispatch(0)
+ If sameDestinationCountry Then XML.EinzelVersandanmeldung.TransitOperation.CountryOfDestination = allDestination(0)
'Warenposition:
@@ -2288,11 +2366,140 @@ Public Class cDakosyNCTSOut004
For Each p In cDY.ncts_HOUSE_CONSIGNMENT
Dim HC = New VersandanmeldungNCTSDE_004.HouseConsignmentVAType
- If p.nctsHC_CountryOfDispatch IsNot Nothing Then HC.CountryOfDispatch = p.nctsHC_CountryOfDispatch
- If p.nctsHC_CountryOfDestination IsNot Nothing Then HC.CountryOfDestination = p.nctsHC_CountryOfDestination
+ 'HC-Länder nur, wenn nicht bereits am Kopf und innerhalb der HC einheitlich
+ Dim hcDispatch As New List(Of String)
+ Dim hcDestination As New List(Of String)
+ If p.nctsWP_CONSIGNMENT_ITEM IsNot Nothing Then
+ For Each pp In p.nctsWP_CONSIGNMENT_ITEM
+ Dim d As String = Convert.ToString(pp.nctsHCCI_CountryOfDispatch).Trim().ToUpperInvariant()
+ Dim z As String = Convert.ToString(pp.nctsHCCI_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ hcDispatch.Add(d)
+ hcDestination.Add(z)
+ Next
+ End If
+ If hcDispatch.Count = 0 Then
+ Dim d As String = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ Dim z As String = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ hcDispatch.Add(d)
+ hcDestination.Add(z)
+ End If
+ Dim sameHCDispatch As Boolean = hcDispatch.All(Function(x) x <> "" AndAlso x = hcDispatch(0))
+ Dim sameHCDestination As Boolean = hcDestination.All(Function(x) x <> "" AndAlso x = hcDestination(0))
+ If Not sameDispatchCountry AndAlso sameHCDispatch Then HC.CountryOfDispatch = hcDispatch(0)
+ If Not sameDestinationCountry AndAlso sameHCDestination Then HC.CountryOfDestination = hcDestination(0)
+
+ If p.nctsHC_HouseConsignMentReference IsNot Nothing Then HC.HouseConsignmentReference = p.nctsHC_HouseConsignMentReference
+
+ If p.nctsHC_GrossMass IsNot Nothing Then HC.GrossMass = p.nctsHC_GrossMass
+ If p.nctsHC_ReferenceNumberUCR IsNot Nothing Then HC.ReferenceNumberUCR = p.nctsHC_ReferenceNumberUCR
+ If Not String.IsNullOrWhiteSpace(p.nctsHC_Consignor_IdentificationNumber) OrElse Not String.IsNullOrWhiteSpace(p.nctsHC_Consignor_Name) Then
+ HC.Consignor = New VersandanmeldungNCTSDE_004.AddressVA1Type
+ If Not String.IsNullOrWhiteSpace(p.nctsHC_Consignor_IdentificationNumber) Then
+ HC.Consignor.IdentificationNumber = p.nctsHC_Consignor_IdentificationNumber
+ HC.Consignor.SubsidiaryNumber = If(String.IsNullOrWhiteSpace(p.nctsHC_Consignor_SubsidiaryNumber), "0000", p.nctsHC_Consignor_SubsidiaryNumber)
+ End If
+ If p.nctsHC_Consignor_Name IsNot Nothing Then HC.Consignor.Name = p.nctsHC_Consignor_Name
+ If p.nctsHC_Consignor_Postcode IsNot Nothing Then HC.Consignor.Postcode = p.nctsHC_Consignor_Postcode
+ If p.nctsHC_Consignor_StreetNumber IsNot Nothing Then HC.Consignor.StreetAndNumber = p.nctsHC_Consignor_StreetNumber
+ If p.nctsHC_Consignor_City IsNot Nothing Then HC.Consignor.City = p.nctsHC_Consignor_City
+ If p.nctsHC_Consignor_Country IsNot Nothing Then HC.Consignor.Country = p.nctsHC_Consignor_Country
+ If Not String.IsNullOrWhiteSpace(p.nctsHC_Consignor_ContactPerson_Name) Then
+ HC.Consignor.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
+ If p.nctsHC_Consignor_ContactPerson_Name IsNot Nothing Then HC.Consignor.ContactPerson.Name = p.nctsHC_Consignor_ContactPerson_Name
+ If p.nctsHC_Consignor_ContactPerson_PhoneNumber IsNot Nothing Then HC.Consignor.ContactPerson.PhoneNumber = p.nctsHC_Consignor_ContactPerson_PhoneNumber
+ If p.nctsHC_Consignor_ContactPerson_EMailAddress IsNot Nothing Then HC.Consignor.ContactPerson.EMailAddress = p.nctsHC_Consignor_ContactPerson_EMailAddress
+ End If
+ End If
+
+ If Not String.IsNullOrWhiteSpace(p.nctsHC_Consignee_IdentificationNumber) OrElse Not String.IsNullOrWhiteSpace(p.nctsHC_Consignee_Name) Then
+ HC.Consignee = New VersandanmeldungNCTSDE_004.AddressVA1Type
+ If Not String.IsNullOrWhiteSpace(p.nctsHC_Consignee_IdentificationNumber) Then
+ HC.Consignee.IdentificationNumber = p.nctsHC_Consignee_IdentificationNumber
+ HC.Consignee.SubsidiaryNumber = If(String.IsNullOrWhiteSpace(p.nctsHC_Consignee_SubsidiaryNumber), "0000", p.nctsHC_Consignee_SubsidiaryNumber)
+ End If
+ If p.nctsHC_Consignee_Name IsNot Nothing Then HC.Consignee.Name = p.nctsHC_Consignee_Name
+ If p.nctsHC_Consignee_Postcode IsNot Nothing Then HC.Consignee.Postcode = p.nctsHC_Consignee_Postcode
+ If p.nctsHC_Consignee_StreetNumber IsNot Nothing Then HC.Consignee.StreetAndNumber = p.nctsHC_Consignee_StreetNumber
+ If p.nctsHC_Consignee_City IsNot Nothing Then HC.Consignee.City = p.nctsHC_Consignee_City
+ If p.nctsHC_Consignee_Country IsNot Nothing Then HC.Consignee.Country = p.nctsHC_Consignee_Country
+ If Not String.IsNullOrWhiteSpace(p.nctsHC_Consignee_ContactPerson_Name) Then
+ HC.Consignee.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
+ If p.nctsHC_Consignee_ContactPerson_Name IsNot Nothing Then HC.Consignee.ContactPerson.Name = p.nctsHC_Consignee_ContactPerson_Name
+ If p.nctsHC_Consignee_ContactPerson_PhoneNumber IsNot Nothing Then HC.Consignee.ContactPerson.PhoneNumber = p.nctsHC_Consignee_ContactPerson_PhoneNumber
+ If p.nctsHC_Consignee_ContactPerson_EMailAddress IsNot Nothing Then HC.Consignee.ContactPerson.EMailAddress = p.nctsHC_Consignee_ContactPerson_EMailAddress
+ End If
+ End If
+
+ 'Vorpapier: Ausfuhr-MRN aus EXG
+ 'Vorpapiere HouseConsignment
+ If p.nctsHC_PreviousDocument_1_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_1_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_1_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_1_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_2_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_2_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_2_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_2_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_3_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_3_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_3_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_3_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_4_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_4_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_4_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_4_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_5_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_5_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_5_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_5_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_6_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_6_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_6_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_6_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_7_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_7_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_7_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_7_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_8_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_8_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_8_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_8_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+ If p.nctsHC_PreviousDocument_9_ReferenceNumber IsNot Nothing Then
+ Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentVAType With {.Type = p.nctsHC_PreviousDocument_9_Type, .ReferenceNumber = p.nctsHC_PreviousDocument_9_ReferenceNumber, .ComplementOfInformation = p.nctsHC_PreviousDocument_9_ComplementOfInformation}
+ HC.PreviousDocument.Add(TM)
+ End If
+
+
+ '20300-EXPORT: nur bei ausschließlich betroffenen Positionen auf HC-Ebene
+ Dim exportCount As Integer = 0
+ Dim itemCount As Integer = If(p.nctsWP_CONSIGNMENT_ITEM Is Nothing, 0, p.nctsWP_CONSIGNMENT_ITEM.Count)
+ If itemCount > 0 Then
+ For Each pp In p.nctsWP_CONSIGNMENT_ITEM
+ Dim t As String = Convert.ToString(pp.nctsHCCI_DeclarationType).Trim().ToUpperInvariant()
+ If t = "" Then t = declType.Trim().ToUpperInvariant()
+ Dim d As String = Convert.ToString(pp.nctsHCCI_CountryOfDispatch).Trim().ToUpperInvariant()
+ Dim z As String = Convert.ToString(pp.nctsHCCI_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ If (t = "T2" OrElse t = "T2F") AndAlso IsEUCountry(d) AndAlso z <> "" AndAlso Not IsEUCountry(z) Then exportCount += 1
+ Next
+ End If
+ Dim exportOnHC As Boolean = itemCount > 0 AndAlso exportCount = itemCount
+ If exportOnHC AndAlso Not HC.AdditionalInformation.Any(Function(x) x.Code = "20300") Then
+ HC.AdditionalInformation.Add(New VersandanmeldungNCTSDE_004.AdditionalInformationHouseVAType With {.Code = "20300", .Text = "EXPORT"})
+ End If
+
If p.nctsWP_CONSIGNMENT_ITEM IsNot Nothing AndAlso p.nctsWP_CONSIGNMENT_ITEM.Count > 0 Then
HC.ConsignmentItem = New List(Of VersandanmeldungNCTSDE_004.ConsignmentItemVAType)
@@ -2315,12 +2522,33 @@ Public Class cDakosyNCTSOut004
If pp.nctsHCCI_UNNumber_3 IsNot Nothing Then HCCI.UNNumber.Add(pp.nctsHCCI_UNNumber_3)
If pp.nctsHCCI_UNNumber_4 IsNot Nothing Then HCCI.UNNumber.Add(pp.nctsHCCI_UNNumber_4)
- If pp.nctsHCCI_DeclarationType IsNot Nothing Then HCCI.DeclarationType = pp.nctsHCCI_DeclarationType
+ 'If pp.nctsHCCI_DeclarationType IsNot Nothing Then HCCI.DeclarationType = pp.nctsHCCI_DeclarationType
+ If declType = "T-" Then
+ Dim itemType As String = Convert.ToString(pp.nctsHCCI_DeclarationType).Trim()
+
+ If itemType <> "T1" AndAlso itemType <> "T2" AndAlso itemType <> "T2F" Then
+ Console.WriteLine($"NCTS: Ungültige Positions-Verfahrensart '{itemType}' bei Position {HCCI.DeclarationGoodsItemNumber}.")
+ End If
+
+ HCCI.DeclarationType = itemType
+ End If
+
If pp.nctsHCCI_ArticleCode IsNot Nothing Then HCCI.ArticleCode = pp.nctsHCCI_ArticleCode
If pp.nctsHCCI_DescriptionOfGoods IsNot Nothing Then HCCI.DescriptionOfGoods = pp.nctsHCCI_DescriptionOfGoods
If pp.nctsHCCI_CusCode IsNot Nothing Then HCCI.CusCode = pp.nctsHCCI_CusCode
- If pp.nctsHCCI_CountryOfDispatch IsNot Nothing Then HCCI.CountryOfDispatch = pp.nctsHCCI_CountryOfDispatch
- If pp.nctsHCCI_CountryOfDestination IsNot Nothing Then HCCI.CountryOfDestination = pp.nctsHCCI_CountryOfDestination
+ 'Positionsland nur, wenn es weder am Kopf noch an der HC einheitlich ist
+ If Not sameDispatchCountry AndAlso Not sameHCDispatch Then
+ Dim d As String = Convert.ToString(pp.nctsHCCI_CountryOfDispatch).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ If d = "" Then d = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If d <> "" Then HCCI.CountryOfDispatch = d
+ End If
+ If Not sameDestinationCountry AndAlso Not sameHCDestination Then
+ Dim z As String = Convert.ToString(pp.nctsHCCI_CountryOfDestination).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If z = "" Then z = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ If z <> "" Then HCCI.CountryOfDestination = z
+ End If
If pp.nctsHCCI_GrossMass IsNot Nothing Then HCCI.GrossMass = pp.nctsHCCI_GrossMass
If pp.nctsHCCI_NetMass IsNot Nothing Then HCCI.NetMass = pp.nctsHCCI_NetMass
@@ -2337,25 +2565,9 @@ Public Class cDakosyNCTSOut004
- 'Empfänger
- If pp.nctsHCCI_Consignor_IdentificationNumber IsNot Nothing Or pp.nctsHCCI_Consignor_Name IsNot Nothing Then
- HCCI.Consignee = New VersandanmeldungNCTSDE_004.AddressVA1Type
- If pp.nctsHCCI_Consignor_IdentificationNumber IsNot Nothing Then HCCI.Consignee.IdentificationNumber = pp.nctsHCCI_Consignor_IdentificationNumber
- If pp.nctsHCCI_Consignor_SubsidiaryNumber IsNot Nothing Then HCCI.Consignee.SubsidiaryNumber = pp.nctsHCCI_Consignor_SubsidiaryNumber
- If pp.nctsHCCI_Consignor_Name IsNot Nothing Then HCCI.Consignee.Name = pp.nctsHCCI_Consignor_Name
- If pp.nctsHCCI_Consignor_Postcode IsNot Nothing Then HCCI.Consignee.Postcode = pp.nctsHCCI_Consignor_Postcode
- If pp.nctsHCCI_Consignor_StreetNumber IsNot Nothing Then HCCI.Consignee.StreetAndNumber = pp.nctsHCCI_Consignor_StreetNumber
- If pp.nctsHCCI_Consignor_City IsNot Nothing Then HCCI.Consignee.City = pp.nctsHCCI_Consignor_City
- If pp.nctsHCCI_Consignor_Country IsNot Nothing Then HCCI.Consignee.Country = pp.nctsHCCI_Consignor_Country
- If pp.nctsHCCI_Consignor_ContactPerson_Name IsNot Nothing Then
- HCCI.Consignee.ContactPerson = New VersandanmeldungNCTSDE_004.ContactPersonVAType
- If pp.nctsHCCI_Consignor_ContactPerson_Name IsNot Nothing Then HCCI.Consignee.ContactPerson.Name = pp.nctsHCCI_Consignor_ContactPerson_Name
- If pp.nctsHCCI_Consignor_ContactPerson_PhoneNumber IsNot Nothing Then HCCI.Consignee.ContactPerson.PhoneNumber = pp.nctsHCCI_Consignor_ContactPerson_PhoneNumber
- If pp.nctsHCCI_Consignor_ContactPerson_EMailAddress IsNot Nothing Then HCCI.Consignee.ContactPerson.EMailAddress = pp.nctsHCCI_Consignor_ContactPerson_EMailAddress
- End If
- End If
-
-
+ 'Auf Warenpositionsebene ist nur Consignee zulässig.
+ 'Das Datenmodell enthält hier nur nctsHCCI_Consignor_*.
+ 'Diese Werte dürfen nicht als Empfänger ausgegeben werden.
'Lieferkettenbeteiligter 1
If pp.nctsHCCI_AdditionalSupplyChainActor_1_IdentificationNumber IsNot Nothing Then
@@ -2427,6 +2639,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 1
If pp.nctsHCCI_PreviousDocument_1_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_1_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_1_Type
If pp.nctsHCCI_PreviousDocument_1_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_1_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_1_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_1_ComplementOfInformation
@@ -2436,6 +2649,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 2
If pp.nctsHCCI_PreviousDocument_2_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_2_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_2_Type
If pp.nctsHCCI_PreviousDocument_2_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_2_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_2_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_2_ComplementOfInformation
@@ -2445,6 +2659,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 3
If pp.nctsHCCI_PreviousDocument_3_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_3_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_3_Type
If pp.nctsHCCI_PreviousDocument_3_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_3_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_3_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_3_ComplementOfInformation
@@ -2454,6 +2669,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 4
If pp.nctsHCCI_PreviousDocument_4_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_4_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_4_Type
If pp.nctsHCCI_PreviousDocument_4_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_4_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_4_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_4_ComplementOfInformation
@@ -2463,6 +2679,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 5
If pp.nctsHCCI_PreviousDocument_5_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_5_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_5_Type
If pp.nctsHCCI_PreviousDocument_5_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_5_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_5_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_5_ComplementOfInformation
@@ -2472,6 +2689,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 6
If pp.nctsHCCI_PreviousDocument_6_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_6_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_6_Type
If pp.nctsHCCI_PreviousDocument_6_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_6_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_6_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_6_ComplementOfInformation
@@ -2481,6 +2699,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 7
If pp.nctsHCCI_PreviousDocument_7_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_7_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_7_Type
If pp.nctsHCCI_PreviousDocument_7_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_7_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_7_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_7_ComplementOfInformation
@@ -2490,6 +2709,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 8
If pp.nctsHCCI_PreviousDocument_8_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_8_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_8_Type
If pp.nctsHCCI_PreviousDocument_8_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_8_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_8_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_8_ComplementOfInformation
@@ -2499,6 +2719,7 @@ Public Class cDakosyNCTSOut004
'Vorpapier 9
If pp.nctsHCCI_PreviousDocument_9_ReferenceNumber IsNot Nothing Then
Dim TM As New VersandanmeldungNCTSDE_004.PreviousDocumentPositionVAType
+ TM.PreviousDocumentDetails = New VersandanmeldungNCTSDE_004.PreviousDocumentsPositionVAType
If pp.nctsHCCI_PreviousDocument_9_Type IsNot Nothing Then TM.Type = pp.nctsHCCI_PreviousDocument_9_Type
If pp.nctsHCCI_PreviousDocument_9_ReferenceNumber IsNot Nothing Then TM.PreviousDocumentDetails.ReferenceNumber = pp.nctsHCCI_PreviousDocument_9_ReferenceNumber
If pp.nctsHCCI_PreviousDocument_9_ComplementOfInformation IsNot Nothing Then TM.PreviousDocumentDetails.ComplementOfInformation = pp.nctsHCCI_PreviousDocument_9_ComplementOfInformation
@@ -2726,6 +2947,22 @@ Public Class cDakosyNCTSOut004
HCCI.AdditionalInformation.Add(TM)
End If
+ '20300-EXPORT nur bei betroffenen Positionen, wenn nicht schon auf HC-Ebene
+ If Not exportOnHC Then
+ Dim itemTypeAdd As String = Convert.ToString(pp.nctsHCCI_DeclarationType).Trim().ToUpperInvariant()
+ If itemTypeAdd = "" Then itemTypeAdd = declType.Trim().ToUpperInvariant()
+ Dim itemDispatch As String = Convert.ToString(pp.nctsHCCI_CountryOfDispatch).Trim().ToUpperInvariant()
+ Dim itemDestination As String = Convert.ToString(pp.nctsHCCI_CountryOfDestination).Trim().ToUpperInvariant()
+ If itemDispatch = "" Then itemDispatch = Convert.ToString(p.nctsHC_CountryOfDispatch).Trim().ToUpperInvariant()
+ If itemDestination = "" Then itemDestination = Convert.ToString(p.nctsHC_CountryOfDestination).Trim().ToUpperInvariant()
+ If itemDispatch = "" Then itemDispatch = Convert.ToString(cDY.ncts_CountryOfDispatch).Trim().ToUpperInvariant()
+ If itemDestination = "" Then itemDestination = Convert.ToString(cDY.ncts_CountryOfDestination).Trim().ToUpperInvariant()
+ If (itemTypeAdd = "T2" OrElse itemTypeAdd = "T2F") AndAlso IsEUCountry(itemDispatch) AndAlso itemDestination <> "" AndAlso Not IsEUCountry(itemDestination) Then
+ If Not HCCI.AdditionalInformation.Any(Function(x) x.Code = "20300") Then
+ HCCI.AdditionalInformation.Add(New VersandanmeldungNCTSDE_004.AdditionalInformationPositionVAType With {.Code = "20300", .Text = "EXPORT"})
+ End If
+ End If
+ End If
HC.ConsignmentItem.Add(HCCI)
Next
@@ -2756,191 +2993,582 @@ Public Class cDakosyNCTSOut004
Return False
End Function
+ Private Shared Function getTelefon() As String
+ Dim defaultDW = "200"
+ Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
+ Case "ATILLA" : Return "0043 7711 28450"
+ Case "AMBAR" : Return "0049 8651 9962492"
+ Case "UNISPED" : defaultDW = "800"
+ Case "IMEX" : defaultDW = "602"
+ Case "VERAG" : defaultDW = "200"
+ End Select
- Shared Function fillNCTS_WithEXG(ByRef NCTS_OUT As cDakosyNCTSOut004, exg As cDakosyEXG, Optional ObjectName As String = "") As cDakosyNCTSOut004
+ Dim dw = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_durchwahl
+ Return "0049 8503 7973999 " &
+ If(String.IsNullOrEmpty(dw) OrElse dw.Length >= 5, defaultDW, dw)
+ End Function
+ Private Shared Function getDefaultMail_FIRMA() As String
+ Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
+ Case "VERAG" : Return "quickstop@verag.ag"
+ Case "IMEX" : Return "steuerbescheide@imex-group.at"
+ Case "UNISPED" : Return "office@unisped.at"
+ Case "AMBAR" : Return "office@ambarlog.com"
+ End Select
+ Return "quickstop@verag.ag"
+ End Function
+ Shared Function IsEUCountry(countryCode As String) As Boolean
+ If String.IsNullOrWhiteSpace(countryCode) Then Return False
+
+ Select Case countryCode.Trim().ToUpperInvariant()
+ Case "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI",
+ "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU",
+ "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE"
+ Return True
+ Case Else
+ Return False
+ End Select
+ End Function
+
+ Shared Function fillNCTS_WithEXG(ByRef NCTS_OUT As cDakosyNCTSOut004, exg As cDakosyEXG, Optional ObjectName As String = "", Optional AutoTranslate As Boolean? = Nothing, Optional ForceTranslate As Boolean? = Nothing) As cDakosyNCTSOut004
If NCTS_OUT Is Nothing Then
NCTS_OUT = New DAKOSY_Worker.cDakosyNCTSOut004
NCTS_OUT.ncts_ObjectName = ObjectName
End If
+ If NCTS_OUT.ncts_ObjectName = "" Then NCTS_OUT.ncts_ObjectName = ObjectName
- If NCTS_OUT IsNot Nothing Then
- If NCTS_OUT.ncts_ObjectName = "" Then NCTS_OUT.ncts_ObjectName = ObjectName
+ Dim HC As New cDakosy_NCTSOut004_HouseConsignment
- Dim HC As New cDakosy_NCTSOut004_HouseConsignment
- HC.nctsHC_Consignee_Name = exg.exg_Consignee_Name
- HC.nctsHC_Consignee_IdentificationNumber = exg.exg_Consignee_IdentificationNumber
- HC.nctsHC_Consignee_SubsidiaryNumber = exg.exg_Consignee_SubsidiaryNumber
- HC.nctsHC_Consignee_StreetNumber = exg.exg_Consignee_StreetNumber
- HC.nctsHC_Consignee_City = exg.exg_Consignee_City
- HC.nctsHC_Consignee_Postcode = exg.exg_Consignee_Postcode
- HC.nctsHC_Consignee_Country = exg.exg_Consignee_Country
- HC.nctsHC_Consignee_ContactPerson_Name = exg.exg_Consignee_ContactPerson_Name
- HC.nctsHC_Consignee_ContactPerson_PhoneNumber = exg.exg_Consignee_ContactPerson_PhoneNumber
- HC.nctsHC_Consignee_ContactPerson_EMailAddress = exg.exg_Consignee_ContactPerson_EMailAddress
- HC.nctsHC_Consignee_AdressCode = exg.exg_Consignee_AdressCode
+ 'Empfänger
+ HC.nctsHC_Consignee_Name = exg.exg_Consignee_Name
+ HC.nctsHC_Consignee_IdentificationNumber = exg.exg_Consignee_IdentificationNumber
+ HC.nctsHC_Consignee_SubsidiaryNumber = exg.exg_Consignee_SubsidiaryNumber
+ HC.nctsHC_Consignee_StreetNumber = exg.exg_Consignee_StreetNumber
+ HC.nctsHC_Consignee_City = exg.exg_Consignee_City
+ HC.nctsHC_Consignee_Postcode = exg.exg_Consignee_Postcode
+ HC.nctsHC_Consignee_Country = exg.exg_Consignee_Country
+ HC.nctsHC_Consignee_ContactPerson_Name = exg.exg_Consignee_ContactPerson_Name
+ HC.nctsHC_Consignee_ContactPerson_PhoneNumber = exg.exg_Consignee_ContactPerson_PhoneNumber
+ HC.nctsHC_Consignee_ContactPerson_EMailAddress = exg.exg_Consignee_ContactPerson_EMailAddress
+ HC.nctsHC_Consignee_AdressCode = exg.exg_Consignee_AdressCode
- HC.nctsHC_Consignor_Name = exg.exg_Consignor_Name
- HC.nctsHC_Consignor_IdentificationNumber = exg.exg_Consignor_IdentificationNumber
- HC.nctsHC_Consignor_SubsidiaryNumber = exg.exg_Consignor_SubsidiaryNumber
- HC.nctsHC_Consignor_StreetNumber = exg.exg_Consignor_StreetNumber
- HC.nctsHC_Consignor_City = exg.exg_Consignor_City
- HC.nctsHC_Consignor_Postcode = exg.exg_Consignor_Postcode
- HC.nctsHC_Consignor_Country = exg.exg_Consignor_Country
- HC.nctsHC_Consignor_ContactPerson_Name = exg.exg_Consignor_ContactPerson_Name
- HC.nctsHC_Consignor_ContactPerson_PhoneNumber = exg.exg_Consignor_ContactPerson_PhoneNumber
- HC.nctsHC_Consignor_ContactPerson_EMailAddress = exg.exg_Consignor_ContactPerson_EMailAddress
- HC.nctsHC_Consignor_AdressCode = exg.exg_Consignor_AdressCode
+ 'Versender
+ HC.nctsHC_Consignor_Name = exg.exg_Consignor_Name
+ HC.nctsHC_Consignor_IdentificationNumber = exg.exg_Consignor_IdentificationNumber
+ HC.nctsHC_Consignor_SubsidiaryNumber = exg.exg_Consignor_SubsidiaryNumber
+ HC.nctsHC_Consignor_StreetNumber = exg.exg_Consignor_StreetNumber
+ HC.nctsHC_Consignor_City = exg.exg_Consignor_City
+ HC.nctsHC_Consignor_Postcode = exg.exg_Consignor_Postcode
+ HC.nctsHC_Consignor_Country = exg.exg_Consignor_Country
+ HC.nctsHC_Consignor_ContactPerson_Name = exg.exg_Consignor_ContactPerson_Name
+ HC.nctsHC_Consignor_ContactPerson_PhoneNumber = exg.exg_Consignor_ContactPerson_PhoneNumber
+ HC.nctsHC_Consignor_ContactPerson_EMailAddress = exg.exg_Consignor_ContactPerson_EMailAddress
+ HC.nctsHC_Consignor_AdressCode = exg.exg_Consignor_AdressCode
+ 'House Consignment
+ HC.nctsHC_GrossMass = exg.exg_GrossMass
+ HC.nctsHC_CountryOfDestination = exg.exg_CountryOfDestination
+ 'Versendungsland: zuerst EXG, alternativ Versenderadresse
+ HC.nctsHC_CountryOfDispatch = If(exg.exg_CountryOfDispatch, "").Trim().ToUpperInvariant()
- HC.nctsHC_GrossMass = exg.exg_GrossMass
- HC.nctsHC_ReferenceNumberUCR = exg.exg_ReferenceNumberUCR
+ If String.IsNullOrWhiteSpace(HC.nctsHC_CountryOfDispatch) Then
+ HC.nctsHC_CountryOfDispatch = If(exg.exg_Consignor_Country, "").Trim().ToUpperInvariant()
+ End If
- HC.nctsHC_CountryOfDestination = exg.exg_CountryOfDestination
- HC.nctsHC_CountryOfDispatch = exg.exg_CountryOfDispatch
+ 'UCR bewusst nicht übernehmen
+ HC.nctsHC_ReferenceNumberUCR = Nothing
- HC.nctsHC_PreviousDocument_1_Type = "N830"
- HC.nctsHC_PreviousDocument_1_ReferenceNumber = exg.exg_MRN
- 'HC.nctsHC_PreviousDocument_1_ComplementOfInformation =
+ 'Vorpapier
+ HC.nctsHC_PreviousDocument_1_Type = "N830"
+ HC.nctsHC_PreviousDocument_1_ReferenceNumber = exg.exg_MRN
+ 'Warenpositionen
+ For Each EXG_POS In exg.exg_POSITION
- For Each EXG_POS In exg.exg_POSITION
- Dim HC_ITEM As New cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem
+ Dim HC_ITEM As New cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem
- HC_ITEM.nctsHCCI_CommodityCode = EXG_POS.exgPos_CommodityCode
- HC_ITEM.nctsHCCI_DescriptionOfGoods = EXG_POS.exgPos_DescriptionOfGoods
+ 'Tarifnummer: 6 oder 8 Stellen
+ Dim tariff As String = If(EXG_POS.exgPos_CommodityCode, "").Trim()
+ tariff = New String(tariff.Where(Function(c) Char.IsDigit(c)).ToArray())
- HC_ITEM.nctsHCCI_GrossMass = EXG_POS.exgPos_GrossMass
- HC_ITEM.nctsHCCI_NetMass = EXG_POS.exgPos_NetMass
+ If tariff.Length >= 8 Then
+ tariff = tariff.Substring(0, 8)
+ ElseIf tariff.Length >= 6 Then
+ tariff = tariff.Substring(0, 6)
+ Else
+ Console.WriteLine("NCTS EXG: Ungültige Tarifnummer '" & tariff & "' / EXG " & exg.exg_ObjectName)
+ End If
- If EXG_POS.exgPos_PreviousProcedure IsNot Nothing And EXG_POS.exgPos_RequestedProcedure IsNot Nothing Then
- HC_ITEM.nctsHCCI_DeclarationType = DetermineTransitProcedure(EXG_POS.exgPos_RequestedProcedure, EXG_POS.exgPos_PreviousProcedure)
- End If
+ HC_ITEM.nctsHCCI_CommodityCode = If(tariff = "", Nothing, tariff)
- If exg.exg_AutoTranslate Then
- If exg.exg_ForceTranslate Then
- cDeeplAPI.deepl_Translate(EXG_POS.exgPos_DescriptionOfGoods, HC_ITEM.nctsHCCI_DescriptionOfGoods, "DE")
- Else
- HC_ITEM.nctsHCCI_DescriptionOfGoods = cTariffKN8_Interface.getKN8FromTNR(EXG_POS.exgPos_CommodityCode)
+ 'Warenbezeichnung: Original immer als Fallback
+ Dim originalDescription As String = If(EXG_POS.exgPos_DescriptionOfGoods, "").Trim()
+ Dim description As String = originalDescription
+
+ If If(AutoTranslate, exg.exg_AutoTranslate) Then
+ If If(ForceTranslate, exg.exg_ForceTranslate) Then
+ If originalDescription <> "" Then
+ Try
+ Dim translated As String = ""
+ cDeeplAPI.deepl_Translate(originalDescription, translated, "DE")
+ If Not String.IsNullOrWhiteSpace(translated) Then description = translated.Trim()
+ Catch ex As Exception
+ Console.WriteLine("NCTS EXG: DeepL fehlgeschlagen / " & exg.exg_ObjectName & ": " & ex.Message)
+ End Try
+ End If
+ Else
+ If tariff <> "" Then
+ Try
+ Dim kn8Description As String = cTariffKN8_Interface.getKN8FromTNR(tariff)
+ If Not String.IsNullOrWhiteSpace(kn8Description) Then description = kn8Description.Trim()
+ Catch ex As Exception
+ Console.WriteLine("NCTS EXG: KN8-Lookup fehlgeschlagen / " & exg.exg_ObjectName & ": " & ex.Message)
+ End Try
End If
End If
+ End If
+ If String.IsNullOrWhiteSpace(description) Then
+ Console.WriteLine("NCTS EXG: Warenbezeichnung leer / EXG " & exg.exg_ObjectName & " / Tarifnummer " & tariff)
+ End If
+
+ HC_ITEM.nctsHCCI_DescriptionOfGoods = description
+
+ 'Gewichte
+ HC_ITEM.nctsHCCI_GrossMass = EXG_POS.exgPos_GrossMass
+ HC_ITEM.nctsHCCI_NetMass = EXG_POS.exgPos_NetMass
+
+ 'Verfahrensart
+ If EXG_POS.exgPos_PreviousProcedure IsNot Nothing AndAlso EXG_POS.exgPos_RequestedProcedure IsNot Nothing Then
+ HC_ITEM.nctsHCCI_DeclarationType = DetermineTransitProcedure(EXG_POS.exgPos_RequestedProcedure, EXG_POS.exgPos_PreviousProcedure)
+
+ Debug.WriteLine($"NCTS Transit: Requested={EXG_POS.exgPos_RequestedProcedure}, Previous={EXG_POS.exgPos_PreviousProcedure}, Result={HC_ITEM.nctsHCCI_DeclarationType}")
+
+ End If
+
+ 'Packstücke
+ If EXG_POS.exgPos_PACKAGING IsNot Nothing Then
For Each EXG_PK In EXG_POS.exgPos_PACKAGING
- Dim HC_PK = New cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem_Packaging
+
+ Dim HC_PK As New cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem_Packaging
HC_PK.nctsHCCIPK_NumberOfPackages = EXG_PK.exgPosPk_NumberOfPackages
HC_PK.nctsHCCIPK_TypeOfPackages = EXG_PK.exgPosPk_TypeOfPackages
HC_PK.nctsHCCIPK_ShippingMarks = EXG_PK.exgPosPk_ShippingMarks
+ If Val(Convert.ToString(EXG_PK.exgPosPk_NumberOfPackages)) = 0 Then
+ 'Verweis auf erste Warenposition im selben House Consignment
+ HC_PK.nctsHCCIPK_GoodsItemNumber = 1
+ End If
+
HC_ITEM.nctsHCCI_PACKAGING.Add(HC_PK)
Next
-
- HC.nctsWP_CONSIGNMENT_ITEM.Add(HC_ITEM)
- Next
- NCTS_OUT.ncts_HOUSE_CONSIGNMENT.Add(HC)
-
-
-
-
-
- ' NCTS_OUT.INSERT_HouseConsignment()
-
-
- '--------Declarationtype-----------------------------------------------
- Dim declType = GetDeclarationType(NCTS_OUT.ncts_HOUSE_CONSIGNMENT)
- If declType <> "" Then
- emptyAllDeclarationItems(NCTS_OUT.ncts_HOUSE_CONSIGNMENT) ' Leert alle DeclType in den Pos
- NCTS_OUT.ncts_Declarationtype = declType ' Sezt es im Kopf
- Else
- NCTS_OUT.ncts_Declarationtype = "T-" ' Sezt es im Kopf
End If
- '----------------------------------------------------------------------
- End If
- NCTS_OUT.SAVE_ALL()
+
+ HC.nctsWP_CONSIGNMENT_ITEM.Add(HC_ITEM)
+ Next
+
+ NCTS_OUT.ncts_HOUSE_CONSIGNMENT.Add(HC)
+
+ 'Verfahrensart wird erst nach Zusammenführung aller EXG bestimmt
+ 'Positions-Verfahrensarten bleiben bis dahin erhalten
+ 'Dim declType As String = GetDeclarationType(NCTS_OUT.ncts_HOUSE_CONSIGNMENT)
+
+ 'If declType <> "" Then
+ ' emptyAllDeclarationItems(NCTS_OUT.ncts_HOUSE_CONSIGNMENT)
+ ' NCTS_OUT.ncts_Declarationtype = declType
+ 'Else
+ ' NCTS_OUT.ncts_Declarationtype = "T-"
+ 'End If
+
+ 'Kein SAVE_ALL: erfolgt nach Zusammenführung aller EXG-Anmeldungen
Return NCTS_OUT
+
End Function
+
' Funktion zur Bestimmung des Declaration Type
Shared Function GetDeclarationType(HC_LIST As List(Of cDakosy_NCTSOut004_HouseConsignment)) As String
Dim declType As String = Nothing
- Dim isConsistent As Boolean = True ' Flag zur Überprüfung der Konsistenz
- ' Iteration über alle Positionen
For Each HC In HC_LIST
-
For Each HC_ITEM In HC.nctsWP_CONSIGNMENT_ITEM
- Dim currentType = HC_ITEM.nctsHCCI_DeclarationType
+ Dim currentType As String = If(HC_ITEM.nctsHCCI_DeclarationType, "").Trim()
- ' Abbruch, wenn ein Wert leer oder Nothing ist
- If String.IsNullOrWhiteSpace(currentType) Then
- isConsistent = False
- Exit For
- End If
+ If String.IsNullOrWhiteSpace(currentType) Then Return ""
- ' Setze declType, wenn noch nicht gesetzt
If declType Is Nothing Then
declType = currentType
ElseIf declType <> currentType Then
- ' Unterschiedlicher Wert gefunden → Abbruch
- isConsistent = False
- Exit For
+ Return ""
End If
Next
Next
- ' Rückgabe des einheitlichen declType oder leer, wenn inkonsistent
- If isConsistent AndAlso Not String.IsNullOrWhiteSpace(declType) Then
- Return declType
- Else
- Return ""
- End If
+ Return If(declType, "")
End Function
+ Shared Sub finalizeNCTS_DeclarationType(ByRef NCTS_OUT As cDakosyNCTSOut004)
+
+ Dim declType As String = GetDeclarationType(NCTS_OUT.ncts_HOUSE_CONSIGNMENT)
+
+ If Not String.IsNullOrWhiteSpace(declType) AndAlso declType <> "T-" Then
+ 'Alle Positionen haben dieselbe Verfahrensart
+ NCTS_OUT.ncts_Declarationtype = declType
+ emptyAllDeclarationItems(NCTS_OUT.ncts_HOUSE_CONSIGNMENT)
+ Else
+ 'Gemischte Verfahrensarten: T1/T2 bleiben auf Positionsebene
+ NCTS_OUT.ncts_Declarationtype = "T-"
+ End If
+
+ End Sub
+
Shared Sub emptyAllDeclarationItems(ByRef HC_LIST As List(Of cDakosy_NCTSOut004_HouseConsignment))
- Dim declType As String = Nothing
- Dim isConsistent As Boolean = True ' Flag zur Überprüfung der Konsistenz
-
- ' Iteration über alle Positionen
For Each HC In HC_LIST
For Each HC_ITEM In HC.nctsWP_CONSIGNMENT_ITEM
HC_ITEM.nctsHCCI_DeclarationType = ""
Next
Next
-
End Sub
Shared Function DetermineTransitProcedure(requestedProcedure As String, previousProcedure As String) As String
- ' Entscheidungslogik für Transitverfahren (immer in der EU eröffnet)
- Select Case requestedProcedure
- Case "10" ' Ausfuhrverfahren
- If previousProcedure = "00" Then
- Return "T2" ' Ware ist weiterhin Unionsware, obwohl Ausfuhr vorgesehen ist
- ElseIf previousProcedure = "40" Then
- Return "T2" ' Ware im freien Verkehr (Unionsware)
- ElseIf previousProcedure = "61" Then
- Return "T1" ' Ware verlässt ein Zolllager (Nicht-Unionsware)
- Else
- Return "T2" ' Standardfall: Unionsware im Ausfuhrverfahren
- End If
- Case "40" ' Überlassung zum freien Verkehr
- Return "T2" ' Ware wird Unionsware nach Import
+ 'requestedProcedure = Verfahren unmittelbar vor NCTS (meist Ausfuhr)
+ 'previousProcedure = Verfahren vor der Ausfuhr
+ 'T2 = Unionswaren, T1 = Nicht-Unionswaren
+ 'Nur Vorschlagslogik: tatsächlichen Warenstatus und Sonderregeln prüfen
- Case "31" ' Versandverfahren
- Return "T-" ' Beibehaltung des ursprünglichen Status
+ Dim exportProcedure As String = If(requestedProcedure, "").Trim()
+ Dim procedureBeforeExport As String = If(previousProcedure, "").Trim()
- Case "51" ' Passive Veredelung
- Return "T1" ' Rückkehr von Nicht-Unionsware nach Verarbeitung
+ Select Case exportProcedure
+ Case "10", "11", "21", "22", "23"
+ 'Ausfuhr bzw. vorübergehende Ausfuhr
+ Select Case procedureBeforeExport
+ Case "00"
+ 'Kein vorangegangenes Zollverfahren
+ Return "T2"
+
+ Case "40"
+ 'Vorherige Überlassung zum freien Verkehr
+ Return "T2"
+
+ Case "61"
+ 'Wiedereinfuhr mit Überlassung zum freien Verkehr
+ Return "T2"
+
+ Case "51"
+ 'Vorher aktive Veredelung – Nicht-Unionswaren möglich
+ Return "T1"
+
+ Case "53"
+ 'Vorher vorübergehende Verwendung – regelmäßig Nicht-Unionswaren
+ Return "T1"
+
+ Case "71"
+ 'Vorher Zolllagerverfahren – regelmäßig Nicht-Unionswaren
+ Return "T1"
+
+ Case "78"
+ 'Vorher Freizone – Warenstatus gesondert prüfen
+ Console.WriteLine("NCTS: Freizone – Warenstatus prüfen.")
+ Return "T1"
+
+ Case Else
+ 'Unbekanntes Vorverfahren: T2 als betrieblicher Vorschlag
+ Console.WriteLine("NCTS: Unbekanntes Vorverfahren " & exportProcedure & "/" & procedureBeforeExport & " -> T2 vorgeschlagen.")
+ Return "T2"
+ End Select
+
+ Case "31"
+ 'Wiederausfuhr von Nicht-Unionswaren
+ Return "T1"
Case Else
- Return "Unbekannt" ' Unbekannter Verfahrenscode
+ 'Unbekanntes Ausfuhrverfahren
+ Console.WriteLine("NCTS: Unbekanntes EXG-Verfahren " & exportProcedure & "/" & procedureBeforeExport & " -> T2 vorgeschlagen.")
+ Return "T2"
End Select
+
End Function
+ 'Shared Function DetermineTransitProcedure(requestedProcedure As String, previousProcedure As String) As String
+ ' ' Entscheidungslogik für Transitverfahren (immer in der EU eröffnet)
+ ' Select Case requestedProcedure
+ ' Case "10" ' Ausfuhrverfahren
+ ' If previousProcedure = "00" Then
+ ' Return "T2" ' Ware ist weiterhin Unionsware, obwohl Ausfuhr vorgesehen ist
+ ' ElseIf previousProcedure = "40" Then
+ ' Return "T2" ' Ware im freien Verkehr (Unionsware)
+ ' ElseIf previousProcedure = "61" Then
+ ' Return "T1" ' Ware verlässt ein Zolllager (Nicht-Unionsware)
+ ' Else
+ ' Return "T2" ' Standardfall: Unionsware im Ausfuhrverfahren
+ ' End If
+
+ ' Case "40" ' Überlassung zum freien Verkehr
+ ' Return "T2" ' Ware wird Unionsware nach Import
+
+ ' Case "31" ' Versandverfahren
+ ' Return "T-" ' Beibehaltung des ursprünglichen Status
+
+ ' Case "51" ' Passive Veredelung
+ ' Return "T1" ' Rückkehr von Nicht-Unionsware nach Verarbeitung
+
+ ' Case Else
+ ' Return "Unbekannt" ' Unbekannter Verfahrenscode
+ ' End Select
+ 'End Function
+
+ Public Shared Function SaveAndSendNCTS(NCTS_OUT As cDakosyNCTSOut004, DY_ANM As cDakosy_Zollanmeldungen, BezugsNr As String, FIRMA_DY As String, Optional sendFTP As Boolean = True, Optional SENDUNG As cSendungen = Nothing, Optional DY_ACTION As String = "CREATE", Optional NCTS_ART As String = "T2") As String
+ If NCTS_OUT Is Nothing Then Throw New Exception("Keine NCTS-Daten vorhanden.")
+ If DY_ANM Is Nothing OrElse DY_ANM.dy_Id <= 0 Then Throw New Exception("Keine gültige Zollanmeldung vorhanden.")
+ If String.IsNullOrWhiteSpace(BezugsNr) Then Throw New Exception("Keine Bezugsnummer vorhanden.")
+
+ 'NCTS mit Zollanmeldung verknüpfen
+ NCTS_OUT.ncts_ObjectName = BezugsNr
+ NCTS_OUT.ncts_dyaAnmID = DY_ANM.dy_Id
+ NCTS_OUT.ncts_Erstellung_SB = DY_ANM.dy_Erstellung_SB
+ NCTS_OUT.ncts_LetzteBearbeitung = Now
+ NCTS_OUT.ncts_LetzteBearbeitung_SB = DY_ANM.dy_LetzteBearbeitung_SB
+ NCTS_OUT.ncts_firma = FIRMA_DY
+
+ If Not NCTS_OUT.SAVE_ALL() Then
+ Throw New Exception("NCTS-Daten konnten nicht gespeichert werden. DY-ID: " & DY_ANM.dy_Id)
+ End If
+
+ 'NCTS-XML erstellen
+ Dim saveFile As String = ""
+
+ If Not cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(NCTS_OUT, saveFile, DY_ACTION, AppDomain.CurrentDomain.BaseDirectory, NCTS_ART) Then
+ Throw New Exception("NCTS-XML konnte nicht erzeugt werden.")
+ End If
+
+ If String.IsNullOrWhiteSpace(saveFile) OrElse Not System.IO.File.Exists(saveFile) Then
+ Throw New Exception("NCTS-XML-Datei fehlt.")
+ End If
+
+ 'Optional an DAKOSY senden
+ If sendFTP Then
+ If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, BezugsNr, DY_ANM.dy_Id, FIRMA_DY) Then
+ DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
+ If SENDUNG IsNot Nothing Then SENDUNG.SET_VGMA()
+ Else
+ DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
+ DY_ANM.UPDATE_DATA()
+ Throw New Exception("NCTS-FTP-Versand fehlgeschlagen. DY-ID: " & DY_ANM.dy_Id)
+ End If
+ End If
+
+ DY_ANM.UPDATE_DATA()
+
+ If sendFTP AndAlso DY_ANM.dy_SendungsId > 0 Then
+ DY_ANM.UPDATE_AVISO_SND(DY_ANM.dy_SendungsId)
+ End If
+
+ Return saveFile
+ End Function
+
+
+ Shared Sub loaddataFromAVISO(AVISO As cAviso, SENDUNG As cSendungen, cDy_ART As String, BezugsNr As String, ByRef cdy As cDakosyNCTSOut004, FIRMA_DY As String, loadForT1 As Boolean)
+ Try
+
+ '==> VORBLENDUNG:
+
+ ' Dim cdy As New cDakosyNCTSOut
+ cdy.ncts_ObjectName = BezugsNr
+ cdy.ncts_CustomsOfficeOfDeparture = "" '"DE007701" ' Neuhaus (öSTERR:)
+ setZollstelle(cdy.ncts_CustomsOfficeOfDeparture, AVISO)
+
+ If cDy_ART <> "" Then cdy.ncts_dyaArt = cDy_ART
+ If AVISO IsNot Nothing Then
+ Dim kennzeichen As String = If(AVISO.LKW_Nr, "").Trim()
+ Dim nationalitaet As String = If(AVISO.LKW_Nationalitaet, "").Trim().ToUpperInvariant()
+
+ If kennzeichen <> "" Then
+ cdy.ncts_DepartureTransportMeans_1_IdentificationNumber = kennzeichen
+ cdy.ncts_ActiveBorderTransportMeans_1_IdentificationNumber = kennzeichen
+ End If
+
+ If nationalitaet <> "" Then
+ cdy.ncts_DepartureTransportMeans_1_Nationality = nationalitaet
+ cdy.ncts_ActiveBorderTransportMeans_1_Nationality = nationalitaet
+ End If
+
+ Select Case If(AVISO.Transportmittelart, "").Trim().ToUpperInvariant()
+ Case "LKW", "SPRINTER"
+ cdy.ncts_DepartureTransportMeans_1_TypeOfIdentification = 30
+ cdy.ncts_ActiveBorderTransportMeans_1_TypeOfIdentification = 30
+
+ If FIRMA_DY <> "AMBAR" Then
+ cdy.ncts_InlandModeOfTransport = "3"
+ cdy.ncts_ModeOfTransportAtTheBorder = "3"
+ End If
+ End Select
+
+
+ 'Bei Warenort nur grenzüberschreitendes Beförderungsmittel angeben
+ If Not String.IsNullOrWhiteSpace(Convert.ToString(AVISO.Grenzstelle)) Then
+ Dim sql As String = "SELECT COUNT(1) FROM dbo.tblGrenzstelle WHERE grz_Grenzstelle = '" & AVISO.Grenzstelle & "' AND grz_Warenort = 1"
+
+ If (New VERAG_PROG_ALLGEMEIN.SQL).getValueTxtBySql(sql, "AVISO", , defaultReturn:="0") <> "0" Then
+ cdy.ncts_DepartureTransportMeans_1_IdentificationNumber = Nothing
+ cdy.ncts_DepartureTransportMeans_1_Nationality = Nothing
+ cdy.ncts_DepartureTransportMeans_1_TypeOfIdentification = Nothing
+ End If
+ End If
+
+ End If
+
+ 'cdy.ncts_Befoerderungsmittel_ArtGrenzueberschreitung = "35"
+
+
+
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "ATILLA" Or (VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" And AVISO.ImEx = "EXPORT") Then
+ cdy.ncts_Security = True
+ cdy.ncts_SpecificCircomstanceIndicator = "C"
+ cdy.ncts_TransportCharges = "D"
+ cdy.ncts_PlaceOfLoading_Country = "DE"
+ 'cdy.ncts_SumA_KennnummerSendung = "OHNE"
+
+ If AVISO.Frächter_KdNr IsNot Nothing AndAlso IsNumeric(AVISO.Frächter_KdNr) AndAlso AVISO.Frächter_KdNr > 0 Then
+ Dim AD_Befoerderer As New VERAG_PROG_ALLGEMEIN.cAdressen(AVISO.Frächter_KdNr) ' Befoerderer
+ Dim KD_Befoerderer As New VERAG_PROG_ALLGEMEIN.cKunde(AVISO.Frächter_KdNr) ' Befoerderer
+ cdy.ncts_Carrier_IdentificationNumber = KD_Befoerderer.EORITIN
+ If KD_Befoerderer.EORITIN IsNot Nothing Then cdy.ncts_Carrier_SubsidiaryNumber = KD_Befoerderer.EORITIN_NL
+ 'cdy.ncts_Carrier_name = (If(AD_Befoerderer.Name_1, "") & " " & If(AD_Befoerderer.Name_2, "")).trim
+ 'cdy.ncts_Carrier_st = AD_Befoerderer.Straße
+ 'cdy.ncts_SumA_Befoerderer_PLZ = AD_Befoerderer.PLZ
+ 'cdy.ncts_SumA_Befoerderer_Ort = AD_Befoerderer.Ordnungsbegriff
+ 'cdy.ncts_SumA_Befoerderer_Land = cProgramFunctions.getISO2Land(AD_Befoerderer.LandKz)
+ Else
+ 'cdy.ncts_SumA_Befoerderer_Name = If(AVISO.Frächter, "")
+ End If
+ End If
+
+
+
+ If loadForT1 AndAlso SENDUNG IsNot Nothing Then
+
+ Dim HC As DAKOSY_Worker.cDakosy_NCTSOut004_HouseConsignment = Nothing
+ If cdy.ncts_HOUSE_CONSIGNMENT.Count > 0 Then
+ HC = cdy.ncts_HOUSE_CONSIGNMENT(0)
+ Else
+ HC = New DAKOSY_Worker.cDakosy_NCTSOut004_HouseConsignment
+ cdy.ncts_HOUSE_CONSIGNMENT.Add(HC) ' schon wieder...'nciht mehr anfügen
+ End If
+
+
+ Dim p As DAKOSY_Worker.cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem = Nothing
+ If HC.nctsWP_CONSIGNMENT_ITEM.Count > 0 Then
+ p = HC.nctsWP_CONSIGNMENT_ITEM(0)
+ Else
+ p = New DAKOSY_Worker.cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem
+ HC.nctsWP_CONSIGNMENT_ITEM.Add(p) ' schon wieder...'nciht mehr anfügen
+ End If
+
+ p.nctsHCCI_DescriptionOfGoods = SENDUNG.tblSnd_Warenbezeichnung
+ If SENDUNG.tblSnd_Colli IsNot Nothing AndAlso IsNumeric(SENDUNG.tblSnd_Colli) Then
+ Dim pk As New DAKOSY_Worker.cDakosy_NCTSOut004_HouseConsignment_ConsignmentItem_Packaging
+ pk.nctsHCCIPK_NumberOfPackages = SENDUNG.tblSnd_Colli
+ pk.nctsHCCIPK_TypeOfPackages = "PK"
+ 'pk.nctsHCCIPK_GoodsItemNumber = "OHNE" -->BEIPACK Verweis auf andere Pos-
+ p.nctsHCCI_PACKAGING.Add(pk)
+ End If
+ p.nctsHCCI_GrossMass = SENDUNG.tblSnd_Gewicht
+ p.nctsHCCI_GoodsValue = SENDUNG.tblSnd_Warenwert
+ p.nctsHCCI_CurrencyOfGoodsValue = SENDUNG.tblSnd_WarenwertWaehrung
+ ' p.nctsWP_Warenbezeichnung = SENDUNG.tblSnd_Warenbezeichnung
+ 'If If(p.nctsWP_VorpapierTyp, "") = "" Then p.nctsWP_VorpapierTyp = "OHNE"
+
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "ATILLA" Then
+ ' p.nctsWP_BesondereVermeke_Export = True
+ End If
+ 'cdy.ncts_WARENPOS.Add(p)
+
+ Select Case cdy.ncts_CustomsOfficeOfDeparture
+ Case "DE007458" 'Bad Reichenhall --> Empfänger muss tat. Empf. sein; Gest.Adresse nicht akzeptiert!!
+
+ If SENDUNG.tblSnd_EmpfaengerKdNr > 0 Then
+ Dim adEMPF As New VERAG_PROG_ALLGEMEIN.cAdressen(SENDUNG.tblSnd_EmpfaengerKdNr)
+ Dim kdEMPF As New VERAG_PROG_ALLGEMEIN.cKunde(SENDUNG.tblSnd_EmpfaengerKdNr)
+ cdy.ncts_Consignee_IdentificationNumber = kdEMPF.EORITIN
+ cdy.ncts_Consignee_SubsidiaryNumber = kdEMPF.EORITIN_NL
+ cdy.ncts_Consignee_Name = If(adEMPF.Name_1, "") & If(adEMPF.Name_2, "")
+ cdy.ncts_Consignee_StreetNumber = adEMPF.Straße
+ cdy.ncts_Consignee_Postcode = adEMPF.PLZ
+ cdy.ncts_Consignee_City = adEMPF.Ort
+ If adEMPF.LandKz IsNot Nothing Then cdy.ncts_Consignee_Country = cProgramFunctions.getISO2Land(adEMPF.LandKz)
+ cdy.ncts_CustomsOfficeOfDestinationDeclared = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Bestimmungszollstelle)
+
+ End If
+
+ Case Else
+ cdy.ncts_Consignee_IdentificationNumber = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Verzollungsadresse_EORI)
+ cdy.ncts_Consignee_SubsidiaryNumber = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Verzollungsadresse_EORI_NL)
+ cdy.ncts_Consignee_Name = cProgramFunctions.isLeerNothing(SENDUNG.tblSnd_NCTSVerzollungsadresse)
+ cdy.ncts_Consignee_StreetNumber = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Verzollungsadresse_Strasse)
+ cdy.ncts_Consignee_Postcode = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Verzollungsadresse_PLZ)
+ cdy.ncts_Consignee_City = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Verzollungsadresse_Ort)
+ cdy.ncts_Consignee_Country = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Verzollungsadresse_Land)
+ cdy.ncts_CustomsOfficeOfDestinationDeclared = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Bestimmungszollstelle)
+
+ End Select
+
+
+ If SENDUNG.tblSnd_AbsenderKdNr > 0 Then
+ Dim adVERSENDER As New VERAG_PROG_ALLGEMEIN.cAdressen(SENDUNG.tblSnd_AbsenderKdNr)
+ Dim kdVERSENDER As New VERAG_PROG_ALLGEMEIN.cKunde(SENDUNG.tblSnd_AbsenderKdNr)
+ cdy.ncts_Consignor_IdentificationNumber = kdVERSENDER.EORITIN
+ cdy.ncts_Consignor_SubsidiaryNumber = kdVERSENDER.EORITIN_NL
+ cdy.ncts_Consignor_Name = If(adVERSENDER.Name_1, "") & If(adVERSENDER.Name_2, "")
+ cdy.ncts_Consignor_StreetNumber = adVERSENDER.Straße
+ cdy.ncts_Consignor_Postcode = adVERSENDER.PLZ
+ cdy.ncts_Consignor_City = adVERSENDER.Ort
+ If adVERSENDER.LandKz IsNot Nothing Then cdy.ncts_Consignor_Country = cProgramFunctions.getISO2Land(adVERSENDER.LandKz)
+ ' cdy.ncts_BestimmungsstelleDienststellennummer = cProgramFunctions.isLeerNothing(SENDUNG.NCTS_Bestimmungszollstelle)
+
+ End If
+
+ End If
+
+
+ ' NCTS= cdy
+ Catch ex As Exception
+ MsgBox(ex.StackTrace)
+ End Try
+ End Sub
+
+ Shared Sub setZollstelle(ByRef zst As String, AVISO As VERAG_PROG_ALLGEMEIN.cAviso)
+ Try
+ If AVISO Is Nothing Then Exit Sub
+ If AVISO.Grenzstelle.Replace("???", "") = "" Then
+ zst = AVISO.Zollstelle
+ Else
+
+ Dim GRZ As New VERAG_PROG_ALLGEMEIN.cGrenzstelle(AVISO.Grenzstelle)
+ If GRZ IsNot Nothing AndAlso GRZ.hasEntry Then
+ If GRZ.grz_ZollamtDST IsNot Nothing Then zst = GRZ.grz_ZollamtDST ' ZollDST setzen, zB "DE007701"'Suben Autobahngrenze
+ End If
+
+
+ 'Select Case AVISO.Grenzstelle
+ ' Case "SUB" : zst = "DE007701"'Suben Autobahngrenze
+ ' Case "SBG", "AMB" : zst = "DE007458" 'Bad Reichenhall-Autobahn
+ ' Case "WAI" : zst = "DE008904" 'Weiden-Waidhaus
+ ' Case "NEU" : zst = "DE007703" 'Passau
+ ' Case "WO_GE" : zst = "DE008752" 'Erlangen
+ ' ' Case "SFD" : zst = Asd ....DAKOS DE -.-
+ 'End Select
+ End If
+ Catch ex As Exception
+ MsgBox(ex.Message & ex.StackTrace)
+ End Try
+ End Sub
End Class
diff --git a/DAKOSY_Worker/cDakosyFunftions.vb b/DAKOSY_Worker/cDakosyFunftions.vb
index fa5f01c..9fe7a2c 100644
--- a/DAKOSY_Worker/cDakosyFunftions.vb
+++ b/DAKOSY_Worker/cDakosyFunftions.vb
@@ -111,7 +111,8 @@ Public Class cDakosyFunftions
Else
Select Case FIRMA_DY
Case "ATILLA"
- Return "VERG"
+ 'Return "VERG"
+ Return "ATIL"
Case "VERAG"
Return "VERG"
Case "DURMAZ"
diff --git a/UID/usrctlProcedures.Designer.vb b/UID/usrctlProcedures.Designer.vb
index b604d2f..d42a0a3 100644
--- a/UID/usrctlProcedures.Designer.vb
+++ b/UID/usrctlProcedures.Designer.vb
@@ -87,6 +87,7 @@ Partial Class usrctlProcedures
Me.Button48 = New System.Windows.Forms.Button()
Me.Button47 = New System.Windows.Forms.Button()
Me.TabPage6 = New System.Windows.Forms.TabPage()
+ Me.Button60 = New System.Windows.Forms.Button()
Me.Label23 = New System.Windows.Forms.Label()
Me.Button54 = New System.Windows.Forms.Button()
Me.Label19 = New System.Windows.Forms.Label()
@@ -182,7 +183,7 @@ Partial Class usrctlProcedures
Me.Button57 = New System.Windows.Forms.Button()
Me.Button58 = New System.Windows.Forms.Button()
Me.Button59 = New System.Windows.Forms.Button()
- Me.Button60 = New System.Windows.Forms.Button()
+ Me.Button61 = New System.Windows.Forms.Button()
Me.tbTRStat.SuspendLayout()
Me.TabPage3.SuspendLayout()
Me.TabPage1.SuspendLayout()
@@ -842,6 +843,15 @@ Partial Class usrctlProcedures
Me.TabPage6.Text = "MDM Importe"
Me.TabPage6.UseVisualStyleBackColor = True
'
+ 'Button60
+ '
+ Me.Button60.Location = New System.Drawing.Point(336, 63)
+ Me.Button60.Name = "Button60"
+ Me.Button60.Size = New System.Drawing.Size(106, 49)
+ Me.Button60.TabIndex = 74
+ Me.Button60.Text = "Plose PDF-Zuweisung"
+ Me.Button60.UseVisualStyleBackColor = True
+ '
'Label23
'
Me.Label23.AutoSize = True
@@ -1730,19 +1740,20 @@ Partial Class usrctlProcedures
Me.Button59.Text = "Firmenlogo in DB"
Me.Button59.UseVisualStyleBackColor = True
'
- 'Button60
+ 'Button61
'
- Me.Button60.Location = New System.Drawing.Point(336, 63)
- Me.Button60.Name = "Button60"
- Me.Button60.Size = New System.Drawing.Size(106, 49)
- Me.Button60.TabIndex = 74
- Me.Button60.Text = "Plose PDF-Zuweisung"
- Me.Button60.UseVisualStyleBackColor = True
+ Me.Button61.Location = New System.Drawing.Point(759, 79)
+ Me.Button61.Name = "Button61"
+ Me.Button61.Size = New System.Drawing.Size(145, 33)
+ Me.Button61.TabIndex = 72
+ Me.Button61.Text = "TEST NCTS FROM EXG"
+ Me.Button61.UseVisualStyleBackColor = True
'
'usrctlProcedures
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.Controls.Add(Me.Button61)
Me.Controls.Add(Me.Button59)
Me.Controls.Add(Me.Button58)
Me.Controls.Add(Me.Button57)
@@ -1989,4 +2000,5 @@ Partial Class usrctlProcedures
Friend WithEvents Button58 As Button
Friend WithEvents Button59 As Button
Friend WithEvents Button60 As Button
+ Friend WithEvents Button61 As Button
End Class
diff --git a/UID/usrctlProcedures.resx b/UID/usrctlProcedures.resx
index c9977e7..508fc32 100644
--- a/UID/usrctlProcedures.resx
+++ b/UID/usrctlProcedures.resx
@@ -123,10 +123,4 @@
True
-
- True
-
-
- True
-
\ No newline at end of file
diff --git a/UID/usrctlProcedures.vb b/UID/usrctlProcedures.vb
index 19d8398..f14db7a 100644
--- a/UID/usrctlProcedures.vb
+++ b/UID/usrctlProcedures.vb
@@ -5147,6 +5147,197 @@ OPTION (MAXRECURSION 1000);", "AVISO") '
Return Nothing
End Function
+ Private Sub Button61_Click(sender As Object, e As EventArgs) Handles Button61.Click
+ Dim referenz As String = InputBox("Bitte EXG-Referenz eingeben (mit % am Ende):", "NCTS-Test aus EXG", "4801/26033344%")
+ If String.IsNullOrWhiteSpace(referenz) Then Exit Sub
+
+ VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "UNISPED"
+ VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "SUB"
+
+ Try
+ Dim saveFile = TestNCTSFromEXG(referenz.Trim(), True, "T1")
+ MsgBox("NCTS-Test erfolgreich!" & vbCrLf & saveFile)
+ Process.Start(saveFile)
+ Catch ex As Exception
+ MsgBox("Fehler beim NCTS-Test:" & vbCrLf & ex.Message)
+ End Try
+ End Sub
+ Shared Function GET_IDsByBezugsNr(bezugsNr As String) As List(Of Integer)
+ Dim ids As New List(Of Integer)
+ Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
+
+ Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
+ Using cmd As New SqlCommand("SELECT exg_Id FROM tblDakosy_EXG WHERE exg_ObjectName LIKE @bezugsNr ORDER BY exg_ObjectName", conn)
+ cmd.Parameters.AddWithValue("@bezugsNr", bezugsNr.Replace("[", "[[]").Replace("%", "[%]").Replace("_", "[_]") & "[_]EXG[0-9]%")
+
+ Using dr = cmd.ExecuteReader()
+ While dr.Read()
+ ids.Add(Convert.ToInt32(dr("exg_Id")))
+ End While
+ End Using
+ End Using
+ End Using
+
+ Return ids
+ End Function
+
+ Shared Function TestNCTSFromEXG(bezugsNrEXG As String, Optional sendFTP As Boolean = False, Optional nctsArt As String = "T1") As String
+ Dim exgIds As List(Of Integer) = GET_IDsByBezugsNr(bezugsNrEXG)
+
+ If exgIds.Count = 0 Then
+ Throw New Exception("Keine EXG-Gestellungen gefunden für: " & bezugsNrEXG)
+ End If
+
+ Console.WriteLine("EXG-Test: " & exgIds.Count & " Gestellungen gefunden.")
+
+ Dim BezugsNr As String = "TEST_EXG_" & Now.ToString("MMddHHmmss")
+ Dim NCTS_OUT As New DAKOSY_Worker.cDakosyNCTSOut004
+ Dim DY_ANM As New cDakosy_Zollanmeldungen
+ Dim firma As String = ""
+ Dim niederlassung As String = ""
+ Dim firstEXG As Boolean = True
+
+ NCTS_OUT.ncts_ObjectName = BezugsNr
+
+ 'EXG-Daten laden und NCTS befüllen
+ For Each exgId In exgIds.Distinct()
+ Dim EXG As New DAKOSY_Worker.cDakosyEXG
+ EXG.exg_Id = exgId
+
+ If Not EXG.LOAD(True) Then Throw New Exception("EXG nicht gefunden: " & exgId)
+ If EXG.exg_POSITION Is Nothing OrElse EXG.exg_POSITION.Count = 0 Then Throw New Exception("EXG ohne Positionen: " & exgId)
+
+ If firstEXG Then
+ firma = EXG.exg_firma
+ niederlassung = EXG.exg_niederlassung
+ firstEXG = False
+ Else
+ If firma <> EXG.exg_firma OrElse niederlassung <> EXG.exg_niederlassung Then
+ Throw New Exception("EXG-Datensätze gehören zu unterschiedlichen Firmen oder Niederlassungen.")
+ End If
+ End If
+
+ DAKOSY_Worker.cDakosyNCTSOut004.fillNCTS_WithEXG(NCTS_OUT, EXG, BezugsNr) '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ Console.WriteLine("TEST NCTS: EXG übernommen: " & EXG.exg_ObjectName)
+
+
+ Dim HC = NCTS_OUT.ncts_HOUSE_CONSIGNMENT.Last()
+
+ Console.WriteLine("EXG: " & EXG.exg_ObjectName)
+ Console.WriteLine("EXG Versender: " & Convert.ToString(EXG.exg_Consignor_Name))
+ Console.WriteLine("EXG Empfänger: " & Convert.ToString(EXG.exg_Consignee_Name))
+ Console.WriteLine("NCTS Versender: " & Convert.ToString(HC.nctsHC_Consignor_Name))
+ Console.WriteLine("NCTS Empfänger: " & Convert.ToString(HC.nctsHC_Consignee_Name))
+
+
+ Next
+
+
+ If NCTS_OUT.ncts_HOUSE_CONSIGNMENT Is Nothing OrElse NCTS_OUT.ncts_HOUSE_CONSIGNMENT.Count = 0 Then
+ Throw New Exception("Keine NCTS-House-Consignments erzeugt.")
+ End If
+
+ 'Neue Zollanmeldung erstellen
+ DY_ANM.dy_ART = nctsArt
+ DY_ANM.dy_BezugsNr = BezugsNr
+
+ If Not DY_ANM.SAVE() OrElse DY_ANM.dy_Id <= 0 Then
+ Throw New Exception("NCTS-Zollanmeldung konnte nicht erstellt werden.")
+ End If
+
+ 'NCTS mit der neuen Zollanmeldung verknüpfen
+ NCTS_OUT.ncts_ObjectName = BezugsNr
+ NCTS_OUT.ncts_dyaAnmID = DY_ANM.dy_Id
+ NCTS_OUT.ncts_Trans_Referenz = BezugsNr & "_" & Now.ToString("ddMMyyHHmmSS") 'Eindeutig
+ NCTS_OUT.ncts_Erstellung_SB = DY_ANM.dy_Erstellung_SB
+ NCTS_OUT.ncts_LetzteBearbeitung = Now
+ NCTS_OUT.ncts_LetzteBearbeitung_SB = DY_ANM.dy_LetzteBearbeitung_SB
+ NCTS_OUT.ncts_firma = If(firma, "VERAG")
+ NCTS_OUT.ncts_niederlassung = If(niederlassung, "SUB")
+
+ 'CheckNCTSStringLengths(NCTS_OUT)
+ If Not NCTS_OUT.SAVE_ALL() Then
+ Throw New Exception("NCTS-Daten konnten nicht gespeichert werden. DY-ID: " & DY_ANM.dy_Id)
+ End If
+
+ 'NCTS-XML erstellen
+ Dim saveFile As String = ""
+
+
+ '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ If Not cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(NCTS_OUT, saveFile, "CREATE", Application.StartupPath, "NCTS") Then
+ Throw New Exception("NCTS-XML konnte nicht erzeugt werden.")
+ End If
+
+ If String.IsNullOrWhiteSpace(saveFile) OrElse Not System.IO.File.Exists(saveFile) Then
+ Throw New Exception("NCTS-XML-Datei fehlt.")
+ End If
+
+ 'Optional an DAKOSY senden
+ If sendFTP Then
+ If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, BezugsNr, DY_ANM.dy_Id, firma) Then
+ DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
+ DY_ANM.UPDATE_DATA()
+ DY_ANM.UPDATE_AVISO_SND(DY_ANM.dy_SendungsId)
+ Else
+ DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
+ Throw New Exception("NCTS-FTP-Versand fehlgeschlagen. DY-ID: " & DY_ANM.dy_Id)
+ End If
+ End If
+
+ Console.WriteLine("TEST NCTS: " & BezugsNr & " / DY-ID: " & DY_ANM.dy_Id)
+ Return saveFile
+ End Function
+ Private Shared Sub CheckNCTSStringLengths(NCTS_OUT As cDakosyNCTSOut004)
+ Using conn = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionFMZOLL
+
+ Dim lengths As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
+
+ Using cmd As New SqlClient.SqlCommand("
+ SELECT c.name, t.name AS DataType, c.max_length
+ FROM sys.columns c
+ INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
+ WHERE c.object_id = OBJECT_ID('dbo.tblDakosy_NCTSOut004')
+ AND t.name IN ('varchar', 'nvarchar', 'char', 'nchar')", conn)
+
+ Using dr = cmd.ExecuteReader()
+ While dr.Read()
+ Dim maxLen As Integer = CInt(dr("max_length"))
+ If maxLen = -1 Then Continue While
+ Dim dataType As String = CStr(dr("DataType"))
+ If dataType = "nvarchar" OrElse dataType = "nchar" Then maxLen \= 2
+ lengths.Add(CStr(dr("name")), maxLen)
+ End While
+ End Using
+ End Using
+
+ Dim errors As New List(Of String)
+
+ For Each prop In NCTS_OUT.GetType().GetProperties()
+ If prop.PropertyType IsNot GetType(String) OrElse Not prop.CanRead Then Continue For
+ If prop.GetIndexParameters().Length > 0 Then Continue For
+ If Not lengths.ContainsKey(prop.Name) Then Continue For
+
+ Dim value As String = TryCast(prop.GetValue(NCTS_OUT, Nothing), String)
+ If value Is Nothing Then Continue For
+
+ Dim maxLen As Integer = lengths(prop.Name)
+ Dim actualBytes As Integer = System.Text.Encoding.GetEncoding(1252).GetByteCount(value)
+ If actualBytes > maxLen Then
+ errors.Add(prop.Name & ": " & actualBytes & "/" & maxLen & " Bytes - " & value.Substring(0, Math.Min(value.Length, 100)))
+ End If
+ Next
+
+ If errors.Count > 0 Then
+ MsgBox("Zu lange NCTS-Felder:" & vbCrLf & String.Join(vbCrLf, errors))
+ Throw New Exception("Zu lange NCTS-Felder:" & vbCrLf & String.Join(vbCrLf, errors))
+ End If
+ If lengths.Count = 0 Then
+ Throw New Exception("Keine Spalten für tblDakosy_NCTSOut004 gefunden. Datenbank oder Schema prüfen.")
+ End If
+ End Using
+
+ End Sub
End Class
diff --git a/initATLASAufschubkonten/cWorker_AES_EXG.vb b/initATLASAufschubkonten/cWorker_AES_EXG.vb
index 1431830..6d883c7 100644
--- a/initATLASAufschubkonten/cWorker_AES_EXG.vb
+++ b/initATLASAufschubkonten/cWorker_AES_EXG.vb
@@ -1,4 +1,5 @@
Imports DAKOSY_Worker
+Imports VERAG_PROG_ALLGEMEIN
Public Class cWorker_AES_EXG
Public Shared Dateiname = ""
@@ -56,7 +57,8 @@ Public Class cWorker_AES_EXG
EXG.exg_CountryOfDestination = RESP.HeaderData.CountryOfDestination
EXG.exg_ReferenceNumberUCR = RESP.HeaderData.ReferenceNumberUCR
- frmDYNachrichtenVerarbeitung.setFirmaNL(VWI.Transaktion.IOPartner, VWI.Transaktion.IODivision3, EXG.exg_firma, EXG.exg_niederlassung)
+ frmDYNachrichtenVerarbeitung.setFirmaNL(VWI.Transaktion.IOPartner, VWI.Transaktion.IODivision3, EXG.exg_firma, EXG.exg_niederlassung, EXG.exg_ObjectName)
+ ' frmDYNachrichtenVerarbeitung.tryGetFirmaNiederlassung(EXG.exg_firma, EXG.exg_niederlassung, If(EXG.exg_Representative_ContactPerson_EMailAddress, "").ToString, EXG.exg_ObjectName)
If RESP.HeaderData.Consignee IsNot Nothing Then
EXG.exg_Consignee_Name = RESP.HeaderData.Consignee.Name
@@ -82,13 +84,23 @@ Public Class cWorker_AES_EXG
EXG.exg_Consignor_SubsidiaryNumber = RESP.HeaderData.Exporter.SubsidiaryNumber
End If
-
+ EXG.exg_POSITION.Clear()
If RESP.GoodsItem IsNot Nothing Then
For Each ITEM In RESP.GoodsItem
Dim EXG_ITEM As New cDakosy_EXG_Position
EXG_ITEM.exgPos_GoodsItemNumber = ITEM.GoodsItemNumber
- EXG_ITEM.exgPos_CommodityCode = ITEM.HarmonizedSystemSubHeadingCode & ITEM.CombinedNomenclatureCode
+
+
+ 'Tarifnummer prüfen und zusammenstellen
+ Dim hsCode As String = If(ITEM.HarmonizedSystemSubHeadingCode, "").Trim()
+ Dim cnCode As String = If(ITEM.CombinedNomenclatureCode, "").Trim()
+ EXG_ITEM.exgPos_CommodityCode = hsCode & cnCode
+ If (hsCode <> "" AndAlso hsCode.Length <> 6) OrElse (cnCode <> "" AndAlso cnCode.Length <> 2) OrElse (hsCode = "" AndAlso cnCode <> "") Then
+ Debug.WriteLine("Ungültige Warentarifnummer in Position " & ITEM.GoodsItemNumber & ": " & EXG_ITEM.exgPos_CommodityCode)
+ End If
+
+
EXG_ITEM.exgPos_DescriptionOfGoods = ITEM.DescriptionOfGoods
EXG_ITEM.exgPos_NetMass = ITEM.NetMass
EXG_ITEM.exgPos_GrossMass = ITEM.GrossMass
@@ -138,90 +150,76 @@ Public Class cWorker_AES_EXG
'----------------------------------------------------------------------
'Wenn markiert wurde, dass die NCTS Daten ergänzt werden sollten
'----------------------------------------------------------------------
- Dim testDY = True
- If testDY Or (EXG.exg_AutoFill_DyId IsNot Nothing AndAlso EXG.exg_AutoFill_DyId >= 0) Then
- Console.WriteLine("EXG: NCTS Verarbeitung starten...")
- '----------------------------------------------------------------------
- 'NCTS BEFÜLLEN!
- '----------------------------------------------------------------------
- Dim NCTS_OUT = fillNCTS_WithEXG_AutoFill(EXG, "TEEEEEEESTTT")
- '----------------------------------------------------------------------
- '----------------------------------------------------------------------
- testDY = True
+ ' Dim testDY = True
+ '----------------------------------------------------------------------
+ 'NCTS aktualisieren und nach letztem EXG-Rücklauf senden
+ '----------------------------------------------------------------------
+ If EXG.exg_AutoFill_DyId IsNot Nothing Then
+ Dim dyId As Integer = Convert.ToInt32(EXG.exg_AutoFill_DyId)
- 'Prüfen ob alle EXG Daten gekommen sind --> NCTS Senden!
- If testDY Or (cDakosyEXG.isFillNCTS_ID_ALLCompleted(EXG.exg_AutoFill_DyId)) Then
+ If dyId > 0 Then
+ Dim DY_ANM As New cDakosy_Zollanmeldungen(dyId)
+ Dim NCTS_OUT = fillNCTS_WithEXG_AutoFill(EXG, "") '<<<<<-- Befüllung der NCTS-Daten mit den EXG-Daten. Danach wird geprüft, ob alle Positionen befüllt wurden.
+
+ If NCTS_OUT Is Nothing Then
+ Throw New Exception("NCTS-Befüllung fehlgeschlagen. EXG-ID: " & EXG.exg_Id)
+ End If
- Dim DY_ANM = New cDakosy_Zollanmeldungen(EXG.exg_AutoFill_DyId)
- If NCTS_OUT IsNot Nothing Then
+ If cDakosyEXG.isFillNCTS_ID_ALLCompleted(dyId) Then
+ 'Alle EXG-Rückmeldungen vollständig: NCTS ergänzen und versenden
+ Dim BezugsNr As String = NCTS_OUT.ncts_ObjectName
+ If String.IsNullOrWhiteSpace(BezugsNr) Then BezugsNr = DY_ANM.dy_BezugsNr
+ If String.IsNullOrWhiteSpace(BezugsNr) Then Throw New Exception("NCTS-Bezugsnummer fehlt: " & dyId)
- 'Dim cDY As New cDakosyNCTSOut(cDyAnm.dy_Id, cDyAnm.dy_Erstellung_SB)
+ Dim firma As String = If(String.IsNullOrWhiteSpace(EXG.exg_firma), "VERAG", EXG.exg_firma)
+ Dim niederlassung As String = If(String.IsNullOrWhiteSpace(EXG.exg_niederlassung), "SUB", EXG.exg_niederlassung)
+ Dim nctsArt As String = If(String.IsNullOrWhiteSpace(DY_ANM.dy_ART), "T2", DY_ANM.dy_ART)
+
+ 'AVISO und Sendung anhand der bestehenden Zollanmeldung laden
+ Dim AVISO As cAviso = Nothing
+ Dim SENDUNG As cSendungen = Nothing
+
+ If DY_ANM.dy_AvisoId IsNot Nothing AndAlso Convert.ToInt32(DY_ANM.dy_AvisoId) > 0 Then
+ AVISO = cAviso.getAvisoById(DY_ANM.dy_AvisoId)
+ End If
+
+ If DY_ANM.dy_SendungsId IsNot Nothing AndAlso Convert.ToInt32(DY_ANM.dy_SendungsId) > 0 Then
+ SENDUNG = New cSendungen(Convert.ToInt32(DY_ANM.dy_SendungsId))
+ End If
+
+ 'AVISO-Vorblendung wie bei SendNCTS übernehmen
+ If AVISO IsNot Nothing Then
+ cDakosyNCTSOut004.loaddataFromAVISO(AVISO, SENDUNG, "", BezugsNr, NCTS_OUT, firma, False)
+ End If
+
+ 'Bestehende NCTS-Anmeldung weiterverwenden
+ NCTS_OUT.ncts_ObjectName = BezugsNr
NCTS_OUT.ncts_dyaAnmID = DY_ANM.dy_Id
NCTS_OUT.ncts_Erstellung_SB = DY_ANM.dy_Erstellung_SB
NCTS_OUT.ncts_LetzteBearbeitung = Now
NCTS_OUT.ncts_LetzteBearbeitung_SB = DY_ANM.dy_LetzteBearbeitung_SB
- NCTS_OUT.ncts_firma = EXG.exg_firma
- NCTS_OUT.ncts_niederlassung = EXG.exg_niederlassung
- ' DAKOSY_Interface_SEND.loadInClass_VersandanmeldungNCTSDE_004(NCTS_OUT, Me, DY_ANM, Me.FIRMA_DY)
+ NCTS_OUT.ncts_firma = firma
+ NCTS_OUT.ncts_niederlassung = niederlassung
+ NCTS_OUT.ncts_Declarationtype = nctsArt
+ NCTS_OUT.ncts_Trans_Referenz = BezugsNr & "_" & Now.ToString("ddMMyyHHmmss")
- 'VON HIER löschnen ohne test
- If testDY OrElse NCTS_OUT.SAVE_ALL() Then
-
-
- If If(EXG.exg_AutoFill_DyId, -1) > 0 Then 'Nur speichern wenn bei test exg_AutoFill_DyId befüllt ist
- NCTS_OUT.SAVE_ALL()
- End If
- Dim saveFile = ""
-
- If cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(NCTS_OUT, saveFile, "CREATE", Application.StartupPath, "NCTS") Then
-
- If saveFile <> "" Then
-
- frmStartOptions.copyFile(saveFile, "\\datenarchiv\Datenarchiv\DAKOSY\ECHTSYSTEM\EXG\upl\NCTS\")
-
- End If
- End If
-
- Else
- 'BIS HIER löschnen ohne test
-
- If NCTS_OUT.SAVE_ALL() Then
-
- Dim saveFile = ""
- If cDakosyNCTSOut004.generateVersandanmeldungNCTSDE_004(NCTS_OUT, saveFile, "CREATE", Application.StartupPath, "NCTS") Then
- If saveFile <> "" Then
-
- If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, NCTS_OUT.ncts_ObjectName, DY_ANM.dy_Id, NCTS_OUT.ncts_firma) Then
- DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
- 'If SENDUNG IsNot Nothing Then SENDUNG.SET_VGMA() ' MA Vorgeschrieben in Sendung setzen.
- Else
- DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
- MsgBox("Sendefehler!")
- End If
-
- End If
- End If
- End If
+ If NCTS_OUT.ncts_HOUSE_CONSIGNMENT Is Nothing OrElse NCTS_OUT.ncts_HOUSE_CONSIGNMENT.Count = 0 Then
+ Throw New Exception("Keine NCTS-House-Consignments vorhanden: " & dyId)
End If
- End If
+ 'Identischer Speicher- und Versandweg wie bei SendNCTS
+ Dim result As String = cDakosyNCTSOut004.SaveAndSendNCTS(
+ NCTS_OUT, DY_ANM, BezugsNr, firma, True, SENDUNG, "CREATE", nctsArt)
- If Not testDY Or If(EXG.exg_AutoFill_DyId, -1) > 0 Then 'Kann ganz weg kenn kein test
-
- DY_ANM.UPDATE_DATA()
-
- 'Beim Senden soll die Sendung überhnommen + tblSnd_VG_MA gesetzt werden --> damit gleich gesehen wird, dass der Akt in Bearbeitung ist.
- DY_ANM.UPDATE_AVISO_SND(DY_ANM.dy_SendungsId)
+ Console.WriteLine("EXG: Automatischer NCTS-Versand: " & BezugsNr & " - " & result)
End If
-
End If
End If
-
'----------------------------------------------------------------------
'QULAIFIZIERUNG!
'----------------------------------------------------------------------
@@ -298,24 +296,24 @@ Public Class cWorker_AES_EXG
End Function
Shared Function fillNCTS_WithEXG_AutoFill(EXG As cDakosyEXG, ObjectName As String) As cDakosyNCTSOut004
+ If EXG Is Nothing OrElse EXG.exg_AutoFill_DyId Is Nothing Then Return Nothing
- If (EXG.exg_AutoFill_DyId IsNot Nothing AndAlso EXG.exg_AutoFill_DyId >= 0) Then
- Dim NCTS_OUT = DAKOSY_Worker.cDakosyNCTSOut004.LOADByAnmIDFull(EXG.exg_AutoFill_DyId, True)
+ Dim dyId As Integer = Convert.ToInt32(EXG.exg_AutoFill_DyId)
+ If dyId <= 0 Then Return Nothing
- If NCTS_OUT Is Nothing Then
- NCTS_OUT = New DAKOSY_Worker.cDakosyNCTSOut004
- NCTS_OUT.ncts_ObjectName = ObjectName
- End If
+ Dim NCTS_OUT = DAKOSY_Worker.cDakosyNCTSOut004.LOADByAnmIDFull(dyId, True)
+ If NCTS_OUT Is Nothing Then Throw New Exception("NCTS-Entwurf nicht gefunden. DY-ID: " & dyId)
- Console.WriteLine("EXG: NCTS befüllen...")
- DAKOSY_Worker.cDakosyNCTSOut004.fillNCTS_WithEXG(NCTS_OUT, EXG, ObjectName)
- Console.WriteLine("EXG: NCTS updaten...")
- cDakosyEXG.UPDATE_FillNCTS_ID_Completed(EXG.exg_Id) 'Eintrag, dass AutoFill durchgelaufen ist
+ Console.WriteLine("EXG: NCTS befüllen: " & EXG.exg_Id)
+ DAKOSY_Worker.cDakosyNCTSOut004.fillNCTS_WithEXG(NCTS_OUT, EXG, NCTS_OUT.ncts_ObjectName)
- Return NCTS_OUT
+ If Not NCTS_OUT.SAVE_ALL() Then
+ Throw New Exception("NCTS konnte nicht gespeichert werden. DY-ID: " & dyId)
End If
- Return Nothing
+ cDakosyEXG.UPDATE_FillNCTS_ID_Completed(EXG.exg_Id)
+
+ Return NCTS_OUT
End Function
diff --git a/initATLASAufschubkonten/frmDYNachrichtenVerarbeitung.vb b/initATLASAufschubkonten/frmDYNachrichtenVerarbeitung.vb
index 585613b..ff40469 100644
--- a/initATLASAufschubkonten/frmDYNachrichtenVerarbeitung.vb
+++ b/initATLASAufschubkonten/frmDYNachrichtenVerarbeitung.vb
@@ -946,7 +946,13 @@ Public Class frmDYNachrichtenVerarbeitung
End If
End Sub
- Shared Sub setFirmaNL(iopartner As String, division As String, ByRef firma As String, ByRef nl As String)
+ Shared Sub setFirmaNL(iopartner As String, division As String, ByRef firma As String, ByRef nl As String, BezugsNr As String)
+
+ If iopartner = "UNAT" Then
+ firma = "UNISPED"
+ nl = "SUB"
+ End If
+
If division Is Nothing Then Exit Sub
If division <> "" Then
Select Case division
@@ -979,15 +985,40 @@ Public Class frmDYNachrichtenVerarbeitung
nl = "AMBAR"
Case "IME"
firma = "IMEX"
- nl = "IMX"
+ nl = "SUB"
Case "UNAT", "ATSPED"
firma = "UNISPED"
- nl = "ATSP"
+ nl = "SUB"
End Select
End If
+
+ If String.IsNullOrWhiteSpace(firma) OrElse String.IsNullOrWhiteSpace(nl) Then
+ If Not String.IsNullOrWhiteSpace(BezugsNr) AndAlso BezugsNr.Length >= 4 Then
+ Dim neueFirma As String = ""
+ Dim neueNL As String = ""
+
+ Select Case BezugsNr.Substring(0, 4)
+ Case "5501" : neueFirma = "IMEX" : neueNL = "SUB"
+ Case "5701" : neueFirma = "AMBAR" : neueNL = "SBG"
+ Case "4801", "4802" : neueFirma = "ATILLA" : neueNL = "SUB"
+ Case "5801" : neueFirma = "FRONTOFFICE" : neueNL = "SUB"
+ Case "5802" : neueFirma = "FRONTOFFICE" : neueNL = "KLIPP"
+ Case "5003" : neueFirma = "VERAG" : neueNL = "SBG"
+ Case "5103" : neueFirma = "VERAG" : neueNL = "WAI"
+ Case "5303" : neueFirma = "VERAG" : neueNL = "NKD"
+ Case "4803", "4805", "4811", "7001" : neueFirma = "VERAG" : neueNL = "SUB"
+ Case "5601" : neueFirma = "UNISPED" : neueNL = "SUB"
+ End Select
+
+ If String.IsNullOrWhiteSpace(firma) Then firma = neueFirma
+ If String.IsNullOrWhiteSpace(nl) Then nl = neueNL
+ End If
+ End If
+
+
End Sub
@@ -1004,7 +1035,7 @@ Public Class frmDYNachrichtenVerarbeitung
Function getVerahrensartFromBezugsNr(bezugsNr) As String
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
- If SQL.getValueTxtBySql("SELECT TOP 1 COUNT(*) FROM tblDakosy_NCTSOut004 WHERE ncts_ObjectName='" & bezugsNr & "'", "FMZOLL") > 0 Then Return "NCTS"
+ If SQL.getValueTxtBySql("Select TOP 1 COUNT(*) FROM tblDakosy_NCTSOut004 WHERE ncts_ObjectName='" & bezugsNr & "'", "FMZOLL") > 0 Then Return "NCTS"
If SQL.getValueTxtBySql("SELECT TOP 1 COUNT(*) FROM tblDakosy_NCTSOut WHERE ncts_ObjectName='" & bezugsNr & "'", "FMZOLL") > 0 Then Return "NCTS"
If SQL.getValueTxtBySql("SELECT TOP 1 COUNT(*) FROM tblDakosy_EZA WHERE eza_ObjectName='" & bezugsNr & "'", "FMZOLL") > 0 Then Return "EZA"
Return ""
@@ -7214,6 +7245,7 @@ Public Class frmDYNachrichtenVerarbeitung
Public Shared Sub tryGetFirmaNiederlassung(ByRef firma As String, ByRef niederlassung As String, Mail As String, BezugsNr As String)
+
If Mail.Contains("@imex") Then
firma = "IMEX"
niederlassung = "IMEX"