Merge branch 'ADMIN' of https://git.it.verag.ag/edv/ADMIN into ADMIN

This commit is contained in:
2026-10-15 17:04:49 +02:00
8 changed files with 1136 additions and 273 deletions

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -123,10 +123,4 @@
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

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

View File

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

View File

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