Files
SDL/VERAG_PROG_ALLGEMEIN/Classes/cUIDPruefung.vb
2020-08-04 16:34:47 +02:00

340 lines
15 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Reflection
Imports VERAG_PROG_ALLGEMEIN.UIDPruefung
'Imports SDL.eu.europa.ec
Public Class cUIDPruefung
Property uid_id As Integer = -1
Property uid_KundenNr As Integer
Property uid_UstIdKz As String
Property uid_UstIdNr As String
Property uid_Datum As Date = Now
Property uid_valid As Boolean
Property uid_MaId As Object = Nothing
Property uid_Sachbearbeiter As String
Property uid_firma As Object = Nothing
Property uid_stufe As Integer = 1
Property Firma As String = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Property uid_abfrageUid As Object = Nothing
Property uid_sessionId As Object = Nothing
Property uid_adr1 As Object = Nothing
Property uid_adr2 As Object = Nothing
Property uid_adr3 As Object = Nothing
Property uid_adr4 As Object = Nothing
Property uid_adr5 As Object = Nothing
Property uid_adr6 As Object = Nothing
Shared SQL As New SQL
Sub New()
End Sub
Sub New(uid_id)
Me.uid_id = uid_id
LOAD()
End Sub
Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_id", uid_id, , True, True))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_KundenNr", uid_KundenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_UstIdKz", uid_UstIdKz))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_UstIdNr", uid_UstIdNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_Datum", uid_Datum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_valid", uid_valid))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_MaId", uid_MaId))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_Sachbearbeiter", uid_Sachbearbeiter))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_firma", uid_firma))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_stufe", uid_stufe))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma", Firma))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_abfrageUid", uid_abfrageUid))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_sessionId", uid_sessionId))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_adr1", uid_adr1))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_adr2", uid_adr2))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_adr3", uid_adr3))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_adr4", uid_adr4))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_adr5", uid_adr5))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uid_adr6", uid_adr6))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblUIDPruefung WITH(updlock,serializable) WHERE uid_id=@uid_id) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
uid_id = SQL.doSQLVarListID(uid_id, sqlstr, "FMZOLL", , list)
Return uid_id > 0
End Function
Public Shared Function LOADByKdNrDate(ba_KundenNr As Integer, ba_Datum As Date) As cUIDPruefung
Try
Dim UID As New cUIDPruefung
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblUIDPruefung WHERE ba_KundenNr=@ba_KundenNr AND cast(ba_Datum as date)=@ba_Datum ", conn)
cmd.Parameters.AddWithValue("@ba_KundenNr", ba_KundenNr)
cmd.Parameters.AddWithValue("@ba_Datum", ba_Datum.ToShortDateString)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each l In UID.getParameterList()
Dim propInfo As PropertyInfo = UID.GetType.GetProperty(l.Scalarvariable)
If dr.Item(l.Text) Is DBNull.Value Then
propInfo.SetValue(UID, Nothing)
Else
propInfo.SetValue(UID, dr.Item(l.Text))
End If
Next
dr.Close()
Return UID
End If
dr.Close()
End Using
End Using
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
End Try
Return Nothing
End Function
Public Shared Function doUIDPruefungALL(Optional datum As Object = Nothing, Optional SaveErgInAdressen As Boolean = True, Optional Sciherheitsabfrage As Boolean = True, Optional MaxEintraege As Integer = -1, Optional showErr As Boolean = True) As DataTable
Dim dt As DataTable = Nothing
If datum = Nothing Then datum = CDate("01." & Now.ToString("MM.yyyy")).AddMonths(-2)
Dim where = ""
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "IMEX" : where = " And FilialenNr IN (5501)"
Case "ATILLA" : where = " And FilialenNr IN (4801)"
Case Else : where = " And isnull(FilialenNr,'') Not IN (5501)"
End Select
Dim Top = ""
If MaxEintraege > 0 Then
Top = " TOP " & MaxEintraege
End If
dt = SQL.loadDgvBySql("SELECT " & Top & " [AdressenNr] as KdNr,[Ordnungsbegriff] as Firma,UstIdGeprüft as [letzte Prüfung],UstIdKz,UstIdnr " &
" From [Adressen] inner Join kunden On KundenNr=AdressenNr " &
" where UstIdGeprüft < '" & datum.ToShortDateString & "' and UstIdKz is not null and UstIdNr is not null " &
" And Auswahl='A' " & where & " ORDER BY Ordnungsbegriff", "FMZOLL")
If dt IsNot Nothing Then
If dt.Rows.Count = 0 Then Return Nothing
If Sciherheitsabfrage Then
If vbYes <> MsgBox("Es werden " & dt.Rows.Count & " Datensätze abgefragt, möchten Sie fortfahren?", vbYesNoCancel) Then
Return Nothing
End If
End If
Dim c As New DataColumn
c.ColumnName = "Ergebnis"
dt.Columns.Add(c)
For Each r As DataRow In dt.Rows
Dim UID_TMP = doUIDPruefung(r("KdNr"),, SaveErgInAdressen, showErr)
If UID_TMP IsNot Nothing Then
If UID_TMP.uid_valid Then
r("Ergebnis") = "OK"
Else
r("Ergebnis") = "UNGÜLTIG"
End If
Else
r("Ergebnis") = "ERROR"
End If
Next
End If
Return dt
End Function
Public Shared Function doUIDPruefung(ba_KundenNr, Optional AskIfDouble = False, Optional SaveErgInAdressen = True, Optional showErr = True) As cUIDPruefung
Dim AD As New cAdressen(ba_KundenNr)
If AD IsNot Nothing Then
If AD.UstIdKz IsNot Nothing AndAlso AD.UstIdNr IsNot Nothing Then
Try
If AskIfDouble Then
If IsDate(AD.UstIdGeprüft) AndAlso CDate(AD.UstIdGeprüft).ToShortDateString = Now.ToShortDateString Then
If vbYes <> MsgBox("Die UID-Nummer wurde heute bereits geprüft. Soll die Prüfung nochmal durchgeführt werden?", vbYesNoCancel) Then
Return Nothing
End If
End If
End If
Dim vat As New UIDPruefung.checkVatService
' Dim EU3t As New SDL.eu.europa.ec.checkVatService("checkVatPort", "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl") '"urn:ec.europa.eu:taxud:vies:services:checkVat:types")
' Dim EU4 As New EU_Uid_Pruefung.checkVatPortTyp
' EU3.checkVatPortType()
' "EU_Uid_Pruefung.checkVatPortType"
' Dim valid As Boolean = False
'Dim name As String = ""
'Dim adress As String = ""
Dim countryCode As String = AD.UstIdKz
Dim vatNumber As String = AD.UstIdNr
Dim traderName As String
Dim traderCompanyType As String
Dim traderStreet As String
Dim traderPostcode As String
Dim traderCity As String
Dim requesterCountryCode As String = "AT"
Dim requesterVatNumber As String = "U62663022"
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "IMEX"
requesterCountryCode = "AT"
requesterVatNumber = "U68490714"
End Select
Dim valid As Boolean = False
Dim traderAddress As String
Dim traderNameMatch As matchCode
Dim traderNameMatchSpecified As Boolean
Dim traderCompanyTypeMatch As matchCode
Dim traderCompanyTypeMatchSpecified As Boolean
Dim traderStreetMatch As matchCode
Dim traderStreetMatchSpecified As Boolean
Dim traderPostcodeMatch As matchCode
Dim traderPostcodeMatchSpecified As Boolean
Dim traderCityMatch As matchCode
Dim traderCityMatchSpecified As Boolean
Dim requestIdentifier As String
' Dim ass As New EU_UID_Pruefung.checkVatPortTypeClient()
' ass.checkVatPortTypeClient()
' Dim s = EU3t.checkVat("AT", "U53187000", valid, name, adress)
'Dim s = vat.checkVat(ADRESSE.UstIdKz, ADRESSE.UstIdNr, valid, name, adress)
Dim s = vat.checkVatApprox(countryCode, vatNumber, traderName, traderCompanyType, traderStreet, traderPostcode, traderCity, requesterCountryCode, requesterVatNumber, valid, traderAddress, traderNameMatch, traderNameMatchSpecified, traderCompanyTypeMatch, traderCompanyTypeMatchSpecified, traderStreetMatch, traderStreetMatchSpecified, traderPostcodeMatch, traderPostcodeMatchSpecified, traderCityMatch, traderCityMatchSpecified, requestIdentifier)
If s >= Now.ToShortDateString Then 'If s IsNot Nothing Then
Dim UID_TMP As New cUIDPruefung
UID_TMP.uid_Datum = Now
UID_TMP.uid_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
If If(UID_TMP.uid_Sachbearbeiter, "") = "" Then UID_TMP.uid_Sachbearbeiter = "AUTO"
UID_TMP.uid_MaId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
UID_TMP.uid_valid = valid
UID_TMP.uid_KundenNr = ba_KundenNr
UID_TMP.uid_UstIdKz = AD.UstIdKz
UID_TMP.uid_UstIdNr = AD.UstIdNr
UID_TMP.uid_stufe = 1
UID_TMP.Firma = If(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, "VERAG")
UID_TMP.uid_abfrageUid = requesterCountryCode & requesterVatNumber
' UID.uid_firma =
' UID.uid_strasse))
'UID.uid_plz))
'UID.uid_ort))
UID_TMP.SAVE()
If valid Then
If SaveErgInAdressen Then
AD.UstIdGeprüft = Now.ToShortDateString
AD.SAVE()
End If
End If
Return UID_TMP
End If
Catch ex As Exception
If showErr Then MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
End Try
End If
End If
Return Nothing
End Function
Public Sub LOAD()
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblUIDPruefung WHERE uid_id=@uid_id ", conn)
cmd.Parameters.AddWithValue("@uid_id", uid_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each l In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(l.Scalarvariable)
If dr.Item(l.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(l.Text))
End If
Next
End If
dr.Close()
End Using
End Using
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
End Try
End Sub
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE [tblUIDPruefung] SET " & str & " WHERE uid_id=@uid_id ")
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
End Try
Return ""
End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO tblUIDPruefung (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
End Try
Return ""
End Function
End Class