656 lines
28 KiB
VB.net
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
|
|
|