Compare commits

...

2 Commits

3 changed files with 260 additions and 0 deletions

View File

@@ -1829,6 +1829,7 @@ Public Class cDakosy_EZA_Warenposition
Property ezaWP_AbgabensteuerungKz As Object = Nothing ' VARCHAR (2) NULL,
Property ezaWP_EUCode As Object = Nothing ' VARCHAR (3) NULL,
Property ezaWP_UrsprungslandCode As Object = Nothing ' VARCHAR (2) NULL,
Property ezaWP_Praeferenzursprungsland As Object = Nothing ' VARCHAR (2) NULL,
Property ezaWP_Rohmasse As Object = Nothing ' DECIMAL (11, 1) NULL,
Property ezaWP_Eigenmasse As Object = Nothing ' DECIMAL (11, 1) NULL,
Property ezaWP_AHStatMenge As Object = Nothing ' DECIMAL (15, 3) NULL,
@@ -1976,6 +1977,7 @@ Public Class cDakosy_EZA_Warenposition
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_AbgabensteuerungKz", ezaWP_AbgabensteuerungKz)) ' VARCHAR (2) NULL,
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_EUCode", ezaWP_EUCode)) ' VARCHAR (3) NULL,
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_UrsprungslandCode", ezaWP_UrsprungslandCode)) ' VARCHAR (2) NULL,
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_Praeferenzursprungsland", ezaWP_Praeferenzursprungsland)) ' VARCHAR (2) NULL,
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_Rohmasse", ezaWP_Rohmasse)) ' DECIMAL (11, 1) NULL,
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_Eigenmasse", ezaWP_Eigenmasse)) ' DECIMAL (11, 1) NULL,
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ezaWP_AHStatMenge", ezaWP_AHStatMenge)) ' DECIMAL (15, 3) NULL,

View File

@@ -72,6 +72,7 @@
<Compile Include="cDakosy_Statusmeldungen.vb" />
<Compile Include="cDY_Statusliste.vb" />
<Compile Include="cDakosy_Stammreferenzen.vb" />
<Compile Include="cImporter_DakosyToVERAG.vb" />
<Compile Include="cZollsysteme_Aktenbeschriftung.vb" />
<Compile Include="cZOLL_IMPORT.vb" />
<Compile Include="DAKOSY\ATLAS\AES\AusfuhrAnmeldung_004.Designer.vb" />

View File

@@ -0,0 +1,257 @@
Imports System.Data.SqlClient
Imports VERAG_PROG_ALLGEMEIN
Public Class cImporter_DakosyToVERAG
Private SQL As New VERAG_PROG_ALLGEMEIN.SQL
' ========================================================================
' MAIN ENTRY
' ========================================================================
Public Function ImportDakosyEZA(eza As cDakosyEZA) 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, "")}")
Return False
End If
' 2) HEADER anlegen
Dim zaId = Save_Header(eza)
If zaId <= 0 Then
Console.WriteLine("Error: Header save failed")
Return False
End If
' 3) ITEMS speichern (alle Positionen kein eigener Duplikatscheck)
Save_Items(eza, zaId)
' 4) DUTIES speichern (aus AUFSCHUB kein eigener Duplikatscheck)
Save_Duties(eza, zaId)
' 5) DOCS speichern (Unterlagen auf Kopfebene kein eigener Duplikatscheck)
Save_Docs(eza, zaId)
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
ex.Message,
ex.StackTrace,
Reflection.MethodInfo.GetCurrentMethod().Name
)
Return False
End Try
End Function
' ========================================================================
' DUPLICATE CHECK : MRN / LRN + SYSTEM
' ========================================================================
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 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)
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)
End Function
' ========================================================================
' ITEMS SAVE (alle Positionen, kein Duplikatscheck)
' ========================================================================
Private Sub Save_Items(eza As cDakosyEZA, zaId As Integer)
If eza.eza_WARENPOS Is Nothing Then Exit Sub
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
End Class