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 VZ As Integer 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 Sub New(Rechnungsdatum, Rechnungsnummer, Buchungsjahr) Me.Rechnungsnummer = Buchungsjahr.ToString.Substring(2, 2) & 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)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VZ", VZ)) 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 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 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 Public Shared Function GET_RECHNUNGEN(ByRef dt As DataTable, von As Date, bis As Date, KundenNr As Integer, Optional Archiv As Boolean = False) As Boolean Try Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand(" SELECT tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer, tblTrdinInvoice.SteuerbetragLokal, tblTrdinInvoice.UStVAn_ID, tblTrdinInvoice.FilialenNr FROM tblTrdinInvoice WHERE tblTrdinInvoice.Rechnungsdatum Between @von And @bis AND tblTrdinInvoice.SteuerbetragLokal<>0 AND tblTrdinInvoice.RechnungsKundenNr=@AdressenNr AND tblTrdinInvoice.WährungLokal='EUR'" & IIf(Archiv, " ", " AND isnull(tblTrdinInvoice.UStVAn_ID,0) = 0 ") & " ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer", conn) cmd.Parameters.AddWithValue("@von", von) cmd.Parameters.AddWithValue("@bis", bis) cmd.Parameters.AddWithValue("@AdressenNr", KundenNr) Dim dr = cmd.ExecuteReader() dt.Load(dr) 'While dr.Read ' dt.Load(dr) 'End While dr.Close() End Using End Using Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False 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 Property VZBetrag 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)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VZBetrag", VZBetrag)) 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 Public Shared Function GET_PRODUCTS(ByRef dt As DataTable, RechnungsDatum As Date, RechnungsNr As Integer) As Boolean Try Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand(" SELECT tblTrdinProduct.Leistungsnummer, tblTrdinProduct.Leistungsbezeichnung FROM tblTrdinProduct WHERE cast(tblTrdinProduct.Rechnungsdatum as Date) =@reDatum AND tblTrdinProduct.Rechnungsnummer=@RechnungsNr AND tblTrdinProduct.Steuerpflichtig=1 ORDER BY tblTrdinProduct.Leistungsnummer, tblTrdinProduct.Leistungsbezeichnung", conn) cmd.Parameters.AddWithValue("@reDatum", RechnungsDatum) cmd.Parameters.AddWithValue("@RechnungsNr", RechnungsNr) 'If Archiv IsNot Nothing Then cmd.Parameters.AddWithValue("@Archiv", If(Archiv, 1, 0)) Dim dr = cmd.ExecuteReader() dt.Load(dr) 'While dr.Read ' dt.Load(dr) 'End While dr.Close() End Using End Using Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function End Class Class TrdInvoice_FUNCTIONS Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL Shared Function TrdinSchreiben(Optional Firma As Integer = -1, Optional Buchungsjahr 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, Buchungsjahr), "FMZOLL", 9800) Dim dtVZ As DataTable If Firma = 19 Then dtVZ = SQL.loadDgvBySql(getSQLString_SELECT_VZ(Firma, Buchungsjahr), "FMZOLL", 9800) If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then For Each ROW In dt.Rows Dim TRD_INVOICE As VERAG_PROG_ALLGEMEIN.cTrdInvoice If Buchungsjahr > 2000 Then TRD_INVOICE = New VERAG_PROG_ALLGEMEIN.cTrdInvoice(ROW("RK_RechnungsDatum"), ROW("RK_RechnungsNr"), Buchungsjahr) 'nur UNISPED!!!! Else TRD_INVOICE = New VERAG_PROG_ALLGEMEIN.cTrdInvoice(ROW("RK_RechnungsDatum"), ROW("RK_RechnungsNr")) End If 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 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") If dtVZ IsNot Nothing AndAlso dtVZ.Rows.Count > 0 Then For Each VZ_ROW In dtVZ.Rows If CDate(TRD_INVOICE.Rechnungsdatum) = CDate(VZ_ROW("RK_RechnungsDatum")) And TRD_INVOICE.FilialenNr.ToString = VZ_ROW("RK_FilialenNr").ToString And TRD_INVOICE.AbfertigungsNr = VZ_ROW("RK_AbfertigungsNr") And CDate(TRD_INVOICE.Abfertigungsdatum) = CDate(VZ_ROW("RK_Abfertigungsdatum")) And TRD_INVOICE.UnterNr = VZ_ROW("RK_UnterNr") And TRD_INVOICE.BelegartenNr = VZ_ROW("RK_BelegartenNr") Then TRD_INVOICE.UStVAn_ID = VZ_ROW("AntragsID") TRD_INVOICE.VZ = CInt(VZ_ROW("VZ")) End If Next End If If TRD_INVOICE.SAVE Then If TrdinSchreibenProduct(TRD_INVOICE.Rechnungsdatum, ROW("RK_RechnungsNr"), TRD_INVOICE.Rechnungsnummer, RK_Währungscode, ROW("RK_RechnungsLandKz"), ROW("RK_Buchungstext"), TRD_INVOICE.Firma_ID, lngSatzzähler, WährungsdifferenzSteuerpflichtigerBetrag, WährungsdifferenzSteuerfreierBetrag, Buchungsjahr, TRD_INVOICE.VZ) Then 'UPDATE rechnugnsausgang Dim firmaTmpsql = If(Firma > 0, " AND Firma_ID= '" & Firma & "' ", "") Dim buchungsjahrTmpsql = If(Buchungsjahr > 0, " AND Buchungsjahr= '" & Buchungsjahr & "' ", "") SQL.doSQL("UPDATE [Rechnungsausgang] SET [Trdin] = 1 WHERE convert(date,[RechnungsDatum] ,104) = '" & TRD_INVOICE.Rechnungsdatum.ToShortDateString & "' AND RechnungsNr = " & ROW("RK_RechnungsNr") & firmaTmpsql & buchungsjahrTmpsql, "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, TRD_RechnungsNr, RK_Währungscode, RK_RechnungsLandKz, RK_Buchungstext, RK_Firma_ID, ByRef lngSatzzähler, ByRef WährungsdifferenzSteuerpflichtigerBetrag, ByRef WährungsdifferenzSteuerfreierBetrag, Buchungsjahr, isVZ) As Boolean Try Dim LOKALWÄHRUNG = "EUR" Dim dt As DataTable = SQL.loadDgvBySql(getSQLString_SELECTForTrdProduct(RechnungsDatum, RK_RechnungsNr, RK_Firma_ID, Buchungsjahr), "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 = TRD_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 If isVZ > 0 Then Select Case ROW("RP_LeistungsNr") Case "123", "124", "125", "126", "128", "117", "118", "119" TRD_PRODUCT.VZBetrag = TRD_PRODUCT.SteuerfreierBetragLokal Case Else TRD_PRODUCT.VZBetrag = 0 End Select End If 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] Is DBNull.Value 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 20, 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] Is DBNull.Value 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] Is DBNull.Value 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, Optional Buchungsjahr 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, '' as VZ 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, "") & If(Buchungsjahr > 0, " and Buchungsjahr=" & Buchungsjahr, "") & " GROUP BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr ORDER BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, min(Rechnungsausgang.Abfertigungsdatum), min(Rechnungsausgang.FilialenNr), min(Rechnungsausgang.AbfertigungsNr), min(Rechnungsausgang.UnterNr);" '" & If(Firma = 4, " and Rechnungsausgang.RechnungsNr='23800029'", "") & " End Function Shared Function getSQLString_SELECT_VZ(Optional Firma As Integer = -1, Optional Buchungsjahr As Integer = -1) getSQLString_SELECT_VZ = "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,max(CONVERT(int,isnull(tblUStVPositionen.UStVPo_VZ,0))) as VZ, MAX(isnull(tblUStVPositionen.UStVAn_ID,0)) as AntragsID FROM Rechnungsausgang INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID LEFT JOIN tblUStVPositionen on Rechnungsausgang.RK_ID = UStVPo_VZ_RKID WHERE (((Rechnungsausgang.RechnungsDatum) Is Not Null) AND ((Rechnungsausgang.RechnungsNr) Is Not Null) AND ((Rechnungsausgang.Trdin)=0)) " & If(Firma > 0, " and Firma_ID=" & Firma, "") & If(Buchungsjahr > 0, " and Buchungsjahr=" & Buchungsjahr, "") & " GROUP BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr HAVING max(CONVERT(int,isnull(tblUStVPositionen.UStVPo_VZ,0))) > 0 ORDER BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, min(Rechnungsausgang.Abfertigungsdatum), min(Rechnungsausgang.FilialenNr), min(Rechnungsausgang.AbfertigungsNr), min(Rechnungsausgang.UnterNr);" '" & If(Firma = 4, " and Rechnungsausgang.RechnungsNr='23800029'", "") & " End Function Shared Function getSQLString_SELECTForTrdProduct(RechnungsDatum As Date, RechnungsNr As Integer, Optional Firma As Integer = -1, Optional Buchungsjahr As Integer = -1) 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 " & If(Firma > 0, " ,Rechnungsausgang.Firma_ID ", "") & If(Buchungsjahr > 0, " ,Rechnungsausgang.Buchungsjahr ", "") & " HAVING (((Rechnungsausgang.RechnungsDatum)='" & RechnungsDatum.ToShortDateString & "') AND ((Rechnungsausgang.RechnungsNr)=" & RechnungsNr & ")) " & If(Firma > 0, " and Rechnungsausgang.Firma_ID=" & Firma, "") & If(Buchungsjahr > 0, " and Rechnungsausgang.Buchungsjahr=" & Buchungsjahr, "") & " ORDER BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, RechnungsausgangPositionen.LeistungsNr, RechnungsausgangPositionen.LeistungsBez, RechnungsausgangPositionen.Steuerpflichtig;" End Function End Class