Files
AVISO/Aviso/frmDigicust.vb
2023-09-12 12:19:29 +02:00

461 lines
17 KiB
VB.net

Imports DAKOSY_Worker.DEERRE
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 dig_sendung As New cDigicustSendungen
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"
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 openExisting As Boolean = False
Dim id As Integer = -1
Dim dgv As DataGridView = Nothing
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
Dim settings = New cDigicustSettings(cboStammreferenz._value)
lblInfo.Text = ""
With dig_sendung
.avisoId = AVISO.AvisoID
' .SendungsId = SENDUNG.tblSnd_SendungID
.reference = 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
sendDigicustData(dig_sendung, api, settings)
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 sendDigicustData(dig As cDigicustSendungen, api As cDigicustAPI, settings As cDigicustSettings)
Dim failreDesc As String
Dim authResp = api.authenticate(rtfToken.Text)
If authResp <> "200" Then
failreDesc = "Authentifizierung fehlgeschlagen - " & authResp & vbNewLine & "Vorgang abgebrochen!"
lblInfo.Text = failreDesc
Exit Sub
End If
Dim token = rtfToken.Text
If api.uploadingCase(dig, settings, dgvAnhaenge) Then
dig.SAVE()
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("reference").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()
cboStammreferenz.fillWithSQL("SELECT [id],[description] FROM [tblDigicust_Settings] WHERE companyId = " & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID & " and valid =1", False, "FMZOLL", True)
cboStammreferenz.changeItem("")
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
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 'EUR1'
when [anh_Art] = 'Rechnung' then 'invoice'
when [anh_Art] = 'eFatura' then 'invoice'
when [anh_Art] = 'CMR' then 'waybill'
when [anh_Art] = 'Ausfuhr' then 'exportDeclaration'
when [anh_Art] = 'Vorpapier' then 'transitDeclaration'
when [anh_Art] = 'Packliste' then 'packingList'
when [anh_Art] = 'Auftrag' then 'UserInput'
when [anh_Art] = 'Dispoliste' then 'UserInput'
when [anh_Art] = 'Vorkasse' then 'UserInput'
when [anh_Art] = 'Überweisungsbeleg' then 'UserInput'
when [anh_Art] = 'Vollmacht' then 'UserInput'
when [anh_Art] = 'ATB' then 'UserInput'
when [anh_Art] = 'ATA' then 'UserInput'
when [anh_Art] = 'Sonstiges' then 'UserInput'
when [anh_Art] ='' then 'UserInput' End
[anh_Art],[anh_Typ] FROM [tblAvisoAnhaenge]
WHERE [anh_AvisoId]='" & AVISO.AvisoID & "' AND (anh_SendungsId is null OR anh_SendungsId <=0 OR anh_SendungsId=" & SENDUNG.tblSnd_SendungID & ")
Order BY [anh_Reihenfolge], anh_Datum desc, [anh_id]"
'AND isnull(anh_SendungsId,0) <= 0
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
lblInfo.Text = ""
If cboStammreferenz._value = "" Then
lblInfo.Text = "Stammref. auswählen!"
Return False
End If
'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 1h) until: " & Now().AddHours(1)
Else
Label1.Text = "Token (valid 1h)"
End If
End Sub
End Class