Files
SDL/_VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb
2024-10-02 08:59:41 +00:00

1471 lines
84 KiB
VB.net

Imports System.Text.RegularExpressions
Public Class cSyska_Interface
Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL
Shared fmt = "#######0.00"
'STAMMDATEN
Shared Function getStammdaten(FiBuSchnittstelleNr) As DataTable
Dim sqlStr = " Select KundenNrZentrale As [Konto-Nr],isnull([Name 1],'') as Name,isnull([Name 2],'') as [Name2],(isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer],isnull(UstIdGeprüft,'') as [UID-Datum],[Strasse],Adressen.landkz ,PLZ,LTRIM([Ort]) as Ort,isnull(BLZ,'') as [BLZ],isnull(KTO,'') as [KTO], CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel],/*'' as [SPz],'' as [STg],*/isnull([E-Mail],'') as [mail],'' AS Info1,'' AS Inf2, Zahlungsziel2, Zahlungsziel3,[E-Mail],[Telefon] ,Telefax "
sqlStr &= " ,Ordnungsbegriff ,Kunden.Währungscode,Anrede,Ansprechpartner,Lastschrift,Kunden.[Eingegeben am] as EingegebenAm"
sqlStr &= " FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr "
sqlStr &= " LEFT JOIN tblKundenErweitert ON KundenNr=kde_KundenNr "
sqlStr &= " LEFT JOIN [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz "
sqlStr &= " LEFT JOIN Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel "
sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' "
sqlStr &= " Order by [Konto-Nr] "
Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
End Function
' Shared Function getStammdatenTEST(FiBuSchnittstelleNr) As DataTable
' Dim sqlStr = " Select KundenNrZentrale As [Konto-Nr],isnull([Name 1],'') as Name,isnull([Name 2],'') as [Name2],(isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer],isnull(UstIdGeprüft,'') as [UID-Datum],[Strasse],Adressen.landkz ,PLZ,LTRIM([Ort]) as Ort,isnull(BLZ,'') as [BLZ],isnull(KTO,'') as [KTO], CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel],/*'' as [SPz],'' as [STg],*/isnull([E-Mail],'') as [mail],'' AS Info1,'' AS Inf2, Zahlungsziel2, Zahlungsziel3,[E-Mail],[Telefon] ,Telefax "
' sqlStr &= " ,Ordnungsbegriff ,Kunden.Währungscode,Anrede,Ansprechpartner,Lastschrift,Kunden.[Eingegeben am] as EingegebenAm"
' sqlStr &= " FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr "
' sqlStr &= " LEFT JOIN tblKundenErweitert ON KundenNr=kde_KundenNr "
' sqlStr &= " LEFT JOIN [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz "
' sqlStr &= " LEFT JOIN Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel "
' 'sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' "
' sqlStr &= " WHERE KundenNrZentrale IN (750750,
'765729,
'765730,
'765731,
'765732,
'765733,
'765734,
'765735,
'765736,
'765737,
'765738,
'765739,
'765740,
'765741,
'765742,
'765743,
'765744,
'765745,
'765746
') "
' sqlStr &= " Order by [Konto-Nr] "
' Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
' End Function
Shared Function updateFibu(FiBuSchnittstelleNr) As DataTable
Dim sqlStr = " UPDATE Kunden "
sqlStr &= " SET FiBuSchnittstelle = '0' "
sqlStr &= " FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr "
sqlStr &= " LEFT JOIN tblKundenErweitert ON KundenNr=kde_KundenNr "
sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' "
Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
End Function
Public Shared Function getPersonenKto(row As DataRow) As String
Dim LandKz = row("LandKz")
Dim Gegenkontonummer = ""
Dim Gegenkontonummer2 = ""
If LandKz Is DBNull.Value Or LandKz.trim = "" Or LandKz = "A" Then
Gegenkontonummer = "4000" ' Erl. 20%
Gegenkontonummer2 = "4000" ' Erl. 20%
Else
If CBool(SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & LandKz & "'", "FMZOLL", False)) Then
Gegenkontonummer = "4020" ' Erl. 0% EU
Gegenkontonummer2 = "4020" ' Erl. 0% EU
Else
Gegenkontonummer = "4021" ' Erl. 0% 3.Land
Gegenkontonummer2 = "4021" ' Erl. 0% 3.Land
End If
End If
Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper
Dim Lastschrift = CBool(row("Lastschrift"))
'If FormatStringSYS(row("Name2"), 50) <> "" Then
' MsgBox(FormatStringSYS(row("Name2"), 50) & vbTab)
'End If
getPersonenKto = ""
getPersonenKto &= row("Konto-Nr") & vbTab
getPersonenKto &= FormatStringSYS(cleanStringName, 2) & row("Konto-Nr") & vbTab
getPersonenKto &= FormatStringSYS(row("Name"), 50) & vbTab
getPersonenKto &= FormatStringSYS(row("Name2"), 50) & vbTab
getPersonenKto &= FormatStringSYS(row("Strasse"), 50) & vbTab
getPersonenKto &= FormatStringSYS(row("PLZ"), 20) & vbTab
getPersonenKto &= FormatStringSYS(row("Ort"), 50) & vbTab
getPersonenKto &= cProgramFunctions.getISO2Land(FormatStringSYS(LandKz, 5)) & vbTab
getPersonenKto &= CDate(row("EingegebenAm")).ToShortDateString & vbTab 'Eröffnungsdatum
getPersonenKto &= Gegenkontonummer & vbTab
getPersonenKto &= vbTab 'Bankname
getPersonenKto &= If(Lastschrift, row("BLZ"), "") & vbTab
getPersonenKto &= If(Lastschrift, row("KTO"), "") & vbTab
getPersonenKto &= "00" & vbTab 'Skontotage
getPersonenKto &= If(row("ZZiel") IsNot DBNull.Value AndAlso row("ZZiel") <> String.Empty, CDbl(row("ZZiel")).ToString("00"), "") & vbTab
getPersonenKto &= "00,00" & vbTab 'Skonto
getPersonenKto &= "01" & vbTab 'Mahnkennung
getPersonenKto &= FormatStringSYS(row("UST-Id-Nummer"), 50) & vbTab
getPersonenKto &= vbTab
getPersonenKto &= row("Währungscode") & vbTab
getPersonenKto &= vbTab 'Forderungsonto
getPersonenKto &= vbTab
getPersonenKto &= Gegenkontonummer2 & vbTab 'Platzhalter??
getPersonenKto &= FormatStringSYS(row("Anrede") & " " & row("Ansprechpartner"), 100) & vbTab
getPersonenKto &= vbTab
getPersonenKto &= FormatStringSYS(row("Telefon")) & vbTab
getPersonenKto &= FormatStringSYS(row("Telefax")) & vbTab
getPersonenKto &= FormatStringSYS(row("E-Mail")) & vbTab
getPersonenKto &= vbTab
' getPersonenKto &= vbTab
End Function
Public Shared Function genDatensatz_Stammdaten(FiBuSchnittstelleNr As Integer, Optional OpenFile As Boolean = False) As Boolean ' Optional OpenFile = False, Optional boolKunden = True, Optional boolBuchungen = True ) As Boolean
Try
Dim bool_DatenVorhanden As Boolean = False
Dim Geschaeftsjahr = Now.Year 'If(Now.Month = 1, Now.Year - 1, Now.Year) --> Bei IMEX ist das GJ=Wirtschaftsjahr
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(FiBuSchnittstelleNr)
'DATEIPFAD für Stammdaten
'-------------------------------------------------------------------------------------------
Dim pathArchivKD = "\\datenarchiv\Datenarchiv\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\"
Dim pathKD = "\\fmzoll\f\FMZoll\FiBu\Syska\" & FIRMA.Firma_ID & "\"
'pathKD = pathArchivKD 'TEST
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
pathArchivKD = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\"
pathKD = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\"
'path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getRootDir
'pathArchivKD = ""
End If
If Not IO.Directory.Exists(pathKD) Then IO.Directory.CreateDirectory(pathKD)
If Not IO.Directory.Exists(pathArchivKD) Then IO.Directory.CreateDirectory(pathArchivKD)
'-------------------------------------------------------------------------------------------
If True Then 'boolKunden Then
'----------------- STAMMDATEN -----------------
Dim dt_Stamm As DataTable = getStammdaten(FiBuSchnittstelleNr)
If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then
Dim fileKD As System.IO.StreamWriter
Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & ".txt"
fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15"))
'fileKD.WriteLine(genStammdatenBeginn())
initKDNr(dt_Stamm)
For Each r In dt_Stamm.Rows
fileKD.WriteLine(getPersonenKto(r))
Next
bool_DatenVorhanden = True
fileKD.Close()
'In Archiv sichern
If pathArchivKD <> "" Then
If Not IO.Directory.Exists(pathArchivKD) Then IO.Directory.CreateDirectory(pathArchivKD)
If pathKD <> pathArchivKD Then IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD)
End If
If bool_DatenVorhanden Then
If OpenFile Then Process.Start(pathKD & DateinameKD)
Else
IO.File.Delete(pathKD & DateinameKD)
End If
'NOCH NICHT!!!
updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0
End If
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
End Try
Return False
End Function
'Public Shared Function genDatensatz_StammdatenTEST(FiBuSchnittstelleNr As Integer, Optional OpenFile As Boolean = False) As Boolean ' Optional OpenFile = False, Optional boolKunden = True, Optional boolBuchungen = True ) As Boolean
' Try
' Dim bool_DatenVorhanden As Boolean = False
' Dim Geschaeftsjahr = Now.Year 'If(Now.Month = 1, Now.Year - 1, Now.Year) --> Bei IMEX ist das GJ=Wirtschaftsjahr
' Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(FiBuSchnittstelleNr)
' 'DATEIPFAD für Stammdaten
' '-------------------------------------------------------------------------------------------
' Dim pathArchivKD = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\"
' Dim pathKD = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\"
' If Not IO.Directory.Exists(pathKD) Then IO.Directory.CreateDirectory(pathKD)
' If Not IO.Directory.Exists(pathArchivKD) Then IO.Directory.CreateDirectory(pathArchivKD)
' '-------------------------------------------------------------------------------------------
' If True Then 'boolKunden Then
' '----------------- STAMMDATEN -----------------
' Dim dt_Stamm As DataTable = getStammdatenTEST(FiBuSchnittstelleNr)
' If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then
' Dim fileKD As System.IO.StreamWriter
' Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & ".txt"
' fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15"))
' 'fileKD.WriteLine(genStammdatenBeginn())
' initKDNr(dt_Stamm)
' For Each r In dt_Stamm.Rows
' fileKD.WriteLine(getPersonenKto(r))
' Next
' bool_DatenVorhanden = True
' fileKD.Close()
' 'In Archiv sichern
' If pathArchivKD <> "" Then
' If Not IO.Directory.Exists(pathArchivKD) Then IO.Directory.CreateDirectory(pathArchivKD)
' If pathKD <> pathArchivKD Then IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD)
' End If
' If bool_DatenVorhanden Then
' If OpenFile Then Process.Start(pathKD & DateinameKD)
' Else
' IO.File.Delete(pathKD & DateinameKD)
' End If
' 'NOCH NICHT!!!
' ' updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0
' End If
' End If
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
' End Try
' Return False
'End Function
Public Shared Function genDatensatz_ALL(Optional OpenFile As Boolean = False, Optional boolKunden As Boolean = True, Optional boolBuchungen As Boolean = True, Optional WdhDateiname As String = "") As Boolean
genDatensatz_ALL = True
If boolKunden Then
' If Not genDatensatz_Stammdaten(OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Stammdaten(1, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Stammdaten(7, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Stammdaten(11, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Stammdaten(17, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Stammdaten(19, OpenFile) Then genDatensatz_ALL = False
End If
If boolBuchungen Then
If Not genDatensatz_Buchungen(1, OpenFile, WdhDateiname) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(7, OpenFile, WdhDateiname) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(11, OpenFile, WdhDateiname) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(17, OpenFile, WdhDateiname) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(19, OpenFile, WdhDateiname) Then genDatensatz_ALL = False
' If Not genDatensatzCSV_Buchungen(XX, OpenFile) Then genDatensatzCSV_ALL = False
' If Not genDatensatzCSV_Buchungen(XX, OpenFile) Then genDatensatzCSV_ALL = False
End If
End Function
Public Shared Function genDatensatz_Buchungen(ByRef Firma_ID As Integer, Optional OpenFile As Boolean = False, Optional WdhDateiname As String = "") As Boolean ' Optional OpenFile = False, Optional boolKunden = True, Optional boolBuchungen = True ) As Boolean
Try
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID)
Dim bool_DatenVorhanden As Boolean = False
Dim Geschaeftsjahr = Now.Year 'If(Now.Month = 1, Now.Year - 1, Now.Year) --> Bei IMEX ist das GJ=Wirtschaftsjahr
'DATEIPFAD für Buchungsdaten
'-------------------------------------------------------------------------------------------
Dim pathArchiv = "\\datenarchiv\Datenarchiv\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\"
Dim path = "\\fmzoll\f\FMZoll\FiBu\Syska\" & FIRMA.Firma_ID & "\"
'pathKD = pathArchivKD 'TEST
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
pathArchiv = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\"
path = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\"
'path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getRootDir
'pathArchivKD = ""
End If
If Not IO.Directory.Exists(path) Then IO.Directory.CreateDirectory(path)
If Not IO.Directory.Exists(pathArchiv) Then IO.Directory.CreateDirectory(pathArchiv)
'-------------------------------------------------------------------------------------------
'----------------- Buchungssätze -----------------
If True Then 'boolBuchungen Then
If WdhDateiname = "" Then TrdInvoice_FUNCTIONS.TrdinSchreiben(FIRMA.Firma_ID) 'Lädt die Daten aus der Tabelle Rechnungsausgang in die Tabelle trdInvoice (nur für 20 = IMEX )
Dim dt_Buchungen As DataTable = getBuchungen(FIRMA.Firma_ID, WdhDateiname)
' MsgBox(WdhDateiname & " - " & dt_Buchungen.Rows.Count)
If dt_Buchungen IsNot Nothing AndAlso dt_Buchungen.Rows.Count > 0 Then
Try
Dim file As System.IO.StreamWriter
Dim Dateiname = "AVISO_BUBE_" & Now.ToString("ddMMyyyy_HHmm") & ".txt"
file = My.Computer.FileSystem.OpenTextFileWriter(path & Dateiname, True, System.Text.Encoding.GetEncoding("iso-8859-15"))
' initKDNr(dt_Buchungen)
Dim SummeBuchungen As Double = 0
'file.WriteLine(genBuchungenBeginn()) 'not needed
For Each r In dt_Buchungen.Rows
Dim curDifferenzbetrag As Double = 0
If r("WährungFremd") Is DBNull.Value Then
curDifferenzbetrag = Math.Round(If(r("RechnungsbetragLokal") < 0, 0 - r("RechnungsbetragLokal"), r("RechnungsbetragLokal")), 2)
Else
curDifferenzbetrag = Math.Round(If(r("RechnungsbetragFremd") < 0, 0 - r("RechnungsbetragFremd"), r("RechnungsbetragFremd")), 2)
End If
If r("BelegartenNr") = 70 Then 'RECHNUNG ---> Immer am Anfang
file.WriteLine(genBuchungsZeileSum(r, SummeBuchungen, Geschaeftsjahr, FIRMA))
End If
Dim dt_BuchungenZeilen As DataTable = getBuchungenZeilen(FIRMA.Firma_ID, r("Rechnungsnummer"), r("Rechnungsdatum"), WdhDateiname)
If dt_BuchungenZeilen IsNot Nothing AndAlso dt_BuchungenZeilen.Rows.Count > 0 Then
For Each rz In dt_BuchungenZeilen.Rows
file.WriteLine(genBuchungsZeile(rz, SummeBuchungen, Geschaeftsjahr, FIRMA, curDifferenzbetrag)) ' BuchungsZeilen...
Next
End If
If curDifferenzbetrag <> 0 Then 'Differenz --> Ausgelich auf Diff.Konto
file.WriteLine(genBuchungsZeileDiffBetrag(r, SummeBuchungen, Geschaeftsjahr, FIRMA, curDifferenzbetrag))
End If
If r("BelegartenNr") = 71 Then 'GUTSCHRIFT ---> Immer am Schluss
file.WriteLine(genBuchungsZeileSum(r, SummeBuchungen, Geschaeftsjahr, FIRMA))
End If
Next
' file.WriteLine(genBuchungenEnd(SummeBuchungen))
bool_DatenVorhanden = True
'Update Filename TrdIn 'NOCH NICHT!!!! -->JETZT DOCH!!!
If WdhDateiname = "" Then
SQL.doSQL("update [tblTrdinInvoice] Set TrdinDateiname='" & Now.ToString("ddMMyyyyHHmm") & "' WHERE [Firma_ID] = " & FIRMA.Firma_ID & " AND TrdinDateiname is null ", "FMZOLL")
Else
SQL.doSQL("update [tblTrdinInvoice] Set TrdinDateiname='" & Now.ToString("ddMMyyyyHHmm") & "' WHERE [Firma_ID] = " & FIRMA.Firma_ID & " AND TrdinDateiname ='" & WdhDateiname & "' ", "FMZOLL")
End If
file.Close()
'In Archiv sichern
If pathArchiv <> "" Then
If Not IO.Directory.Exists(pathArchiv) Then IO.Directory.CreateDirectory(pathArchiv)
If path <> pathArchiv Then IO.File.Copy(path & Dateiname, pathArchiv & Dateiname)
End If
If bool_DatenVorhanden Then
If OpenFile Then Process.Start(path & Dateiname)
Else
IO.File.Delete(path & Dateiname)
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
End Try
End If
End If
'----------------------------------
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
End Try
Return False
End Function
'Public Shared Function genDatensatz_BuchungenTEST(ByRef Firma_ID As Integer, Optional OpenFile As Boolean = False) As Boolean ' Optional OpenFile = False, Optional boolKunden = True, Optional boolBuchungen = True ) As Boolean
' Try
' Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID)
' Dim bool_DatenVorhanden As Boolean = False
' Dim Geschaeftsjahr = Now.Year 'If(Now.Month = 1, Now.Year - 1, Now.Year) --> Bei IMEX ist das GJ=Wirtschaftsjahr
' 'DATEIPFAD für Buchungsdaten
' '-------------------------------------------------------------------------------------------
' Dim pathArchiv = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\Archiv\"
' Dim path = "\\datenarchiv\Datenarchiv\DATENARCHIV_TESTSYSTEM\SYSKA\" & FIRMA.Firma_ID & "\" & Now.Year & "\" & Now.Date.ToShortDateString & "\"
' If Not IO.Directory.Exists(path) Then IO.Directory.CreateDirectory(path)
' If Not IO.Directory.Exists(pathArchiv) Then IO.Directory.CreateDirectory(pathArchiv)
' '-------------------------------------------------------------------------------------------
' '----------------- Buchungssätze -----------------
' If True Then 'boolBuchungen Then
' ' TrdInvoice_FUNCTIONS.TrdinSchreiben(FIRMA.Firma_ID) 'Lädt die Daten aus der Tabelle Rechnungsausgang in die Tabelle trdInvoice (nur für 20 = IMEX )
' Dim dt_Buchungen As DataTable = getBuchungenTEST(FIRMA.Firma_ID)
' If dt_Buchungen IsNot Nothing AndAlso dt_Buchungen.Rows.Count > 0 Then
' Try
' Dim file As System.IO.StreamWriter
' Dim Dateiname = "AVISO_BUBE_" & Now.ToString("ddMMyyyy_HHmm") & ".txt"
' file = My.Computer.FileSystem.OpenTextFileWriter(path & Dateiname, True, System.Text.Encoding.GetEncoding("iso-8859-15"))
' ' initKDNr(dt_Buchungen)
' Dim SummeBuchungen As Double = 0
' 'file.WriteLine(genBuchungenBeginn()) 'not needed
' For Each r In dt_Buchungen.Rows
' Dim curDifferenzbetrag As Double = 0
' If r("WährungFremd") Is DBNull.Value Then
' curDifferenzbetrag = Math.Round(If(r("RechnungsbetragLokal") < 0, 0 - r("RechnungsbetragLokal"), r("RechnungsbetragLokal")), 2)
' Else
' curDifferenzbetrag = Math.Round(If(r("RechnungsbetragFremd") < 0, 0 - r("RechnungsbetragFremd"), r("RechnungsbetragFremd")), 2)
' End If
' If r("BelegartenNr") = 70 Then 'RECHNUNG ---> Immer am Anfang
' file.WriteLine(genBuchungsZeileSum(r, SummeBuchungen, Geschaeftsjahr, FIRMA))
' End If
' Dim dt_BuchungenZeilen As DataTable = getBuchungenZeilenTEST(FIRMA.Firma_ID, r("Rechnungsnummer"), r("Rechnungsdatum"))
' If dt_BuchungenZeilen IsNot Nothing AndAlso dt_BuchungenZeilen.Rows.Count > 0 Then
' For Each rz In dt_BuchungenZeilen.Rows
' file.WriteLine(genBuchungsZeile(rz, SummeBuchungen, Geschaeftsjahr, FIRMA, curDifferenzbetrag)) ' BuchungsZeilen...
' Next
' End If
' If curDifferenzbetrag <> 0 Then 'Differenz --> Ausgelich auf Diff.Konto
' file.WriteLine(genBuchungsZeileDiffBetrag(r, SummeBuchungen, Geschaeftsjahr, FIRMA, curDifferenzbetrag))
' End If
' If r("BelegartenNr") = 71 Then 'GUTSCHRIFT ---> Immer am Schluss
' file.WriteLine(genBuchungsZeileSum(r, SummeBuchungen, Geschaeftsjahr, FIRMA))
' End If
' Next
' ' file.WriteLine(genBuchungenEnd(SummeBuchungen))
' bool_DatenVorhanden = True
' 'Update Filename TrdIn 'NOCH NICHT!!!!
' ' SQL.doSQL("update [tblTrdinInvoice] Set TrdinDateiname='" & Now.ToString("ddMMyyyyHHmm") & "' WHERE [Firma_ID] = " & FIRMA.Firma_ID & " AND TrdinDateiname is null ", "FMZOLL")
' file.Close()
' 'In Archiv sichern
' If pathArchiv <> "" Then
' If Not IO.Directory.Exists(pathArchiv) Then IO.Directory.CreateDirectory(pathArchiv)
' If path <> pathArchiv Then IO.File.Copy(path & Dateiname, pathArchiv & Dateiname)
' End If
' If bool_DatenVorhanden Then
' If OpenFile Then Process.Start(path & Dateiname)
' Else
' IO.File.Delete(path & Dateiname)
' End If
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
' End Try
' End If
' End If
' '----------------------------------
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
' End Try
' Return False
'End Function
Shared Function FormatStringSYS(s As Object, Optional length As Integer = -1, Optional defaultValue As String = "") As String
If s Is Nothing Then Return defaultValue
If s Is DBNull.Value Then Return defaultValue
FormatStringSYS = s.ToString.Replace(";", ",").Trim
'FormatStringSYS = s.ToString.Replace(",", "")
'FormatStringSYS = s.ToString.Replace("""", "\22")
If length > 0 Then
If FormatStringSYS.Length > length Then FormatStringSYS = FormatStringSYS.Substring(0, length)
End If
End Function
Shared Function FormatStringDbl(s As Object, Optional Nachkommastellen As String = "2", Optional defaultValue As String = "") As String
If s Is Nothing Then Return defaultValue
If s Is DBNull.Value Then Return defaultValue
If IsNumeric(s) Then Return CDbl(s).ToString("N" & Nachkommastellen)
Return s.ToString
End Function
Shared Function getBuchungen(Firma_ID As Integer, Optional WdhDateiname As String = "") As DataTable
Dim sqlStr = " SELECT TOP (1000) IVO.Rechnungsdatum,IVO.Rechnungsnummer,min(Speditionsbuch) as Speditionsbuch ,min(FilialenNr) as FilialenNr,min(AbfertigungsNr) as AbfertigungsNr,min(UnterNr) as UnterNr,min(Abfertigungsdatum) as Abfertigungsdatum,min(BelegartenNr) as BelegartenNr
,min(KundenNrZentrale) as [KundenNrZentrale],min(RechnungsKundenNr) as RechnungsKundenNr,min(RechnungsLandKz) as RechnungsLandKz,min(RechnungsUstIdKz) as RechnungsUstIdKz,min(RechnungsUstIdNr) as RechnungsUstIdNr
,min(Lastschrift+0) as Lastschrift,min(Steuerschlüssel) as Steuerschlüssel,min([Steuersatz %]) as Steuersatz,min(WährungLokal) as WährungLokal,min(SteuerbetragLokal) as SteuerbetragLokal,min(RechnungsbetragLokal) as RechnungsbetragLokal
,min(WährungFremd) as WährungFremd,min(SteuerbetragFremd) as SteuerbetragFremd,min(RechnungsbetragFremd) as RechnungsbetragFremd,min(TrdinDateiname) as TrdinDateiname,min(Abgleich_op_debitor+0) as Abgleich_op_debitor
,min(Nettozahlungsziel) as Nettozahlungsziel,min(Firma_ID) as Firma_ID,min(UStVAn_ID) as UStVAn_ID /*,Leistungsnummer,Leistungsbezeichnung,Steuerpflichtig*/,sum(PROD.SteuerpflichtigerBetragLokal) as SteuerpflichtigerBetragLokal
,sum(PROD.SteuerfreierBetragLokal) as SteuerfreierBetragLokal,sum(PROD.SteuerpflichtigerBetragFremd) as SteuerpflichtigerBetragFremd,sum(PROD.SteuerfreierBetragFremd) as SteuerfreierBetragFremd,min(Belegdaten) as Belegdaten
,min(Sachkonto) as Sachkonto,min(Buchungstext) as Buchungstext,Sum(PROD.[SteuerpflichtigerBetragLokal] + PROD.[SteuerfreierBetragLokal]) As BetragLokal, Sum(PROD.[SteuerpflichtigerBetragFremd]+PROD.[SteuerfreierBetragFremd]) As BetragFremd
FROM VERAG.dbo.tblTrdinInvoice as IVO left JOIN tblTrdinProduct as PROD on IVO.Rechnungsnummer=PROD.Rechnungsnummer
WHERE Firma_ID ='" & Firma_ID & "' AND " & If(WdhDateiname = "", " TrdinDateiname Is Null ", " TrdinDateiname ='" & WdhDateiname & "' ") & "
group by Firma_id, IVO.Rechnungsnummer,IVO.rechnungsdatum/*,Leistungsnummer,Leistungsbezeichnung,Steuerpflichtig*/
ORDER BY Rechnungsdatum, Rechnungsnummer "
' --and IVO.Rechnungsnummer=19400002
Return SQL.loadDgvBySql(sqlStr, "FMZOLL", 9800)
End Function
'Shared Function getBuchungenTEST(Firma_ID As Integer) As DataTable
' Dim sqlStr = " SELECT TOP (1000) IVO.Rechnungsdatum,IVO.Rechnungsnummer,min(Speditionsbuch) as Speditionsbuch ,min(FilialenNr) as FilialenNr,min(AbfertigungsNr) as AbfertigungsNr,min(UnterNr) as UnterNr,min(Abfertigungsdatum) as Abfertigungsdatum,min(BelegartenNr) as BelegartenNr
' ,min(KundenNrZentrale) as [KundenNrZentrale],min(RechnungsKundenNr) as RechnungsKundenNr,min(RechnungsLandKz) as RechnungsLandKz,min(RechnungsUstIdKz) as RechnungsUstIdKz,min(RechnungsUstIdNr) as RechnungsUstIdNr
' ,min(Lastschrift+0) as Lastschrift,min(Steuerschlüssel) as Steuerschlüssel,min([Steuersatz %]) as Steuersatz,min(WährungLokal) as WährungLokal,min(SteuerbetragLokal) as SteuerbetragLokal,min(RechnungsbetragLokal) as RechnungsbetragLokal
' ,min(WährungFremd) as WährungFremd,min(SteuerbetragFremd) as SteuerbetragFremd,min(RechnungsbetragFremd) as RechnungsbetragFremd,min(TrdinDateiname) as TrdinDateiname,min(Abgleich_op_debitor+0) as Abgleich_op_debitor
' ,min(Nettozahlungsziel) as Nettozahlungsziel,min(Firma_ID) as Firma_ID,min(UStVAn_ID) as UStVAn_ID /*,Leistungsnummer,Leistungsbezeichnung*/,Steuerpflichtig,sum(PROD.SteuerpflichtigerBetragLokal) as SteuerpflichtigerBetragLokal
' ,sum(PROD.SteuerfreierBetragLokal) as SteuerfreierBetragLokal,sum(PROD.SteuerpflichtigerBetragFremd) as SteuerpflichtigerBetragFremd,sum(PROD.SteuerfreierBetragFremd) as SteuerfreierBetragFremd,min(Belegdaten) as Belegdaten
' ,min(Sachkonto) as Sachkonto,min(Buchungstext) as Buchungstext,Sum(PROD.[SteuerpflichtigerBetragLokal] + PROD.[SteuerfreierBetragLokal]) As BetragLokal, Sum(PROD.[SteuerpflichtigerBetragFremd]+PROD.[SteuerfreierBetragFremd]) As BetragFremd
' FROM VERAG.dbo.tblTrdinInvoice as IVO left JOIN tblTrdinProduct as PROD on IVO.Rechnungsnummer=PROD.Rechnungsnummer
' WHERE Firma_ID ='" & Firma_ID & "' AND TrdinDateiname ='211005010148'
' group by Firma_id, IVO.Rechnungsnummer,IVO.rechnungsdatum/*,Leistungsnummer,Leistungsbezeichnung*/,Steuerpflichtig
' ORDER BY Rechnungsdatum, Rechnungsnummer "
' ' --and IVO.Rechnungsnummer=19400002
' Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
'End Function
'Shared Function getBuchungenZeilen(Firma_ID As Integer, Rechnungsnummer As Integer, Rechnungsdatum As Date) As DataTable
' Dim sqlStr = " SELECT TOP (1000) IVO.Rechnungsdatum,IVO.Rechnungsnummer, Speditionsbuch ,FilialenNr,AbfertigungsNr,UnterNr, Abfertigungsdatum, BelegartenNr
' , [KundenNrZentrale], RechnungsKundenNr,RechnungsLandKz, RechnungsUstIdKz, RechnungsUstIdNr
' , Lastschrift, Steuerschlüssel,[Steuersatz %] as Steuersatz,WährungLokal, SteuerbetragLokal, RechnungsbetragLokal
' ,WährungFremd,SteuerbetragFremd,RechnungsbetragFremd,TrdinDateiname,Abgleich_op_debitor
' , Nettozahlungsziel, Firma_ID, UStVAn_ID,Leistungsnummer,Leistungsbezeichnung,Steuerpflichtig,PROD.SteuerpflichtigerBetragLokal as SteuerpflichtigerBetragLokal
' ,PROD.SteuerfreierBetragLokal as SteuerfreierBetragLokal,PROD.SteuerpflichtigerBetragFremd as SteuerpflichtigerBetragFremd,PROD.SteuerfreierBetragFremd as SteuerfreierBetragFremd,Belegdaten
' ,Sachkonto,Buchungstext, (PROD.[SteuerpflichtigerBetragLokal] + PROD.[SteuerfreierBetragLokal]) As BetragLokal, (PROD.[SteuerpflichtigerBetragFremd]+PROD.[SteuerfreierBetragFremd]) As BetragFremd
' FROM VERAG.dbo.tblTrdinInvoice as IVO left JOIN tblTrdinProduct as PROD on IVO.Rechnungsnummer=PROD.Rechnungsnummer
' WHERE Firma_ID ='" & Firma_ID & "' AND IVO.Rechnungsnummer ='" & Rechnungsnummer & "' AND cast(IVO.Rechnungsdatum as date) ='" & Rechnungsdatum.ToShortDateString & "' AND TrdinDateiname Is Null
' ORDER BY Rechnungsdatum, Rechnungsnummer "
' ' --and IVO.Rechnungsnummer=19400002
' Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
'End Function
Shared Function getBuchungenZeilen(Firma_ID As Integer, Rechnungsnummer As Integer, Rechnungsdatum As Date, Optional WdhDateiname As String = "") As DataTable
Dim sqlStr = " SELECT Sachkonto,IVO.Rechnungsdatum Rechnungsdatum,IVO.Rechnungsnummer Rechnungsnummer,FilialenNr,AbfertigungsNr,UnterNr,steuerpflichtig,[Steuersatz %] Steuersatz,BelegartenNr,
WährungFremd, WährungLokal,sum(PROD.[SteuerpflichtigerBetragLokal] + PROD.[SteuerfreierBetragLokal])BetragLokal,
sum(PROD.[SteuerpflichtigerBetragFremd]+PROD.[SteuerfreierBetragFremd])BetragFremd ,sum(RechnungsbetragLokal) RechnungsbetragLokal,sum(RechnungsbetragFremd) RechnungsbetragFremd
FROM VERAG.dbo.tblTrdinInvoice as IVO left JOIN tblTrdinProduct as PROD on IVO.Rechnungsnummer=PROD.Rechnungsnummer
WHERE Firma_ID ='" & Firma_ID & "' AND IVO.Rechnungsnummer ='" & Rechnungsnummer & "' AND cast(IVO.Rechnungsdatum as date) ='" & Rechnungsdatum.ToShortDateString & "' AND " & If(WdhDateiname = "", " TrdinDateiname Is Null ", " TrdinDateiname ='" & WdhDateiname & "' ") & "
GROUP BY Sachkonto,IVO.Rechnungsdatum,IVO.Rechnungsnummer,FilialenNr,AbfertigungsNr,UnterNr,steuerpflichtig,[Steuersatz %] ,BelegartenNr,WährungFremd,WährungLokal
ORDER BY Rechnungsdatum, Rechnungsnummer "
' --and IVO.Rechnungsnummer=19400002
Return SQL.loadDgvBySql(sqlStr, "FMZOLL", 9800)
End Function
Public Shared Function genBuchungsZeileSum(row As DataRow, ByRef SummeBuchungen As Double, ByRef Geschäftsjahr As Integer, ByRef FIRMA As VERAG_PROG_ALLGEMEIN.cFirmen) As String
genBuchungsZeileSum = ""
If row("BelegartenNr") = 70 Then 'RECHNUNG
Dim FiBuSollkontonummer = row("KundenNrZentrale")
Dim FiBuHabenkontonummer = "0"
Dim Bruttobetrag As Double
Dim FiBuWährung = ""
If row("WährungFremd") Is DBNull.Value Then
Bruttobetrag = row("RechnungsbetragLokal") 'Bruttobetrag
Else
Bruttobetrag = row("RechnungsbetragFremd") 'Bruttobetrag
End If
If row("WährungFremd") Is DBNull.Value Then
FiBuWährung = row("WährungLokal")
Else
FiBuWährung = row("WährungFremd")
End If
Dim FiBuEigenbruttobetrag = row("RechnungsbetragLokal")
genBuchungsZeileSum = "L" & vbTab
genBuchungsZeileSum &= CDate(row("Rechnungsdatum")).ToString("dd.MM.yyyy") & vbTab
genBuchungsZeileSum &= FormatStringSYS(row("Rechnungsnummer")) & vbTab
genBuchungsZeileSum &= FiBuSollkontonummer & vbTab
genBuchungsZeileSum &= FiBuHabenkontonummer & vbTab
genBuchungsZeileSum &= row("FilialenNr") & "/" & row("AbfertigungsNr") & "/" & CDbl(row("UnterNr")).ToString("00") & vbTab
genBuchungsZeileSum &= Format(CDbl(Bruttobetrag), fmt) & vbTab
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuersatz
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuerbetrag
genBuchungsZeileSum &= FiBuWährung & vbTab
genBuchungsZeileSum &= Format(CDbl(FiBuEigenbruttobetrag), fmt) & vbTab
ElseIf row("BelegartenNr") = 71 Then 'GUTSCHRIFT
' Buchungssatz Gutschrift (immer letzte Buchungszeile)
Dim FiBuWährung = ""
Dim FiBuSollkontonummer = "0"
Dim FiBuHabenkontonummer = row("KundenNrZentrale")
Dim FiBuBruttobetrag As Double
If row("WährungFremd") Is DBNull.Value Then
FiBuWährung = row("WährungLokal")
FiBuBruttobetrag = (0 - CDbl(row("RechnungsbetragLokal")))
Else
FiBuWährung = row("WährungFremd")
FiBuBruttobetrag = (0 - CDbl(row("RechnungsbetragFremd")))
End If
Dim FiBuEigenbruttobetrag = 0 - CDbl(row("RechnungsbetragLokal"))
genBuchungsZeileSum = "L" & vbTab
genBuchungsZeileSum &= CDate(row("Rechnungsdatum")).ToString("dd.MM.yyyy") & vbTab
genBuchungsZeileSum &= FormatStringSYS(row("Rechnungsnummer")) & vbTab
genBuchungsZeileSum &= FiBuSollkontonummer & vbTab
genBuchungsZeileSum &= FiBuHabenkontonummer & vbTab
genBuchungsZeileSum &= row("FilialenNr") & "/" & row("AbfertigungsNr") & "/" & CDbl(row("UnterNr")).ToString("00") & vbTab
genBuchungsZeileSum &= Format(CDbl(FiBuBruttobetrag), fmt) & vbTab
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuersatz
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuerbetrag
genBuchungsZeileSum &= FiBuWährung & vbTab
genBuchungsZeileSum &= Format(CDbl(FiBuEigenbruttobetrag), fmt) & vbTab
End If
Return genBuchungsZeileSum
End Function
Public Shared Function genBuchungsZeile(row As DataRow, ByRef SummeBuchungen As Double, ByRef Geschäftsjahr As Integer, ByRef FIRMA As VERAG_PROG_ALLGEMEIN.cFirmen, ByRef curDifferenzbetrag As Double) As String
Dim curSteuerbetrag As Double
Dim curNettobetrag As Double
Dim curBruttobetrag As Double
Dim FiBuBruttobetrag As String
Dim FiBuEigenbruttobetrag As Double
Dim FiBuSteuersatz As Double
Dim FiBuSteuerbetrag As String
Dim FiBuSollkontonummer As Integer
Dim FiBuHabenkontonummer As Integer
Dim FiBuWährung = "EUR"
Select Case row("BelegartenNr")
Case 70 'Rechnung
FiBuSollkontonummer = "0"
FiBuHabenkontonummer = If(row("Sachkonto") IsNot DBNull.Value, row("Sachkonto"), " ")
If row("WährungFremd") Is DBNull.Value Then
curNettobetrag = row("BetragLokal")
Else
curNettobetrag = row("BetragFremd")
End If
Case 71 'Gutschrift
FiBuSollkontonummer = If(row("Sachkonto") IsNot DBNull.Value, row("Sachkonto"), " ")
FiBuHabenkontonummer = "0"
If row("WährungFremd") Is DBNull.Value Then
curNettobetrag = 0 - row("BetragLokal")
Else
curNettobetrag = 0 - row("BetragFremd")
End If
End Select
If CBool(row("steuerpflichtig")) Then
curSteuerbetrag = CLng(curNettobetrag * CDbl(row("Steuersatz")) * 100) / 100
curBruttobetrag = curNettobetrag + curSteuerbetrag
FiBuBruttobetrag = curBruttobetrag.ToString("N2")
curDifferenzbetrag = Math.Round(curDifferenzbetrag, 2) - Math.Round(CDbl(FiBuBruttobetrag), 2)
FiBuSteuersatz = Format(CDbl(row("Steuersatz")) * 100, "00.00")
' Die folgende Zeile führt zu Buchungsfehler bei Fremdwährung,
' Buchungssatz.FiBuSteuerbetrag = Format(curSteuerbetrag, "########0.00")
' deshalb nur Steuerprozent und keinen Steuerbetrag übergeben.
FiBuSteuerbetrag = ""
Else
curBruttobetrag = curNettobetrag
FiBuBruttobetrag = curBruttobetrag.ToString("N2")
curDifferenzbetrag = Math.Round(curDifferenzbetrag, 2) - Math.Round(CDbl(FiBuBruttobetrag), 2)
FiBuSteuersatz = "00,00"
FiBuSteuerbetrag = ""
End If
If row("WährungFremd") Is DBNull.Value Then
FiBuEigenbruttobetrag = CDbl(row("RechnungsbetragLokal")) 'Bruttobetrag
FiBuWährung = row("WährungLokal")
Else
FiBuWährung = row("WährungFremd")
FiBuEigenbruttobetrag = CDbl(row("RechnungsbetragFremd")) 'Bruttobetrag
End If
genBuchungsZeile = "L" & vbTab
genBuchungsZeile &= CDate(row("Rechnungsdatum")).ToString("dd.MM.yyyy") & vbTab
genBuchungsZeile &= FormatStringSYS(row("Rechnungsnummer")) & vbTab
genBuchungsZeile &= FiBuSollkontonummer & vbTab
genBuchungsZeile &= FiBuHabenkontonummer & vbTab
genBuchungsZeile &= row("FilialenNr") & "/" & row("AbfertigungsNr") & "/" & CDbl(row("UnterNr")).ToString("00") & vbTab
genBuchungsZeile &= Format(CDbl(FiBuBruttobetrag), fmt) & vbTab
genBuchungsZeile &= Format(CDbl(FiBuSteuersatz), fmt) & vbTab 'FiBuSteuersatz
genBuchungsZeile &= FormatStringDbl(FiBuSteuerbetrag) & vbTab 'FiBuSteuerbetrag
genBuchungsZeile &= FiBuWährung & vbTab
genBuchungsZeile &= Format(CDbl(FiBuEigenbruttobetrag), fmt) & vbTab
End Function
Public Shared Function genBuchungsZeileDiffBetrag(row As DataRow, ByRef SummeBuchungen As Double, ByRef Geschäftsjahr As Integer, ByRef FIRMA As VERAG_PROG_ALLGEMEIN.cFirmen, ByRef curDifferenzbetrag As Double) As String
' Buchungssatz Steuerdifferenz
If curDifferenzbetrag <> 0 Then
Dim FiBuWährung As String
Dim FiBuEigenbruttobetrag As Double
Dim FiBuSollkontonummer As Integer
Dim FiBuHabenkontonummer As Integer
Dim Buchungstext = row("FilialenNr") & "/" & row("AbfertigungsNr") & "/" & CDbl(row("UnterNr")).ToString("00") & "/Steuerdiff." & vbTab
If row("WährungFremd") Is DBNull.Value Then
FiBuEigenbruttobetrag = curDifferenzbetrag 'Bruttobetrag
FiBuWährung = row("WährungLokal")
Else
FiBuWährung = row("WährungFremd")
FiBuEigenbruttobetrag = cProgramFunctions.fktEuro(curDifferenzbetrag, row("WährungFremd"), "EUR")
End If
Select Case row("BelegartenNr")
Case 70 'Rechnung
FiBuSollkontonummer = "0"
FiBuHabenkontonummer = "8490"
Case 71 'Gutschrift
FiBuSollkontonummer = "8490"
FiBuHabenkontonummer = "0"
End Select
genBuchungsZeileDiffBetrag = "L" & vbTab
genBuchungsZeileDiffBetrag &= CDate(row("Rechnungsdatum")).ToString("dd.MM.yyyy") & vbTab
genBuchungsZeileDiffBetrag &= FormatStringSYS(row("Rechnungsnummer")) & vbTab
genBuchungsZeileDiffBetrag &= FiBuSollkontonummer & vbTab
genBuchungsZeileDiffBetrag &= FiBuHabenkontonummer & vbTab
genBuchungsZeileDiffBetrag &= Buchungstext
genBuchungsZeileDiffBetrag &= Format(curDifferenzbetrag, fmt) & vbTab
genBuchungsZeileDiffBetrag &= "00,00" & vbTab 'FiBuSteuersatz
genBuchungsZeileDiffBetrag &= "" & vbTab 'FiBuSteuerbetrag
genBuchungsZeileDiffBetrag &= FiBuWährung & vbTab
genBuchungsZeileDiffBetrag &= Format(FiBuEigenbruttobetrag, fmt) & vbTab
'curDifferenzbetrag += FiBuEigenbruttobetrag
End If
End Function
Shared Sub initKDNr(ByRef dt As DataTable)
For Each r In dt.Rows
If IsNumeric(r("Konto-Nr")) AndAlso CInt(r("Konto-Nr")) > 2000000 Then r("Konto-Nr") = (CInt(r("Konto-Nr")) - 2000000)
' MsgBox((CInt(r("Konto-Nr")) - 1000000) + 200000)
Next
End Sub
Shared Function initKDNr2(ktoNr As String) As String
If IsNumeric(ktoNr) AndAlso CInt(ktoNr) > 2000000 Then ktoNr = (CInt(ktoNr) - 2000000) '+ 200000
Return ktoNr
End Function
' Trdin=false
Shared Function getSteuercode(r As DataRow, FIRMA As VERAG_PROG_ALLGEMEIN.cFirmen) As String
Select Case r("Sachkonto")
'Case "3550", "3553", "3558"
' Return "999"
Case Else
If Not CBool(r("Steuerpflichtig")) Then
'Vorher immer return "" - galube es soll bei eu aber 77 sein...
If SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & r("RechnungsLandKz") & "'", "FMZOLL", False) Then
Return "77" ' EU-LAND
Else
Return "" ' Drittland
End If
Else
If (r("RechnungsLandKz")).ToString.Replace("AT", "A").Replace("DE", "D") = FIRMA.Firma_LandKz Then 'Abhängig von FIRMA --> INLAND!!!!!!
Return "1" 'Steuerpflichtig und AT
Else
If SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & r("RechnungsLandKz") & "'", "FMZOLL", False) Then
Return "77" ' EU-LAND
Else
Return "" ' Drittland
End If
End If
End If
End Select
Return ""
End Function
Shared Function fill0Stellen(i As Object, l As Integer) As String
If i Is DBNull.Value Then i = ""
If i Is Nothing Then i = ""
While i.ToString.Length < l
i &= "0"
End While
Return i
End Function
' Public Function fktFiBuDebitoren(ByVal intFirma_ID As Integer) As Boolean
' Dim dq As DAO.QueryDef
' Dim rstACC As DAO.Recordset
' Dim cnnFIBU2 As ADODB.Connection
' Dim rstSQL As ADODB.Recordset
' Dim DateiName As String
' Dim DateiNr As Integer
' Dim fDateiOpen As Boolean
' Dim strSQL As String
' Dim lngFortschritt As Long
'2060 On Error GoTo PROC_Error
'2070 fktFiBuDebitoren = False
'2080 Call Logbucheintrag(0, 0, "basFiBuSyska.fktFiBuDebitoren(" & intFirma_ID & ")", 0, "gestartet")
'2090 DoCmd.Hourglass True
' ' Access-Datenbank lesen.
'2100 Set dq = dbs.QueryDefs("qryFiBuDebitoren")
'2110 dq.Parameters("[parFirma_ID]") = intFirma_ID
'2120 Set rstACC = dq.OpenRecordset(dbOpenSnapshot)
'2130 If Not rstACC.EOF Then
' ' Verbindung zur SQL-Server-Datenbank herstellen.
'2140 Set cnnFIBU2 = New ADODB.Connection
'2150 cnnFIBU2.ConnectionTimeout = 120
'2160 cnnFIBU2.Open "File Name=F:\FMZoll\FIBU2.UDL"
'2170 Set rstSQL = New ADODB.Recordset
' ' Information über den Beginn der Verarbeitung anzeigen.
'2180 lngFortschritt = 0
'2190 rstACC.MoveLast
'2200 Call SysCmd(acSysCmdInitMeter, "FIBU2 Debitoren ", rstACC.RecordCount)
'2210 rstACC.MoveFirst
'2220 Do Until rstACC.EOF
' ' Information über den Fortschritt der Verarbeitung anzeigen.
'2230 lngFortschritt = lngFortschritt + 1
'2240 Call SysCmd(acSysCmdUpdateMeter, lngFortschritt)
'2250 If lngFortschritt Mod 10 = 0 Then DoEvents
' ' SQL-Server-Datenbank lesen.
'2260 strSQL = "SELECT [i_konto]" & _
' " FROM [FIBU2].[dbo].[fibu_konto]" & _
' " WHERE [i_firm_refid] = " & intFirma_ID & _
' " AND [c_kontoart] = 'DE'" & _
' " AND [i_konto] = " & rstACC!KundenNrZentrale
'2270 rstSQL.Open strSQL, cnnFIBU2, adOpenStatic, adLockReadOnly, adCmdText
'2280 If rstSQL.EOF Then
' ' Datei zur Aufnahme der Schnittstellendaten anlegen.
'2290 If Not fDateiOpen Then
'2300 DateiName = "F:\FMZoll\FiBu\Syska\" & intFirma_ID & "\DEBI_" & Format(Now(), "yymmddhhmmss") & ".txt"
'2310 DateiNr = FreeFile
'2320 Forms![Daten-Transfer]!strInformation = DateiName
'2330 Open DateiName For Output As DateiNr
'2340 Forms![Daten-Transfer]!strInformation = ""
'2350 fDateiOpen = True
'2360 End If
' ' Schnittstellendaten bereitstellen.
'2370 Debitorensatz.FiBuKontonummer = rstACC!KundenNrZentrale
'2380 Debitorensatz.FiBuKürzel = IIf(IsNull(rstACC!Ordnungsbegriff), rstACC!KundenNrZentrale, Left(Left(rstACC!Ordnungsbegriff, 2) & rstACC!KundenNrZentrale, 8))
'2390 Debitorensatz.FiBuName = IIf(IsNull(rstACC![Name 1]), Left(rstACC!Ordnungsbegriff, 40), Left(rstACC![Name 1], 40))
'2400 Debitorensatz.FiBuZusatz = IIf(IsNull(rstACC![Name 2]), " ", Left(rstACC![Name 2], 40))
'2410 Debitorensatz.FiBuStraße = IIf(IsNull(rstACC!Straße), " ", Left(rstACC!Straße, 30))
'2420 Debitorensatz.FiBuPLZ = IIf(IsNull(rstACC!PLZ), " ", Right(rstACC!PLZ, 6))
'2430 Debitorensatz.FiBuOrt = IIf(IsNull(rstACC!Ort), " ", Left(rstACC!Ort, 30))
' 'Für das neue Buchhaltungsprogramm muss das LandKz in ISO2 angegeben werden.
' 'Debitorensatz.FiBuLand = IIf(IsNull(rstACC!LandKz), " ", Left(rstACC!LandKz, 3)) 'bis 30.11.2010
'2440 Debitorensatz.FiBuLand = IIf(IsNull(rstACC!LandKz), " ", Nz(DLookup("[LandKzISO2]", "qryStaaten", "[LandKz] = '" & rstACC!LandKz & "'"), rstACC!LandKz)) 'ab 01.12.2010
'2450 Debitorensatz.FiBuEröffnungsdatum = IIf(IsNull(rstACC![Eingegeben am]), " ", DateValue(rstACC![Eingegeben am]))
'2460 If rstACC!Lastschrift = True Then
'2470 Debitorensatz.FiBuBLZ = IIf(IsNull(rstACC!BLZ), " ", Left(rstACC!BLZ, 8))
'2480 Debitorensatz.FiBuBankkonto = IIf(IsNull(rstACC!KTO), " ", Left(rstACC!KTO, 10))
'2490 Else
'2500 Debitorensatz.FiBuBLZ = " "
'2510 Debitorensatz.FiBuBankkonto = " "
'2520 End If
'2530 Debitorensatz.FiBuSkontotage = "00"
'2540 Debitorensatz.FiBuZahlungstage = "10"
'2550 Debitorensatz.FiBuSkontoprozent = "00,00"
'2560 Debitorensatz.FiBuMahnkennzahl = "01"
'2570 Debitorensatz.FiBuIDNummer = IIf(IsNull(rstACC!UstIdNr), " ", IIf(IsNull(rstACC!UstIdKz), Left(rstACC!UstIdNr, 15), Left(rstACC!UstIdKz & rstACC!UstIdNr, 15)))
'2580 Debitorensatz.FiBuWährung = IIf(IsNull(rstACC!Währungscode), " ", Left(rstACC!Währungscode, 4))
'2590 Debitorensatz.FiBuAnsprechpartner = IIf(IsNull(rstACC!Ansprechpartner), " ", IIf(IsNull(rstACC!Anrede), Left(rstACC!Ansprechpartner, 40), Left(Trim(rstACC!Anrede & " " & rstACC!Ansprechpartner), 40)))
'2600 Debitorensatz.FiBuTelefon = IIf(IsNull(rstACC!Telefon), " ", Left(rstACC!Telefon, 20))
'2610 Debitorensatz.FiBuFax = IIf(IsNull(rstACC!Telefax), " ", Left(rstACC!Telefax, 20))
'2620 Debitorensatz.FiBuEMailAdresse = IIf(IsNull(rstACC![E-Mail]), " ", Left(rstACC![E-Mail], 40))
'2630 Debitorensatz.FiBuBemerkung = IIf(rstACC!KundenNr = rstACC!KundenNrZentrale, " ", rstACC!KundenNr)
'2640 If IsNull(rstACC!LandKz) Or rstACC!LandKz = " " Or rstACC!LandKz = "A" Then
'2650 Debitorensatz.FiBuGegenkontonummer = "4000" ' Erl. 20%
'2660 Debitorensatz.FiBuGegenkontonummer2 = "4000" ' Erl. 20%
'2670 Else
'2680 If DLookup(Nz("[MitgliedslandEU]", False), "[Währungstabelle]", "[LandKz]='" & rstACC!LandKz & "'") Then
'2690 Debitorensatz.FiBuGegenkontonummer = "4020" ' Erl. 0% EU
'2700 Debitorensatz.FiBuGegenkontonummer2 = "4020" ' Erl. 0% EU
'2710 Else
'2720 Debitorensatz.FiBuGegenkontonummer = "4021" ' Erl. 0% 3.Land
'2730 Debitorensatz.FiBuGegenkontonummer2 = "4021" ' Erl. 0% 3.Land
'2740 End If
'2750 End If
'2760 Debitorensatz.FiBuBankname = " "
'2770 Debitorensatz.FiBuLohnveredeler = " "
'2780 Debitorensatz.FiBuDurchbuchungskontonummer = " "
'2790 Debitorensatz.FiBuGeschäftsführer = " "
' ' Schnittstellendaten in Datei schreiben.
'2800 Print #DateiNr, Trim(Debitorensatz.FiBuKontonummer); Chr(9);
'2810 Print #DateiNr, Trim(Debitorensatz.FiBuKürzel); Chr(9);
'2820 Print #DateiNr, Trim(Debitorensatz.FiBuName); Chr(9);
'2830 Print #DateiNr, Trim(Debitorensatz.FiBuZusatz); Chr(9);
'2840 Print #DateiNr, Trim(Debitorensatz.FiBuStraße); Chr(9);
'2850 Print #DateiNr, Trim(Debitorensatz.FiBuPLZ); Chr(9);
'2860 Print #DateiNr, Trim(Debitorensatz.FiBuOrt); Chr(9);
'2870 Print #DateiNr, Trim(Debitorensatz.FiBuLand); Chr(9);
'2880 Print #DateiNr, Trim(Debitorensatz.FiBuEröffnungsdatum); Chr(9);
'2890 Print #DateiNr, Trim(Debitorensatz.FiBuGegenkontonummer); Chr(9);
'2900 Print #DateiNr, Trim(Debitorensatz.FiBuBankname); Chr(9);
'2910 Print #DateiNr, Trim(Debitorensatz.FiBuBLZ); Chr(9);
'2920 Print #DateiNr, Trim(Debitorensatz.FiBuBankkonto); Chr(9);
'2930 Print #DateiNr, Trim(Debitorensatz.FiBuSkontotage); Chr(9);
'2940 Print #DateiNr, Trim(Debitorensatz.FiBuZahlungstage); Chr(9);
'2950 Print #DateiNr, Trim(Debitorensatz.FiBuSkontoprozent); Chr(9);
'2960 Print #DateiNr, Trim(Debitorensatz.FiBuMahnkennzahl); Chr(9);
'2970 Print #DateiNr, Trim(Debitorensatz.FiBuIDNummer); Chr(9);
'2980 Print #DateiNr, Trim(Debitorensatz.FiBuWährung); Chr(9);
'2990 Print #DateiNr, Trim(Debitorensatz.FiBuLohnveredeler); Chr(9);
'3000 Print #DateiNr, Trim(Debitorensatz.FiBuDurchbuchungskontonummer); Chr(9);
'3010 Print #DateiNr, Trim(Debitorensatz.FiBuGegenkontonummer2); Chr(9);
'3020 Print #DateiNr, Trim(Debitorensatz.FiBuAnsprechpartner); Chr(9);
'3030 Print #DateiNr, Trim(Debitorensatz.FiBuGeschäftsführer); Chr(9);
'3040 Print #DateiNr, Trim(Debitorensatz.FiBuTelefon); Chr(9);
'3050 Print #DateiNr, Trim(Debitorensatz.FiBuFax); Chr(9);
'3060 Print #DateiNr, Trim(Debitorensatz.FiBuEMailAdresse); Chr(9);
'3070 Print #DateiNr, Trim(Debitorensatz.FiBuBemerkung); Chr(9)
'3080 End If
'3090 rstSQL.Close
' ' Feld FiBuSchnittstelle in Tabelle Kunden ausschalten, nachdem die Schnittstellendaten bereitgestellt wurden.
'3100 dbs.Execute ("UPDATE Kunden SET Kunden.FiBuSchnittstelle = No WHERE (((Kunden.FiBuSchnittstelle)=Yes) AND ((Kunden.KundenNr)=" & rstACC!KundenNr & "));")
'3110 rstACC.MoveNext
'3120 Loop
'3130 Call SysCmd(acSysCmdRemoveMeter)
'3140 End If
'3150 rstACC.Close
'3160 Set rstACC = Nothing
'3170 fktFiBuDebitoren = True
'PROC_Exit:
'3180 On Error Resume Next
' ' Verbindung zur Schnittstellendatei trennen.
'3190 If fDateiOpen Then
'3200 Close DateiNr
'3210 fDateiOpen = False
'3220 End If
' ' Verbindung zur SQL-Server-Datenbank trennen.
'3230 If Not rstSQL Is Nothing Then
'3240 If rstSQL.State = adStateOpen Then rstSQL.Close
'3250 Set rstSQL = Nothing
'3260 End If
'3270 If Not cnnFIBU2 Is Nothing Then
'3280 If cnnFIBU2.State = adStateOpen Then cnnFIBU2.Close
'3290 Set cnnFIBU2 = Nothing
'3300 End If
' ' Verbindung zur Access-Datenbank trennen.
'3310 If Not rstACC Is Nothing Then
'3320 rstACC.Close
'3330 Set rstACC = Nothing
'3340 End If
'3350 DoCmd.Hourglass False
'3360 Exit Function
'PROC_Error:
'3370 DoCmd.Hourglass False
'3380 ErrNotify Err, "basFiBuSyska", "fktFiBuDebitoren", eNormalError
'3390 Resume PROC_Exit
' End Function
' Public Function fktFiBuBuchungen(ByVal intFirma_ID As Integer)
'100 On Error GoTo PROC_Error
' Dim wrk As DAO.Workspace
' Dim db As DAO.Database
' Dim rstInvoice As DAO.Recordset
' Dim rstProduct As DAO.Recordset
' Dim DateiName As String
' Dim DateiNr As Integer
' Dim fDateiOpen As Boolean
' Dim lngFortschritt As Long
' Dim fInTransaktion As Boolean
' Dim curDifferenzbetrag As Currency
' Dim curNettobetrag As Currency
' Dim curSteuerbetrag As Currency
' Dim curBruttobetrag As Currency
'110 DoCmd.Hourglass True
'120 fInTransaktion = False
'130 fktFiBuBuchungen = False
'140 Call Logbucheintrag(0, 0, "basFiBuSyska.fktFiBuBuchungen(" & intFirma_ID & ")", 0, "gestartet")
'150 Set wrk = DBEngine.Workspaces(0)
'160 Set db = CurrentDb
' ' Transaktion starten
'170 wrk.BeginTrans
'180 fInTransaktion = True
' ' Invoice-Sätze lesen.
'190 Set rstInvoice = SPRecordsetMitParameter("dbo.spTrdinFiBuSelectInvoice", AktuelleVerbindungszeichenfolge(0), intFirma_ID)
'200 If Not rstInvoice.EOF Then
'210 DateiName = "F:\FMZoll\FiBu\Syska\" & intFirma_ID & "\BUBE_" & Format(Now(), "yymmddhhmmss") & ".txt"
'220 DateiNr = FreeFile ' Freie DateiNr
'230 Forms![Daten-Transfer]!strInformation = DateiName
'240 Open DateiName For Output As DateiNr ' Datei öffnen.
'250 Forms![Daten-Transfer]!strInformation = ""
'260 fDateiOpen = True
' ' Invoice-Sätze verarbeiten.
'270 rstInvoice.MoveLast
'280 RC = SysCmd(acSysCmdInitMeter, DateiName & " schreiben", rstInvoice.RecordCount)
'290 rstInvoice.MoveFirst
'300 lngFortschritt = 0
'310 Do
'320 lngFortschritt = lngFortschritt + 1
'330 RC = SysCmd(acSysCmdUpdateMeter, lngFortschritt)
' ' Buchungssatz Vorbelegung
'340 Buchungssatz.FiBuBuchungsart = "L"
'350 Buchungssatz.FiBuBelegdatum = Format(rstInvoice![RechnungsDatum], "dd.mm.yyyy")
'360 Buchungssatz.FiBuBelegnummer = Format(Right(rstInvoice![Rechnungsnummer], 8), "00000000")
'370 Buchungssatz.FiBuBuchungstext = Format(rstInvoice![FilialenNr], "0000") & "/" & Format(Right(rstInvoice![AbfertigungsNr], 8), "00000000") & "/" & Format(rstInvoice![UnterNr], "00")
'380 If IsNull(rstInvoice![WährungFremd]) Then
'390 Buchungssatz.FiBuWährung = rstInvoice![WährungLokal]
'400 curDifferenzbetrag = IIf(rstInvoice![RechnungsbetragLokal] < 0, 0 - rstInvoice![RechnungsbetragLokal], rstInvoice![RechnungsbetragLokal])
'410 Else
'420 Buchungssatz.FiBuWährung = rstInvoice![WährungFremd]
'430 curDifferenzbetrag = IIf(rstInvoice![RechnungsbetragFremd] < 0, 0 - rstInvoice![RechnungsbetragFremd], rstInvoice![RechnungsbetragFremd])
'440 End If
' ' Buchungssatz Rechnung (immer erste Buchungszeile)
'450 If rstInvoice![BelegartenNr] = RECHNUNG Then
'460 Buchungssatz.FiBuSollkontonummer = rstInvoice![KundenNrZentrale]
'470 Buchungssatz.FiBuHabenkontonummer = "0"
'480 If IsNull(rstInvoice![WährungFremd]) Then
'490 Buchungssatz.FiBuBruttobetrag = Format(rstInvoice![RechnungsbetragLokal], "########0.00")
'500 Else
'510 Buchungssatz.FiBuBruttobetrag = Format(rstInvoice![RechnungsbetragFremd], "########0.00")
'520 End If
'530 Buchungssatz.FiBuSteuersatz = " "
'540 Buchungssatz.FiBuSteuerbetrag = " "
'550 Buchungssatz.FiBuEigenbruttobetrag = Format(rstInvoice![RechnungsbetragLokal], "########0.00")
'560 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungsart); Chr(9);
'570 Print #DateiNr, Trim(Buchungssatz.FiBuBelegdatum); Chr(9);
'580 Print #DateiNr, Trim(Buchungssatz.FiBuBelegnummer); Chr(9);
'590 Print #DateiNr, Trim(Buchungssatz.FiBuSollkontonummer); Chr(9);
'600 Print #DateiNr, Trim(Buchungssatz.FiBuHabenkontonummer); Chr(9);
'610 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungstext); Chr(9);
'620 Print #DateiNr, Trim(Buchungssatz.FiBuBruttobetrag); Chr(9);
'630 Print #DateiNr, Trim(Buchungssatz.FiBuSteuersatz); Chr(9);
'640 Print #DateiNr, Trim(Buchungssatz.FiBuSteuerbetrag); Chr(9);
'650 Print #DateiNr, Trim(Buchungssatz.FiBuWährung); Chr(9);
'660 Print #DateiNr, Trim(Buchungssatz.FiBuEigenbruttobetrag)
'670 End If
' ' Product-Sätze lesen.
'680 Set rstProduct = SPRecordsetMitParameter("dbo.spTrdinFiBuSelectProduct", AktuelleVerbindungszeichenfolge(0), rstInvoice![RechnungsDatum], rstInvoice![Rechnungsnummer])
'690 Do Until rstProduct.EOF
' ' Buchungssatz Splittbuchungen
'700 Select Case rstInvoice![BelegartenNr]
' Case RECHNUNG
'710 Buchungssatz.FiBuSollkontonummer = "0"
'720 Buchungssatz.FiBuHabenkontonummer = Nz(rstProduct![Sachkonto], " ")
'730 If IsNull(rstInvoice![WährungFremd]) Then
'740 curNettobetrag = rstProduct![BetragLokal]
'750 Else
'760 curNettobetrag = rstProduct![BetragFremd]
'770 End If
'780 Case GUTSCHRIFT
'790 Buchungssatz.FiBuSollkontonummer = Nz(rstProduct![Sachkonto], " ")
'800 Buchungssatz.FiBuHabenkontonummer = "0"
'810 If IsNull(rstInvoice![WährungFremd]) Then
'820 curNettobetrag = 0 - rstProduct![BetragLokal]
'830 Else
'840 curNettobetrag = 0 - rstProduct![BetragFremd]
'850 End If
'860 End Select
'870 Buchungssatz.FiBuBuchungstext = Nz(rstProduct![Buchungstext], "")
'880 If rstProduct![steuerpflichtig] Then
'890 curSteuerbetrag = CLng(curNettobetrag * rstInvoice![Steuersatz %] * 100) / 100
'900 curBruttobetrag = curNettobetrag + curSteuerbetrag
'910 curDifferenzbetrag = curDifferenzbetrag - curBruttobetrag
'920 Buchungssatz.FiBuBruttobetrag = Format(curBruttobetrag, "########0.00")
'930 Buchungssatz.FiBuSteuersatz = Format(rstInvoice![Steuersatz %] * 100, "00.00")
' ' Die folgende Zeile führt zu Buchungsfehler bei Fremdwährung,
' ' Buchungssatz.FiBuSteuerbetrag = Format(curSteuerbetrag, "########0.00")
' ' deshalb nur Steuerprozent und keinen Steuerbetrag übergeben.
'940 Buchungssatz.FiBuSteuerbetrag = " "
'950 Else
'960 curBruttobetrag = curNettobetrag
'970 curDifferenzbetrag = curDifferenzbetrag - curBruttobetrag
'980 Buchungssatz.FiBuBruttobetrag = Format(curBruttobetrag, "########0.00")
'990 Buchungssatz.FiBuSteuersatz = "00,00"
'1000 Buchungssatz.FiBuSteuerbetrag = " "
'1010 End If
'1020 If IsNull(rstInvoice![WährungFremd]) Then
'1030 Buchungssatz.FiBuEigenbruttobetrag = Format(curBruttobetrag, "########0.00")
'1040 Else
'1050 Buchungssatz.FiBuEigenbruttobetrag = Format(fktEuro(curBruttobetrag, rstInvoice![WährungFremd], "EUR"), "########0.00")
'1060 End If
'1070 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungsart); Chr(9);
'1080 Print #DateiNr, Trim(Buchungssatz.FiBuBelegdatum); Chr(9);
'1090 Print #DateiNr, Trim(Buchungssatz.FiBuBelegnummer); Chr(9);
'1100 Print #DateiNr, Trim(Buchungssatz.FiBuSollkontonummer); Chr(9);
'1110 Print #DateiNr, Trim(Buchungssatz.FiBuHabenkontonummer); Chr(9);
'1120 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungstext); Chr(9);
'1130 Print #DateiNr, Trim(Buchungssatz.FiBuBruttobetrag); Chr(9);
'1140 Print #DateiNr, Trim(Buchungssatz.FiBuSteuersatz); Chr(9);
'1150 Print #DateiNr, Trim(Buchungssatz.FiBuSteuerbetrag); Chr(9);
'1160 Print #DateiNr, Trim(Buchungssatz.FiBuWährung); Chr(9);
'1170 Print #DateiNr, Trim(Buchungssatz.FiBuEigenbruttobetrag)
'1180 rstProduct.MoveNext
'1190 Loop
'1200 rstProduct.Close
' ' Buchungssatz Steuerdifferenz
'1210 If curDifferenzbetrag <> 0 Then
'1220 Select Case rstInvoice![BelegartenNr]
' Case RECHNUNG
'1230 Buchungssatz.FiBuSollkontonummer = "0"
'1240 Buchungssatz.FiBuHabenkontonummer = "8490"
'1250 Case GUTSCHRIFT
'1260 Buchungssatz.FiBuSollkontonummer = "8490"
'1270 Buchungssatz.FiBuHabenkontonummer = "0"
'1280 End Select
'1290 Buchungssatz.FiBuBuchungstext = Format(rstInvoice![FilialenNr], "0000") & "/" & Format(Right(rstInvoice![AbfertigungsNr], 8), "00000000") & "/" & Format(rstInvoice![UnterNr], "00") & "/Steuerdiff."
'1300 Buchungssatz.FiBuBruttobetrag = Format(curDifferenzbetrag, "########0.00")
'1310 Buchungssatz.FiBuSteuersatz = "00,00"
'1320 Buchungssatz.FiBuSteuerbetrag = " "
'1330 If IsNull(rstInvoice![WährungFremd]) Then
'1340 Buchungssatz.FiBuEigenbruttobetrag = Format(curDifferenzbetrag, "########0.00")
'1350 Else
'1360 Buchungssatz.FiBuEigenbruttobetrag = Format(fktEuro(curDifferenzbetrag, rstInvoice![WährungFremd], "EUR"), "########0.00")
'1370 End If
'1380 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungsart); Chr(9);
'1390 Print #DateiNr, Trim(Buchungssatz.FiBuBelegdatum); Chr(9);
'1400 Print #DateiNr, Trim(Buchungssatz.FiBuBelegnummer); Chr(9);
'1410 Print #DateiNr, Trim(Buchungssatz.FiBuSollkontonummer); Chr(9);
'1420 Print #DateiNr, Trim(Buchungssatz.FiBuHabenkontonummer); Chr(9);
'1430 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungstext); Chr(9);
'1440 Print #DateiNr, Trim(Buchungssatz.FiBuBruttobetrag); Chr(9);
'1450 Print #DateiNr, Trim(Buchungssatz.FiBuSteuersatz); Chr(9);
'1460 Print #DateiNr, Trim(Buchungssatz.FiBuSteuerbetrag); Chr(9);
'1470 Print #DateiNr, Trim(Buchungssatz.FiBuWährung); Chr(9);
'1480 Print #DateiNr, Trim(Buchungssatz.FiBuEigenbruttobetrag)
'1490 End If
' ' Buchungssatz Gutschrift (immer letzte Buchungszeile)
'1500 If rstInvoice![BelegartenNr] = GUTSCHRIFT Then
'1510 Buchungssatz.FiBuSollkontonummer = "0"
'1520 Buchungssatz.FiBuHabenkontonummer = rstInvoice![KundenNrZentrale]
'1530 Buchungssatz.FiBuBuchungstext = Format(rstInvoice![FilialenNr], "0000") & "/" & Format(Right(rstInvoice![AbfertigungsNr], 8), "00000000") & "/" & Format(rstInvoice![UnterNr], "00")
'1540 If IsNull(rstInvoice![WährungFremd]) Then
'1550 Buchungssatz.FiBuBruttobetrag = Format(0 - rstInvoice![RechnungsbetragLokal], "########0.00")
'1560 Else
'1570 Buchungssatz.FiBuBruttobetrag = Format(0 - rstInvoice![RechnungsbetragFremd], "########0.00")
'1580 End If
'1590 Buchungssatz.FiBuSteuersatz = " "
'1600 Buchungssatz.FiBuSteuerbetrag = " "
'1610 Buchungssatz.FiBuEigenbruttobetrag = Format(0 - rstInvoice![RechnungsbetragLokal], "########0.00")
'1620 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungsart); Chr(9);
'1630 Print #DateiNr, Trim(Buchungssatz.FiBuBelegdatum); Chr(9);
'1640 Print #DateiNr, Trim(Buchungssatz.FiBuBelegnummer); Chr(9);
'1650 Print #DateiNr, Trim(Buchungssatz.FiBuSollkontonummer); Chr(9);
'1660 Print #DateiNr, Trim(Buchungssatz.FiBuHabenkontonummer); Chr(9);
'1670 Print #DateiNr, Trim(Buchungssatz.FiBuBuchungstext); Chr(9);
'1680 Print #DateiNr, Trim(Buchungssatz.FiBuBruttobetrag); Chr(9);
'1690 Print #DateiNr, Trim(Buchungssatz.FiBuSteuersatz); Chr(9);
'1700 Print #DateiNr, Trim(Buchungssatz.FiBuSteuerbetrag); Chr(9);
'1710 Print #DateiNr, Trim(Buchungssatz.FiBuWährung); Chr(9);
'1720 Print #DateiNr, Trim(Buchungssatz.FiBuEigenbruttobetrag)
'1730 End If
' ' Datenbereitstellung an FiBu - TrdinDateiname im Buchungskopfsatz eintragen.
'1740 Call SPAktionsabfrageOhneErgebnis("dbo.spTrdinFiBuUpdateInvoice", AktuelleVerbindungszeichenfolge(0), rstInvoice![RechnungsDatum], rstInvoice![Rechnungsnummer], Mid(DateiName, Len(DateiName) - 15, 12))
'1750 rstInvoice.MoveNext
'1760 Loop Until rstInvoice.EOF
'1770 RC = SysCmd(acSysCmdRemoveMeter)
'1780 End If
'1790 rstInvoice.Close
' ' Transaktion beenden
'1800 If fInTransaktion Then
'1810 wrk.CommitTrans
'1820 fInTransaktion = False
'1830 End If
'1840 fktFiBuBuchungen = True
'PROC_Exit:
'1850 On Error Resume Next
' ' Schnittstellendatei schließen.
'1860 If fDateiOpen Then Close DateiNr
'1870 If Not rstProduct Is Nothing Then
'1880 rstProduct.Close
'1890 Set rstProduct = Nothing
'1900 End If
'1910 If Not rstInvoice Is Nothing Then
'1920 rstInvoice.Close
'1930 Set rstInvoice = Nothing
'1940 End If
'1950 If Not db Is Nothing Then Set db = Nothing
'1960 If Not wrk Is Nothing Then Set wrk = Nothing
'1970 DoCmd.Hourglass False
'1980 Exit Function
'PROC_Error:
' ' Änderungen am Datenbestand zurücknehmen.
'1990 If fInTransaktion Then
'2000 wrk.Rollback
'2010 fInTransaktion = False
'2020 End If
' ' Fehlerinformation anzeigen.
'2030 ErrNotify Err, "basFiBuSyska", "fktFiBuBuchungen", eNormalError
'2040 Call Logbucheintrag(0, 0, "basFiBuSyska.fktFiBuBuchungen", 0, "Wegen Fehler beendet")
'2050 Resume PROC_Exit
' End Function
Public Shared Function OP_Einlesen_ALL(Optional KdNr As Integer = -1) As Boolean
Dim dt As DataTable = SQL.loadDgvBySql("SELECT Firma_ID FROM tblFirma ORDER BY tblFirma.Firma_ID", "FMZOLL")
Dim _bool = True
If dt IsNot Nothing Then
For Each r_firma In dt.Rows
If Not OP_Einlesen(r_firma("Firma_ID"), KdNr) Then _bool = False
Next
End If
Return _bool
End Function
Public Shared Function OP_Einlesen(Firma_ID As Integer, Optional KdNr As Integer = -1) As Boolean
Try
Dim OP_ID_CNT = 0
If OP_ID_CNT < 1000000 Then OP_ID_CNT = 1000000 * Firma_ID
Dim dt_OP As DataTable = SQL.loadDgvBySql("SELECT * FROM op_debitor WHERE (i_firm_refid = '" & Firma_ID & "') AND (dt_geloescht IS NULL) " & If(KdNr > 0, " AND i_personenkonto='" & KdNr & "'", "") & " ORDER BY i_personenkonto, d_rechnung, c_urbelegid", "FIBU")
If dt_OP IsNot Nothing Then
Dim KumSaldoEUR As Double = 0
Dim tmpFirma_Id As Integer = -1
Dim tmpKonotnr As Integer = -1
' If OP_DELETE(Firma_ID, KdNr) Then
If OP_DELETE(Firma_ID, KdNr) Then
For Each r_OP In dt_OP.Rows
Try
If KdNr > 1 Then OP_ID_CNT = SQL.getValueTxtBySql("SELECT isnull(MAX(OP_ID),0)+1 FROM [Offene Posten]", "FMZOLL") 'Wenn ein Kunde geändert wird, wird die höchste ID ermittelt
Dim OP As New VERAG_PROG_ALLGEMEIN.cOffene_Posten()
OP.OP_ID = OP_ID_CNT
OP.Kontonummer = r_OP("i_personenkonto")
OP.Belegnummer = r_OP("c_urbelegid")
OP.Belegdatum = r_OP("d_rechnung")
OP.Fälligkeitsdatum = r_OP("d_netto")
OP.Bruttobetrag = r_OP("eur_bruttobetrag")
OP.Waehrung = "EUR"
OP.Gesamtausstand = r_OP("eur_bruttobetrag") + r_OP("eur_zahlung")
OP.Buchungstext = r_OP("c_bemerkung")
OP.Mahnstufe = r_OP("si_mahnstufe")
OP.Mahndatum = r_OP("d_mahnung")
OP.Firma_ID = r_OP("i_firm_refid")
'Erstmals setzen:
If tmpFirma_Id < 0 Then tmpFirma_Id = OP.Firma_ID
If tmpKonotnr < 0 Then tmpKonotnr = OP.Kontonummer
If tmpKonotnr <> OP.Kontonummer Or tmpFirma_Id <> OP.Firma_ID Then
KumSaldoEUR = 0 'Zurücksetzen, wenn anderer Kunde, oder andere Firma
End If
KumSaldoEUR += OP.Gesamtausstand 'um Betrag erhöhen
OP.KumSaldoEUR = KumSaldoEUR 'Kumsalde in DB
' MsgBox(OP.Belegnummer)
OP.INSERT()
OP_ID_CNT += 1
tmpFirma_Id = OP.Firma_ID
tmpKonotnr = OP.Kontonummer
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
Next
Else
MsgBox("FEHLER beim Löschen der vorhandenen OP-Liste.")
Return False
End If
End If
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
Return False
End Try
End Function
' strSQL = "SELECT [Offene Posten].Kontonummer, [Offene Posten].Firma_ID, [Offene Posten].Belegdatum, [Offene Posten].Belegnummer, [Offene Posten].Gesamtausstand, [Offene Posten].KumSaldoEUR" & _
' " FROM [Offene Posten]" & _
' " ORDER BY [Offene Posten].Kontonummer, [Offene Posten].Firma_ID, [Offene Posten].Belegdatum, [Offene Posten].Belegnummer;"
'5180 Set rst = dbs.OpenRecordset(strSQL, dbOpenDynaset)
'5190 With rst
'5200 If Not .EOF Then
'5210 lngKontonummer = !Kontonummer
'5220 intFirma_ID = !Firma_ID
'5230 curKumSaldoFirma = 0
'5240 curKumSaldo = 0
'5250 Do Until .EOF
'5260 .Edit
' ' Saldo je Kontonummer und Firma kumulieren.
'5270 If lngKontonummer <> !Kontonummer Then
'5280 strKumSaldo = CStr(curKumSaldo)
'5290 I = InStr(strKumSaldo, ",")
'5300 If I > 0 Then Mid(strKumSaldo, I, 1) = "."
'5310 strSQL = "UPDATE Kunden SET Kunden.LfdSaldo = " & strKumSaldo & " WHERE (((Kunden.KundenNrZentrale)=" & lngKontonummer & "));"
'5320 dbs.Execute strSQL, dbFailOnError
'5330 lngKontonummer = !Kontonummer
'5340 intFirma_ID = !Firma_ID
'5350 curKumSaldoFirma = !Gesamtausstand
'5360 curKumSaldo = !Gesamtausstand
'5370 Else
'5380 curKumSaldo = curKumSaldo + !Gesamtausstand
'5390 If intFirma_ID <> !Firma_ID Then
'5400 intFirma_ID = !Firma_ID
'5410 curKumSaldoFirma = !Gesamtausstand
'5420 Else
'5430 curKumSaldoFirma = curKumSaldoFirma + !Gesamtausstand
'5440 End If
'5450 End If
'5460 !KumSaldoEUR = curKumSaldoFirma
'5470 .Update
'5480 .MoveNext
'5490 Loop
'5500 strKumSaldo = CStr(curKumSaldo)
'5510 I = InStr(strKumSaldo, ",")
'5520 If I > 0 Then Mid(strKumSaldo, I, 1) = "."
'5530 strSQL = "UPDATE Kunden SET Kunden.LfdSaldo = " & strKumSaldo & " WHERE (((Kunden.KundenNrZentrale)=" & lngKontonummer & "));"
'5540 dbs.Execute strSQL, dbFailOnError
'5550 End If
'5560 .Close
'5570 End With
Public Shared Function OP_DELETE(Firma_ID As Integer, Optional KdNr As Integer = -1) As Boolean
Dim SQL As New SQL
Return SQL.doSQL("DELETE FROM [Offene Posten] where Firma_ID='" & Firma_ID & "'" & If(KdNr > 0, " AND Kontonummer='" & KdNr & "'", ""), "FMZOLL")
End Function
Public Shared Function UPDATE_FIBU_RISIKO(Optional KdNr = -1) As Boolean
Try
Dim dt = SQL.loadDgvBySql(getFIBU_RISIKOSQL, "FMZOLL")
If dt IsNot Nothing Then
For Each r In dt.Rows
If KdNr = -1 OrElse r("KundenNrZentrale") = KdNr Then 'TEST!!
Dim strRisiko = Format(CDbl(r("Risiko")), fmt).Replace(",", ".")
SQL.doSQL("UPDATE [FIBU2].[dbo].[fibu_konto]
SET [dec_wert3] = '" & strRisiko & "'
WHERE ([i_firm_refid]=1 Or [i_firm_refid]=19)
AND [c_kontoart]='DE'
And [i_konto]=" & r("KundenNrZentrale") & " ", "FIBU")
End If
Next
End If
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
Return False
End Try
End Function
Shared Function getFIBU_RISIKOSQL() As String
Return "SELECT KundenNrZentrale, Risiko, LfdSaldo, Sum([UStV-Saldo]) AS [SummevonUStV-Saldo], Sum(UStV_Summe3470BetragEUR) AS SummevonUStV_Summe3470BetragEUR, Sum(UStV_SummeVZBetragEUR) AS SummevonUStV_SummeVZBetragEUR, Sum(UStV_SummeVorschaubetragEUR) AS SummevonUStV_SummeVorschaubetragEUR, BankgarantieBetrag, BankgarantieGültigBis
FROM (
SELECT Adressen.Ordnungsbegriff AS [Index], Adressen.LandKz, Adressen.AdressenNr, Kunden.KundenNrZentrale, Kunden.Abfertigungsverbot,
Kunden.LfdSaldo,
[LfdSaldo]-((case when [UStV_SummeUmsatzsteuerbetragEUR]>[UStV_SummeErstattungsbetragEUR] THEN [UStV_SummeUmsatzsteuerbetragEUR]-[UStV_SummeErstattungsbetragEUR] ELSE 0 END)+[UStV_Summe3470BetragEUR]-[UStV_SummeVZBetragEUR]+[UStV_SummeVorschaubetragEUR])
-(CASE WHEN isnull([BankgarantieGültigBis],GETDATE())<GETDATE() THEN 0 ELSE isnull([BankgarantieBetrag],0) END) AS Risiko,
Kunden.UStV_SummeUmsatzsteuerbetragEUR, Kunden.UStV_SummeErstattungsbetragEUR,
case when [UStV_SummeUmsatzsteuerbetragEUR]>[UStV_SummeErstattungsbetragEUR] THEN [UStV_SummeUmsatzsteuerbetragEUR]-[UStV_SummeErstattungsbetragEUR] ELSE 0 END AS [UStV-Saldo],
Kunden.UStV_Summe3470BetragEUR, Kunden.UStV_SummeVZBetragEUR, Kunden.UStV_SummeVorschaubetragEUR, Kunden.BankgarantieBetrag, Kunden.BankgarantieGültigBis
FROM (Adressen INNER JOIN Kunden ON Adressen.AdressenNr = Kunden.KundenNr) INNER JOIN tblSteuernummern ON Adressen.AdressenNr = tblSteuernummern.AdressenNr
GROUP BY Adressen.Ordnungsbegriff, Adressen.LandKz, Adressen.AdressenNr, Kunden.KundenNrZentrale, Kunden.Abfertigungsverbot, Kunden.LfdSaldo, Kunden.UStV_SummeUmsatzsteuerbetragEUR,
Kunden.UStV_SummeErstattungsbetragEUR, Kunden.UStV_Summe3470BetragEUR, Kunden.UStV_SummeVZBetragEUR, Kunden.UStV_SummeVorschaubetragEUR, Kunden.BankgarantieBetrag, Kunden.BankgarantieGültigBis
) as T1
GROUP BY KundenNrZentrale, Risiko,LfdSaldo, BankgarantieBetrag, BankgarantieGültigBis"
End Function
End Class