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