VERAG_CustomsDeclarations, einheitliches Datenmodell IMPORT + Rountinemanager Anpassung
This commit is contained in:
@@ -72,6 +72,8 @@
|
||||
<Compile Include="cDakosy_Statusmeldungen.vb" />
|
||||
<Compile Include="cDY_Statusliste.vb" />
|
||||
<Compile Include="cDakosy_Stammreferenzen.vb" />
|
||||
<Compile Include="cImporter_DHFToVERAG.vb" />
|
||||
<Compile Include="cImporter_TelotecToVERAG.vb" />
|
||||
<Compile Include="cImporter_DakosyToVERAG.vb" />
|
||||
<Compile Include="cZollsysteme_Aktenbeschriftung.vb" />
|
||||
<Compile Include="cZOLL_IMPORT.vb" />
|
||||
|
||||
594
DAKOSY_Worker/cImporter_DHFToVERAG.vb
Normal file
594
DAKOSY_Worker/cImporter_DHFToVERAG.vb
Normal file
@@ -0,0 +1,594 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Reflection
|
||||
Imports java.lang
|
||||
Imports TELOTEC_Worker
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class cImporter_DHFToVERAG
|
||||
|
||||
Private SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
Private Const EZOLL_DB As String = "EZOLL"
|
||||
|
||||
|
||||
' =====================================================================
|
||||
' MAIN ENTRY
|
||||
' =====================================================================
|
||||
Public Function ImportEZOLLByLRN(CRN As String, EZOLL_DB As String, Optional overwrite As Boolean = True) As Boolean
|
||||
Try
|
||||
If String.IsNullOrWhiteSpace(CRN) Then Return False
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' BASIS-REFERENZ (zsAnmRefs)
|
||||
' ---------------------------------------------------------------
|
||||
Dim dtRefs As DataTable =
|
||||
SQL.loadDgvBySql(
|
||||
"SELECT TOP 1 * FROM zsAnmRefs WHERE CRN='" & CRN & "' ORDER BY GeaendertAm DESC",
|
||||
EZOLL_DB)
|
||||
|
||||
If dtRefs Is Nothing OrElse dtRefs.Rows.Count = 0 Then Return False
|
||||
Dim rRef = dtRefs.Rows(0)
|
||||
|
||||
Dim LizenzNr = rRef("LizenzNr")
|
||||
Dim OperatorID = rRef("OperatorID")
|
||||
Dim VorgangID = rRef("VorgangID")
|
||||
Dim AnmID = rRef("AnmID")
|
||||
' MsgBox(AnmID)
|
||||
Dim LRN As String = ToStringSafe(rRef("LRN"))
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' DUPLIKAT
|
||||
' ---------------------------------------------------------------
|
||||
If Not overwrite AndAlso ExistsInVERAG(CRN) Then Return False
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' HEADER (zsAnmHea)
|
||||
' ---------------------------------------------------------------
|
||||
Dim dtHea = SQL.loadDgvBySql(
|
||||
$"SELECT * FROM zsAnmHea WHERE LizenzNr='{LizenzNr}' AND OperatorID={OperatorID} AND VorgangID='{VorgangID}' AND AnmID={AnmID}",
|
||||
EZOLL_DB)
|
||||
|
||||
If dtHea.Rows.Count = 0 Then Return False
|
||||
Dim h = dtHea.Rows(0)
|
||||
|
||||
Dim ZA As cVERAG_CustomsDeclarations = cVERAG_CustomsDeclarations.loadByMRN(CRN, False)
|
||||
|
||||
ZA.za_System = "DHF"
|
||||
If EZOLL_DB = "EZOLL_UNISPED" Then ZA.za_System = "DHF_UNISPED"
|
||||
ZA.za_CustomsSystem = "ACCS"
|
||||
ZA.za_CustomsSystemCountry = "AT"
|
||||
ZA.za_REGIME = "IMPORT"
|
||||
ZA.za_IsExternalSystem = False
|
||||
ZA.za_IsFinalDeclaration = True
|
||||
|
||||
ZA.za_MRN = CRN
|
||||
ZA.za_LRN = LRN
|
||||
|
||||
ZA.za_DeclarationDate = ToNullableDate(h("DecDT"))
|
||||
ZA.za_AcceptanceDate = ToNullableDate(h("AccDT"))
|
||||
ZA.za_ReleaseDate = ToNullableDate(h("DecDT"))
|
||||
|
||||
''ZA.za_CountryDispatch = ToStringSafe(h("Locs_Disp"))
|
||||
' ZA.za_CountryDestination = ToStringSafe(h("Locs_Dest"))
|
||||
ZA.za_CountryImport = "AT"
|
||||
|
||||
' ZA.za_MainProcedure = Left(ToStringSafe(h("ProcCd")), 2)
|
||||
|
||||
|
||||
' ZA.za_WarehouseCode = ToStringSafe(h("Locs_GdsLocCd"))
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' TRANSPORT (zsAnmTransp)
|
||||
' ---------------------------------------------------------------
|
||||
Dim dtTransp = SQL.loadDgvBySql(
|
||||
$"SELECT * FROM zsAnmTransp WHERE LizenzNr='{LizenzNr}' AND OperatorID={OperatorID} AND VorgangID='{VorgangID}' AND AnmID={AnmID}",
|
||||
EZOLL_DB)
|
||||
|
||||
If dtTransp.Rows.Count > 0 Then
|
||||
ZA.za_MeansOfTransport_Vehicle = ToStringSafe(dtTransp.Rows(0)("DepIdnt"))
|
||||
ZA.za_TransportModeBorder = ToStringSafe(dtTransp.Rows(0)("BordMo"))
|
||||
End If
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' VALUE DATA (zsAnmValData)
|
||||
' ---------------------------------------------------------------
|
||||
Dim dtVal = SQL.loadDgvBySql(
|
||||
$"SELECT * FROM zsAnmValData WHERE LizenzNr='{LizenzNr}' AND OperatorID={OperatorID} AND VorgangID='{VorgangID}' AND AnmID={AnmID}",
|
||||
EZOLL_DB)
|
||||
|
||||
If dtVal.Rows.Count > 0 Then
|
||||
ZA.za_InvoiceAmount = ToNullableDecimal(dtVal.Rows(0)("InvVal"))
|
||||
ZA.za_InvoiceCurrency = ToStringSafe(dtVal.Rows(0)("InvCurr"))
|
||||
End If
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' PARTIES
|
||||
' ---------------------------------------------------------------
|
||||
AddPartyFromEZOLL(ZA, "IMPORTER", "zsAnmConeeTra", LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
AddPartyFromEZOLL(ZA, "EXPORTER", "zsAnmConorTra", LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
AddPartyFromEZOLL(ZA, "DECLARANT", "zsAnmDeclarant", LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
LoadPartiesFromEZOLL(ZA, LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' DOCUMENTS
|
||||
' ---------------------------------------------------------------
|
||||
LoadEZOLL_HeaderDocuments_FromZsAnmDocument(ZA, LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' DUTIES
|
||||
' ---------------------------------------------------------------
|
||||
LoadEZOLL_Duties(ZA, LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' POSITIONEN (zsAnmGdsitem)
|
||||
' ---------------------------------------------------------------
|
||||
Dim dtItems = SQL.loadDgvBySql(
|
||||
$"SELECT * FROM zsAnmGdsitem WHERE LizenzNr='{LizenzNr}' AND OperatorID={OperatorID} AND VorgangID='{VorgangID}' AND AnmID={AnmID} ORDER BY GdsItemID",
|
||||
EZOLL_DB)
|
||||
|
||||
For Each r In dtItems.Rows
|
||||
Dim it As New cVERAG_CustomsDeclarations_Item
|
||||
|
||||
it.zaItem_PosNo = r("GdsItemID")
|
||||
it.zaItem_HSCode = ToStringSafe(r("ComCd"))
|
||||
it.zaItem_HSAddCodes4 = ToStringSafe(r("ComCd"))
|
||||
it.zaItem_Description = ToStringSafe(r("GdsDes"))
|
||||
it.zaItem_OriginCountry = ToStringSafe(r("Orig"))
|
||||
it.zaItem_NetMass = ToNullableDecimal(r("Net"))
|
||||
it.zaItem_InvoiceValueEUR = ToNullableDecimal(r("ItVal"))
|
||||
it.zaItem_StatisticalValueEUR = ToNullableDecimal(r("StatVal"))
|
||||
it.zaItem_StatisticalValueEUR = ToNullableDecimal(r("StatVal"))
|
||||
|
||||
LoadEZOLL_HSAddCodes(it, LizenzNr, OperatorID, VorgangID, AnmID, r("GdsItemID"))
|
||||
LoadEZOLL_ItemDocuments(it, LizenzNr, OperatorID, VorgangID, AnmID)
|
||||
|
||||
it.zaItem_MainProcedure = ToStringSafe(r("ProcCd"))
|
||||
it.zaItem_AdditionalProc = ToStringSafe(r("ProcAddCd"))
|
||||
it.zaItem_OriginCountry = ToStringSafe(r("Orig"))
|
||||
it.zaItem_PreferenceCode = ToStringSafe(r("Pref"))
|
||||
it.zaItem_QuotaNo = ToStringSafe(r("Quota"))
|
||||
' -------------------------------
|
||||
' POSITIONS-DOKUMENTE
|
||||
' -------------------------------
|
||||
Dim dtDocs = SQL.loadDgvBySql(
|
||||
$"SELECT * FROM zsAnmGdsItemDocCerts WHERE LizenzNr='{LizenzNr}' AND OperatorID={OperatorID} AND VorgangID='{VorgangID}' AND AnmID={AnmID} AND GdsItemID={r("GdsItemID")}",
|
||||
EZOLL_DB)
|
||||
|
||||
'For Each d In dtDocs.Rows
|
||||
' Dim doc As New cVERAG_CustomsDeclarations_Document With {
|
||||
' .zaDoc_Code = ToStringSafe(d("DocCd")),
|
||||
' .zaDoc_Reference = ToStringSafe(d("DRef")),
|
||||
' .zaDoc_Date = ToNullableDate(d("IssD"))
|
||||
' }
|
||||
' it.Documents.Add(doc)
|
||||
'Next
|
||||
|
||||
ZA.Items.Add(it)
|
||||
Next
|
||||
|
||||
' ---------------------------------------------------------------
|
||||
' SAVE
|
||||
' ---------------------------------------------------------------
|
||||
Return ZA.SAVE()
|
||||
|
||||
Catch ex As Exception
|
||||
cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodInfo.GetCurrentMethod.Name)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub LoadEZOLL_Duties(ByRef ZA As cVERAG_CustomsDeclarations,
|
||||
LizenzNr As String,
|
||||
OperatorID As Integer,
|
||||
VorgangID As String,
|
||||
AnmID As Integer)
|
||||
|
||||
Dim sql As String =
|
||||
" SELECT d.GdsItemID,
|
||||
dc.Ty,
|
||||
dc.Amnt,
|
||||
dc.Curr,
|
||||
dc.Base,
|
||||
dc.RateUsed,
|
||||
h.DefPayRef
|
||||
FROM zzAktivitaet a
|
||||
INNER JOIN ztIMsgGdsItem i
|
||||
ON a.LizenzNr=i.LizenzNr AND a.OperatorID=i.OperatorID AND a.IMsgID=i.IMsgID
|
||||
INNER JOIN ztIMsgGdsItemDutyCalc dc
|
||||
ON i.LizenzNr=dc.LizenzNr AND i.OperatorID=dc.OperatorID
|
||||
AND i.IMsgID=dc.IMsgID AND i.GdsItemID=dc.GdsItemID
|
||||
INNER JOIN zsAnmGdsItem d
|
||||
ON a.LizenzNr=d.LizenzNr AND a.OperatorID=d.OperatorID
|
||||
AND a.VorgangID=d.VorgangID AND a.AnmID=d.AnmID
|
||||
AND i.ItNr=d.ItNr
|
||||
INNER JOIN zsAnmHea h
|
||||
ON d.LizenzNr=h.LizenzNr AND d.OperatorID=h.OperatorID
|
||||
AND d.VorgangID=h.VorgangID AND d.AnmID=h.AnmID
|
||||
WHERE a.MsgTyp='EZ922'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM zzAktivitaet b
|
||||
WHERE b.MsgTyp='EZ922'
|
||||
AND a.LizenzNr=b.LizenzNr
|
||||
AND a.OperatorID=b.OperatorID
|
||||
AND a.VorgangID=b.VorgangID
|
||||
AND a.AnmID=b.AnmID
|
||||
AND a.AktivitaetID < b.AktivitaetID
|
||||
)
|
||||
AND dc.Amnt IS NOT NULL
|
||||
AND d.LizenzNr=@liz
|
||||
AND d.OperatorID=@op
|
||||
AND d.VorgangID=@vg
|
||||
AND d.AnmID=@anm"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("liz", LizenzNr),
|
||||
New SQLVariable("op", OperatorID),
|
||||
New SQLVariable("vg", VorgangID),
|
||||
New SQLVariable("anm", AnmID)
|
||||
}
|
||||
|
||||
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql_Param(sql, "EZOLL", , p)
|
||||
If dt Is Nothing OrElse dt.Rows.Count = 0 Then Exit Sub
|
||||
|
||||
For Each r As DataRow In dt.Rows
|
||||
|
||||
Dim duty As New cVERAG_CustomsDeclarations_Duty
|
||||
|
||||
duty.zaDuty_DutyType = ToStringSafe(r("Ty"))
|
||||
duty.zaDuty_AmountEUR = ToNullableDecimal(r("Amnt"))
|
||||
duty.zaDuty_Currency = If(ToStringSafe(r("Curr")) = "", "EUR", ToStringSafe(r("Curr")))
|
||||
|
||||
' duty.zaDuty_BaseAmount = ToNullableDecimal(r("Base"))
|
||||
' duty.zaDuty_Rate = ToNullableDecimal(r("RateUsed"))
|
||||
|
||||
duty.zaDuty_AccountNo = ToStringSafe(r("DefPayRef"))
|
||||
|
||||
ZA.Duties.Add(duty)
|
||||
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub LoadEZOLL_ItemDocuments(ByRef IT As cVERAG_CustomsDeclarations_Item,
|
||||
LizenzNr As String,
|
||||
OperatorID As Integer,
|
||||
VorgangID As String,
|
||||
AnmID As Integer)
|
||||
|
||||
Dim sql As String =
|
||||
"SELECT * FROM zsAnmGdsItemDocCerts " &
|
||||
"WHERE LizenzNr=@liz " &
|
||||
" AND OperatorID=@op " &
|
||||
" AND VorgangID=@vg " &
|
||||
" AND AnmID=@anm " &
|
||||
"ORDER BY DocCertsID"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("liz", LizenzNr),
|
||||
New SQLVariable("op", OperatorID),
|
||||
New SQLVariable("vg", VorgangID),
|
||||
New SQLVariable("anm", AnmID)
|
||||
}
|
||||
|
||||
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql_Param(sql, EZOLL_DB, , p)
|
||||
If dt Is Nothing OrElse dt.Rows.Count = 0 Then Exit Sub
|
||||
|
||||
For Each r As DataRow In dt.Rows
|
||||
|
||||
Dim doc As New cVERAG_CustomsDeclarations_Document
|
||||
|
||||
' ------------------------------------------------------------
|
||||
' Kerndaten
|
||||
' ------------------------------------------------------------
|
||||
doc.zaDoc_Code = ToStringSafe(r("DocCd"))
|
||||
doc.zaDoc_Reference = ToStringSafe(r("DRef"))
|
||||
doc.zaDoc_Date = ToStringSafe(r("IssD"))
|
||||
|
||||
doc.zaDoc_Presentation = ToStringSafe(r("Avail"))
|
||||
doc.zaDoc_Description = ToStringSafe(r("DTy"))
|
||||
|
||||
' ------------------------------------------------------------
|
||||
' Zusatzinformationen (optional, aber sauber)
|
||||
' ------------------------------------------------------------
|
||||
'doc.zaDoc_DepreciationAmount = ToNullableDecimal(r("Quant"))
|
||||
doc.zaDoc_DepreciationUnitmeasurement = ToStringSafe(r("Unit"))
|
||||
doc.zaDoc_DepreciationUnitmeasurementQualifier = ToStringSafe(r("WOUnit"))
|
||||
|
||||
IT.Documents.Add(doc)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
' =====================================================================
|
||||
' HELPER
|
||||
' =====================================================================
|
||||
Private Sub AddPartyFromEZOLL(ByRef ZA As cVERAG_CustomsDeclarations,
|
||||
role As String,
|
||||
tableName As String,
|
||||
LizenzNr As String, OperatorID As String, VorgangID As String, AnmID As String)
|
||||
|
||||
Dim dt = SQL.loadDgvBySql(
|
||||
$"SELECT * FROM {tableName} WHERE LizenzNr='{LizenzNr}' AND OperatorID={OperatorID} AND VorgangID='{VorgangID}' AND AnmID={AnmID}",
|
||||
EZOLL_DB)
|
||||
|
||||
If dt.Rows.Count = 0 Then Exit Sub
|
||||
Dim r = dt.Rows(0)
|
||||
|
||||
Dim p As New cVERAG_CustomsDeclarations_Parties With {
|
||||
.zaParty_Role = role,
|
||||
.zaParty_Name = ToStringSafe(r("Na")),
|
||||
.zaParty_Street = ToStringSafe(r("Strt")),
|
||||
.zaParty_PostalCode = ToStringSafe(r("Pst")),
|
||||
.zaParty_City = ToStringSafe(r("Cty")),
|
||||
.zaParty_Country = ToStringSafe(r("Ctry")),
|
||||
.zaParty_EORI = ToStringSafe(r("TIN"))
|
||||
}
|
||||
|
||||
ZA.Parties.Add(p)
|
||||
End Sub
|
||||
|
||||
Private Sub LoadEZOLL_HSAddCodes(ByRef item As cVERAG_CustomsDeclarations_Item,
|
||||
LizenzNr As String,
|
||||
OperatorID As Integer,
|
||||
VorgangID As String,
|
||||
AnmID As Integer,
|
||||
GdsItemID As Integer)
|
||||
|
||||
Dim sql As String =
|
||||
"SELECT AddCd " &
|
||||
"FROM zsAnmGdsItemComCdAdd " &
|
||||
"WHERE LizenzNr=@liz " &
|
||||
" AND OperatorID=@op " &
|
||||
" AND VorgangID=@vg " &
|
||||
" AND AnmID=@anm " &
|
||||
" AND GdsItemID=@gid " &
|
||||
"ORDER BY sequenceNumber"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("liz", LizenzNr),
|
||||
New SQLVariable("op", OperatorID),
|
||||
New SQLVariable("vg", VorgangID),
|
||||
New SQLVariable("anm", AnmID),
|
||||
New SQLVariable("gid", GdsItemID)
|
||||
}
|
||||
|
||||
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql_Param(sql, EZOLL_DB, , p)
|
||||
If dt Is Nothing OrElse dt.Rows.Count = 0 Then Exit Sub
|
||||
|
||||
Dim idx As Integer = 1
|
||||
|
||||
For Each r As DataRow In dt.Rows
|
||||
If idx > 10 Then Exit For ' VERAG-Modell: max. 10 Zusatzcodes
|
||||
|
||||
Dim code As String = ToStringSafe(r("AddCd"))
|
||||
If String.IsNullOrWhiteSpace(code) Then Continue For
|
||||
|
||||
Select Case idx
|
||||
Case 1 : item.zaItem_HSAddCodes1 = code
|
||||
Case 2 : item.zaItem_HSAddCodes2 = code
|
||||
Case 3 : item.zaItem_HSAddCodes3 = code
|
||||
Case 4 : item.zaItem_HSAddCodes4 = code
|
||||
Case 5 : item.zaItem_HSAddCodes5 = code
|
||||
Case 6 : item.zaItem_HSAddCodes6 = code
|
||||
Case 7 : item.zaItem_HSAddCodes7 = code
|
||||
Case 8 : item.zaItem_HSAddCodes8 = code
|
||||
Case 9 : item.zaItem_HSAddCodes9 = code
|
||||
Case 10 : item.zaItem_HSAddCodes10 = code
|
||||
End Select
|
||||
|
||||
idx += 1
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadEZOLL_HeaderDocuments_FromZsAnmDocument(
|
||||
ByRef ZA As cVERAG_CustomsDeclarations,
|
||||
LizenzNr As String,
|
||||
OperatorID As Integer,
|
||||
VorgangID As String,
|
||||
AnmID As Integer)
|
||||
|
||||
Dim sql As String =
|
||||
"SELECT * FROM zsAnmDocument " &
|
||||
"WHERE LizenzNr=@liz " &
|
||||
" AND OperatorID=@op " &
|
||||
" AND VorgangID=@vg " &
|
||||
" AND AnmID=@anm " &
|
||||
" AND ISNULL(KzDeleted,0)=0 " &
|
||||
"ORDER BY sequenceNumber"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("liz", LizenzNr),
|
||||
New SQLVariable("op", OperatorID),
|
||||
New SQLVariable("vg", VorgangID),
|
||||
New SQLVariable("anm", AnmID)
|
||||
}
|
||||
|
||||
Dim dt = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql_Param(sql, EZOLL_DB, , p)
|
||||
If dt Is Nothing OrElse dt.Rows.Count = 0 Then Exit Sub
|
||||
|
||||
For Each r As DataRow In dt.Rows
|
||||
|
||||
Dim doc As New cVERAG_CustomsDeclarations_Document
|
||||
|
||||
' ------------------------------------------------------------
|
||||
' Kerndaten
|
||||
' ------------------------------------------------------------
|
||||
doc.zaDoc_Code = ToStringSafe(r("type"))
|
||||
|
||||
|
||||
doc.zaDoc_Reference = ToStringSafe(r("referenceNumber"))
|
||||
doc.zaDoc_Date = ToNullableDate(r("validityDate"))
|
||||
'doc.zaDoc_Section = ToStringSafe(r("DocumentTypID"))
|
||||
doc.zaDoc_Description = ToStringSafe(r("text"))
|
||||
|
||||
' ------------------------------------------------------------
|
||||
' Zusatzinformationen (optional, aber strukturell korrekt)
|
||||
' ------------------------------------------------------------
|
||||
doc.zaDoc_Presentation = ToStringSafe(r("typeOfPackages"))
|
||||
|
||||
doc.zaDoc_DepreciationAmount = ToNullableDecimal(r("amount"))
|
||||
|
||||
doc.zaDoc_DepreciationUnitmeasurement =
|
||||
ToStringSafe(r("measurementUnitAndQualifier"))
|
||||
|
||||
' ------------------------------------------------------------
|
||||
' Freitext / Hinweise
|
||||
' ------------------------------------------------------------
|
||||
If Not IsDBNull(r("text")) AndAlso ToStringSafe(r("text")) <> "" Then
|
||||
doc.zaDoc_Reference =
|
||||
(doc.zaDoc_Reference & " " & ToStringSafe(r("text"))).Trim()
|
||||
End If
|
||||
|
||||
ZA.Documents.Add(doc)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadPartiesFromEZOLL(ByRef ZA As cVERAG_CustomsDeclarations,
|
||||
LizenzNr As String,
|
||||
OperatorID As Integer,
|
||||
VorgangID As String,
|
||||
AnmID As Integer)
|
||||
|
||||
Dim sqlAdr As String =
|
||||
"SELECT * FROM zsAnmAdr " &
|
||||
"WHERE LizenzNr=@liz AND OperatorID=@op AND VorgangID=@vg AND AnmID=@anm"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("liz", LizenzNr),
|
||||
New SQLVariable("op", OperatorID),
|
||||
New SQLVariable("vg", VorgangID),
|
||||
New SQLVariable("anm", AnmID)
|
||||
}
|
||||
|
||||
Dim dtAdr = SQL.loadDgvBySql_Param(sqlAdr, EZOLL_DB, , p)
|
||||
If dtAdr Is Nothing OrElse dtAdr.Rows.Count = 0 Then Exit Sub
|
||||
|
||||
For Each r As DataRow In dtAdr.Rows
|
||||
|
||||
Dim party As New cVERAG_CustomsDeclarations_Parties
|
||||
|
||||
party.zaParty_Role = r("AdressTypID")
|
||||
|
||||
party.zaParty_EORI = ToStringSafe(r("identificationNumber"))
|
||||
party.zaParty_Name = ToStringSafe(r("name"))
|
||||
party.zaParty_Street = ToStringSafe(r("streetAndNumber"))
|
||||
party.zaParty_PostalCode = ToStringSafe(r("postcode"))
|
||||
party.zaParty_City = ToStringSafe(r("city"))
|
||||
party.zaParty_Country = ToStringSafe(r("country"))
|
||||
|
||||
party.zaParty_ContactName = ToStringSafe(r("Contactname"))
|
||||
party.zaParty_Phone = ToStringSafe(r("ContactphoneNumber"))
|
||||
party.zaParty_Email = ToStringSafe(r("ContacteMailAdress"))
|
||||
|
||||
ZA.Parties.Add(party)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
Private Function ExistsInVERAG(CRN As String) As Boolean
|
||||
Dim sql =
|
||||
"SELECT TOP 1 1 FROM tblVERAG_CustomsDeclarations " &
|
||||
"WHERE za_System='EZOLL' AND (za_MRN=@CRN )"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("CRN", CRN)
|
||||
}
|
||||
|
||||
Dim dt = New SQL().loadDgvBySql_Param(sql, "VERAG", , p)
|
||||
Return dt IsNot Nothing AndAlso dt.Rows.Count > 0
|
||||
End Function
|
||||
|
||||
' =====================================================================
|
||||
' PARTY HELPER
|
||||
' =====================================================================
|
||||
Private Sub AddParty(ByRef za As cVERAG_CustomsDeclarations,
|
||||
eori As String,
|
||||
role As String,
|
||||
name As Object,
|
||||
street As Object,
|
||||
plz As Object,
|
||||
city As Object,
|
||||
country As Object,
|
||||
uid As Object)
|
||||
|
||||
If String.IsNullOrWhiteSpace(ToStringSafe(name)) Then Exit Sub
|
||||
|
||||
Dim p As New cVERAG_CustomsDeclarations_Parties With {
|
||||
.zaParty_EORI = eori,
|
||||
.zaParty_Role = role,
|
||||
.zaParty_Name = ToStringSafe(name),
|
||||
.zaParty_Street = ToStringSafe(street),
|
||||
.zaParty_PostalCode = ToStringSafe(plz),
|
||||
.zaParty_City = ToStringSafe(city),
|
||||
.zaParty_Country = ToStringSafe(country),
|
||||
.zaParty_VATNumber = ToStringSafe(uid)
|
||||
}
|
||||
|
||||
za.Parties.Add(p)
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
' =========================================================================
|
||||
' Small helpers (falls du sie schon hast, kannst du diese entfernen)
|
||||
' =========================================================================
|
||||
Private Function ToStringSafe(v As Object) As String
|
||||
If v Is Nothing Then Return Nothing
|
||||
If v Is DBNull.Value Then Return Nothing
|
||||
Dim s As String = TryCast(v, String)
|
||||
If s IsNot Nothing Then Return s
|
||||
Return Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
End Function
|
||||
|
||||
Private Function ToInt(v As Object) As Integer
|
||||
If v Is Nothing Then Return 0
|
||||
If v Is DBNull.Value Then Return 0
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim i As Integer
|
||||
If Integer.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, i) Then Return i
|
||||
Return 0
|
||||
End Function
|
||||
|
||||
Private Function ToNullableDecimal(v As Object) As Decimal?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If v Is DBNull.Value Then Return Nothing
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim d As Decimal
|
||||
If Decimal.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, d) Then Return d
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Function ToNullableDate(v As Object) As Date?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If v Is DBNull.Value Then Return Nothing
|
||||
If TypeOf v Is Date Then Return CType(v, Date)
|
||||
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim dt As Date
|
||||
If Date.TryParse(s, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, dt) Then Return dt
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Function ToNullableBool(v As Object) As Boolean?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If v Is DBNull.Value Then Return Nothing
|
||||
If TypeOf v Is Boolean Then Return CType(v, Boolean)
|
||||
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture).Trim().ToLowerInvariant()
|
||||
If s = "J" OrElse s = "1" OrElse s = "true" OrElse s = "y" OrElse s = "yes" Then Return True
|
||||
If s = "N" OrElse s = "0" OrElse s = "false" OrElse s = "n" OrElse s = "no" Then Return False
|
||||
Return Nothing
|
||||
End Function
|
||||
End Class
|
||||
@@ -7,251 +7,352 @@ Public Class cImporter_DakosyToVERAG
|
||||
' ========================================================================
|
||||
' MAIN ENTRY
|
||||
' ========================================================================
|
||||
Public Function ImportDakosyEZA(eza As cDakosyEZA) As Boolean
|
||||
Public Function ImportDakosyEZA(MRN As String, Optional overwrite As Boolean = True) As Boolean
|
||||
If MRN Is Nothing Then Return False
|
||||
If MRN = "" Then Return False
|
||||
|
||||
Dim EZA = cDakosyEZA.LOADByMRN(MRN, True)
|
||||
If EZA IsNot Nothing Then Return ImportDakosyEZA(EZA)
|
||||
Return False
|
||||
End Function
|
||||
Public Function ImportDakosyEZA(eza As cDakosyEZA, Optional overwrite As Boolean = True) As Boolean
|
||||
Try
|
||||
' 1) Duplikatscheck auf Kopfebene (MRN / LRN + System)
|
||||
If ExistsInVERAG(eza) Then
|
||||
Console.WriteLine($"Skip import (duplicate): MRN={If(eza.eza_MRN, "")} / LRN={If(eza.eza_ANR, "")}")
|
||||
If eza Is Nothing Then Return False
|
||||
If String.IsNullOrWhiteSpace(eza.eza_MRN) AndAlso String.IsNullOrWhiteSpace(eza.eza_ANR) Then Return False
|
||||
|
||||
If If(eza.eza_MRN, "") = "" AndAlso eza.eza_ANR.ToString.StartsWith("ATA") Then ' Keine finale Anmeldung!
|
||||
Return False
|
||||
End If
|
||||
|
||||
' 2) HEADER anlegen
|
||||
Dim zaId = Save_Header(eza)
|
||||
If zaId <= 0 Then
|
||||
Console.WriteLine("Error: Header save failed")
|
||||
Return False
|
||||
' ================================================================
|
||||
' DUPLIKATSPRÜFUNG
|
||||
' ================================================================
|
||||
If Not overwrite Then
|
||||
If ExistsInVERAG(eza) Then Return False
|
||||
End If
|
||||
|
||||
' 3) ITEMS speichern (alle Positionen – kein eigener Duplikatscheck)
|
||||
Save_Items(eza, zaId)
|
||||
' ================================================================
|
||||
' HEADER
|
||||
' ================================================================
|
||||
Dim VERAG_ZA As cVERAG_CustomsDeclarations
|
||||
If If(eza.eza_MRN, If(eza.eza_ANR, "")) = "" Then
|
||||
VERAG_ZA = New cVERAG_CustomsDeclarations
|
||||
Else
|
||||
VERAG_ZA = cVERAG_CustomsDeclarations.loadByMRN(If(eza.eza_MRN, If(eza.eza_ANR, "")), False)
|
||||
End If
|
||||
|
||||
' 4) DUTIES speichern (aus AUFSCHUB – kein eigener Duplikatscheck)
|
||||
Save_Duties(eza, zaId)
|
||||
VERAG_ZA.za_System = "DAKOSY"
|
||||
VERAG_ZA.za_CustomsSystem = "ATLAS"
|
||||
VERAG_ZA.za_REGIME = "IMPORT"
|
||||
VERAG_ZA.za_CustomsSystemCountry = "DE"
|
||||
VERAG_ZA.za_IsExternalSystem = False
|
||||
VERAG_ZA.za_IsFinalDeclaration = True
|
||||
|
||||
' 5) DOCS speichern (Unterlagen auf Kopfebene – kein eigener Duplikatscheck)
|
||||
Save_Docs(eza, zaId)
|
||||
VERAG_ZA.za_Firma = eza.eza_firma
|
||||
VERAG_ZA.za_Niederlassung = eza.eza_niederlassung
|
||||
|
||||
Return True
|
||||
VERAG_ZA.za_MRN = If(eza.eza_MRN, eza.eza_ANR)
|
||||
VERAG_ZA.za_LRN = eza.eza_ObjectName
|
||||
|
||||
If eza.eza_Anmeldedatum IsNot Nothing AndAlso eza.eza_Anmeldedatum.ToString <> "" Then
|
||||
VERAG_ZA.za_DeclarationDate = CDate(eza.eza_Anmeldedatum)
|
||||
VERAG_ZA.za_ReleaseDate = CDate(eza.eza_Anmeldedatum)
|
||||
Else
|
||||
|
||||
Dim dateumRelease As String = (New VERAG_PROG_ALLGEMEIN.SQL).DLookup("isnull(dySt_DakosyTransaktionsDatum,'')", "[tblDakosy_Statusmeldungen]", " dySt_status = 60 And dySt_dyId = '" & eza.eza_dyaAnmID & "' Order By [dySt_DakosyTransaktionsDatum] desc", "FMZOLL",)
|
||||
If dateumRelease <> "" AndAlso IsDate(dateumRelease) Then
|
||||
VERAG_ZA.za_DeclarationDate = CDate(dateumRelease)
|
||||
VERAG_ZA.za_ReleaseDate = CDate(dateumRelease)
|
||||
Else
|
||||
VERAG_ZA.za_DeclarationDate = ToNullableDate(If(eza.eza_Anmeldedatum, eza.eza_LetzteBearbeitung))
|
||||
VERAG_ZA.za_ReleaseDate = ToNullableDate(If(eza.eza_Anmeldedatum, eza.eza_LetzteBearbeitung))
|
||||
End If
|
||||
End If
|
||||
|
||||
VERAG_ZA.za_MainProcedure = eza.eza_VerfahrenBeantragtCode
|
||||
VERAG_ZA.za_RepresentationCode = eza.eza_VertretungsVerhaeltnisCode
|
||||
VERAG_ZA.za_FiscalRepFlag = ToNullableBool(eza.eza_FiskalvertretungKz)
|
||||
VERAG_ZA.za_ApplicantVATNo = ToStringSafe(eza.eza_UstIdAnmelder)
|
||||
VERAG_ZA.za_ApplicantTaxOffice = ToStringSafe(eza.eza_FinanzamtAnmelder)
|
||||
VERAG_ZA.za_TaxDeduction = ToNullableBool(eza.eza_Vorsteuerabzug)
|
||||
|
||||
VERAG_ZA.za_CountryDispatch = eza.eza_VersendungsLandCode
|
||||
VERAG_ZA.za_CountryDestination = eza.eza_Bestimmungsland
|
||||
VERAG_ZA.za_CountryDestinationState = eza.eza_Bestimmungsbundesland
|
||||
|
||||
VERAG_ZA.za_ContainerNr1 = eza.eza_ContainerNr1
|
||||
VERAG_ZA.za_ContainerNr2 = eza.eza_ContainerNr2
|
||||
VERAG_ZA.za_ContainerNr3 = eza.eza_ContainerNr3
|
||||
VERAG_ZA.za_ContainerNr4 = eza.eza_ContainerNr4
|
||||
VERAG_ZA.za_ContainerNr5 = eza.eza_ContainerNr5
|
||||
VERAG_ZA.za_ContainerNr6 = eza.eza_ContainerNr6
|
||||
VERAG_ZA.za_ContainerNr7 = eza.eza_ContainerNr7
|
||||
VERAG_ZA.za_ContainerNr8 = eza.eza_ContainerNr8
|
||||
VERAG_ZA.za_ContainerNr9 = eza.eza_ContainerNr9
|
||||
|
||||
VERAG_ZA.za_MeansOfTransport_Vehicle = eza.eza_KennzeichenNameBefoerderungsmittelAnkunft
|
||||
VERAG_ZA.za_MeansOfTransport_Nationality = eza.eza_BeförderungsmittelGrenzeStaatszugehörigkeitCode
|
||||
VERAG_ZA.za_MeansOfTransport_Type = eza.eza_BeförderungsmittelGrenzeArt
|
||||
VERAG_ZA.za_CountryImport = "DE"
|
||||
VERAG_ZA.za_WarehouseCode = eza.eza_Warenort
|
||||
VERAG_ZA.za_InvoiceAmount = eza.eza_Rechnungspreis
|
||||
VERAG_ZA.za_InvoiceCurrency = eza.eza_Rechnungswaehrung
|
||||
VERAG_ZA.za_DV1Flag = ToNullableBool(eza.eza_DV1Kz)
|
||||
VERAG_ZA.za_PrevDocument_No = eza.eza_VorpapierNr
|
||||
VERAG_ZA.za_PrevDocument_Type = eza.eza_VorpapierArtCode
|
||||
|
||||
VERAG_ZA.za_Incoterms = eza.eza_LieferbedingungCode
|
||||
VERAG_ZA.za_IncotermsPlace = eza.eza_LieferbedingungOrt
|
||||
|
||||
VERAG_ZA.za_Sachbearbeiter = eza.eza_AnmeldenderBearbeiterName
|
||||
|
||||
Dim DY = cDakosy_Zollanmeldungen.LOADById(eza.eza_dyaAnmID)
|
||||
If DY IsNot Nothing Then
|
||||
VERAG_ZA.za_AvisoId = DY.dy_AvisoId
|
||||
VERAG_ZA.za_SendungsId = DY.dy_SendungsId
|
||||
End If
|
||||
|
||||
VERAG_ZA.za_TransportModeBorder = ToStringSafe(eza.eza_VerkehrszweigGrenze)
|
||||
|
||||
' ================================================================
|
||||
' ADRESSEN
|
||||
' ================================================================
|
||||
If eza.eza_ADRESSEN IsNot Nothing Then
|
||||
For Each p In eza.eza_ADRESSEN
|
||||
|
||||
Dim party As New cVERAG_CustomsDeclarations_Parties
|
||||
|
||||
party.zaParty_Role = p.ezaAd_AdressTyp
|
||||
party.zaParty_EORI = p.ezaAd_TeilnehmerEORI
|
||||
party.zaParty_EORI_NL = p.ezaAd_TeilnehmerNLNR
|
||||
party.zaParty_Name = p.ezaAd_NameFirma1
|
||||
party.zaParty_Street = p.ezaAd_StrasseHausNr1
|
||||
party.zaParty_PostalCode = p.ezaAd_PLZ
|
||||
party.zaParty_City = p.ezaAd_Ort
|
||||
party.zaParty_Country = p.ezaAd_LandCode
|
||||
'party.zaParty_TIN = p.
|
||||
party.zaParty_VATNumber = p.ezaAd_UStIDAnmelder
|
||||
party.zaParty_TaxOffice = p.ezaAd_FinanzamtIDAnmelder
|
||||
|
||||
|
||||
If If(party.zaParty_EORI, "") <> "" Then
|
||||
|
||||
Dim AD As VERAG_PROG_ALLGEMEIN.cAdressen = cZOLL_IMPORT.getAdresseFromEORI(party.zaParty_EORI, "", "", True)
|
||||
|
||||
If AD IsNot Nothing Then
|
||||
party.zaParty_Name = (If(AD.Name_1, "") & " " & If(AD.Name_2, "")).trim
|
||||
party.zaParty_Country = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2Land(AD.LandKz)
|
||||
party.zaParty_City = AD.Ort
|
||||
party.zaParty_Street = AD.Straße
|
||||
'party.ImporterAddressNumber = ""
|
||||
party.zaParty_PostalCode = AD.PLZ
|
||||
'party.ImporterEmail = AD.E_Mail
|
||||
'party.ImporterPhone = AD.Telefon
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
VERAG_ZA.Parties.Add(party)
|
||||
Next
|
||||
End If
|
||||
|
||||
' ================================================================
|
||||
' ABGABEN
|
||||
' ================================================================
|
||||
If eza.eza_AUFSCHUB IsNot Nothing Then
|
||||
For Each d In eza.eza_AUFSCHUB
|
||||
|
||||
Dim duty As New cVERAG_CustomsDeclarations_Duty
|
||||
|
||||
duty.zaDuty_ApplicationType = d.ezaAfb_ArtAufschubantrag
|
||||
duty.zaDuty_AccountType = d.ezaAfb_Aufschubart
|
||||
duty.zaDuty_AccountHeadCustoms = d.ezaAfb_HZA
|
||||
duty.zaDuty_AccountNo = d.ezaAfb_KontoNr
|
||||
duty.zaDuty_AccountEORI = d.ezaAfb_AufschubnehmerEORI
|
||||
duty.zaDuty_AccountHolderName = d.AufschubnehmerName
|
||||
duty.zaDuty_DutyType = d.ezaAfb_AbgabeArt
|
||||
duty.zaDuty_BIN = d.ezaAfb_AufschuBIN
|
||||
duty.zaDuty_AmountEUR = ToNullableDecimal(d.ezaAfb_Abgabenbetrag)
|
||||
duty.zaDuty_AmountForeign = ToNullableDecimal(d.ezaAfb_Abgabenbetrag)
|
||||
duty.zaDuty_Currency = "EUR"
|
||||
duty.zaDuty_LimitDate = ToNullableDate(d.ezaAfb_Faelligkeit)
|
||||
|
||||
VERAG_ZA.Duties.Add(duty)
|
||||
Next
|
||||
End If
|
||||
|
||||
' ================================================================
|
||||
' HEADER-UNTERLAGEN (ItemId = NULL)
|
||||
' ================================================================
|
||||
If eza.eza_UNTERLAGEN IsNot Nothing Then
|
||||
For Each ul In eza.eza_UNTERLAGEN
|
||||
|
||||
Dim doc As New cVERAG_CustomsDeclarations_Document
|
||||
doc.zaDoc_Section = ul.ezaUl_Bereich
|
||||
doc.zaDoc_ItemId = Nothing
|
||||
doc.zaDoc_Code = ul.ezaUl_Art
|
||||
doc.zaDoc_Reference = ul.ezaUl_Nummer
|
||||
|
||||
doc.zaDoc_Date = ul.ezaUl_DatumAusstellung
|
||||
|
||||
|
||||
|
||||
VERAG_ZA.Documents.Add(doc)
|
||||
Next
|
||||
End If
|
||||
|
||||
' ================================================================
|
||||
' POSITIONEN + POSITIONS-UNTERLAGEN
|
||||
' ================================================================
|
||||
If eza.eza_WARENPOS IsNot Nothing Then
|
||||
For Each wp In eza.eza_WARENPOS
|
||||
|
||||
Dim item As New cVERAG_CustomsDeclarations_Item
|
||||
|
||||
item.zaItem_PosNo = ToInt(wp.ezaWP_PositionsNummer)
|
||||
item.zaItem_ArticleCode = wp.ezaWP_Artikelnummer
|
||||
|
||||
item.zaItem_HSCode = wp.ezaWP_WarennummerEZT
|
||||
item.zaItem_HSAddition1 = wp.ezaWP_Warennummerzusatz1
|
||||
item.zaItem_HSAddition2 = wp.ezaWP_Warennummerzusatz2
|
||||
item.zaItem_HSAddCodes1 = wp.ezaWP_WarennummerZusatzCode1
|
||||
item.zaItem_HSAddCodes2 = wp.ezaWP_WarennummerZusatzCode2
|
||||
item.zaItem_HSAddCodes3 = wp.ezaWP_WarennummerZusatzCode3
|
||||
item.zaItem_HSAddCodes4 = wp.ezaWP_WarennummerZusatzCode4
|
||||
item.zaItem_HSAddCodes5 = wp.ezaWP_WarennummerZusatzCode5
|
||||
item.zaItem_HSAddCodes6 = wp.ezaWP_WarennummerZusatzCode6
|
||||
item.zaItem_HSAddCodes7 = wp.ezaWP_WarennummerZusatzCode7
|
||||
item.zaItem_HSAddCodes8 = wp.ezaWP_WarennummerZusatzCode8
|
||||
item.zaItem_HSAddCodes9 = wp.ezaWP_WarennummerZusatzCode9
|
||||
item.zaItem_HSAddCodes10 = wp.ezaWP_WarennummerZusatzCode10
|
||||
|
||||
item.zaItem_Description = wp.ezaWP_Warenbezeichnung
|
||||
item.zaItem_PrevProcedure = wp.ezaWP_VerfahrensCodeVorangegangenesVerfahren
|
||||
item.zaItem_PreferentialCountry = wp.ezaWP_Praeferenzursprungsland
|
||||
|
||||
|
||||
item.zaItem_PackageColli = (wp.ezaWP_PackstueckAnzahl)
|
||||
item.zaItem_PackageType = wp.ezaWP_PackstueckArt
|
||||
|
||||
item.zaItem_GrossMass = ToNullableDecimal(wp.ezaWP_Rohmasse)
|
||||
item.zaItem_NetMass = ToNullableDecimal(wp.ezaWP_Eigenmasse)
|
||||
|
||||
|
||||
item.zaItem_InvoiceValueForeign = ToNullableDecimal(wp.ezaWP_Artikelpreis)
|
||||
item.zaItem_InvoiceCurrency = wp.ezaWP_ArtikelpreisWaehrung
|
||||
If If(wp.ezaWP_ArtikelpreisWaehrung, "") = "EUR" Then
|
||||
item.zaItem_InvoiceValueEUR = ToNullableDecimal(wp.ezaWP_Artikelpreis)
|
||||
End If
|
||||
|
||||
item.zaItem_CustomsValueEUR = ToNullableDecimal(wp.ezaWP_Zollwert)
|
||||
item.zaItem_StatisticalValueEUR = ToNullableDecimal(wp.ezaWP_AHStatWert)
|
||||
|
||||
item.zaItem_OriginCountry = wp.ezaWP_UrsprungslandCode
|
||||
item.zaItem_PreferenceCode = wp.ezaWP_BeguenstigungBenatragtCode
|
||||
item.zaItem_PosAddition = If(wp.ezaWP_PositionsZusatz, "")
|
||||
|
||||
' -------------------------------
|
||||
' POSITIONS-UNTERLAGEN
|
||||
' -------------------------------
|
||||
If wp.ezaWP_UNTERLAGEN IsNot Nothing Then
|
||||
For Each ul In wp.ezaWP_UNTERLAGEN
|
||||
|
||||
Dim doc As New cVERAG_CustomsDeclarations_Document
|
||||
doc.zaDoc_Section = ul.ezaWpUl_Bereich
|
||||
doc.zaDoc_Code = ul.ezaWpUl_Art
|
||||
doc.zaDoc_Reference = ul.ezaWpUl_Nummer
|
||||
|
||||
doc.zaDoc_Date = ToNullableDate(ul.ezaWpUl_DatumAusstellung)
|
||||
|
||||
doc.zaDoc_Presentation = ul.ezaWpUl_VorlageKz
|
||||
|
||||
doc.zaDoc_DepreciationAmount = (ul.ezaWpUl_AbschreibungsMenge)
|
||||
doc.zaDoc_DepreciationUnitmeasurement = ul.ezaWpUl_AbschreibungsMengeMasseinheit
|
||||
doc.zaDoc_DepreciationUnitmeasurementQualifier = ul.ezaWpUl_AbschreibungsMengeMasseinheitQualifier
|
||||
|
||||
|
||||
|
||||
item.Documents.Add(doc)
|
||||
Next
|
||||
End If
|
||||
|
||||
VERAG_ZA.Items.Add(item)
|
||||
Next
|
||||
End If
|
||||
|
||||
' ================================================================
|
||||
' SAVE
|
||||
' ================================================================
|
||||
Return VERAG_ZA.SAVE()
|
||||
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
|
||||
ex.Message,
|
||||
ex.StackTrace,
|
||||
Reflection.MethodInfo.GetCurrentMethod().Name
|
||||
)
|
||||
cErrorHandler.ERR(ex.Message, ex.StackTrace, Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
|
||||
' ========================================================================
|
||||
' DUPLICATE CHECK : MRN / LRN + SYSTEM
|
||||
' ========================================================================
|
||||
' =====================================================================
|
||||
' DUPLIKATSPRÜFUNG
|
||||
' =====================================================================
|
||||
Private Function ExistsInVERAG(eza As cDakosyEZA) As Boolean
|
||||
|
||||
Dim sqlStr As String =
|
||||
"SELECT TOP 1 1
|
||||
FROM tblVERAG_Zollanmeldung
|
||||
WHERE za_System = 'DAKOSY'
|
||||
AND (
|
||||
(za_MRN = @mrn AND @mrn IS NOT NULL)
|
||||
OR (za_LRN = @lrn AND @lrn IS NOT NULL)
|
||||
)"
|
||||
Dim sql As String =
|
||||
"SELECT TOP 1 1 FROM tblVERAG_CustomsDeclarations " &
|
||||
"WHERE za_System='DAKOSY' " &
|
||||
"AND (za_MRN=@mrn OR za_MRN=@anr)"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("@mrn", If(eza.eza_MRN, DBNull.Value)),
|
||||
New SQLVariable("@lrn", If(eza.eza_ANR, DBNull.Value))
|
||||
}
|
||||
|
||||
Dim dt = SQL.loadDgvBySql_Param(sqlStr, "FMZOLL",, p)
|
||||
Return (dt IsNot Nothing AndAlso dt.Rows.Count > 0)
|
||||
New SQLVariable("mrn", eza.eza_MRN),
|
||||
New SQLVariable("anr", eza.eza_ANR)
|
||||
}
|
||||
|
||||
Dim dt = New SQL().loadDgvBySql_Param(sql, "VERAG", , p)
|
||||
Return dt IsNot Nothing AndAlso dt.Rows.Count > 0
|
||||
End Function
|
||||
' =========================================================================
|
||||
' Small helpers (falls du sie schon hast, kannst du diese entfernen)
|
||||
' =========================================================================
|
||||
Private Function ToStringSafe(v As Object) As String
|
||||
If v Is Nothing Then Return Nothing
|
||||
Dim s As String = TryCast(v, String)
|
||||
If s IsNot Nothing Then Return s
|
||||
Return Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
End Function
|
||||
|
||||
|
||||
' ========================================================================
|
||||
' HEADER SAVE
|
||||
' ========================================================================
|
||||
Private Function Save_Header(eza As cDakosyEZA) As Integer
|
||||
|
||||
Dim list As New List(Of SQLVariable)
|
||||
|
||||
' PK wird von SQL doSQLVarListID gesetzt
|
||||
list.Add(New SQLVariable("za_Id", Nothing, , True, True))
|
||||
|
||||
list.Add(New SQLVariable("za_System", "DAKOSY"))
|
||||
list.Add(New SQLVariable("za_MRN", eza.eza_MRN))
|
||||
list.Add(New SQLVariable("za_LRN", eza.eza_ObjectName))
|
||||
|
||||
list.Add(New SQLVariable("za_Firma", eza.eza_firma))
|
||||
list.Add(New SQLVariable("za_Zollstelle", eza.eza_AdressierteZollstelle))
|
||||
list.Add(New SQLVariable("za_Sachbearbeiter", eza.eza_Bearbeiter))
|
||||
|
||||
' interne Zuordnungen
|
||||
list.Add(New SQLVariable("AvisoId", eza.eza_dyaAnmID))
|
||||
list.Add(New SQLVariable("SendungsId", Nothing))
|
||||
|
||||
Dim cmd As String =
|
||||
"INSERT INTO tblVERAG_Zollanmeldung
|
||||
(za_System,
|
||||
za_MRN,
|
||||
za_LRN,
|
||||
za_Firma,
|
||||
za_Zollstelle,
|
||||
za_Sachbearbeiter,
|
||||
AvisoId,
|
||||
SendungsId)
|
||||
VALUES
|
||||
(@za_System,
|
||||
@za_MRN,
|
||||
@za_LRN,
|
||||
@za_Firma,
|
||||
@za_Zollstelle,
|
||||
@za_Sachbearbeiter,
|
||||
@AvisoId,
|
||||
@SendungsId);
|
||||
SELECT SCOPE_IDENTITY()"
|
||||
|
||||
Dim newId = SQL.doSQLVarListID(0, cmd, "FMZOLL", , list)
|
||||
|
||||
|
||||
Return CInt(newId)
|
||||
|
||||
Private Function ToInt(v As Object) As Integer
|
||||
If v Is Nothing Then Return 0
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim i As Integer
|
||||
If Integer.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, i) Then Return i
|
||||
Return 0
|
||||
End Function
|
||||
|
||||
Private Function ToNullableDecimal(v As Object) As Decimal?
|
||||
If v Is Nothing Then Return Nothing
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim d As Decimal
|
||||
If Decimal.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, d) Then Return d
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
' ========================================================================
|
||||
' ITEMS SAVE (alle Positionen, kein Duplikatscheck)
|
||||
' ========================================================================
|
||||
Private Sub Save_Items(eza As cDakosyEZA, zaId As Integer)
|
||||
Private Function ToNullableDate(v As Object) As Date?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If TypeOf v Is Date Then Return CType(v, Date)
|
||||
|
||||
If eza.eza_WARENPOS Is Nothing Then Exit Sub
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim dt As Date
|
||||
If Date.TryParse(s, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, dt) Then Return dt
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
For Each pos As cDakosy_EZA_Warenposition In eza.eza_WARENPOS
|
||||
|
||||
Dim list As New List(Of SQLVariable)
|
||||
|
||||
list.Add(New SQLVariable("za_Id", zaId))
|
||||
|
||||
' PosNr / Artikel / HS
|
||||
list.Add(New SQLVariable("zaItem_PosNo", pos.ezaWP_PositionsNummer))
|
||||
list.Add(New SQLVariable("zaItem_ArticleCode", pos.ezaWP_Artikelnummer))
|
||||
list.Add(New SQLVariable("zaItem_HSCode", pos.ezaWP_WarennummerEZT))
|
||||
|
||||
' Ursprung / Origin
|
||||
list.Add(New SQLVariable("zaItem_OriginCountry", pos.ezaWP_UrsprungslandCode))
|
||||
|
||||
' Zollwert / Statistikwert
|
||||
list.Add(New SQLVariable("zaItem_CustomsValue", pos.ezaWP_Zollwert))
|
||||
list.Add(New SQLVariable("zaItem_StatisticalValue", pos.ezaWP_AHStatWert))
|
||||
|
||||
' Begünstigungscode (Dakosy: ezaWP_BeguenstigungBenatragtCode)
|
||||
list.Add(New SQLVariable("zaItem_BeguenstigungCode", pos.ezaWP_BeguenstigungBenatragtCode))
|
||||
|
||||
Dim cmd As String =
|
||||
"INSERT INTO tblVERAG_Zollanmeldung_Items
|
||||
(za_Id,
|
||||
zaItem_PosNo,
|
||||
zaItem_ArticleCode,
|
||||
zaItem_HSCode,
|
||||
zaItem_OriginCountry,
|
||||
zaItem_CustomsValue,
|
||||
zaItem_StatisticalValue,
|
||||
zaItem_BeguenstigungCode)
|
||||
VALUES
|
||||
(@za_Id,
|
||||
@zaItem_PosNo,
|
||||
@zaItem_ArticleCode,
|
||||
@zaItem_HSCode,
|
||||
@zaItem_OriginCountry,
|
||||
@zaItem_CustomsValue,
|
||||
@zaItem_StatisticalValue,
|
||||
@zaItem_BeguenstigungCode)"
|
||||
|
||||
SQL.doSQLVarList(cmd, "FMZOLL", , list)
|
||||
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
' ========================================================================
|
||||
' DUTIES SAVE (alle AUFSCHUB-Einträge, kein Duplikatscheck)
|
||||
' ========================================================================
|
||||
Private Sub Save_Duties(eza As cDakosyEZA, zaId As Integer)
|
||||
|
||||
If eza.eza_AUFSCHUB Is Nothing Then Exit Sub
|
||||
|
||||
For Each duty As cDakosy_EZA_Aufschub In eza.eza_AUFSCHUB
|
||||
|
||||
Dim list As New List(Of SQLVariable)
|
||||
|
||||
list.Add(New SQLVariable("za_Id", zaId))
|
||||
|
||||
' Dakosy-Aufschub Felder:
|
||||
' ezaAfb_AbgabeArt -> DutyType
|
||||
' ezaAfb_Abgabenbetrag -> Amount / AmountEUR
|
||||
list.Add(New SQLVariable("DutyType", duty.ezaAfb_AbgabeArt))
|
||||
list.Add(New SQLVariable("Amount", duty.ezaAfb_Abgabenbetrag))
|
||||
|
||||
' In der Aufschubtabelle gibt es keine Fremdwährungsspalte,
|
||||
' i.d.R. ist der Betrag EUR -> Currency/AmountEUR entsprechend setzen
|
||||
list.Add(New SQLVariable("Currency", "EUR"))
|
||||
list.Add(New SQLVariable("AmountEUR", duty.ezaAfb_Abgabenbetrag))
|
||||
|
||||
Dim cmd As String =
|
||||
"INSERT INTO tblVERAG_Zollanmeldung_Duties
|
||||
(za_Id,
|
||||
DutyType,
|
||||
Amount,
|
||||
Currency,
|
||||
AmountEUR)
|
||||
VALUES
|
||||
(@za_Id,
|
||||
@DutyType,
|
||||
@Amount,
|
||||
@Currency,
|
||||
@AmountEUR)"
|
||||
|
||||
SQL.doSQLVarList(cmd, "FMZOLL", , list)
|
||||
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
' ========================================================================
|
||||
' DOCS SAVE (alle Unterlagen auf Kopfebene, kein Duplikatscheck)
|
||||
' ========================================================================
|
||||
Private Sub Save_Docs(eza As cDakosyEZA, zaId As Integer)
|
||||
|
||||
If eza.eza_UNTERLAGEN Is Nothing Then Exit Sub
|
||||
|
||||
For Each d As cDakosy_EZA_Unterlagen In eza.eza_UNTERLAGEN
|
||||
|
||||
Dim list As New List(Of SQLVariable)
|
||||
|
||||
list.Add(New SQLVariable("za_Id", zaId))
|
||||
list.Add(New SQLVariable("Level", "H")) ' H = Header
|
||||
list.Add(New SQLVariable("DocType", d.ezaUl_Art))
|
||||
list.Add(New SQLVariable("DocNumber", d.ezaUl_Nummer))
|
||||
|
||||
Dim cmd As String =
|
||||
"INSERT INTO tblVERAG_Zollanmeldung_Docs
|
||||
(za_Id,
|
||||
Level,
|
||||
DocType,
|
||||
DocNumber)
|
||||
VALUES
|
||||
(@za_Id,
|
||||
@Level,
|
||||
@DocType,
|
||||
@DocNumber)"
|
||||
|
||||
SQL.doSQLVarList(cmd, "FMZOLL", , list)
|
||||
|
||||
Next
|
||||
|
||||
End Sub
|
||||
Private Function ToNullableBool(v As Object) As Boolean?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If TypeOf v Is Boolean Then Return CType(v, Boolean)
|
||||
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture).Trim().ToLowerInvariant()
|
||||
If s = "J" OrElse s = "1" OrElse s = "true" OrElse s = "y" OrElse s = "yes" Then Return True
|
||||
If s = "N" OrElse s = "0" OrElse s = "false" OrElse s = "n" OrElse s = "no" Then Return False
|
||||
Return Nothing
|
||||
End Function
|
||||
End Class
|
||||
289
DAKOSY_Worker/cImporter_TelotecToVERAG.vb
Normal file
289
DAKOSY_Worker/cImporter_TelotecToVERAG.vb
Normal file
@@ -0,0 +1,289 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Reflection
|
||||
Imports java.lang
|
||||
Imports TELOTEC_Worker
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class cImporter_TelotecToVERAG
|
||||
|
||||
Private SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
' =====================================================================
|
||||
' MAIN ENTRY
|
||||
' =====================================================================
|
||||
Public Function ImportTelotec(CRN As String, Optional overwrite As Boolean = True) As Boolean
|
||||
|
||||
If CRN Is Nothing Then Return False
|
||||
If CRN = "" Then Return False
|
||||
|
||||
Dim cTelotec_Anmeldung = TELOTEC_Worker.cTelotec_Anmeldung.LOADByCRN(CRN, True)
|
||||
|
||||
If cTelotec_Anmeldung IsNot Nothing Then Return ImportTelotec(cTelotec_Anmeldung, overwrite)
|
||||
Return False
|
||||
End Function
|
||||
|
||||
Public Function ImportTelotec(tel As cTelotec_Anmeldung, Optional overwrite As Boolean = True) As Boolean
|
||||
Try
|
||||
If tel Is Nothing Then Return False
|
||||
If String.IsNullOrWhiteSpace(ToStringSafe(tel.Refs_LRN)) AndAlso
|
||||
String.IsNullOrWhiteSpace(ToStringSafe(tel.Refs_CRN)) Then Return False
|
||||
|
||||
' ================================================================
|
||||
' DUPLIKATSPRÜFUNG
|
||||
' ================================================================
|
||||
If Not overwrite Then
|
||||
If ExistsInVERAG(tel) Then Return False
|
||||
End If
|
||||
|
||||
' ================================================================
|
||||
' HEADER
|
||||
' ================================================================
|
||||
'Dim mrnOrLrn As String = If(ToStringSafe(tel.Refs_CRN)
|
||||
Dim ZA As cVERAG_CustomsDeclarations = cVERAG_CustomsDeclarations.loadByMRN(tel.Refs_CRN, False)
|
||||
|
||||
ZA.za_System = "TELOTEC"
|
||||
ZA.za_CustomsSystem = "ACCS"
|
||||
ZA.za_CustomsSystemCountry = "AT"
|
||||
ZA.za_REGIME = "IMPORT"
|
||||
ZA.za_IsExternalSystem = False
|
||||
ZA.za_IsFinalDeclaration = True
|
||||
|
||||
ZA.za_Firma = ToStringSafe(tel.telanm_firma)
|
||||
ZA.za_Niederlassung = ToStringSafe(tel.telanm_niederlassung)
|
||||
|
||||
ZA.za_MRN = ToStringSafe(tel.Refs_CRN)
|
||||
ZA.za_LRN = ToStringSafe(tel.Refs_LRN)
|
||||
|
||||
|
||||
ZA.za_RepresentationCode = ToStringSafe(tel.Declarant_DecRep)
|
||||
|
||||
|
||||
ZA.za_CustomsOffice = ToStringSafe(tel.Locs_CustPlc)
|
||||
ZA.za_EntryCustomsOffice = ToStringSafe(tel.EntryCO_Ref)
|
||||
|
||||
ZA.za_DeclarationDate = ToNullableDate(tel.Hea_DecDT)
|
||||
ZA.za_AcceptanceDate = ToNullableDate(tel.Hea_AccDT)
|
||||
ZA.za_ReleaseDate = ToNullableDate(tel.Hea_DecDT)
|
||||
|
||||
ZA.za_MainProcedure = ToStringSafe(tel.Hea_DecTy)
|
||||
|
||||
ZA.za_MeansOfTransport_Vehicle = ToStringSafe(tel.Transp_DepIdnt)
|
||||
ZA.za_MeansOfTransport_Nationality = ToStringSafe(tel.Transp_DepNat)
|
||||
ZA.za_MeansOfTransport_Type = ToStringSafe(tel.Transp_DepTy)
|
||||
|
||||
ZA.za_TransportModeBorder = ToStringSafe(tel.Transp_BordMo)
|
||||
ZA.za_TransportModeInland = ToStringSafe(tel.Transp_InMo)
|
||||
|
||||
ZA.za_CountryDispatch = ToStringSafe(tel.Locs_Disp)
|
||||
ZA.za_CountryDestination = ToStringSafe(tel.Locs_Dest)
|
||||
ZA.za_CountryImport = "AT"
|
||||
|
||||
ZA.za_WarehouseCode = ToStringSafe(tel.Locs_ArrLocAuth)
|
||||
|
||||
ZA.za_InvoiceAmount = ToNullableDecimal(tel.ValData_InvVal)
|
||||
ZA.za_InvoiceCurrency = ToStringSafe(tel.ValData_InvCurr)
|
||||
|
||||
ZA.za_Incoterms = ToStringSafe(tel.ValData_TermDelCd)
|
||||
ZA.za_IncotermsPlace = ToStringSafe(tel.ValData_TermDelPlc)
|
||||
|
||||
ZA.za_AvisoId = tel.telanm_AvisoId
|
||||
ZA.za_SendungsId = tel.telanm_SendungsId
|
||||
|
||||
ZA.za_Sachbearbeiter = tel.telanm_LetzteBearbeitung_SB
|
||||
|
||||
' ================================================================
|
||||
' PARTIES (direkt aus Header-Feldern)
|
||||
' ================================================================
|
||||
AddParty(ZA, "CONSIGNOR", tel.ConorTra_TIN, tel.ConorTra_Na, tel.ConorTra_Strt, tel.ConorTra_Pst, tel.ConorTra_Cty, tel.ConorTra_Ctry, tel.ConorTra_UID)
|
||||
AddParty(ZA, "CONSIGNEE", tel.ConeeTra_TIN, tel.ConeeTra_Na, tel.ConeeTra_Strt, tel.ConeeTra_Pst, tel.ConeeTra_Cty, tel.ConeeTra_Ctry, tel.ConeeTra_UID)
|
||||
AddParty(ZA, "EXPORTER", tel.ExpTra_TIN, tel.ExpTra_Na, tel.ExpTra_Strt, tel.ExpTra_Pst, tel.ExpTra_Cty, tel.ExpTra_Ctry, tel.ExpTra_UID)
|
||||
AddParty(ZA, "DECLARANT", tel.Declarant_TIN, tel.Declarant_Na, tel.Declarant_Strt, tel.Declarant_Pst, tel.Declarant_Cty, tel.Declarant_Ctry, tel.Declarant_UID)
|
||||
|
||||
' ================================================================
|
||||
' ABGABEN (HEADER)
|
||||
' ================================================================
|
||||
For Each a In tel.ABGABEN
|
||||
Dim d As New cVERAG_CustomsDeclarations_Duty With {
|
||||
.zaDuty_DutyType = ToStringSafe(a.Ty),
|
||||
.zaDuty_AmountEUR = ToNullableDecimal(a.Amnt),
|
||||
.zaDuty_Currency = "EUR"
|
||||
}
|
||||
ZA.Duties.Add(d)
|
||||
Next
|
||||
|
||||
' ================================================================
|
||||
' POSITIONEN
|
||||
' ================================================================
|
||||
For Each p In tel.POSITIONSDATEN
|
||||
Dim it As New cVERAG_CustomsDeclarations_Item
|
||||
|
||||
it.zaItem_PosNo = p.Pos_ID
|
||||
it.zaItem_HSCode = ToStringSafe(p.Item_ComCd)
|
||||
it.zaItem_Description = ToStringSafe(p.Item_GdsDes)
|
||||
it.zaItem_GrossMass = ToNullableDecimal(p.Item_Gross)
|
||||
it.zaItem_NetMass = ToNullableDecimal(p.Item_Net)
|
||||
it.zaItem_OriginCountry = ToStringSafe(p.Item_Orig)
|
||||
it.zaItem_MainProcedure = ToStringSafe(p.Item_ProcCd)
|
||||
it.zaItem_AdditionalProc = ToStringSafe(p.Item_ProcAddCd)
|
||||
|
||||
Dim colli = 0
|
||||
Dim cnt = 0
|
||||
For Each pk In p.PACKSTUECKE
|
||||
colli += pk.Pack_Nr
|
||||
If cnt = 0 Then
|
||||
it.zaItem_PackageMark = ToStringSafe(pk.Pack_Mark)
|
||||
it.zaItem_PackageType = ToStringSafe(pk.Pack_Kind)
|
||||
End If
|
||||
cnt += 1
|
||||
Next
|
||||
|
||||
it.zaItem_PackageColli = ToNullableDecimal(colli)
|
||||
|
||||
|
||||
it.zaItem_PreferenceCode = ToStringSafe(p.Item_Pref)
|
||||
it.zaItem_InvoiceValueEUR = ToNullableDecimal(p.Item_ItVal)
|
||||
it.zaItem_StatisticalValueEUR = ToNullableDecimal(p.Item_StatVal)
|
||||
|
||||
'' ------------------------------------------------------------
|
||||
'' POSITIONS-ABGABEN
|
||||
'' ------------------------------------------------------------
|
||||
'For Each pa In p.ABGABEN
|
||||
' Dim d As New cVERAG_CustomsDeclarations_Duty With {
|
||||
' .zaDuty_DutyType = ToStringSafe(pa.Ty),
|
||||
' .zaDuty_AmountEUR = ToNullableDecimal(pa.Amnt),
|
||||
' .zaDuty_Currency = ToStringSafe(pa.Curr)
|
||||
' }
|
||||
' ZA.Duties.Add(d)
|
||||
'Next
|
||||
|
||||
' ------------------------------------------------------------
|
||||
' DOKUMENTE
|
||||
' ------------------------------------------------------------
|
||||
For Each doc In p.DOC_CERTS
|
||||
Dim dd As New cVERAG_CustomsDeclarations_Document With {
|
||||
.zaDoc_ItemId = Nothing,
|
||||
.zaDoc_Code = ToStringSafe(doc.DocCerts_DocCd),
|
||||
.zaDoc_Reference = ToStringSafe(doc.DocCerts_DRef),
|
||||
.zaDoc_Date = ToNullableDate(doc.DocCerts_IssD)
|
||||
}
|
||||
it.Documents.Add(dd)
|
||||
Next
|
||||
|
||||
ZA.Items.Add(it)
|
||||
Next
|
||||
|
||||
' ================================================================
|
||||
' SAVE
|
||||
' ================================================================
|
||||
Return ZA.SAVE()
|
||||
|
||||
Catch ex As Exception
|
||||
cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodInfo.GetCurrentMethod.Name)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
' =====================================================================
|
||||
' DUPLIKATSPRÜFUNG
|
||||
' =====================================================================
|
||||
Private Function ExistsInVERAG(tel As cTelotec_Anmeldung) As Boolean
|
||||
Dim sql As String =
|
||||
"SELECT TOP 1 1 FROM tblVERAG_CustomsDeclarations " &
|
||||
"WHERE za_System='TELOTEC' AND (za_MRN=@mrn OR za_LRN=@lrn)"
|
||||
|
||||
Dim p As New List(Of SQLVariable) From {
|
||||
New SQLVariable("mrn", tel.Refs_CRN),
|
||||
New SQLVariable("lrn", tel.Refs_LRN)
|
||||
}
|
||||
|
||||
Dim dt = New SQL().loadDgvBySql_Param(sql, "VERAG", , p)
|
||||
Return dt IsNot Nothing AndAlso dt.Rows.Count > 0
|
||||
End Function
|
||||
|
||||
' =====================================================================
|
||||
' PARTY HELPER
|
||||
' =====================================================================
|
||||
Private Sub AddParty(za As cVERAG_CustomsDeclarations,
|
||||
eori As String,
|
||||
role As String,
|
||||
name As Object,
|
||||
street As Object,
|
||||
plz As Object,
|
||||
city As Object,
|
||||
country As Object,
|
||||
uid As Object)
|
||||
|
||||
If String.IsNullOrWhiteSpace(ToStringSafe(name)) Then Exit Sub
|
||||
|
||||
Dim p As New cVERAG_CustomsDeclarations_Parties With {
|
||||
.zaParty_EORI = eori,
|
||||
.zaParty_Role = role,
|
||||
.zaParty_Name = ToStringSafe(name),
|
||||
.zaParty_Street = ToStringSafe(street),
|
||||
.zaParty_PostalCode = ToStringSafe(plz),
|
||||
.zaParty_City = ToStringSafe(city),
|
||||
.zaParty_Country = ToStringSafe(country),
|
||||
.zaParty_VATNumber = ToStringSafe(uid)
|
||||
}
|
||||
|
||||
za.Parties.Add(p)
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
' =========================================================================
|
||||
' Small helpers (falls du sie schon hast, kannst du diese entfernen)
|
||||
' =========================================================================
|
||||
Private Function ToStringSafe(v As Object) As String
|
||||
If v Is Nothing Then Return Nothing
|
||||
Dim s As String = TryCast(v, String)
|
||||
If s IsNot Nothing Then Return s
|
||||
Return Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
End Function
|
||||
|
||||
Private Function ToInt(v As Object) As Integer
|
||||
If v Is Nothing Then Return 0
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim i As Integer
|
||||
If Integer.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, i) Then Return i
|
||||
Return 0
|
||||
End Function
|
||||
|
||||
Private Function ToNullableDecimal(v As Object) As Decimal?
|
||||
If v Is Nothing Then Return Nothing
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim d As Decimal
|
||||
If Decimal.TryParse(s, Globalization.NumberStyles.Any, Globalization.CultureInfo.InvariantCulture, d) Then Return d
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Function ToNullableDate(v As Object) As Date?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If TypeOf v Is Date Then Return CType(v, Date)
|
||||
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture)
|
||||
Dim dt As Date
|
||||
If Date.TryParse(s, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None, dt) Then Return dt
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Function ToNullableBool(v As Object) As Boolean?
|
||||
If v Is Nothing Then Return Nothing
|
||||
If TypeOf v Is Boolean Then Return CType(v, Boolean)
|
||||
|
||||
Dim s = Convert.ToString(v, Globalization.CultureInfo.InvariantCulture).Trim().ToLowerInvariant()
|
||||
If s = "J" OrElse s = "1" OrElse s = "true" OrElse s = "y" OrElse s = "yes" Then Return True
|
||||
If s = "N" OrElse s = "0" OrElse s = "false" OrElse s = "n" OrElse s = "no" Then Return False
|
||||
Return Nothing
|
||||
End Function
|
||||
End Class
|
||||
Reference in New Issue
Block a user