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

View File

@@ -1,4 +1,633 @@
Public Class cSyska_Interface
Imports System.Text.RegularExpressions
Public Class cSyska_Interface
Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL
'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,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 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"))
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 &= vbTab
getPersonenKto &= vbTab 'Bankname
getPersonenKto &= If(Lastschrift, row("BLZ"), "") & vbTab
getPersonenKto &= If(Lastschrift, row("KTO"), "") & vbTab
getPersonenKto &= "00" & vbTab 'Skontotage
getPersonenKto &= 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("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
MsgBox(ex.Message & ex.StackTrace)
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) 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) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(7, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(11, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(17, OpenFile) Then genDatensatz_ALL = False
If Not genDatensatz_Buchungen(19, OpenFile) 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) 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
' 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)
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"))
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
MsgBox(ex.Message & ex.StackTrace)
End Try
End If
End If
'----------------------------------
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
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(";", ",")
'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) 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 Is Null
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
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") & "/" & row("UnterNr").ToString("00") & vbTab
genBuchungsZeileSum &= CDbl(Bruttobetrag).ToString("N2") & vbTab
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuersatz
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuerbetrag
genBuchungsZeileSum &= FiBuWährung & vbTab
genBuchungsZeileSum &= CDbl(FiBuEigenbruttobetrag).ToString("N2") & 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") & "/" & row("UnterNr").ToString("00") & vbTab
genBuchungsZeileSum &= CDbl(FiBuBruttobetrag).ToString("N2") & vbTab
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuersatz
genBuchungsZeileSum &= "" & vbTab 'FiBuSteuerbetrag
genBuchungsZeileSum &= FiBuWährung & vbTab
genBuchungsZeileSum &= CDbl(FiBuEigenbruttobetrag).ToString("N2") & 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") & "/" & row("UnterNr").ToString("00") & vbTab
genBuchungsZeile &= FiBuBruttobetrag & vbTab
genBuchungsZeile &= FiBuSteuersatz.ToString("N2") & vbTab 'FiBuSteuersatz
genBuchungsZeile &= FormatStringDbl(FiBuSteuerbetrag) & vbTab 'FiBuSteuerbetrag
genBuchungsZeile &= FiBuWährung & vbTab
genBuchungsZeile &= FiBuEigenbruttobetrag.ToString("N2") & 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") & "/" & 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 &= curDifferenzbetrag.ToString("N2") & vbTab
genBuchungsZeileDiffBetrag &= "00,00" & vbTab 'FiBuSteuersatz
genBuchungsZeileDiffBetrag &= "" & vbTab 'FiBuSteuerbetrag
genBuchungsZeileDiffBetrag &= FiBuWährung & vbTab
genBuchungsZeileDiffBetrag &= FiBuEigenbruttobetrag.ToString("N2") & 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 getDbl(o As Object) As Double
Try
If o Is Nothing Then Return 0
If o Is DBNull.Value Then Return 0
Return CDbl(o)
Catch ex As Exception
Return 0
End Try
End Function
Shared Function getDbl2(o As Object) As Double
Try
If o Is Nothing Then Return 0
If o Is DBNull.Value Then Return 0
Return CDbl(o.ToString.Replace(".", ","))
Catch ex As Exception
Return 0
End Try
End Function
Shared Function getDbltr(o As Object) As String
Try
If o Is Nothing Then Return 0
If o Is DBNull.Value Then Return 0
Return CDbl(o).ToString("N2").Replace(".", "") '
Catch ex As Exception
Return 0
End Try
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