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 = "7000000" BisRechnungsNr = "7999999" Case 22 ' UNISPED DE VonRechnungsNr = "9000000" BisRechnungsNr = "9999999" Case 23 ' UNISPED Zollservice VonRechnungsNr = "5000000" BisRechnungsNr = "5999999" Case 26 ' VERAG-UNISPED VonRechnungsNr = "0000001" BisRechnungsNr = "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 System.Threading.Thread.Sleep(200) ' nur, um abzuwarten falls parallel eine Nr vergeben wird While SQL.DLookup("count(*)", "Rechnungsausgang", " RechnungsNr='" & LfdRechnungsNr & "' and Firma_ID='" & SpeditionsbuchNr & "' and Buchungsjahr='" & Buchungsjahr & "' ", "FMZOLL", 0) > 0 LfdRechnungsNr += 1 increased = True System.Threading.Thread.Sleep(100) ' nur, um abzuwarten falls parallel eine Nr vergeben wird 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