Files
SDL/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsnummern.vb
2021-10-27 11:19:22 +02:00

174 lines
7.4 KiB
VB.net

Imports System.Data.SqlClient
Public Class cRechnungsnummern
Property SpeditionsbuchNr As String = "" 'FIRMA!
Property Buchungsjahr As String = ""
Property VonRechnungsNr As Integer = -1
Property BisRechnungsNr As Integer = -1
Property LfdRechnungsNr As Integer = 0
Dim SQL As New SQL
Public Sub New(SpeditionsbuchNr As String, Buchungsjahr As String)
Me.SpeditionsbuchNr = SpeditionsbuchNr
Me.Buchungsjahr = Buchungsjahr
'Default-Werte:
'-------------------------------------
Select Case SpeditionsbuchNr
Case 1
VonRechnungsNr = Now.ToString("yy") & "100001"
BisRechnungsNr = Now.ToString("yy") & "199999"
Case 3
VonRechnungsNr = Now.ToString("yy") & "300001"
BisRechnungsNr = Now.ToString("yy") & "399999"
Case 7
VonRechnungsNr = Now.ToString("yy") & "700001"
BisRechnungsNr = Now.ToString("yy") & "799999"
Case 11
VonRechnungsNr = Now.ToString("yy") & "900001"
BisRechnungsNr = Now.ToString("yy") & "999999"
Case 15
VonRechnungsNr = Now.ToString("yy") & "200001"
BisRechnungsNr = Now.ToString("yy") & "299999"
Case 20
VonRechnungsNr = Now.ToString("yy") & "400001"
BisRechnungsNr = Now.ToString("yy") & "499999"
Case 17 'FrontOffice
VonRechnungsNr = Now.ToString("yy") & "500001"
BisRechnungsNr = Now.ToString("yy") & "599999"
Case 21 ' UNISPED AT
VonRechnungsNr = Now.ToString("yy") & "7000000"
BisRechnungsNr = Now.ToString("yy") & "7999999"
Case 22 ' UNISPED DE
VonRechnungsNr = Now.ToString("yy") & "9000000"
BisRechnungsNr = Now.ToString("yy") & "9999999"
Case 23 ' UNISPED Zollservice
VonRechnungsNr = Now.ToString("yy") & "5000000"
BisRechnungsNr = Now.ToString("yy") & "5999999"
Case 26 ' VERAG-UNISPED
VonRechnungsNr = Now.ToString("yy") & "0000001"
BisRechnungsNr = Now.ToString("yy") & "9999999"
End Select
LfdRechnungsNr = VonRechnungsNr
'-------------------------------------
LOAD(SpeditionsbuchNr, Buchungsjahr)
End Sub
Public Function INCREASE_RGNR() As Integer
If LfdRechnungsNr > 0 Then
LfdRechnungsNr += 1
Else
LfdRechnungsNr = 1
End If
SAVE()
Return LfdRechnungsNr
End Function
Public Function CHECK_RGNR() As Integer ' Prüfung, ob RgNr schon vergeben wurde --> dann +1, bis freie Nr.
Dim increased = False
While SQL.DLookup("count(*)", "Rechnungsausgang", " RechnungsNr='" & LfdRechnungsNr & "' and Firma_ID='" & SpeditionsbuchNr & "' ", "FMZOLL", 0) > 0
LfdRechnungsNr += 1
increased = True
End While
If increased Then SAVE()
Return LfdRechnungsNr
End Function
Public Function SAVE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM [Rechnungsnummern] WITH(updlock,serializable) WHERE [SpeditionsbuchNr]=@SpeditionsbuchNr AND Buchungsjahr=@Buchungsjahr) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
'MsgBox(sqlstr)
Return SQL.doSQL(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD(SpeditionsbuchNr As String, Buchungsjahr As String)
Try
Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM Rechnungsnummern WHERE [SpeditionsbuchNr]=@SpeditionsbuchNr AND Buchungsjahr=@Buchungsjahr ", conn)
cmd.Parameters.AddWithValue("@SpeditionsbuchNr", SpeditionsbuchNr)
cmd.Parameters.AddWithValue("@Buchungsjahr", Buchungsjahr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
Me.SpeditionsbuchNr = cSqlDb.checkNullStr(dr.Item("SpeditionsbuchNr"))
Me.Buchungsjahr = cSqlDb.checkNullStr(dr.Item("Buchungsjahr"))
Me.LfdRechnungsNr = cSqlDb.checkNullStr(dr.Item("LfdRechnungsNr"))
Me.VonRechnungsNr = cSqlDb.checkNullInteger(dr.Item("VonRechnungsNr"))
Me.BisRechnungsNr = cSqlDb.checkNullInteger(dr.Item("BisRechnungsNr"))
End If
dr.Close()
End Using
End Using
'Return Nothing
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 Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.MyListItem2)
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("SpeditionsbuchNr", SpeditionsbuchNr))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("Buchungsjahr", Buchungsjahr))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("LfdRechnungsNr", LfdRechnungsNr))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("VonRechnungsNr", VonRechnungsNr))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("BisRechnungsNr", BisRechnungsNr))
Return list
End Function
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) = getParameterList()
Dim str As String = ""
For Each i In list
str &= "[" & i.Text & "] = @" & i.Text.Replace("-", "").Replace(" ", "") & ","
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE [Rechnungsnummern] SET " & str & " WHERE [SpeditionsbuchNr]=@SpeditionsbuchNr AND Buchungsjahr=@Buchungsjahr ")
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.MyListItem2) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
str &= "[" & i.Text & "],"
values &= "@" & i.Text.Replace("-", "").Replace(" ", "") & ","
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO [Rechnungsnummern] (" & 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