350 lines
14 KiB
VB.net
350 lines
14 KiB
VB.net
|
|
|
|
|
|
' 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("<return>")
|
|
Dim lastPos As Integer = response.LastIndexOf("</return>") - 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("<soap:Envelope xmlns:soap={0} >", "'http://schemas.xmlsoap.org/soap/envelope/'")
|
|
xmlBuilder.Append("<soap:Body>")
|
|
xmlBuilder.AppendFormat("<ev:validateEORI xmlns:ev={0} >", "'http://eori.ws.eos.dds.s/'")
|
|
xmlBuilder.AppendFormat("<ev:eori>{0}</ev:eori>", number)
|
|
xmlBuilder.Append("</ev:validateEORI>")
|
|
xmlBuilder.Append("</soap:Body> ")
|
|
xmlBuilder.Append("</soap:Envelope> ")
|
|
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
|
|
|
|
|
|
<XmlRoot(ElementName:="return")>
|
|
Public Class EoriResponseModel
|
|
<XmlElement(ElementName:="requestDate")>
|
|
Public Property RequestDate As String
|
|
<XmlElement(ElementName:="result")>
|
|
Public Property Result As List(Of Result)
|
|
End Class
|
|
|
|
<XmlRoot(ElementName:="result")>
|
|
Public Class Result
|
|
<XmlElement(ElementName:="eori")>
|
|
Public Property Eori As String
|
|
<XmlElement(ElementName:="status")>
|
|
Public Property Status As String
|
|
<XmlElement(ElementName:="statusDescr")>
|
|
Public Property StatusDescr As String
|
|
<XmlElement(ElementName:="name")>
|
|
Public Property Name As String
|
|
<XmlElement(ElementName:="street")>
|
|
Public Property Street As String
|
|
<XmlElement(ElementName:="postalCode")>
|
|
Public Property PostalCode As String
|
|
<XmlElement(ElementName:="city")>
|
|
Public Property City As String
|
|
<XmlElement(ElementName:="country")>
|
|
Public Property Country As String
|
|
End Class
|