Files
SDL/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb
2020-09-23 07:24:25 +02:00

619 lines
34 KiB
VB.net

Imports System.Data.SqlClient
Imports System.Reflection
Public Class cTrdInvoice
Property Rechnungsdatum As Date
Property Rechnungsnummer As Integer
Property Speditionsbuch As Object = Nothing
Property FilialenNr As Object = Nothing
Property AbfertigungsNr As Object = Nothing
Property UnterNr As Object = Nothing
Property Abfertigungsdatum As Object = Nothing
Property BelegartenNr As Object = Nothing
Property KundenNrZentrale As Object = Nothing
Property RechnungsKundenNr As Object = Nothing
Property RechnungsLandKz As Object = Nothing
Property RechnungsUstIdKz As Object = Nothing
Property RechnungsUstIdNr As Object = Nothing
Property Lastschrift As Object = Nothing
Property Steuerschlüssel As Object = Nothing
Property Steuersatz As Object = Nothing '[Steuersatz %]
Property WährungLokal As Object = Nothing
Property SteuerpflichtigerBetragLokal As Object = Nothing
Property SteuerfreierBetragLokal As Object = Nothing
Property SteuerbetragLokal As Object = Nothing
Property RechnungsbetragLokal As Object = Nothing
Property WährungFremd As Object = Nothing
Property SteuerpflichtigerBetragFremd As Object = Nothing
Property SteuerfreierBetragFremd As Object = Nothing
Property SteuerbetragFremd As Object = Nothing
Property RechnungsbetragFremd As Object = Nothing
Property TrdinDateiname As Object = Nothing
Property Abgleich_op_debitor As Object = Nothing
Property Nettozahlungsziel As Object = Nothing
Property Firma_ID As Object = Nothing
Property UStVAn_ID As Object = Nothing
Property hasEntry As Boolean = False
Dim SQL As New SQL
Sub New()
End Sub
Sub New(Rechnungsdatum, Rechnungsnummer)
Me.Rechnungsnummer = Rechnungsnummer
Me.Rechnungsdatum = Rechnungsdatum
LOAD()
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("Rechnungsdatum", Rechnungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsnummer", Rechnungsnummer))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Speditionsbuch", Speditionsbuch))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNr", FilialenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", AbfertigungsNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UnterNr", UnterNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abfertigungsdatum", Abfertigungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BelegartenNr", BelegartenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNrZentrale", KundenNrZentrale))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsKundenNr", RechnungsKundenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsLandKz", RechnungsLandKz))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsUstIdKz", RechnungsUstIdKz))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsUstIdNr", RechnungsUstIdNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lastschrift", Lastschrift))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerschlüssel", Steuerschlüssel))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuersatz %", Steuersatz, "Steuersatz")) '[Steuersatz %]
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("WährungLokal", WährungLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerpflichtigerBetragLokal", SteuerpflichtigerBetragLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerfreierBetragLokal", SteuerfreierBetragLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerbetragLokal", SteuerbetragLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsbetragLokal", RechnungsbetragLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("WährungFremd", WährungFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerpflichtigerBetragFremd", SteuerpflichtigerBetragFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerfreierBetragFremd", SteuerfreierBetragFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerbetragFremd", SteuerbetragFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsbetragFremd", RechnungsbetragFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TrdinDateiname", TrdinDateiname))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abgleich_op_debitor", Abgleich_op_debitor))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Nettozahlungsziel", Nettozahlungsziel))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_ID", Firma_ID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_ID", UStVAn_ID))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblTrdinInvoice WITH(updlock,serializable) WHERE Rechnungsnummer=@Rechnungsnummer and Rechnungsdatum=@Rechnungsdatum) " &
" 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 tblTrdinInvoice WHERE Rechnungsnummer=@Rechnungsnummer and Rechnungsdatum=@Rechnungsdatum ", conn)
cmd.Parameters.AddWithValue("@Rechnungsnummer", Rechnungsnummer)
cmd.Parameters.AddWithValue("@Rechnungsdatum", Rechnungsdatum)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
hasEntry = True
For Each l In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(l.Scalarvariable)
If dr.Item(l.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(l.Text))
End If
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 [tblTrdinInvoice] SET " & str & " WHERE Rechnungsnummer=@Rechnungsnummer and Rechnungsdatum=@Rechnungsdatum ")
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 tblTrdinInvoice (" & 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 [tblTrdinInvoice] WITH(updlock,serializable) WHERE Rechnungsnummer=" & Me.Rechnungsnummer & " and Rechnungsdatum='" & Me.Rechnungsdatum.ToShortDateString & "'"
Return SQL.doSQL(sqlstr, "FMZOLL")
End Function
End Class
Public Class cTrdProduct
Property Rechnungsdatum As Date
Property Rechnungsnummer As Integer
Property Leistungsnummer As Integer
Property Leistungsbezeichnung As String
Property Steuerpflichtig As Boolean
Property SteuerpflichtigerBetragLokal As Object = Nothing
Property SteuerfreierBetragLokal As Object = Nothing
Property SteuerpflichtigerBetragFremd As Object = Nothing
Property SteuerfreierBetragFremd As Object = Nothing
Property Belegdaten As Object = Nothing
Property Sachkonto As Object = Nothing
Property Buchungstext As Object = Nothing
Dim SQL As New SQL
Sub New()
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("Rechnungsdatum", Rechnungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsnummer", Rechnungsnummer))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Leistungsnummer", Leistungsnummer))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Leistungsbezeichnung", Leistungsbezeichnung))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerpflichtig", Steuerpflichtig))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerpflichtigerBetragLokal", SteuerpflichtigerBetragLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerfreierBetragLokal", SteuerfreierBetragLokal))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerpflichtigerBetragFremd", SteuerpflichtigerBetragFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerfreierBetragFremd", SteuerfreierBetragFremd))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegdaten", Belegdaten))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachkonto", Sachkonto))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungstext", Buchungstext))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblTrdinProduct WITH(updlock,serializable) WHERE Rechnungsnummer=@Rechnungsnummer and Rechnungsdatum=@Rechnungsdatum and Leistungsnummer=@Leistungsnummer and Leistungsbezeichnung=@Leistungsbezeichnung and Steuerpflichtig=@Steuerpflichtig) " &
" 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 tblTrdinProduct WHERE Rechnungsnummer=@Rechnungsnummer and Rechnungsdatum=@Rechnungsdatum ", conn)
' cmd.Parameters.AddWithValue("@Rechnungsnummer", Rechnungsnummer)
' cmd.Parameters.AddWithValue("@Rechnungsdatum", Rechnungsdatum)
' Dim dr = cmd.ExecuteReader()
' If dr.Read Then
' For Each l In getParameterList()
' Dim propInfo As PropertyInfo = Me.GetType.GetProperty(l.Scalarvariable)
' If dr.Item(l.Text) Is DBNull.Value Then
' propInfo.SetValue(Me, Nothing)
' Else
' propInfo.SetValue(Me, dr.Item(l.Text))
' End If
' 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 [tblTrdinProduct] SET " & str & " WHERE Rechnungsnummer=@Rechnungsnummer and Rechnungsdatum=@Rechnungsdatum and Leistungsnummer=@Leistungsnummer and Leistungsbezeichnung=@Leistungsbezeichnung and Steuerpflichtig=@Steuerpflichtig ")
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 tblTrdinProduct (" & 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
Class TrdInvoice_FUNCTIONS
Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL
Shared Function TrdinSchreiben(Optional Firma As Integer = -1) As Boolean 'Lädt die Daten aus der Tabelle Rechnungsausgang/RechnungsausgangPositionen in die Tabelle trdInvoice/trdProduct
Try
Dim LOKALWÄHRUNG = "EUR"
Dim lngSatzzähler As Integer
Dim WährungsdifferenzSteuerpflichtigerBetrag As Double
Dim WährungsdifferenzSteuerfreierBetrag As Integer
Dim dt As DataTable = SQL.loadDgvBySql(getSQLString_SELECTForTrdInvoice(Firma), "FMZOLL")
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
For Each ROW In dt.Rows
Dim TRD_INVOICE As New VERAG_PROG_ALLGEMEIN.cTrdInvoice(ROW("RK_RechnungsDatum"), ROW("RK_RechnungsNr"))
If TRD_INVOICE.hasEntry Then
' MsgBox("RG-Nr. bereits vorhanden!")
Else
Dim RK_Währungscode = ROW("RK_Währungscode")
If ROW("RK_Währungscode") Is DBNull.Value Then RK_Währungscode = LOKALWÄHRUNG
If RK_Währungscode = LOKALWÄHRUNG Then
TRD_INVOICE.SteuerpflichtigerBetragLokal = ROW("RK_SteuerpflichtigerBetrag")
TRD_INVOICE.SteuerfreierBetragLokal = ROW("RK_SteuerfreierBetrag")
TRD_INVOICE.SteuerbetragLokal = ROW("RK_Steuerbetrag")
TRD_INVOICE.RechnungsbetragLokal = ROW("RK_Rechnungsbetrag")
TRD_INVOICE.SteuerpflichtigerBetragFremd = 0
TRD_INVOICE.SteuerfreierBetragFremd = 0
TRD_INVOICE.SteuerbetragFremd = 0
TRD_INVOICE.RechnungsbetragFremd = 0
TRD_INVOICE.WährungFremd = Nothing
Else
TRD_INVOICE.SteuerpflichtigerBetragFremd = ROW("RK_SteuerpflichtigerBetrag")
TRD_INVOICE.SteuerfreierBetragFremd = ROW("RK_SteuerfreierBetrag")
TRD_INVOICE.SteuerbetragFremd = ROW("RK_Steuerbetrag")
TRD_INVOICE.RechnungsbetragFremd = ROW("RK_Rechnungsbetrag")
TRD_INVOICE.SteuerpflichtigerBetragLokal = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(ROW("[RK_SteuerpflichtigerBetrag]"), ROW("[RK_Währungscode]"), LOKALWÄHRUNG)
TRD_INVOICE.SteuerfreierBetragLokal = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(ROW("[RK_SteuerfreierBetrag]"), ROW("[RK_Währungscode]"), LOKALWÄHRUNG)
TRD_INVOICE.SteuerbetragLokal = CDbl(TRD_INVOICE.SteuerpflichtigerBetragLokal * ROW("[RK_SteuersatzProzent]") * 100) / 100
TRD_INVOICE.RechnungsbetragLokal = TRD_INVOICE.SteuerpflichtigerBetragLokal + TRD_INVOICE.SteuerfreierBetragLokal + TRD_INVOICE.SteuerbetragLokal
' Basis zur Feststellung von Rundungsdifferenzen schaffen.
TRD_INVOICE.SteuerpflichtigerBetragLokal = 0
TRD_INVOICE.SteuerfreierBetragLokal = 0
TRD_INVOICE.SteuerbetragLokal = 0
TRD_INVOICE.RechnungsbetragLokal = 0
WährungsdifferenzSteuerpflichtigerBetrag = TRD_INVOICE.SteuerpflichtigerBetragLokal
WährungsdifferenzSteuerfreierBetrag = TRD_INVOICE.SteuerfreierBetragLokal
lngSatzzähler = ROW("RK_Satzzähler")
TRD_INVOICE.WährungFremd = RK_Währungscode
End If
TRD_INVOICE.FilialenNr = ROW("RK_FilialenNr")
TRD_INVOICE.Speditionsbuch = SQL.DLookup("Speditionsbuch", "Filialen", "FilialenNr=" & ROW("RK_FilialenNr"), "FMZOLL", Nothing) ' ROW("Speditionsbuch")
TRD_INVOICE.AbfertigungsNr = ROW("RK_AbfertigungsNr")
TRD_INVOICE.UnterNr = ROW("RK_UnterNr")
TRD_INVOICE.Abfertigungsdatum = ROW("RK_Abfertigungsdatum")
TRD_INVOICE.BelegartenNr = ROW("RK_BelegartenNr")
TRD_INVOICE.KundenNrZentrale = ROW("RK_KundenNrZentrale")
TRD_INVOICE.RechnungsKundenNr = ROW("RK_RechnungsKundenNr")
TRD_INVOICE.RechnungsLandKz = ROW("RK_RechnungsLandKz")
TRD_INVOICE.RechnungsUstIdKz = ROW("RK_RechnungsUstIdKz")
TRD_INVOICE.RechnungsUstIdNr = ROW("RK_RechnungsUstIdNr")
TRD_INVOICE.Lastschrift = ROW("RK_Lastschrift")
TRD_INVOICE.Steuerschlüssel = ROW("RK_Steuerschlüssel")
TRD_INVOICE.Steuersatz = ROW("RK_SteuersatzProzent")
TRD_INVOICE.WährungLokal = LOKALWÄHRUNG
TRD_INVOICE.TrdinDateiname = Nothing
TRD_INVOICE.Abgleich_op_debitor = 0
TRD_INVOICE.Nettozahlungsziel = ROW("RK_Nettozahlungsziel")
TRD_INVOICE.Firma_ID = ROW("RK_Firma_ID")
TRD_INVOICE.UStVAn_ID = Nothing
If TRD_INVOICE.SAVE Then
If TrdinSchreibenProduct(TRD_INVOICE.Rechnungsdatum, TRD_INVOICE.Rechnungsnummer, RK_Währungscode, ROW("RK_RechnungsLandKz"), ROW("RK_Buchungstext"), TRD_INVOICE.Firma_ID, lngSatzzähler, WährungsdifferenzSteuerpflichtigerBetrag, WährungsdifferenzSteuerfreierBetrag) Then
'UPDATE rechnugnsausgang
SQL.doSQL("UPDATE [Rechnungsausgang] SET [Trdin] = 1 WHERE convert(date,[RechnungsDatum] ,104) = '" & TRD_INVOICE.Rechnungsdatum.ToShortDateString & "' AND RechnungsNr = " & TRD_INVOICE.Rechnungsnummer & " ", "FMZOLL")
End If
End If
End If
Next
Return True
Else
Return False
End If
' Buchung im Rechnungskopfsatz eintragen.
' Call SPAktionsabfrageOhneErgebnis("dbo.spTrdinSchreibenUpdateRK", AktuelleVerbindungszeichenfolge(0), rstRK![RK_RechnungsDatum], rstRK![RK_RechnungsNr], 1)
Catch ex As Exception
MsgBox(ex.StackTrace & "" & ex.Message)
Return False
End Try
End Function
Shared Function TrdinSchreibenProduct(RechnungsDatum, RK_RechnungsNr, RK_Währungscode, RK_RechnungsLandKz, RK_Buchungstext, RK_Firma_ID, ByRef lngSatzzähler, ByRef WährungsdifferenzSteuerpflichtigerBetrag, ByRef WährungsdifferenzSteuerfreierBetrag) As Boolean
Try
Dim LOKALWÄHRUNG = "EUR"
Dim dt As DataTable = SQL.loadDgvBySql(getSQLString_SELECTForTrdProduct(RechnungsDatum, RK_RechnungsNr), "FMZOLL")
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
For Each ROW In dt.Rows
Dim TRD_PRODUCT As New VERAG_PROG_ALLGEMEIN.cTrdProduct()
TRD_PRODUCT.Rechnungsdatum = RechnungsDatum
TRD_PRODUCT.Rechnungsnummer = RK_RechnungsNr
If RK_Währungscode = LOKALWÄHRUNG Then
TRD_PRODUCT.SteuerpflichtigerBetragLokal = ROW("RP_SteuerpflichtigerBetrag")
TRD_PRODUCT.SteuerfreierBetragLokal = ROW("RP_SteuerfreierBetrag")
TRD_PRODUCT.SteuerpflichtigerBetragFremd = 0
TRD_PRODUCT.SteuerfreierBetragFremd = 0
Else
TRD_PRODUCT.SteuerpflichtigerBetragFremd = ROW("RP_SteuerpflichtigerBetrag")
TRD_PRODUCT.SteuerfreierBetragFremd = ROW("RP_SteuerfreierBetrag")
TRD_PRODUCT.SteuerpflichtigerBetragLokal = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(ROW("RP_SteuerpflichtigerBetrag"), RK_Währungscode, LOKALWÄHRUNG)
TRD_PRODUCT.SteuerfreierBetragLokal = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(ROW("RP_SteuerfreierBetrag"), RK_Währungscode, LOKALWÄHRUNG)
WährungsdifferenzSteuerpflichtigerBetrag -= TRD_PRODUCT.SteuerpflichtigerBetragLokal
WährungsdifferenzSteuerfreierBetrag -= TRD_PRODUCT.SteuerfreierBetragLokal
lngSatzzähler = lngSatzzähler - ROW("RP_Satzzähler")
If lngSatzzähler = 0 Then
If WährungsdifferenzSteuerpflichtigerBetrag <> 0 Then
TRD_PRODUCT.SteuerpflichtigerBetragLokal += WährungsdifferenzSteuerpflichtigerBetrag
End If
If WährungsdifferenzSteuerfreierBetrag <> 0 Then
TRD_PRODUCT.SteuerfreierBetragLokal += WährungsdifferenzSteuerfreierBetrag
End If
End If
End If
TRD_PRODUCT.Leistungsnummer = ROW("RP_LeistungsNr")
TRD_PRODUCT.Leistungsbezeichnung = ROW("RP_LeistungsBez")
TRD_PRODUCT.Steuerpflichtig = ROW("RP_Steuerpflichtig")
TRD_PRODUCT.Belegdaten = ROW("RP_Belegdaten")
TRD_PRODUCT.Sachkonto = getSachkonto(RK_Firma_ID, ROW("RP_LeistungsNr"), RK_RechnungsLandKz, ROW("RP_Steuerpflichtig"), ROW("AufschubkontoNr"))
TRD_PRODUCT.Buchungstext = RK_Buchungstext
TRD_PRODUCT.SAVE()
Next
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.StackTrace & "" & ex.Message)
Return False
End Try
End Function
Shared Function getSachkonto(Firma_Id, RP_LeistungsNr, [RK_RechnungsLandKz], RP_Steuerpflichtig, RP_AufschubkontoNr)
' Sachkonto ermitteln.
Dim FIRMA = New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_Id)
Select Case Firma_Id
Case 20 'IMEX --> Andere Sachkonten in Tbl Leistungen!
If [RK_RechnungsLandKz] Is Nothing _
OrElse [RK_RechnungsLandKz].trim = "" _
OrElse [RK_RechnungsLandKz] = "A" _
OrElse [RK_RechnungsLandKz] = "AT" Then
If CBool([RP_Steuerpflichtig]) Then
getSachkonto = If(SQL.DLookup("[IMEX_SachkontoInlandSteuerpflichtig]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
Else
getSachkonto = If(SQL.DLookup("[IMEX_SachkontoInlandSteuerfrei]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
End If
Else
If SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & [RK_RechnungsLandKz] & "'", "FMZOLL", False) Then
If [RP_Steuerpflichtig] Then
getSachkonto = If(SQL.DLookup("[IMEX_SachkontoEUSteuerpflichtig]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
Else
getSachkonto = If(SQL.DLookup("[IMEX_SachkontoEUSteuerfrei]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
End If
Else
getSachkonto = If(SQL.DLookup("[IMEX_Sachkonto3Land]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
End If
End If
If getSachkonto = "" Then getSachkonto = "9999" 'DEFAULT!
Case 21, 22, 23, 24 '--> cLeistungenBUKonten!
Dim BU_KTO As New VERAG_PROG_ALLGEMEIN.cLeistungenBUKonten(RP_LeistungsNr, Firma_Id)
If [RK_RechnungsLandKz] Is Nothing OrElse [RK_RechnungsLandKz].trim = "" OrElse
[RK_RechnungsLandKz] = FIRMA.Firma_LandKz.ToString.Replace("AT", "A").Replace("DE", "D") Then
If CBool([RP_Steuerpflichtig]) Then
getSachkonto = BU_KTO.SachkontoInlandSteuerpflichtig
Else
getSachkonto = BU_KTO.SachkontoInlandSteuerfrei
End If
Else
If SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & [RK_RechnungsLandKz] & "'", "FMZOLL", False) Then
If [RP_Steuerpflichtig] Then
getSachkonto = BU_KTO.SachkontoEUSteuerpflichtig
Else
getSachkonto = BU_KTO.SachkontoEUSteuerfrei
End If
Else
getSachkonto = BU_KTO.Sachkonto3Land
End If
End If
If getSachkonto = "" Then getSachkonto = "9999" 'DEFAULT!
Case Else
If [RK_RechnungsLandKz] Is Nothing _
OrElse [RK_RechnungsLandKz].trim = "" _
OrElse [RK_RechnungsLandKz] = "A" _
OrElse [RK_RechnungsLandKz] = "AT" Then
If CBool([RP_Steuerpflichtig]) Then
getSachkonto = If(SQL.DLookup("[SachkontoInlandSteuerpflichtig]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
Else
getSachkonto = If(SQL.DLookup("[SachkontoInlandSteuerfrei]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
End If
Else
If SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & [RK_RechnungsLandKz] & "'", "FMZOLL", False) Then
If [RP_Steuerpflichtig] Then
getSachkonto = If(SQL.DLookup("[SachkontoEUSteuerpflichtig]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
Else
getSachkonto = If(SQL.DLookup("[SachkontoEUSteuerfrei]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
End If
Else
getSachkonto = If(SQL.DLookup("[Sachkonto3Land]", "Leistungen", "[LeistungsNr]=" & [RP_LeistungsNr], "FMZOLL"), "")
End If
End If
If getSachkonto = "" Then getSachkonto = "4000" 'DEFAULT!
End Select
Try
If Firma_Id = 20 Then
If getSachkonto = "3553" Then 'IMEX EUST
If RP_AufschubkontoNr Is DBNull.Value Then RP_AufschubkontoNr = ""
If RP_AufschubkontoNr.ToString.Contains("2719") Then
getSachkonto = "3550" '--> KTO M-2719
Else
getSachkonto = "3553" '--> KTO M-2718
End If
End If
End If
Catch ex As Exception
End Try
getSachkonto = CInt(getSachkonto)
End Function
Shared Function getSQLString_SELECTForTrdInvoice(Optional Firma As Integer = -1)
getSQLString_SELECTForTrdInvoice = "SELECT Rechnungsausgang.RechnungsDatum AS RK_RechnungsDatum, Rechnungsausgang.RechnungsNr AS RK_RechnungsNr, min(Rechnungsausgang.Abfertigungsdatum) AS RK_Abfertigungsdatum, min(Rechnungsausgang.FilialenNr) AS RK_FilialenNr,
min(Rechnungsausgang.AbfertigungsNr) AS RK_AbfertigungsNr, min(Rechnungsausgang.UnterNr) AS RK_UnterNr, min(Rechnungsausgang.BelegartenNr) AS RK_BelegartenNr,
(min(cast([FilialenNr] as varchar(4))) + '/' + min(cast([AbfertigungsNr] as varchar(8))) + '/' + min(cast([UnterNr] as varchar(2)))) AS RK_Buchungstext,
min(Rechnungsausgang.KundenNrZentrale) AS RK_KundenNrZentrale, min(Rechnungsausgang.RechnungsKundenNr) AS RK_RechnungsKundenNr, min(Rechnungsausgang.RechnungsLandKz) AS RK_RechnungsLandKz,
min(Rechnungsausgang.RechnungsUstIdKz) AS RK_RechnungsUstIdKz, min(Rechnungsausgang.RechnungsUstIdNr) AS RK_RechnungsUstIdNr, min(Rechnungsausgang.Lastschrift+0) AS RK_Lastschrift,
min(Rechnungsausgang.Steuerschlüssel) AS RK_Steuerschlüssel, min(Rechnungsausgang.[Steuersatz %]) AS RK_SteuersatzProzent, min(Rechnungsausgang.Währungscode) AS RK_Währungscode,
min(Rechnungsausgang.Nettozahlungsziel) AS RK_Nettozahlungsziel, min(Rechnungsausgang.Firma_ID) AS RK_Firma_ID, Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag) AS RK_SteuerpflichtigerBetrag,
Sum(RechnungsausgangPositionen.SteuerfreierBetrag) AS RK_SteuerfreierBetrag
, (Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag)*min(Rechnungsausgang.[Steuersatz %])*100)/100 AS RK_Steuerbetrag,
Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag)+Sum(RechnungsausgangPositionen.SteuerfreierBetrag)+((Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag)*min(Rechnungsausgang.[Steuersatz %])*100)/100) AS RK_Rechnungsbetrag,
Count(1) AS RK_Satzzähler
FROM Rechnungsausgang INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID
WHERE (((Rechnungsausgang.RechnungsDatum) Is Not Null) AND ((Rechnungsausgang.RechnungsNr) Is Not Null) AND ((Rechnungsausgang.Trdin)=0)) " & If(Firma > 0, " and Firma_ID=" & Firma, "") & "
GROUP BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr
ORDER BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, min(Rechnungsausgang.Abfertigungsdatum), min(Rechnungsausgang.FilialenNr), min(Rechnungsausgang.AbfertigungsNr), min(Rechnungsausgang.UnterNr);"
End Function
Shared Function getSQLString_SELECTForTrdProduct(RechnungsDatum As Date, RechnungsNr As Integer)
getSQLString_SELECTForTrdProduct = "SELECT Rechnungsausgang.RechnungsDatum AS RP_RechnungsDatum, Rechnungsausgang.RechnungsNr AS RP_RechnungsNr, RechnungsausgangPositionen.LeistungsNr AS RP_LeistungsNr, RechnungsausgangPositionen.LeistungsBez AS RP_LeistungsBez,
RechnungsausgangPositionen.Steuerpflichtig AS RP_Steuerpflichtig, Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag) AS RP_SteuerpflichtigerBetrag, Sum(RechnungsausgangPositionen.SteuerfreierBetrag) AS RP_SteuerfreierBetrag,
min(RechnungsausgangPositionen.Belegdaten) AS RP_Belegdaten, Count(1) AS RP_Satzzähler, min(AufschubkontoNr) as AufschubkontoNr
FROM RechnungsausgangPositionen INNER JOIN Rechnungsausgang ON RechnungsausgangPositionen.RK_ID = Rechnungsausgang.RK_ID
GROUP BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, RechnungsausgangPositionen.LeistungsNr, RechnungsausgangPositionen.LeistungsBez, RechnungsausgangPositionen.Steuerpflichtig
HAVING (((Rechnungsausgang.RechnungsDatum)='" & RechnungsDatum.ToShortDateString & "') AND ((Rechnungsausgang.RechnungsNr)=" & RechnungsNr & "))
ORDER BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, RechnungsausgangPositionen.LeistungsNr, RechnungsausgangPositionen.LeistungsBez, RechnungsausgangPositionen.Steuerpflichtig;"
End Function
End Class