Files
SDL/SDL/cLeistungFIBU.vb
2024-10-02 08:59:41 +00:00

143 lines
5.8 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Reflection
Public Class cLeistungFIBU
Property Firma_ID As Integer
Property LeistungsNr As Integer
Property Gl_account As String
Property SachkontoInlandSteuerpflichtig As Object
Property SachkontoInlandSteuerfrei As Object
Property SachkontoEUSteuerpflichtig As Object
Property SachkontoEUSteuerfrei As Object
Property Sachkonto3Land As Object
Property letzteAenderungUser As String
Property letzteAenderung As DateTime
Public hasEntry As Boolean = False
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Sub New()
End Sub
Sub New(LeistungsNr, Firma_ID)
Me.LeistungsNr = LeistungsNr
Me.Firma_ID = Firma_ID
LOAD()
End Sub
Private 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("Firma_ID", Firma_ID,))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gl_account", Gl_account))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SachkontoInlandSteuerpflichtig", SachkontoInlandSteuerpflichtig))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SachkontoInlandSteuerfrei", SachkontoInlandSteuerfrei))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SachkontoEUSteuerpflichtig", SachkontoEUSteuerpflichtig))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SachkontoEUSteuerfrei", SachkontoEUSteuerfrei))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachkonto3Land", Sachkonto3Land))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("letzteAenderung", letzteAenderung))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("letzteAenderungUser", letzteAenderungUser))
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 LeistungenBUKonten WITH(updlock,serializable) WHERE LeistungsNr=@LeistungsNr AND Firma_ID=@Firma_ID) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL
Using cmd As New SqlCommand("SELECT * FROM LeistungenBUKonten WHERE LeistungsNr=@LeistungsNr AND Firma_ID=@Firma_ID ", conn)
cmd.Parameters.AddWithValue("@LeistungsNr", LeistungsNr)
cmd.Parameters.AddWithValue("@Firma_ID", Firma_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 [LeistungenBUKonten] SET " & str & " WHERE LeistungsNr=@LeistungsNr AND Firma_ID=@Firma_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 LeistungenBUKonten (" & 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
Dim sqlstr = " DELETE FROM [LeistungenBUKonten] WITH(updlock,serializable) WHERE LeistungsNr=" & Me.LeistungsNr & " AND Firma_ID=" & Me.Firma_ID
Return (New VERAG_PROG_ALLGEMEIN.SQL).doSQL(sqlstr, "FMZOLL")
End Function
End Class