This commit is contained in:
2021-09-07 08:46:12 +02:00
parent f2f992547d
commit 619a8c26bf
126 changed files with 7156 additions and 2215 deletions

View File

@@ -1,6 +1,11 @@
Imports System.Data.SqlClient
Imports System.Reflection
Public Class cRechnungsausgangLIST
End Class
Public Class cRechnungsausgang
Property RK_ID As Integer
@@ -138,6 +143,90 @@ Public Class cRechnungsausgang
End Function
Public Shared Function GET_LIST_WEB(KundenNr As Integer, von As Date, bis As Date, Optional RechnungsNr As Integer = -1, Optional Absender As String = "", Optional Empfänger As String = "", Optional LKW_Kennzeichen As String = "", Optional KdAuftragsNr As String = "") As List(Of cRechnungsausgang)
Dim LIST As New List(Of cRechnungsausgang)
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Dim sqlWHERE = ""
If RechnungsNr > 0 Then sqlWHERE &= " AND RechnungsNr LIKE @RechnungsNr"
If Absender <> "" Then sqlWHERE &= " AND Absender LIKE @Absender"
If Empfänger <> "" Then sqlWHERE &= " AND Empfänger LIKE @Empfänger"
If LKW_Kennzeichen <> "" Then sqlWHERE &= " AND [LKW Kennzeichen] LIKE @LKW_Kennzeichen"
If KdAuftragsNr <> "" Then sqlWHERE &= " AND KdAuftragsNr LIKE @KdAuftragsNr"
Using cmd As New SqlCommand("SELECT * FROM [Rechnungsausgang] WHERE RechnungsKundenNr=@RechnungsKundenNr and RechnungsDatum BETWEEN @RechnungsDatumVON and @RechnungsDatumBIS ORDER BY RechnungsNr ", conn)
cmd.Parameters.AddWithValue("@RechnungsKundenNr", KundenNr)
cmd.Parameters.AddWithValue("@RechnungsDatumVON", von)
cmd.Parameters.AddWithValue("@RechnungsDatumBIS", bis)
cmd.Parameters.AddWithValue("@Absender", Absender & "%")
cmd.Parameters.AddWithValue("@Empfänger", Empfänger & "%")
cmd.Parameters.AddWithValue("@LKW_Kennzeichen", "%" & LKW_Kennzeichen & "%")
cmd.Parameters.AddWithValue("@KdAuftragsNr", "%" & KdAuftragsNr & "%")
Dim dr = cmd.ExecuteReader()
While dr.Read
Dim RG As New cRechnungsausgang
For Each li In RG.getParameterList()
Dim propInfo As PropertyInfo = RG.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(RG, Nothing)
Else
propInfo.SetValue(RG, dr.Item(li.Text))
End If
Next
RG.doVorzeichen()
LIST.Add(RG)
' If loadPos Then LOAD_POSITIONEN()
End While
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 LIST
End Function
Public Shared Function GET_LIST_WEB_SR(RK_ID As Integer) As List(Of cRechnungsausgang)
Dim LIST As New List(Of cRechnungsausgang)
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM [Rechnungsausgang] WHERE RK_ID=@RK_ID ", conn)
cmd.Parameters.AddWithValue("@RK_ID", RK_ID)
Dim dr = cmd.ExecuteReader()
While dr.Read
Dim RG As New cRechnungsausgang
For Each li In RG.getParameterList()
Dim propInfo As PropertyInfo = RG.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(RG, Nothing)
Else
propInfo.SetValue(RG, dr.Item(li.Text))
End If
Next
RG.doVorzeichen()
LIST.Add(RG)
' If loadPos Then LOAD_POSITIONEN()
End While
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 LIST
End Function
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("RK_ID", RK_ID, , True, True))
@@ -257,13 +346,13 @@ Public Class cRechnungsausgang
cmd.Parameters.AddWithValue("@AbfertigungsNr", AbfertigungsNr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each l In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(l.Scalarvariable)
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(l.Text) Is DBNull.Value Then
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(l.Text))
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
@@ -287,13 +376,13 @@ Public Class cRechnungsausgang
cmd.Parameters.AddWithValue("@vk_AbfertigungsNr", AbfertigungsNr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each l In VK.getParameterList()
Dim propInfo As PropertyInfo = VK.GetType.GetProperty(l.Scalarvariable)
For Each li In VK.getParameterList()
Dim propInfo As PropertyInfo = VK.GetType.GetProperty(li.Scalarvariable)
If dr.Item(l.Text) Is DBNull.Value Then
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(VK, Nothing)
Else
propInfo.SetValue(VK, dr.Item(l.Text))
propInfo.SetValue(VK, dr.Item(li.Text))
End If
Next
dr.Close()
@@ -355,10 +444,30 @@ Public Class cRechnungsausgang
If Firma_ID <= 0 Then errMsg = "ERROR: Firma auswählen!" : Return False
If Rechnung_an = 0 OrElse CStr(Rechnung_an) = "" Then errMsg = "ERROR: Rechnungsempfänger auswählen!" : Return False
If SpeditionsbuchUnterNr Is Nothing Then errMsg = "ERROR: Speditionsbuch-UnterNr auswählen!" : Return False
If RechnungsKundenNr <= 0 Then errMsg = "ERROR: Kunden-Nummer fehlt!" : Return False
' If Steuerschlüssel Then errMsg = "ERROR: Steuerschlüssel muss angegeben werden!" : Return False
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID)
If FIRMA.Firma_ID = 26 Then
If RechnungsLandKz <> "GB" And RechnungsLandKz <> "UK" Then
errMsg = "ERROR: Es darf nur nach GB abgerechnet werden!" : Return False
End If
If Währungscode <> "GBP" Then
errMsg = "ERROR: Es darf nur mit Währung 'GBP' abgerechnet werden!" : Return False
End If
End If
If RechnungsLandKz = FIRMA.Firma_LandKz Then
If Steuersatz_Proz = 0 Then
If vbYes <> MsgBox("Es wurde kein Steuerschlüssel angegeben." & vbNewLine & vbNewLine & "Sind siw wicher, dass Sie ohne Steuerschlüssel fortfahren möchten.", vbYesNoCancel) Then
errMsg = "ERROR: Steuerschlüssel angegeben!"
Return False
End If
End If
End If
Return True
End Function
End Function
Public Function SAVE_POSITIONEN(RK_ID) As Boolean
If DELETE_POSITIONEN() Then ' zuerst Einträge löschen...
@@ -379,13 +488,13 @@ Public Class cRechnungsausgang
cmd.Parameters.AddWithValue("@RK_ID", RK_ID)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each l In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(l.Scalarvariable)
For Each i In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable)
If dr.Item(l.Text) Is DBNull.Value Then
If dr.Item(i.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(l.Text))
propInfo.SetValue(Me, dr.Item(i.Text))
End If
Next
@@ -446,26 +555,8 @@ Public Class cRechnungsausgang
Return SQL.doSQL(sqlstr, "FMZOLL")
End Function
Public Function isReverseChargeSumme() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
'Wenn selbes Land --> Kein Reversecharge
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID)
' MsgBox(RechnungsLandKz & " - " & FIRMA.Firma_LandKz)
If RechnungsLandKz = FIRMA.Firma_LandKz Then
Return False
End If
Dim sqlstr = " SELECT SUM(POS.SteuerfreierBetrag) AS ReverseChargeSumme "
sqlstr &= " FROM Rechnungsausgang as RA INNER JOIN RechnungsausgangPositionen as POS ON RA.RK_ID = POS.RK_ID INNER JOIN Leistungen ON POS.LeistungsNr = Leistungen.LeistungsNr INNER JOIN [Länderverzeichnis für die Außenhandelsstatistik] AS LD ON RA.RechnungsUstIdKz = LD.LandKz"
sqlstr &= " WHERE RA.rk_id='" & Me.RK_ID & "' AND LD.ReverseCharge = 1 AND Leistungen.ReverseCharge = 1"
If Not CBool(SQL.DLookup("isnull([MitgliedslandEU],0)", "Währungstabelle", "LandKz='" & If(RechnungsLandKz, "") & "'", "FMZOLL", 0)) Then
Return False
End If
Return If(SQL.getValueTxtBySql(sqlstr, "FMZOLL",,, 0) = 0, False, True)
End Function
Public Function setSPEDBUCH_FAKTURIERT(Optional wert As Boolean = True) As Boolean 'obj As Object, tablename As String, where As String) As Boolean
Dim sqlstr = " UPDATE Speditionsbuch SET Fakturiert='" & If(wert, 1, 0) & "' WHERE FilialenNr = '" & Me.FilialenNr & "' AND AbfertigungsNr = '" & Me.[AbfertigungsNr] & "' AND UnterNr = '" & Me.[SpeditionsbuchUnterNr] & "'"
Return SQL.doSQL(sqlstr, "FMZOLL")