NCTS, etc,

This commit is contained in:
2026-03-16 16:54:20 +01:00
parent 9fb908f07b
commit c182c16c09
3 changed files with 328 additions and 20 deletions

View File

@@ -5,6 +5,7 @@ Imports DAKOSY_Worker
Imports DocumentFormat.OpenXml
Imports DocumentFormat.OpenXml.Spreadsheet
Imports iTextSharp.text.pdf
Imports VERAG_PROG_ALLGEMEIN
Public Class cWorker_NCTS
Public Shared Dateiname = ""
@@ -3969,7 +3970,7 @@ Public Class cWorker_NCTS
readNCTS004_Ueberlassungsmeldung008 = ""
End Try
End Function
Shared Function readNCTS_Ueberlassungsmeldung009(FORM As frmDYNachrichtenVerarbeitung, d As String, ByRef statusTMP As DAKOSY_Worker.cDakosy_Statusmeldungen) As String
Shared Function readNCTS_Ueberlassungsmeldung009(FORM As frmDYNachrichtenVerarbeitung, d As String, ByRef statusTMP As DAKOSY_Worker.cDakosy_Statusmeldungen, saveVerwahrung As Boolean, sendMail As Boolean, testlauf As Boolean) As String
Try
'Dim NCTS As DAKOSY_Worker.UeberlassungsmeldungNCTSDE.UeberlassungsmeldungMRTyp = DAKOSY_Worker.UeberlassungsmeldungNCTSDE.UeberlassungsmeldungMRTyp.LoadFromFile(d)
Dim NCTS As DAKOSY_Worker.UeberlassungsmeldungNCTSDE_009.UeberlassungsmeldungMRTyp = DAKOSY_Worker.UeberlassungsmeldungNCTSDE_009.UeberlassungsmeldungMRTyp.LoadFromFile(d)
@@ -3981,6 +3982,7 @@ Public Class cWorker_NCTS
Dim Verschluss_Art = ""
Dim Verschluss_Anzahl = 0
Dim Verschluss_Zeichen As New List(Of String)
Dim posErledigung As New DataTable
readNCTS_Ueberlassungsmeldung009 = ""
@@ -4007,7 +4009,52 @@ Public Class cWorker_NCTS
Wiedergestellungsdatum = NCTS.EinzelUeberlassungsmeldung.KopfDaten.Wiedergestellungsdatum
' bearbeiter=NCTS.EinzelUeberlassungsmeldung.KopfDaten.
If NCTS.EinzelUeberlassungsmeldung.TransitOperation IsNot Nothing Then
If NCTS.EinzelUeberlassungsmeldung.TransitOperation.HouseConsignment IsNot Nothing Then
For Each HC In NCTS.EinzelUeberlassungsmeldung.TransitOperation.HouseConsignment
If HC.ConsignmentItem IsNot Nothing Then
For Each CI In HC.ConsignmentItem
If CI.ProcedureTransference IsNot Nothing Then
If CI.ProcedureTransference.SummaryDeclaration IsNot Nothing Then
If CI.ProcedureTransference.SummaryDeclaration.SummaryDeclarationGoodsReference IsNot Nothing Then
For Each SDGR In CI.ProcedureTransference.SummaryDeclaration.SummaryDeclarationGoodsReference
If SDGR.SequenceNumber IsNot Nothing AndAlso posErledigung IsNot Nothing Then
If Not posErledigung.Columns.Contains("LaufendeNummer") Then
posErledigung.Columns.Add("LaufendeNummer", GetType(String))
posErledigung.Columns.Add("IDRegNrSumA", GetType(String))
posErledigung.Columns.Add("IDRegNrSumAPos", GetType(String))
posErledigung.Columns.Add("StueckzahlErledigte", GetType(String))
End If
Dim ro As DataRow = posErledigung.NewRow
ro("LaufendeNummer") = SDGR.SequenceNumber
ro("IDRegNrSumA") = SDGR.RegistrationNumber
ro("IDRegNrSumAPos") = SDGR.GoodsItemNumber
ro("StueckzahlErledigte") = SDGR.NumberOfPackages
posErledigung.Rows.Add(ro)
End If
Next
End If
End If
End If
Next
End If
Next
End If
If NCTS.EinzelUeberlassungsmeldung.TransitOperation.LimitDate.ToString <> "" Then 'Sollte mit Version 009 hier enthalten sein!
Try
Wiedergestellungsdatum = DateTime.ParseExact(NCTS.EinzelUeberlassungsmeldung.TransitOperation.LimitDate, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture)
@@ -4049,16 +4096,17 @@ Public Class cWorker_NCTS
End If
End If
End If
'End If
' NCTS.LOADByBezugsNr(bezugsNr, False) ' Falls schon ein DS mit dieser Bezugsnummer vorhanden ist.
If saveVerwahrung Then
saveVerwahrungsAusgang(MRN, posErledigung, NCTS, sendMail, testlauf)
End If
If readNCTS_Ueberlassungsmeldung009 <> "" And MRN <> "" Then 'BEZUGSNR vorhanden
Dim STATUS As DAKOSY_Worker.cDakosy_Statusmeldungen = FORM.getStatusCheckTransID(NCTS.Transaktion.IOReferenz, NCTS.Transaktion.IODatumZeit)
STATUS.dySt_BezugsNr = readNCTS_Ueberlassungsmeldung009
@@ -4601,5 +4649,258 @@ Public Class cWorker_NCTS
End Function
Shared Sub saveVerwahrungsAusgang(regNR As String, posErledigung As DataTable, NCTS As DAKOSY_Worker.UeberlassungsmeldungNCTSDE_009.UeberlassungsmeldungMRTyp, sendInfoMail As Boolean, testlauf As Boolean)
Dim originalTestSetting As Boolean = VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM
Try
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = testlauf
If posErledigung IsNot Nothing AndAlso posErledigung.Rows.Count > 0 Then
For Each POS As DataRow In posErledigung.Rows
Dim MRNNR As String = ""
Dim existingEntryID As Integer = 0
If Not IsDBNull(POS("IDRegNrSumA")) AndAlso POS("IDRegNrSumA").ToString <> "" Then
Dim POSNr As Integer = If(IsDBNull(POS("IDRegNrSumAPos")), 0, CInt(POS("IDRegNrSumAPos")))
If MRNNR <> POS.Item("IDRegNrSumA") Then
MRNNR = POS.Item("IDRegNrSumA")
'Dim firmaID = -1
Dim dtGesamtsicherheit = SQL.loadDgvBySql("Select * From [tblGesamtsicherheit] as gs left join tblGesamtsicherheitsPositionen as pos on pos.gsp_gsnr = gs.gs_gsnr where [gs_MRNNr] = '" & MRNNR & "' order by gsp_gspPosId", "AVISO")
If dtGesamtsicherheit.Rows.Count > 0 Then
Dim gs_row As DataRow = dtGesamtsicherheit.Rows(0)
Dim rows = dtGesamtsicherheit.Select("gsp_gspPosId = " & gs_row("gs_posNr") & " AND gsp_MRNNr IS NOT NULL")
If rows.Length > 0 Then
Exit Sub 'bereits vorhanden -> keine INFO
End If
Dim GesSichRef = New VERAG_PROG_ALLGEMEIN.cGesamtsicherheitsReferenz(gs_row("gs_standort"))
Dim saldo As Double = GesSichRef.CalcSaldo()
Dim Warenwert As Double = 0
Dim Sicherheitsbetrag As Double = 0
'Berechnung Warenwert und Sicherheitsbetrag aus Sendung -> immer aus den Produktivdaten!
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim dtVorpapiere As DataTable = SQL.loadDgvBySql("SELECT tblSnd_Warenwert,tblSnd_WarenwertWaehrung,tblSnd_Vorpapier_Pos,tblSnd_Vorpapier2_Pos, tblSnd_Vorpapier3_Pos from tblSendungen where tblSnd_Vorpapier = '" & gs_row("gs_ATBNr") & "' Or tblSnd_Vorpapier2 = '" & gs_row("gs_ATBNr") & "' OR tblSnd_Vorpapier3 = '" & gs_row("gs_ATBNr") & "'", "AVISO")
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = testlauf
If dtVorpapiere.Rows.Count > 0 Then
Dim rowsVorp = dtVorpapiere.Select("tblSnd_Warenwert is not null AND (tblSnd_Vorpapier_Pos = '" & gs_row.Item("gs_posNr") & "' or tblSnd_Vorpapier2_Pos = '" & gs_row.Item("gs_posNr") & "' or tblSnd_Vorpapier3_Pos = '" & gs_row.Item("gs_posNr") & "')")
Dim row = rowsVorp(0)
Warenwert = CDbl(row("tblSnd_Warenwert"))
Sicherheitsbetrag = System.Math.Round(Warenwert * (GesSichRef.gsr_zollsatz / 100))
End If
'Dim dtSendungen = SQL.loadDgvBySql("SELECT")
Dim anzahlPackstuecke As Integer = -1
Dim AnzahlStückErledigt As Integer = If(IsDBNull(POS("StueckzahlErledigte")), 0, CInt(POS("StueckzahlErledigte")))
'Dim StornierungKz As String = If(IsDBNull(POS("StornierungKz")), "", POS("StornierungKz"))
If gs_row.Item("gs_freitext") <> "" Then
anzahlPackstuecke = CInt(System.Text.RegularExpressions.Regex.Match(gs_row.Item("gs_freitext"), "\d+").Value)
End If
If anzahlPackstuecke > 0 AndAlso anzahlPackstuecke <> AnzahlStückErledigt Then 'Hinweismeldung, wenn nicht alle erledigt wurden!
Dim dt As New DataTable
If Not dt.Columns.Contains("anzahlPackstuecke") Then
dt.Columns.Add("MRN", GetType(String))
dt.Columns.Add("LKW_ID", GetType(String))
dt.Columns.Add("anzahlPackstuecke", GetType(Integer))
'dt.Columns.Add("StornierungKZ", GetType(String))
dt.Columns.Add("AnzahlStückErledigt", GetType(Integer))
End If
Dim ro As DataRow = dt.NewRow
ro("MRN") = gs_row.Item("gs_MRNNr")
ro("LKW_ID") = gs_row.Item("gs_avisoId")
ro("anzahlPackstuecke") = anzahlPackstuecke
ro("AnzahlStückErledigt") = AnzahlStückErledigt
'ro("StornierungKZ") = StornierungKz
dt.Rows.Add(ro)
Dim InfoText As String = createInfoMail(MRNNR, dt, "")
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("verwahrung@verag.ag", IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & "Erledigungsmeldung-DAKOSY fehlende Positionen - " & Now().ToShortDateString, InfoText,,,,, "d.breimaier@verag.ag")
End If
Dim SicherheitsPos As New cGesamtsicherheitsPositionen()
With SicherheitsPos
.gsp_gsId = gs_row("gs_gsId")
'.gsp_gspPosId = CInt(POSNr)
.gsp_gspPosId = gs_row.Item("gs_posNr")
.gsp_warenwert = Warenwert
.gsp_sicherheitsbetrag = Sicherheitsbetrag
.gsp_freitext = "DASKOY-IMPORT"
.gsp_filialenNr = gs_row("gs_filialenNr")
.gsp_art = "CLOSE"
.gsp_gsNr = gs_row("gs_gsnr")
.gsp_abfertigungsNr = gs_row("gs_abfertigungsnr")
.gsp_datum = NCTS.EinzelUeberlassungsmeldung.ObjektIdentifizierung.ZeitpunktEingang
.gsp_erstellungsdatum = DateTime.Now
.gsp_ust = gs_row("gs_ust")
.gsp_ATCNr = ""
.gsp_MRNNr = IIf(regNR = "", MRNNR, regNR)
.gsp_avisoId = gs_row("gs_avisoID")
.gsp_systemuser = "DAKOSY-AUTO"
End With
SicherheitsPos.SAVE()
GesSichRef.CalcSaldo()
If sendInfoMail Then
Dim InfoText2 As String = createInfoMail(gs_row.Item("gs_MRNNr"), Nothing, "VW-AUSGANG",, SicherheitsPos)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("verwahrung@verag.ag", IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & "Verwahrungsausgang T1 aus DAKOSY - " & Now().ToShortDateString, InfoText2,,,,, "d.breimaier@verag.ag")
End If
End If
End If
End If
Next
End If
'End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Finally
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = testlauf
End Try
End Sub
Public Shared Function createInfoMail(regNR As String, dt As DataTable, typ As String, Optional GS As cSicherheiten = Nothing, Optional GSPOS As cGesamtsicherheitsPositionen = Nothing) As String
Dim TextHTMLtable As String
Select Case typ
Case "MASSNAHME-DAKOSY"
TextHTMLtable &= "Bei " & regNR & " wurden eine Zoll-Maßnahme ausgelöst." & vbNewLine & vbNewLine & vbNewLine
TextHTMLtable &= "<table border=1>"
TextHTMLtable &= "<tr><td>Code</td><td>Text</td><td>NichtzustellbarKz</td><td>PackstueckAnzahl</td><td>PackstueckArt</td></tr>"
For Each r As DataRow In dt.Rows
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & r.Item("MassnahmeCode") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("MassnahmeText") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("MassnahmeNichtzustellbarKz") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("PackstueckAnzahl") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("PackstueckArt") & "</b></td>"
TextHTMLtable &= "</tr>"
Next
TextHTMLtable &= "</table>"
TextHTMLtable &= vbNewLine & vbNewLine & vbNewLine & "*Automatic generated e-mail*"
Return TextHTMLtable
Case "VW-EINGANG"
TextHTMLtable &= typ & " wurde aus DAKOSY generiert!" & vbNewLine & vbNewLine & vbNewLine
TextHTMLtable &= "<table border=1>"
TextHTMLtable &= "<tr><td>PosNr</td><td>Vorpapier</td><td>MRN</td><td>LKWID</td></tr>"
If GS IsNot Nothing Then
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & GS.gs_posNr & "</b></td>"
TextHTMLtable &= "<td><b>" & GS.gs_ATBNr & "</b></td>"
TextHTMLtable &= "<td><b>" & GS.gs_MRNNr & "</b></td>"
TextHTMLtable &= "<td><b>" & GS.gs_avisoId & "</b></td>"
TextHTMLtable &= "</tr>"
End If
TextHTMLtable &= "</table>"
TextHTMLtable &= vbNewLine & vbNewLine & vbNewLine & "*Automatic generated e-mail*"
Return TextHTMLtable
Case "VW-AUSGANG"
TextHTMLtable &= typ & " wurde aus DAKOSY generiert!" & vbNewLine & vbNewLine & vbNewLine
TextHTMLtable &= "<table border=1>"
TextHTMLtable &= "<tr><td>PosNr</td><td>MRN</td><td>ATC</td><td>AVISOID</td></tr>"
If GSPOS IsNot Nothing Then
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & GSPOS.gsp_gspPosId & "</b></td>"
TextHTMLtable &= "<td><b>" & GSPOS.gsp_MRNNr & "</b></td>"
TextHTMLtable &= "<td><b>" & GSPOS.gsp_ATCNr & "</b></td>"
TextHTMLtable &= "<td><b>" & GSPOS.gsp_avisoId & "</b></td>"
TextHTMLtable &= "</tr>"
End If
TextHTMLtable &= "</table>"
TextHTMLtable &= vbNewLine & vbNewLine & vbNewLine & "*Automatic generated e-mail*"
Return TextHTMLtable
Case Else
TextHTMLtable &= regNR & " wurde nicht vollständig aufgelöst." & vbNewLine & vbNewLine & vbNewLine
TextHTMLtable &= "<table border=1>"
TextHTMLtable &= "<tr><td>MRN-Nr</td><td>LKW-ID</td><td>Packstücke gesamt</td><td>Packstücke erledigt</td><td>Stornierung KZ</td></tr>"
For Each r As DataRow In dt.Rows
TextHTMLtable &= "<tr>"
TextHTMLtable &= "<td><b>" & r.Item("MRN") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("LKW_ID") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("anzahlPackstuecke") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("AnzahlStückErledigt") & "</b></td>"
TextHTMLtable &= "<td><b>" & r.Item("StornierungKZ") & "</b></td>"
TextHTMLtable &= "</tr>"
Next
TextHTMLtable &= "</table>"
TextHTMLtable &= vbNewLine & vbNewLine & vbNewLine & "*Automatic generated e-mail*"
Return TextHTMLtable
End Select
End Function
End Class