Imports DocumentFormat.OpenXml.Vml.Presentation Imports GrapeCity.ActiveReports.Design.DdrDesigner.Designers Imports GrapeCity.ActiveReports.ReportsCore.Tools Imports Newtonsoft.Json.Linq Imports SDL Imports VERAG_PROG_ALLGEMEIN Public Class frmDigicust Dim api As cDigicustAPI Dim ART As String = "" Dim FilialenNr As Integer Dim AbfertigungsNr As Integer Dim JAHR As Integer = Now.ToString("yy") Public isSTAMMREF As Boolean = False Public STAMMREF As String = "" Public CopyFromZA_Id As Integer = -1 Dim FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA Dim ZOLL_SYSTEM = "DAKOSY" Dim DY As DAKOSY_Worker.cDakosy_Zollanmeldungen = Nothing Public ATT As List(Of String) Dim AVISO As New cAviso Dim zusatz As String Dim cDy_ART As String = If(FIRMA_DY = "ATILLA", "T2", "T1") Dim VermerkeDAL As New cVermerkeDAL Dim NCTS As DAKOSY_Worker.cDakosyNCTSOut = Nothing Dim openExisting As Boolean = False Dim id As Integer = -1 Dim dgv As DataGridView = Nothing Dim atez_data As cATEZ_NCTS_DATA Dim atez = New cATEZ_NCTS_IN Property BezugsNr As String = "" Property SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen Sub New(AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen, JAHR As Integer, Optional _dgv As DataGridView = Nothing) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() If _dgv IsNot Nothing Then Me.dgv = _dgv Me.AVISO = AVISO Me.SENDUNG = SENDUNG Me.JAHR = JAHR If SENDUNG IsNot Nothing Then Me.FilialenNr = SENDUNG.FilialenNr Me.AbfertigungsNr = SENDUNG.AbfertigungsNr End If ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Sub New(_id As Integer, AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen, JAHR As Integer) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() openExisting = True id = _id Me.AVISO = AVISO Me.SENDUNG = SENDUNG Me.JAHR = JAHR If SENDUNG IsNot Nothing Then Me.FilialenNr = SENDUNG.FilialenNr Me.AbfertigungsNr = SENDUNG.AbfertigungsNr End If ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try If atez_data.status = "Sent" Then End If If Not checkAttachment() Then Exit Sub End If If Not checkMandatoryField() Then Exit Sub End If Me.Cursor = Cursors.WaitCursor lblInfo.Text = "" 'With atez_data ' .AvisoId = AVISO.AvisoID ' .SendungsId = SENDUNG.tblSnd_SendungID ' .VERAG_LRN = lblBezugsnummer.Text ' .LicensePlateContainerNo = txtLKWId.Text ' .DAKOSY_TemplateCode = cboStammreferenz._value ' .DAKOSY_IOPartner = txtDyMandant.Text ' .DAKOSY_Division3 = txtDyNiederlassung.Text ' .DestinationCustomsOffice = sbBestimmungsZollstelle._value ' .Carrier_Name = usrCntl_Carrier.kdFirma.Text ' .Carrier_Adress_City = usrCntl_Carrier.txtOrt.Text ' .Carrier_Adress_Country = usrCntl_Carrier.sbLand._value ' .Carrier_Adress_Postcode = usrCntl_Carrier.txtPlz.Text ' .Carrier_Adress_Street = usrCntl_Carrier.txtStrasse.Text ' .Carrier_EORI = usrCntl_Carrier.txtEORI.Text ' .Guarantee_GRN = "" 'leer ' For Each doc As DataGridViewRow In dgvAnhaenge.Rows ' Dim isSelected = IIf(DBNull.Value Is doc.Cells("anh_selekt").Value, False, doc.Cells("anh_selekt").Value) ' If isSelected Then ' .selectedDocuments &= doc.Cells("anh_docId").Value & ", " ' End If ' Next ' .SAVE() 'End With 'sendAtezData(atez_data, atez) Me.Cursor = Cursors.Default Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default End Try End Sub Private Sub sendAtezData(atezData As cATEZ_NCTS_DATA, atez As cATEZ_NCTS_IN) Dim failreDesc As String Dim authResp = atez.authenticate() If authResp <> "200" Then failreDesc = "Authentifizierung fehlgeschlagen - " & authResp & vbNewLine & "Vorgang abgebrochen!" lblInfo.Text = failreDesc Exit Sub End If If Not atez.setJson(atezData) Then MsgBox("Fehler beim Erstellen der Daten" & vbNewLine & "Vorgang abgebrochen!") If Not atez.setJsonPDF(atezData, dgvAnhaenge) Then MsgBox("Fehler beim Erstellen der PDF-Daten, kein Anhang ausgewählt!" & vbNewLine & "Vorgang abgebrochen!") Dim azetId = atez.SendRequestWithAuthHeader("application/json", failreDesc) If failreDesc <> "" Then If atezData.status = "Draft" Then MsgBox("Fehler beim Senden" & vbNewLine & failreDesc) atezData.fehlerbeschreibung = failreDesc atezData.SAVE() Exit Sub End If Dim result As MsgBoxResult = MsgBox("Fehler beim Senden" & vbNewLine & failreDesc & vbNewLine & "Soll NCTS als Entwurf gespeichert werden?", vbYesNoCancel) If result = vbYes Then atezData.status = "Draft" atezData.fehlerbeschreibung = failreDesc atezData.SAVE() End If lblInfo.Text = "Fehler in der API " Else atezData.status = "Sent" atezData.atezId = IIf(azetId IsNot Nothing, azetId, "") atezData.SAVE() Me.Close() End If End Sub Function getBezugsnr(ByRef BezugsNr) Dim BezugsNrTmp = "" BezugsNrTmp = SENDUNG.FilialenNr & "/" & SENDUNG.AbfertigungsNr BezugsNr = BezugsNrTmp zusatz = "A" If dgv IsNot Nothing AndAlso dgv.Rows.Count > 0 Then BezugsNr = BezugsNrTmp & "/" & zusatz For Each r As DataGridViewRow In dgv.Rows If r.Cells("BezugsNr").Value = BezugsNr Then If zusatz.Length = 1 Then zusatz = Chr(Asc(zusatz.ToString) + 1) Else zusatz = zusatz.Substring(0, 1) & Chr(Asc(zusatz.Substring(0, 2).ToString) + 1) End If If zusatz = "Z" Then zusatz = "AA" End If BezugsNr = BezugsNrTmp & "/" & zusatz Next End If While DAKOSY_Worker.cDakosy_Zollanmeldungen.ExistsBezugsNr(BezugsNr) 'IsNot Nothing BezugsNr = BezugsNrTmp & "/" & zusatz If zusatz.Length = 1 Then zusatz = Chr(Asc(zusatz.ToString) + 1) Else zusatz = zusatz.Substring(0, 1) & Chr(Asc(zusatz.Substring(0, 2).ToString) + 1) End If If zusatz = "Z" Then zusatz = "AA" End While lblBezugsnummer.Text = BezugsNr Return BezugsNr End Function Private Sub frmATEZNCTS_Load(sender As Object, e As EventArgs) Handles MyBase.Load Select Case FIRMA_DY Case "VERAG" : txtDyMandant.Text = "VERG" txtDyNiederlassung.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG Case "ATILLA" : txtDyMandant.Text = "ATIL" : txtDyNiederlassung.Text = "SUW" Case "UNISPED" : txtDyMandant.Text = "UNAT" : txtDyNiederlassung.Text = "ATSPED" Case "IMEX" : txtDyMandant.Text = "IMEX" : txtDyNiederlassung.Text = "IME" Case "AMBAR" : txtDyMandant.Text = "ATIL" : txtDyNiederlassung.Text = "AMBWO" End Select initAttachment() 'If openExisting Then ' If id > 0 Then ' atez_data = New cATEZ_NCTS_DATA(id) ' If atez_data.atezId <> "" Then ' lblInfo.Text = "Atez-ID " & atez_data.atezId ' Else ' lblInfo.Text = "Status: " & atez_data.status ' End If ' lblBezugsnummer.Text = atez_data.VERAG_LRN ' cboStammreferenz.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 & "') and dySr_visible=1", False, "FMZOLL", True) ' cboStammreferenz.changeItem(atez_data.DAKOSY_TemplateCode) ' txtLKWId.Text = atez_data.LicensePlateContainerNo ' sbBestimmungsZollstelle.SET_VALUE(atez_data.DestinationCustomsOffice) ' sbAbgangZollstelle.SET_VALUE(atez_data.DepartureCustomsOffice) ' cbxTemperatur.Checked = IIf(atez_data.CoolingTemperature <> "", True, False) ' txtTransporttemp.Text = atez_data.CoolingTemperature ' txtDat.Text = IIf(atez_data.DatDeterminationLimit IsNot DBNull.Value, atez_data.DatDeterminationLimit, "") ' usrCntl_Carrier.kdFirma.Text = atez_data.Carrier_Name ' usrCntl_Carrier.txtStrasse.Text = atez_data.Carrier_Adress_Street ' usrCntl_Carrier.txtPlz.Text = atez_data.Carrier_Adress_Postcode ' usrCntl_Carrier.txtOrt.Text = atez_data.Carrier_Adress_City ' usrCntl_Carrier.sbLand._value = atez_data.Carrier_Adress_Country ' usrCntl_Carrier.txtEORI.Text = atez_data.Carrier_EORI ' setRoute() ' If atez_data.status = "Draft" Then ' Button1.Text = "An ATEZ senden -->" ' pnlHead.Enabled = True ' Button1.Enabled = True ' initAttachment() ' Else ' Button1.Text = "JSON" ' pnlHead.Enabled = False ' Button1.Enabled = True ' End If ' Else ' Button1.Enabled = False ' End If 'Else ' atez_data = New cATEZ_NCTS_DATA() ' Button1.Text = "An ATEZ senden -->" ' pnlHead.Enabled = True ' cboStammreferenz.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 & "') and dySr_visible=1", False, "FMZOLL", True) ' cboStammreferenz.changeItem("") ' getBezugsnr(BezugsNr) ' txtLKWId.Text = AVISO.LKW_Nr ' cbxTemperatur.Checked = IIf(AVISO.TransportTemperatur <> "", True, False) ' txtTransporttemp.Text = AVISO.TransportTemperatur ' If AVISO.Frächter_KdNr IsNot Nothing AndAlso IsNumeric(AVISO.Frächter_KdNr) AndAlso AVISO.Frächter_KdNr > 0 Then ' usrCntl_Carrier.kdFirma.initKdBox(Me) ' usrCntl_Carrier.kdFirma.KdNr = AVISO.Frächter_KdNr ' End If ' If AVISO.Grenzstelle.Replace("???", "") = "" Then ' sbAbgangZollstelle.SET_VALUE(AVISO.Zollstelle) ' Else ' Dim GRZ As New VERAG_PROG_ALLGEMEIN.cGrenzstelle(AVISO.Grenzstelle) ' If GRZ IsNot Nothing AndAlso GRZ.hasEntry Then ' If GRZ.grz_ZollamtDST IsNot Nothing Then ' sbAbgangZollstelle.SET_VALUE(GRZ.grz_ZollamtDST) ' End If ' End If ' End If 'End If End Sub Sub initAttachment() Dim hSQL As String = " SELECT [anh_id],anh_Datum,[anh_Name],[anh_docId], CASE WHEN [anh_Art] = 'ATR-EUR1' then 'EUR' when [anh_Art] = 'Rechnung' then 'INVOICE' when [anh_Art] = 'eFatura' then 'INVOICE' when [anh_Art] = 'CMR' then 'CMR' when [anh_Art] = 'Ausfuhr' then 'OTHER' when [anh_Art] = 'Vorpapier' then 'OTHER' when [anh_Art] = 'Packliste' then 'PACK' when [anh_Art] = 'Auftrag' then 'OTHER' when [anh_Art] = 'Auftrag' then 'OTHER' when [anh_Art] = 'Dispoliste' then 'OTHER' when [anh_Art] = 'Vorkasse' then 'OTHER' when [anh_Art] = 'Überweisungsbeleg' then 'OTHER' when [anh_Art] = 'Vollmacht' then 'OTHER' when [anh_Art] = 'ATB' then 'OTHER' when [anh_Art] = 'ATA' then 'CarnetATA' when [anh_Art] = 'Sonstiges' then 'OTHER' when [anh_Art] ='' then 'OTHER' End [anh_Art],[anh_Typ] FROM [tblAvisoAnhaenge] WHERE [anh_AvisoId]='" & AVISO.AvisoID & "' AND isnull(anh_SendungsId,0) <= 0 And anh_Typ = 'PDF' Order BY [anh_Reihenfolge], anh_Datum desc, [anh_id]" Dim dt = VermerkeDAL.Anzeigen_Vermerke(hSQL) Dim col As DataColumn col = dt.Columns.Add("anh_selekt", GetType(Boolean)) col.SetOrdinal(0) dgvAnhaenge.DataSource = dt If dgvAnhaenge.RowCount = 0 Then dgvAnhaenge.Columns.Clear() : Exit Sub With dgvAnhaenge .Enabled = True .ReadOnly = False .RowTemplate.MinimumHeight = 30 .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells .Columns("anh_id").Visible = False 'VermerkID nicht anzeigenconMenuVermerke .Columns("anh_docId").Visible = False 'AvisoID nicht anzeigen .Columns("anh_selekt").MinimumWidth = 50 .Columns("anh_selekt").HeaderText = "ausgewählt" .Columns("anh_selekt").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns("anh_Datum").MinimumWidth = 50 .Columns("anh_Datum").HeaderText = "Datum" .Columns("anh_Datum").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns("anh_Name").MinimumWidth = 150 .Columns("anh_Name").HeaderText = "Name" .Columns("anh_Name").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("anh_Art").MinimumWidth = 50 .Columns("anh_Art").HeaderText = "Art" .Columns("anh_Art").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns("anh_Typ").Width = 60 .Columns("anh_Typ").HeaderText = "Typ" .Columns("anh_Typ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter End With End Sub Public Function checkAttachment() As Boolean Dim selectedDocuments As Boolean = False For Each Row In dgvAnhaenge.Rows selectedDocuments = IIf(DBNull.Value Is Row.Cells("anh_selekt").Value, False, Row.Cells("anh_selekt").Value) If selectedDocuments Then Exit For Next If Not selectedDocuments Then lblInfo.Text = "kein Anhang selektiert" Cursor = Cursors.Default Return selectedDocuments End If Return selectedDocuments End Function Public Function checkMandatoryField() As Boolean 'TODO Return True End Function Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click rtfToken.Text = "" End Sub Private Sub btnCreateToken_Click(sender As Object, e As EventArgs) Handles btnCreateToken.Click Label2.Text = "Status: " & api.authenticate(rtfToken.Text) If rtfToken.Text <> "" Then Label1.Text = "Token (valid 24hrs) until: " & Now().AddHours(24) Else Label1.Text = "Token (valid 24hrs)" End If End Sub End Class