1471 lines
84 KiB
VB.net
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
|