Files
SDL/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb
2026-10-14 16:56:11 +02:00

656 lines
28 KiB
VB.net

Imports System.Data.SqlClient
Imports com.sun.tools.doclets.internal.toolkit.util
Imports DAKOSY_Worker
Public Class usrCntlATLAS_EXGestellung
Property ALLG As usrCntlATLAS_EXGestellung
'Property FilialeNr As Integer
' Property AbfertigungsNr As Integer
' Property BezugsNr As String = ""
' Property AvisoId As Integer
'Property SENDUNGS_ID As Integer
Property AVISO As VERAG_PROG_ALLGEMEIN.cAviso
Property SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen
Dim sentToDakosy = False
Property FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Sub New(AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen, FIRMA_DY As String)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Me.AVISO = AVISO
Me.SENDUNG = SENDUNG
Me.FIRMA_DY = FIRMA_DY
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub usrCntlATLAS_Load(sender As Object, e As EventArgs) Handles Me.Load
cboDakosyAction.Items.Clear()
cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Neuen Datensatz erstellen", DY_ObjektAktion.OBJ_CREATE))
cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vohr. DS ändern", DY_ObjektAktion.OBJ_CHANGE))
cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vorh. DS stornieren", DY_ObjektAktion.OBJ_CANCEL))
cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Datensatz an ZOLL senden", DY_ObjektAktion.OBJ_SEND))
cboDakosyAction.changeItem(DY_ObjektAktion.OBJ_SEND)
sbAbgangZollstelle.initSearchBox(Me.FindForm, "[Code] ,[Code] as Nr,Description as Dienststelle,left(Code,2) as Land,[Description] +' (' +left(Code,2)+')' as display FROM [tbl_DY_ZollDE_C0141_Zollstellen]", {" [Code]", "Description"}, " (StartDate is null OR StartDate< GETDATE()) AND (EndDate is null OR EndDate> GETDATE()) ", " left(Code,2),[Description]", "Code", "display", "FMZOLL", , 400, 200, {"display", "Code"})
cbxNCTS.Checked = False
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Or VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "WAI" Then
Button2.Visible = True
Label5.Visible = True
End If
initStammref()
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("EXG_2_NCTS", "AVISO") Then
initEXGs()
Else
Panel3.Visible = False
MyPanel2.Visible = False
MyPanel1.Visible = False
End If
End Sub
Sub initEXGs()
MyPanel1.Visible = False
Panel3.Visible = False
MyDatagridview1.DataSource = Nothing
If SENDUNG Is Nothing Then Exit Sub
Dim bezugsNr As String = SENDUNG.FilialenNr & "/" & SENDUNG.AbfertigungsNr
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Dim query As String = "SELECT exg_Id, exg_ObjectName, exg_MRN, exg_CustomsOfficeOfExitForTransitDeclared, exg_Consignor_Name " &
"FROM tblDakosy_EXG " &
"WHERE exg_ObjectName LIKE @bezugsNr " &
"ORDER BY exg_Trans_DatumZeit"
Using cmd As New SqlCommand(query, conn)
cmd.Parameters.AddWithValue("@bezugsNr", bezugsNr.Replace("[", "[[]").Replace("%", "[%]").Replace("_", "[_]") & "[_]EXG[0-9]%")
Dim dt As New DataTable
Using adapter As New SqlDataAdapter(cmd)
adapter.Fill(dt)
End Using
If dt.Rows.Count > 0 Then
MyDatagridview1.DataSource = dt
MyPanel2.Visible = True
MyPanel2.Enabled = True
MyPanel1.Visible = True
Panel3.Visible = True
MyPanel1.Enabled = True
MyDatagridview1.Columns("exg_Id").Visible = False
MyDatagridview1.Columns("exg_ObjectName").HeaderText = "Bezugsnummer"
MyDatagridview1.Columns("exg_Consignor_Name").HeaderText = "Versender"
MyDatagridview1.Columns("exg_MRN").HeaderText = "MRN"
MyDatagridview1.Columns("exg_CustomsOfficeOfExitForTransitDeclared").HeaderText = "Ausgangszollstelle"
MyDatagridview1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
End If
End Using
End Using
Catch ex As Exception
MsgBox("Fehler beim Laden der EXG-Datensätze:" & vbCrLf & ex.Message & ex.StackTrace)
End Try
End Sub
Sub initStammref()
Select Case FIRMA_DY
Case "VERAG"
txtDyMandant.Text = "VERG"
txtDyNiederlassung.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
txtDyNiederlassung.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
Case "ATILLA"
txtDyMandant.Text = "ATIL"
txtDyNiederlassung.Text = "SUW"
Case "UNISPED"
txtDyMandant.Text = "UNAT"
txtDyNiederlassung.Text = "ATSPED"'"SUB"
Case "IMEX"
txtDyMandant.Text = "IMEX"
txtDyNiederlassung.Text = "IME"
Case "AMBAR"
txtDyMandant.Text = "ATIL"
txtDyNiederlassung.Text = "AMBWO"
End Select
Dim MandantWhere As String = "(dySr_dy_Mandant = '" & txtDyMandant.Text & "' " &
"AND dySr_dy_Niederlassung IN ('','" & txtDyNiederlassung.Text & "'))"
'Select Case FIRMA_DY
' Case "ATILLA"
' MandantWhere = "((dySr_dy_Mandant = 'ATIL' AND dySr_dy_Niederlassung = 'SUW') " &
' "OR (dySr_dy_Mandant = 'UNAT' AND dySr_dy_Niederlassung = 'SUB'))"
' Case Else
' MandantWhere = "(dySr_dy_Mandant = '" & txtDyMandant.Text & "' " &
' "AND dySr_dy_Niederlassung IN ('','" & txtDyNiederlassung.Text & "'))"
'End Select
' Dim BezugsNr = ("ID" & AVISO.AvisoID & "_" & SENDUNG.FilialenNr & "-" & SENDUNG.AbfertigungsNr & "_" & If(AVISO.Auftraggeber.Length > 8, AVISO.Auftraggeber.ToString.Substring(0, 5), AVISO.Auftraggeber)).Trim
Dim BezugsNr = SENDUNG.FilialenNr & "/" & SENDUNG.AbfertigungsNr & "_EXG"
lblBezugsnummer.Text = BezugsNr
cboStammreferenz.fillWithSQL("SELECT [dySr_Stammreferenz],[dySr_Bezeichnung] FROM [tblDakosy_Stammreferenzen] WHERE dySr_Land='DE' AND dySr_Verfahren='EXG' and " & MandantWhere & " and dySr_visible=1", False, "FMZOLL", True)
' MsgBox("SELECT [dySr_Stammreferenz],[dySr_Bezeichnung] FROM [tblDakosy_Stammreferenzen] WHERE dySr_Land='DE' AND dySr_Verfahren='AA' and dySr_dy_Mandant='" & txtDyMandant.Text & "' and dySr_dy_Niederlassung IN ('','" & txtDyNiederlassung.Text & "') and dySr_visible=1")
cboStammreferenz.changeItem("")
If cboStammreferenz.Items.Count = 2 Then
cboStammreferenz.SelectedIndex = 1
End If
cboStammreferenz2.fillWithSQL("SELECT [dySr_Stammreferenz],[dySr_Bezeichnung] FROM [tblDakosy_Stammreferenzen] WHERE dySr_Land='DE' AND dySr_Verfahren='NCTS' and dySr_dy_Mandant='" & txtDyMandant.Text & "' and dySr_dy_Niederlassung IN ('','" & txtDyNiederlassung.Text.Replace("DTB", "SUB") & "') and dySr_visible=1", False, "FMZOLL", True)
cboStammreferenz2.changeItem("")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Cursor = Cursors.WaitCursor
Dim err = False
' If cboStammreferenz._value = "" Then MsgBox("Stammreferenz auswählen!") : Me.Cursor = Cursors.Default : Exit Sub
If sbAbgangZollstelle._value = "" Then MsgBox("Zollstelle auswählen!") : Me.Cursor = Cursors.Default : Exit Sub
If Not sbAbgangZollstelle._value.StartsWith("DE") Then MsgBox("Gültige Zollstelle (in DE) auswählen!") : Me.Cursor = Cursors.Default : Exit Sub
If rtbMRN.Text.Trim = "" Then MsgBox("MRN auswählen!") : Me.Cursor = Cursors.Default : Exit Sub
Dim exg_list = New List(Of Integer)
Dim dblcheck = ""
'MRN Prüfung:
For Each l In rtbMRN.Lines
If l.Trim <> "" Then
If l.Trim.Length >= 18 And dblcheck.Contains(l.Trim) Then
MsgBox("Doppelte MRN !: " & l)
Me.Cursor = Cursors.Default
Exit Sub
End If
If Not IsValidMRN(l.Trim) Then
MsgBox("Ungültige MRN (Format): " & l)
Me.Cursor = Cursors.Default
Exit Sub
End If
dblcheck &= l.Trim
End If
Next
If sentToDakosy OrElse vbYes = MsgBox("Soll(en) die Ausfuhr-Gestellung(en) abgeschickt werden?", vbYesNoCancel) Then
Dim cnt = 1
'Senden:
For Each l In rtbMRN.Lines
If l.Trim <> "" Then
If Not sendEXP_MRN(l.Trim.ToUpper, sbAbgangZollstelle._value, cnt, exg_list, FIRMA_DY) Then
MsgBox("Sendefehler bei " & l)
err = True
End If
cnt += 1
End If
Next
If Not err Then
If cbxNCTS.Checked Then
Dim NCTS_OUT = usrCntlATLAS_NCTS004.genNCTSfromStammref(Me, FIRMA_DY, AVISO, SENDUNG, "")
If NCTS_OUT Is Nothing Then
MsgBox("NCTS-Entwurf konnte nicht erstellt werden!")
Exit Sub
End If
If NCTS_OUT.ncts_Id <= 0 OrElse NCTS_OUT.ncts_dyaAnmID <= 0 Then
MsgBox("NCTS-Entwurf hat keine gültige ID!")
Exit Sub
End If
NCTS_OUT.ncts_HOUSE_CONSIGNMENT.Clear()
NCTS_OUT.DELETE_HouseConsignment()
If Not NCTS_OUT.SAVE_ALL() Then
MsgBox("NCTS-Entwurf konnte nicht gespeichert werden!")
Exit Sub
End If
For Each exgId In exg_list
cDakosyEXG.UPDATE_FillNCTS_ID(exgId, NCTS_OUT.ncts_dyaAnmID)
Next
lblBezugsnummer.Text = NCTS_OUT.ncts_ObjectName
End If
End If
Me.FindForm.Close()
End If
Me.Cursor = Cursors.Default
End Sub
Function sendEXP_MRN(MRN As String, Zollstelle As String, zeile As String, ByRef exg_list As List(Of Integer), Optional FIRMA_DY_TEMP As String = "") As Boolean
Me.Refresh()
' Dim cDyAnm As New cDakosy_Zollanmeldungen(cDy_ART, BezugsNr, AVISO.AvisoID, SENDUNG.tblSnd_SendungID)
'loadDYZollanmeldungen()
Dim dy_Id = -1
If True Then
''Dim cDY As New cDakosyNCTSOut(cDyAnm.dy_Id, cDyAnm.dy_Erstellung_SB)
'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 = Me.FIRMA_DY
' DAKOSY_Interface_SEND.loadInClass_VersandanmeldungNCTSDE_003(ncts_OUT, Me, DY_ANM, Me.FIRMA_DY)
Dim EXG As New DAKOSY_Worker.cDakosyEXG
EXG.exg_MRN = MRN
EXG.exg_CustomsOfficeOfExitForTransitDeclared = Zollstelle
' dim FilialenNr
Dim zusatz = ""
If TextBox1.Text <> "" Then zusatz = "/" & TextBox1.Text
EXG.exg_ObjectName = SENDUNG.FilialenNr & "/" & SENDUNG.AbfertigungsNr & "_EXG" & zeile & "" & zusatz '---> >>> MRN KÜRZEN!!!!
'EXG.exg_ObjectName = AVISO.AvisoID & "_EXP_" & EXG.exg_MRN.ToString().Substring(0, 4) & EXG.exg_MRN.ToString.Substring(14) & zusatz '---> >>> MRN KÜRZEN!!!!
'EXG.exg_ObjectName = AVISO.AvisoID & "_EXP_" & EXG.exg_MRN
Dim FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
FIRMA_DY = DAKOSY_Worker.cDakosyFunftions.getFirma_DY(SENDUNG.FilialenNr, Me.FindForm, "EXG") ' -> hier liegt vermutlich der Fehler, die Firma wird hier nochmals gesetzt
If FIRMA_DY_TEMP <> "" Then
FIRMA_DY = FIRMA_DY_TEMP
End If
Dim saveFile = ""
If EXG.SAVE_ALL Then
exg_list.Add(EXG.exg_Id)
If generatePresentationEXITDE_003(EXG, AVISO, SENDUNG, EXG.exg_ObjectName, saveFile, cboDakosyAction._value, FIRMA_DY, cboStammreferenz._value) Then
If saveFile <> "" Then
If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, lblBezugsnummer.Text, dy_Id, FIRMA_DY) Then
'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
If SENDUNG IsNot Nothing Then SENDUNG.SET_VGMA() ' MA Vorgeschrieben in Sendung setzen.
Return True
Else
'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
Return False
End If
End If
End If
End If
End If
' 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)
Return False
End Function
Shared Function generatePresentationEXITDE_003(EXG As DAKOSY_Worker.cDakosyEXG, AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SND As VERAG_PROG_ALLGEMEIN.cSendungen, ByVal Bezugsnummer As String, ByRef saveFile As String, DY_ACTION As String, FIRMA_DY As String, Optional BezugsnummerVorblendung As String = "") As Boolean
Dim Interface_VERSION = "003"
Dim ObjectAktion = DY_ACTION
' Dim BezugsnummerVorblendung = "AA_NCTS_DE_ZE_WO_MITTICH"
Dim XML As New DAKOSY_Worker.PresentationEXITDE.GestellungXPTyp
If Bezugsnummer.Length > 22 Then
Bezugsnummer = Bezugsnummer.Substring(0, 22)
End If
'Transaktion:
XML.Transaktion = New PresentationEXITDE.TransaktionExportTyp
XML.Transaktion.IOPartner = SDL.DAKOSY_Interface_SEND.getIOPartner(FIRMA_DY) 'If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "VERA", "VERG")
XML.Transaktion.IODatumZeit = Now
XML.Transaktion.IOReferenz = SND.FilialenNr & "-" & SND.AbfertigungsNr & "_" & Now.ToString("ddMMyyHHmmSS")
If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM And XML.Transaktion.IOPartner <> "UNAT" Then
XML.Transaktion.IODivision3 = SDL.DAKOSY_Interface_SEND.getDivision(FIRMA_DY) '"SUW"
End If
XML.Transaktion.Version = Interface_VERSION
Dim XML_EG = New PresentationEXITDE.EinzelGestellungTyp
'ObjektIdentifizierung:
XML_EG.ObjektIdentifizierung.ObjektName = Bezugsnummer
'If Bezugsnummer IsNot Nothing Then XML_EG.ObjektIdentifizierung.ObjektAliasname = Bezugsnummer
Dim ObjektAktionLst As New List(Of String)
If ObjectAktion = "SEND" Then
ObjektAktionLst.Add("CREATE")
End If
ObjektAktionLst.Add(ObjectAktion)
XML_EG.ObjektIdentifizierung.ObjektAktion = ObjektAktionLst
If If(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_DAKOSY_SB, "") <> "" Then XML_EG.ObjektIdentifizierung.Bearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_DAKOSY_SB
If BezugsnummerVorblendung IsNot Nothing AndAlso BezugsnummerVorblendung <> "" Then XML_EG.ObjektIdentifizierung.BezugsnummerVorblendung = BezugsnummerVorblendung
'TransitOperation:
XML_EG.HeaderData = New PresentationEXITDE.KopfDatenGestellungTyp
XML_EG.HeaderData.MRN = EXG.exg_MRN
XML_EG.HeaderData.ArrivalNotificationDateAndTime = Now
XML_EG.HeaderData.ExitCarrier.ContactPerson.Name = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
If If(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_telefonnr, "") <> "" Then
XML_EG.HeaderData.ExitCarrier.ContactPerson.PhoneNumber = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_telefonnr
Else
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "UNISPED"
XML_EG.HeaderData.ExitCarrier.ContactPerson.PhoneNumber = "0043771126770"
Case "AMBAR"
XML_EG.HeaderData.ExitCarrier.ContactPerson.PhoneNumber = "004986519962492"
Case "IMEX"
XML_EG.HeaderData.ExitCarrier.ContactPerson.PhoneNumber = "00437711 31630"
Case "ATILLA"
XML_EG.HeaderData.ExitCarrier.ContactPerson.PhoneNumber = "0043771128450"
Case Else
XML_EG.HeaderData.ExitCarrier.ContactPerson.PhoneNumber = "004377112777200"
End Select
End If
XML_EG.HeaderData.CustomsOfficeOfExitActual = EXG.exg_CustomsOfficeOfExitForTransitDeclared
'If cDY.ncts_CountryOfDispatch IsNot Nothing Then XML.EinzelEingangsanzeige.TransitOperation.CustomsOfficeOfDestinationActual = cDY.ncts_CountryOfDispatch
'If SND.tblSnd_ATB_T1 IsNot Nothing Then XML.EinzelEingangsanzeige.TransitOperation.MRN = SND.tblSnd_ATB_T1
'XML.EinzelEingangsanzeige.TransitOperation.ArrivalNotificationDateAndTime = Now
'XML.EinzelEingangsanzeige.TransitOperation.IncidentFlag = "N"
XML.DeclarationData.Add(XML_EG)
' Dim saveDir = System.Reflection.Assembly.GetExecutingAssembly().Location & "\Dakosy_SEND\"
Dim saveDir = Application.StartupPath & "\Dakosy_SEND\"
If Not System.IO.Directory.Exists(saveDir) Then
System.IO.Directory.CreateDirectory(saveDir)
End If
saveFile = saveDir & "DY_EXG_" & Now.ToString("yyMMdd_HHmmss_fff") & ".xml"
XML.SaveToFile(saveFile)
'SDL.DAKOSY_Interface_SEND.replaceNullDateXML(saveFile)
Return True
End Function
Public Function IsValidMRN(mrn As String) As Boolean
'' Überprüfen, ob die Länge genau 18 Zeichen beträgt
'If String.IsNullOrEmpty(mrn) OrElse mrn.Length <> 18 Then
' Return False
'End If
'' Überprüfen, ob die ersten zwei Zeichen Buchstaben sind (Ländercode)
'If Not Char.IsLetter(mrn(0)) OrElse Not Char.IsLetter(mrn(1)) Then
' Return False
'End If
'' Überprüfen, ob die nächsten zwei Zeichen Ziffern sind (Jahreszahl)
'If Not Char.IsDigit(mrn(2)) OrElse Not Char.IsDigit(mrn(3)) Then
' Return False
'End If
'' Überprüfen, ob die nächsten 12 Zeichen alphanumerisch sind
'For i As Integer = 4 To 15
' If Not Char.IsLetterOrDigit(mrn(i)) Then
' Return False
' End If
'Next
'' Überprüfen, ob die letzten zwei Zeichen Prüfziffern sind (optional, falls komplexere Prüfung erforderlich)
'For i As Integer = 16 To 17
' If Not Char.IsDigit(mrn(i)) Then
' Return False
' End If
'Next
'' Alle Prüfungen bestanden
'Return True
' Überprüfen, ob die Länge genau 18 Zeichen beträgt
If String.IsNullOrEmpty(mrn) OrElse mrn.Length <> 18 Then
Return False
End If
' Überprüfen, ob die ersten zwei Zeichen Ziffern sind (Jahreszahl)
If Not Char.IsDigit(mrn(0)) OrElse Not Char.IsDigit(mrn(1)) Then
Return False
End If
' Überprüfen, ob die nächsten zwei Zeichen Buchstaben sind (Ländercode)
If Not Char.IsLetter(mrn(2)) OrElse Not Char.IsLetter(mrn(3)) Then
Return False
End If
'' Überprüfen, ob die nächsten 12 Zeichen alphanumerisch sind
'For i As Integer = 4 To 15
' If Not Char.IsLetterOrDigit(mrn(i)) Then
' Return False
' End If
'Next
'' Überprüfen, ob die letzten zwei Zeichen Ziffern sind (Prüfziffern)
'For i As Integer = 16 To 17
' If Not Char.IsDigit(mrn(i)) Then
' Return False
' End If
'Next
Return True
End Function
Private Sub cbxNCTS_CheckedChanged(sender As Object, e As EventArgs) Handles cbxNCTS.CheckedChanged
MyPanel2.Enabled = cbxNCTS.Checked
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
FIRMA_DY = Button2.Text
initStammref()
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then
If Button2.Text = "UNISPED" Then
Button2.Text = "ATILLA"
Else
Button2.Text = "UNISPED"
End If
End If
If VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "WAI" Then
If Button2.Text = "UNISPED" Then
Button2.Text = "VERAG"
Else
Button2.Text = "UNISPED"
End If
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim exgIds As New List(Of Integer)
For Each row As DataGridViewRow In MyDatagridview1.Rows
If Not row.IsNewRow AndAlso row.Cells("exg_Id").Value IsNot Nothing Then
exgIds.Add(Convert.ToInt32(row.Cells("exg_Id").Value))
End If
Next
If exgIds.Count = 0 Then
MsgBox("Keine EXG-Gestellungen vorhanden!")
Exit Sub
End If
Try
Me.Cursor = Cursors.WaitCursor
Dim saveFile As String = SendNCTS(exgIds, True, "T1")
'MsgBox("NCTS erfolgreich erstellt!" & vbCrLf & saveFile)
'Process.Start(saveFile)
Me.FindForm.Close()
Catch ex As Exception
MsgBox("Fehler beim Erstellen des NCTS:" & vbCrLf & ex.Message)
Finally
Me.Cursor = Cursors.Default
End Try
End Sub
Function SendNCTS(exgIds As List(Of Integer), Optional sendFTP As Boolean = False, Optional nctsArt As String = "T2") As String
If exgIds Is Nothing OrElse exgIds.Count = 0 Then
Throw New Exception("Keine EXG-Gestellungen übergeben.")
End If
'Console.WriteLine("EXG-Test: " & exgIds.Count & " Gestellungen gefunden.")
Dim BezugsNr As String = ""
BezugsNr = usrCntlATLAS_NCTS004.getBezugsnr(txtDyMandant.Text, SENDUNG, BezugsNr, "")
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
If cboStammreferenz2._value <> "" Then NCTS_OUT.ncts_BezugsnummerVorblendung = cboStammreferenz2._value
'::::AVISO Daten befüllen::::
cDakosyNCTSOut004.loaddataFromAVISO(AVISO, SENDUNG, "", BezugsNr, NCTS_OUT, FIRMA_DY, False)
'::::::::::::::::::::::::::::
'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, cbxAutoTranslate.Checked, cbxForceTranslate.Checked)
'Console.WriteLine("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 If(firma, "") = "" Then firma = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
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
DY_ANM.dy_AvisoId = If(AVISO Is Nothing, Nothing, AVISO.AvisoID)
DY_ANM.dy_SendungsId = If(SENDUNG Is Nothing, Nothing, SENDUNG.tblSnd_SendungID)
If Not DY_ANM.SAVE() OrElse DY_ANM.dy_Id <= 0 Then
Throw New Exception("NCTS-Zollanmeldung konnte nicht erstellt werden.")
End If
'NCTS ergänzen
NCTS_OUT.ncts_Trans_Referenz = BezugsNr & "_" & Now.ToString("ddMMyyHHmmss")
NCTS_OUT.ncts_niederlassung = If(String.IsNullOrWhiteSpace(niederlassung), "SUB", niederlassung)
NCTS_OUT.ncts_Declarationtype = nctsArt
'NCTS speichern und optional versenden
Return cDakosyNCTSOut004.SaveAndSendNCTS(NCTS_OUT, DY_ANM, BezugsNr, If(String.IsNullOrWhiteSpace(firma), "VERAG", firma), sendFTP, SENDUNG, "CREATE", nctsArt)
''NCTS mit 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")
'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(String.IsNullOrWhiteSpace(firma), "VERAG", firma)
'NCTS_OUT.ncts_niederlassung = If(String.IsNullOrWhiteSpace(niederlassung), "SUB", niederlassung)
''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("NCTS: " & BezugsNr & " / DY-ID: " & DY_ANM.dy_Id)
'Return saveFile
End Function
End Class