' 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