Files
SDL/VERAG_PROG_ALLGEMEIN/Classes/cZollArtikel.vb

229 lines
11 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Reflection
Public Class cZollArtikel
Property zollArt_id As Integer
Property KundenNr As Integer
Property zollArt_Teilsatzschluessel As Object = Nothing
Property zollArt_Verarbeitungskennzeichen As Object = Nothing
Property zollArt_Artikelnummer As Object = Nothing
Property zollArt_Dynamische_Ergaenzung_1 As Object = Nothing
Property zollArt_Dynamische_Ergaenzung_2 As Object = Nothing
Property zollArt_Kundennummer As Object = Nothing
Property zollArt_Warencodenummer As Object = Nothing
Property zollArt_Zusatzcode_1 As Object = Nothing
Property zollArt_Zusatzcode_2 As Object = Nothing
Property zollArt_Kennzeichen_Gueltig As Object = Nothing
Property zollArt_Kurzbezeichnung As Object = Nothing
Property zollArt_Warenbeschreibung As Object = Nothing
Property zollArt_Statistische_Maßeinheit As Object = Nothing
Property zollArt_Statistische_Maßeinheit_Qualifikator As Object = Nothing
Property zollArt_Besondere_Maßeinheit As Object = Nothing
Property zollArt_Besondere_Maßeinheit_Qualifikator As Object = Nothing
Property zollArt_Gewicht As Object = Nothing
Property zollArt_Menge As Object = Nothing
Property zollArt_Ursprungsland As Object = Nothing
Property Erfassungsdatum As Object = Nothing
Property Aenderungsdatum As Object = Nothing
Property Sachbearbeiter As Object = Nothing
Property zollArt_Status As Object = Nothing
Public hasEntry As Boolean = False
Dim SQL As New SQL
Sub New()
End Sub
Sub New(zollArt_id)
If zollArt_id IsNot Nothing Then
Me.zollArt_id = zollArt_id
LOAD()
End If
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("zollArt_id", zollArt_id, , True, True))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Teilsatzschluessel", zollArt_Teilsatzschluessel))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Verarbeitungskennzeichen", zollArt_Verarbeitungskennzeichen))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Artikelnummer", zollArt_Artikelnummer))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Dynamische_Ergaenzung_1", zollArt_Dynamische_Ergaenzung_1))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Dynamische_Ergaenzung_2", zollArt_Dynamische_Ergaenzung_2))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Kundennummer", zollArt_Kundennummer))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Warencodenummer", zollArt_Warencodenummer))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Zusatzcode_1", zollArt_Zusatzcode_1))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Zusatzcode_2", zollArt_Zusatzcode_2))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Kennzeichen_Gueltig", zollArt_Kennzeichen_Gueltig))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Kurzbezeichnung", zollArt_Kurzbezeichnung))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Warenbeschreibung", zollArt_Warenbeschreibung))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Statistische_Maßeinheit", zollArt_Statistische_Maßeinheit))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Statistische_Maßeinheit_Qualifikator", zollArt_Statistische_Maßeinheit_Qualifikator))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Besondere_Maßeinheit", zollArt_Besondere_Maßeinheit))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Besondere_Maßeinheit_Qualifikator", zollArt_Besondere_Maßeinheit_Qualifikator))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Gewicht", zollArt_Gewicht))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Menge", zollArt_Menge))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Ursprungsland", zollArt_Ursprungsland))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Erfassungsdatum", Erfassungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Aenderungsdatum", Aenderungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Status", zollArt_Status))
Return list
End Function
Public Function SAVE(Optional errHinweis = "") As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblZollArtikel WHERE zollArt_id=@zollArt_id) " &
" BEGIN " & getUpdateCmd() & " End " &
" Else " &
" BEGIN " & getInsertCmd() & " End " &
" commit tran "
zollArt_id = SQL.doSQLVarListID(zollArt_id, sqlstr, "FMZOLL", , list,, errHinweis)
Return zollArt_id > 0
End Function
Public Sub LOAD()
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("Select * FROM tblZollArtikel WHERE zollArt_id=@zollArt_id ", conn)
cmd.Parameters.AddWithValue("@zollArt_id", zollArt_id)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
hasEntry = True
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 tblZollArtikel SET " & str & " WHERE zollArt_id=@zollArt_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 tblZollArtikel (" & 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
Public Function DELETE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
Dim sqlstr = " DELETE FROM tblZollArtikel WITH(updlock,serializable) WHERE zollArt_id=" & Me.zollArt_id
Return SQL.doSQL(sqlstr, "FMZOLL")
End Function
Public Shared Function DELETE(id As Integer) As Boolean
Dim SQL As New SQL
Dim sqlstr = " DELETE FROM tblZollArtikel WHERE zollArt_id=" & id
Return SQL.doSQL(sqlstr, "FMZOLL")
End Function
Public Shared Function GetListByKundenNr(kdnr As Integer) As List(Of cZollArtikel)
Dim result As New List(Of cZollArtikel)
Dim SQL As New SQL
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblZollArtikel WHERE KundenNr = @kdnr", conn)
cmd.Parameters.AddWithValue("@kdnr", kdnr)
Using dr = cmd.ExecuteReader()
While dr.Read()
Dim item As New cZollArtikel()
For Each prop In GetType(cZollArtikel).GetProperties()
prop.SetValue(item, dr(prop.Name))
Next
item.hasEntry = True
result.Add(item)
End While
End Using
End Using
End Using
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & MethodBase.GetCurrentMethod.Name & "'" & vbNewLine &
ex.Message & vbNewLine & ex.StackTrace)
End Try
Return result
End Function
Public Shared Function FindZollArtikelByNummer(artikelListe As List(Of cZollArtikel), artikelnummer As String) As cZollArtikel
If artikelListe Is Nothing OrElse artikelnummer Is Nothing Then Return Nothing
Dim suchNr As String = artikelnummer.Trim().ToUpperInvariant()
' Finde alle Artikel mit gleicher Artikelnummer
Dim treffer = artikelListe.
Where(Function(a) a IsNot Nothing AndAlso
a.zollArt_Artikelnummer IsNot Nothing AndAlso
a.zollArt_Artikelnummer.ToString().Trim().ToUpperInvariant() = suchNr).
ToList()
If treffer.Count = 0 Then Return Nothing
If treffer.Count = 1 Then Return treffer(0)
' Wenn mehrere gefunden: wähle den mit längster Warencodenummer (zollArt_Warencodenummer)
Dim bester = treffer.OrderByDescending(Function(a)
Dim code = If(a.zollArt_Warencodenummer, "").ToString().Trim()
Return code.Length
End Function).
FirstOrDefault()
Return bester
End Function
End Class