' Aufruf des Webservice von FinanzOnline zur prüfung der UID-Nummer
' Aufgrund von verzögerten Bestätigungen wurd diese Funktion deaktiviert!!!
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Xml
Imports System.Xml.Serialization
Imports DocumentFormat.OpenXml.Drawing.Charts
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
Public Class cEORIWebService
'Public Shared SESSION_ID As String = ""
'Shared Function Call_Web_Service_MethodUID_Abfrage(ByRef session As String, ByVal txtFirma As String, ByVal txtEORI As String) As String
' Try
' ' Return CallWebService.uidAbfrage(session, tid, benid, My.Resources.UID_Nr, txtUid.Text, uidAbfrageRequestStufe.Item2, "", "", "", "", "", "", "")
' 'Dim s() As Object = CallWebService.uidAbfrage(session, tid, benid, My.Resources.UID_Nr, txtUid.Text, uidAbfrageRequestStufe.Item2, "", "", "", "", "", "", "")
' Dim EORIvalidation As New eu.europa.ec1.validation
' Dim msg As String = ""
' Dim name As String = ""
' Dim adrz1 As String = ""
' Dim adrz2 As String = ""
' Dim adrz3 As String = ""
' Dim adrz4 As String = ""
' Dim adrz5 As String = ""
' Dim adrz6 As String = ""
' Dim returnInt As eu.europa.ec1.eoriValidationResult = EORIvalidation.validateEORI({txtEORI})
' If returnInt.result.Count > 0 Then
' MsgBox(returnInt.result)
' 'Dim firma As String = name & vbNewLine & adrz1
' 'If adrz2 <> "" Then firma = firma & vbNewLine & adrz2
' 'If adrz3 <> "" Then firma = firma & vbNewLine & adrz3
' 'If adrz4 <> "" Then firma = firma & vbNewLine & adrz4
' 'If adrz5 <> "" Then firma = firma & vbNewLine & adrz5
' 'If adrz6 <> "" Then firma = firma & vbNewLine & adrz6
' ' frmUIDCheck.firmaUIDFinanzOnline = firma
' ' frmUIDCheck.firmaUIDProgramm = txtFirma
' ' frmUIDCheck.uidnr = txtUid
' ' frmUIDCheck.Show()
' Else
' MsgBox(returnInt)
' End If
' Return ""
' Catch ex As Exception
' MsgBox(ex.Message & ex.StackTrace)
' End Try
' Return "-1"
'End Function
'Shared Function genUID_Formular(ByVal txtUid As String, Optional AvisoId As Integer = -1, Optional SendungsId As Integer = -1, Optional ByRef UID_ERG As Integer = -1) As String 'SESSION_ID wir nur zurückgegeben
' Try
' Dim msgErgebnis = ""
' Dim tmp_SESSION_ID = ""
' Dim Firma = ""
' UID_ERG = 0 'Call_Web_Service_MethodUID_Abfrage_NEU2020(txtUid, Firma, tmp_SESSION_ID, msgErgebnis)
' If UID_ERG = 0 Or UID_ERG = 1 Then
' Select Case UID_ERG
' Case 0 : msgErgebnis = "UID-Nr. GÜLTIG - OK"
' Case 1 : msgErgebnis = "UID-Nr. UNGÜLTIG"
' End Select
' Dim PdfTmp = "" 'SDL.FormularManagerNEU.UID_PRUEFUNG(msgErgebnis, Firma, tmp_SESSION_ID, uid, txtUid, tid, AvisoId, SendungsId)
' If PdfTmp <> "" Then
' Dim fileName = "UID_Prüfung_" & txtUid & ".pdf"
' Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "UID_PRUEFUNG", VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, txtUid, Now.ToString("ddMMyy_HHmmss.ffff"), fileName, -1, False) 'Now.ToString("ddMMyy_HHmmss.ffff")
' If Not DS.uploadDataToDATENSERVER(PdfTmp) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
' If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
' Dim da_id = DS.da_id
' Dim destPath = DS.GET_TOP1_PATH
' If AvisoId > 0 And SendungsId > 0 Then
' Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, "UID", "PDF", SendungsId)
' If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
' Dim anhId = ANH.anh_id
' End If
' Return destPath
' End If
' Else
' MsgBox(msgErgebnis)
' End If
' Catch ex As Exception
' MsgBox(ex.Message & ex.StackTrace)
' End Try
' Return ""
'End Function
Shared _url = "http://ec.europa.eu/taxation_customs/dds2/eos/validation/services/validation"
Shared Function genEORI_Formular(ByVal KdNr As Integer, ByVal txtEORI As String, Optional AvisoId As Integer = -1, Optional SendungsId As Integer = -1, Optional ByRef EORI_ERGInt As Integer = -1) As String 'SESSION_ID wir nur zurückgegeben
Try
Dim msgErgebnis = ""
Dim tmp_SESSION_ID = ""
Dim Firma = ""
Dim EORI_ERG = ValidateEoriNumber(txtEORI)
If EORI_ERG.Result.Count > 0 Then
If EORI_ERG.Result(0).Status = 0 Or EORI_ERG.Result(0).Status = 1 Then
Firma = EORI_ERG.Result(0).Name & " "
Firma &= EORI_ERG.Result(0).Street & " "
Firma &= EORI_ERG.Result(0).Country & " " & EORI_ERG.Result(0).PostalCode & " " & EORI_ERG.Result(0).City
Firma = Firma
EORI_ERGInt = EORI_ERG.Result(0).Status
Select Case EORI_ERG.Result(0).Status
Case 0 : msgErgebnis = "EORI-Nr. GÜLTIG - OK"
Case 1 : msgErgebnis = "EORI-Nr. UNGÜLTIG"
End Select
setEORIEntry(KdNr, SendungsId, AvisoId, EORI_ERG, tmp_SESSION_ID, EORI_ERG.Result(0).Eori, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID)
Dim PdfTmp = SDL.FormularManagerNEU.EORI_PRUEFUNG(msgErgebnis, Firma, tmp_SESSION_ID, txtEORI, AvisoId, SendungsId, EORI_ERG.RequestDate)
If PdfTmp <> "" Then
Dim fileName = "EORI_Prüfung_" & txtEORI & ".pdf"
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "EORI_PRUEFUNG", VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, txtEORI, Now.ToString("ddMMyy_HHmmss.ffff"), fileName, -1, False) 'Now.ToString("ddMMyy_HHmmss.ffff")
If Not DS.uploadDataToDATENSERVER(PdfTmp) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
Dim da_id = DS.da_id
Dim destPath = DS.GET_TOP1_PATH
If AvisoId > 0 And SendungsId > 0 Then
Dim fi As New FileInfo(PdfTmp)
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, "EORI", "PDF", SendungsId, , fi.Length)
If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
Dim anhId = ANH.anh_id
End If
Return destPath
End If
Else
MsgBox(EORI_ERG.Result(0).StatusDescr)
End If
Else
MsgBox("Fehler bei der Prüfung der EORI-Nummer. WebService evtl. nicht verfügbar.")
End If
Return ""
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
Return ""
End Function
Shared Function genEORI_FormularWithoutSaving(ByVal kdnr As Integer, ByVal txtEORI As String, Optional AvisoId As Integer = -1, Optional SendungsId As Integer = -1, Optional ByRef EORI_ERGInt As Integer = -1) As String 'SESSION_ID wir nur zurückgegeben
Try
Dim msgErgebnis = ""
Dim tmp_SESSION_ID = ""
Dim Firma = ""
Dim EORI_ERG = ValidateEoriNumber(txtEORI)
If EORI_ERG.Result.Count > 0 Then
If EORI_ERG.Result(0).Status = 0 Or EORI_ERG.Result(0).Status = 1 Then
Firma = EORI_ERG.Result(0).Name & " " & vbNewLine
Firma &= EORI_ERG.Result(0).Street & " " & vbNewLine
Firma &= EORI_ERG.Result(0).Country & " " & EORI_ERG.Result(0).PostalCode & " " & EORI_ERG.Result(0).City
'Firma = Firma.Trim
EORI_ERGInt = EORI_ERG.Result(0).Status
Select Case EORI_ERG.Result(0).Status
Case 0 : msgErgebnis = "EORI-Nr. GÜLTIG - OK"
Case 1 : msgErgebnis = "EORI-Nr. UNGÜLTIG"
End Select
setEORIEntry(kdnr, SendungsId, AvisoId, EORI_ERG, tmp_SESSION_ID, txtEORI, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID)
Dim PdfTmp = SDL.FormularManagerNEU.EORI_PRUEFUNG(msgErgebnis, Firma, tmp_SESSION_ID, txtEORI, AvisoId, SendungsId, EORI_ERG.RequestDate)
Return PdfTmp
End If
Else
MsgBox("Fehler bei der Prüfung der EORI-Nummer. WebService evtl. nicht verfügbar.")
End If
Return ""
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
Return ""
End Function
Shared Sub setEORIEntry(kdnr As Integer, SendungsID As Integer, avisoID As Integer, EORI_ERG As EoriResponseModel, tmp_SESSION_ID As String, txtEORI As String, FirmaID As Integer)
Dim EORIPruefung = New cEORIPruefung()
Dim kdErw = New VERAG_PROG_ALLGEMEIN.cKundenErweitert(kdnr)
Select Case EORI_ERG.Result(0).Status
Case 0 : EORIPruefung.eori_valid = 1
Case 1 : EORIPruefung.eori_valid = 0
End Select
kdErw.kde_EORIgeprueftAm = Now()
kdErw.SAVE()
EORIPruefung.eori_datum = Now()
EORIPruefung.eori_KdNr = kdnr
EORIPruefung.eori_maid = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
EORIPruefung.eori_sendungsid = SendungsID
EORIPruefung.eori_firma = (EORI_ERG.Result(0).Name & EORI_ERG.Result(0).Street & EORI_ERG.Result(0).Country & EORI_ERG.Result(0).PostalCode & EORI_ERG.Result(0).City).Trim
EORIPruefung.eori_sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
EORIPruefung.eori_sessionID = tmp_SESSION_ID
EORIPruefung.eori_AvisoID = avisoID
EORIPruefung.eori_FirmaID = FirmaID
EORIPruefung.SAVE()
End Sub
Shared Function ValidateEoriNumber(ByVal number As String) As EoriResponseModel
If number Is Nothing Then
Return Nothing
End If
Dim soapEnvelopeXml As XmlDocument = CreateSoapEnvelope(number)
Dim webRequest As HttpWebRequest = CreateWebRequest(_url)
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest)
Dim asyncResult As IAsyncResult = webRequest.BeginGetResponse(Nothing, Nothing)
asyncResult.AsyncWaitHandle.WaitOne()
Dim response As String
Using webResponse As WebResponse = webRequest.EndGetResponse(asyncResult)
Using rd As StreamReader = New StreamReader(webResponse.GetResponseStream())
response = rd.ReadToEnd()
End Using
End Using
Dim startPos As Integer = response.IndexOf("")
Dim lastPos As Integer = response.LastIndexOf("") - startPos + 9
Dim responseFormatted As String = response.Substring(startPos, lastPos)
Dim serializer As XmlSerializer = New XmlSerializer(GetType(EoriResponseModel))
Dim result As EoriResponseModel
Using reader As TextReader = New StringReader(responseFormatted)
result = CType(serializer.Deserialize(reader), EoriResponseModel)
End Using
Return result
End Function
Private Shared Function CreateWebRequest(ByVal url As String) As HttpWebRequest
Dim webRequest As HttpWebRequest = CType(webRequest.Create(url), HttpWebRequest)
webRequest.ContentType = "text/xml;charset=""utf-8"""
webRequest.Accept = "text/xml"
webRequest.Method = "POST"
Return webRequest
End Function
Private Shared Function CreateSoapEnvelope(ByVal number As String) As XmlDocument
Dim soapEnvelopeDocument As XmlDocument = New XmlDocument()
Dim xmlBuilder As StringBuilder = New StringBuilder()
xmlBuilder.AppendFormat("", "'http://schemas.xmlsoap.org/soap/envelope/'")
xmlBuilder.Append("")
xmlBuilder.AppendFormat("", "'http://eori.ws.eos.dds.s/'")
xmlBuilder.AppendFormat("{0}", number)
xmlBuilder.Append("")
xmlBuilder.Append(" ")
xmlBuilder.Append(" ")
soapEnvelopeDocument.LoadXml(xmlBuilder.ToString())
Return soapEnvelopeDocument
End Function
Private Shared Sub InsertSoapEnvelopeIntoWebRequest(ByVal soapEnvelopeXml As XmlDocument, ByVal webRequest As HttpWebRequest)
Using stream As Stream = webRequest.GetRequestStream()
soapEnvelopeXml.Save(stream)
End Using
End Sub
End Class
Public Class EoriResponseModel
Public Property RequestDate As String
Public Property Result As List(Of Result)
End Class
Public Class Result
Public Property Eori As String
Public Property Status As String
Public Property StatusDescr As String
Public Property Name As String
Public Property Street As String
Public Property PostalCode As String
Public Property City As String
Public Property Country As String
End Class