From 068fd4e66989a7b0adf5da1fccff31cd8601959b Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 8 Feb 2023 15:35:08 +0100 Subject: [PATCH] Datev Schnittstelle --- .../Schnittstellen/cDatev_Interface.vb | 108 +++++++++++++----- 1 file changed, 80 insertions(+), 28 deletions(-) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cDatev_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cDatev_Interface.vb index bef2db55..2d870422 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cDatev_Interface.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cDatev_Interface.vb @@ -16,19 +16,19 @@ 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 Auswahl='A' AND FilialenNr='" & filialNr & "'" 'AND FiBuSchnittstelle=1 + sqlStr &= "WHERE Auswahl='A' AND FilialenNr='" & filialNr & "' And FiBuSchnittstelle = 1" sqlStr &= " Order by [Kontonummer] " Return SQL.loadDgvBySql(sqlStr, "FMZOLL") End Function - Shared Function updateFibu() As DataTable + Shared Function updateFibu(filialNr As Integer) 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 FilialenNr='5701' " + sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FilialenNr='" & filialNr & "' " Return SQL.loadDgvBySql(sqlStr, "FMZOLL") - End Function + End Function Public Shared Function genStammdatenBeginn() As String @@ -145,7 +145,7 @@ IO.File.Delete(pathKD & DateinameKD) End If - 'updateFibu() ' UPDATE FiBuSchnittstelle --> 0 + updateFibu(filialNr) ' UPDATE FiBuSchnittstelle --> 0 End If End If @@ -204,8 +204,8 @@ '----------------- Buchungssätze ----------------- If True Then 'boolBuchungen Then - TrdInvoice_FUNCTIONS.TrdinSchreiben(FIRMA.Firma_ID, Buchungsjahr) '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) + 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 @@ -223,7 +223,7 @@ bool_DatenVorhanden = True 'Update Filename TrdIn - 'SQL.doSQL("update [tblTrdinInvoice] Set TrdinDateiname='" & Now.ToString("ddMMyyyyHHmm") & "' WHERE [Firma_ID] = " & FIRMA.Firma_ID & " AND TrdinDateiname is null ", "FMZOLL") + SQL.doSQL("update [tblTrdinInvoice] Set TrdinDateiname='" & Now.ToString("ddMMyyyyHHmm") & "' WHERE [Firma_ID] = " & FIRMA.Firma_ID & " AND TrdinDateiname is null ", "FMZOLL") file.Close() @@ -279,7 +279,7 @@ ,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 - FROM VERAG.dbo.tblTrdinInvoice as IVO left JOIN tblTrdinProduct as PROD on IVO.Rechnungsnummer=PROD.Rechnungsnummer + FROM VERAG.dbo.tblTrdinInvoice as IVO left JOIN tblTrdinProduct as PROD on IVO.Rechnungsnummer=PROD.Rechnungsnummer And IVO.Rechnungsdatum = PROD.Rechnungsdatum WHERE Firma_ID ='" & Firma_ID & "' AND TrdinDateiname Is Null group by IVO.Rechnungsnummer,IVO.rechnungsdatum,Leistungsnummer,Leistungsbezeichnung,Steuerpflichtig ORDER BY Rechnungsdatum, Rechnungsnummer " @@ -343,31 +343,78 @@ Public Shared Function genBuchungsZeile(row As DataRow, ByRef SummeBuchungen As Double, ByRef Geschäftsjahr As Integer, ByRef FIRMA As VERAG_PROG_ALLGEMEIN.cFirmen) As String genBuchungsZeile = "" Dim steuerbetragLokal As Double = 0 + Dim steuerbetragFremd As Double = 0 Dim GJ_short = Geschäftsjahr.ToString.Substring(2, 2) Dim RgNrOld = FormatStringDVO(row("Rechnungsnummer")).Substring(2) + Dim fremdW = FormatStringDVO(row("WährungFremd")) + Dim RgBetrWährungLokal As Double = 0 + Dim RgBetrWährungFremd As Double = 0 + Dim BelegBez As String + Dim BelegKz As String + Dim SollHabenKz As Char + + Select Case row("BelegartenNr") + + Case 70 + BelegBez = "Rechnung" + BelegKz = "AR" + SollHabenKz = Chr(72) + + Case 71 + BelegBez = "Gutschrift" + BelegKz = "AG" + SollHabenKz = Chr(83) + + Case Else + BelegBez = "" + BelegKz = "" + + End Select + + 'Umsatz If CBool(row("Steuerpflichtig")) Then - steuerbetragLokal = CDbl((getDbl2(row("SteuerpflichtigerBetragLokal")) * getDbl2(row("Steuersatz")))) - steuerbetragLokal += CDbl((getDbl2(row("SteuerpflichtigerBetragFremd")) * getDbl2(row("Steuersatz")))) + steuerbetragLokal += CDbl((getDbl2(row("SteuerpflichtigerBetragLokal")) * getDbl2(row("Steuersatz")))) + steuerbetragFremd += CDbl((getDbl2(row("SteuerpflichtigerBetragFremd")) * getDbl2(row("Steuersatz")))) End If + ' If steuerbetragLokal < 0 Then steuerbetragLokal = steuerbetragLokal * -1 --> SONST PROBLKEM BEI UNISPED; DA STEUER vom NETTO abgezogen wird! - genBuchungsZeile &= getDbltr(getDbl(row("SteuerpflichtigerBetragLokal")) + getDbl(row("SteuerfreierBetragLokal")) + getDbl(row("SteuerpflichtigerBetragFremd")) + getDbl(row("SteuerfreierBetragFremd")) + If(steuerbetragLokal <> 0, getDbltr(steuerbetragLokal), "0")) & ";" 'betrag + steuer (brutto) + 'genBuchungsZeile &= getDbltr(getDbl(row("SteuerpflichtigerBetragLokal")) + getDbl(row("SteuerfreierBetragLokal")) + getDbl(row("SteuerpflichtigerBetragFremd")) + getDbl(row("SteuerfreierBetragFremd")) + If(steuerbetragLokal <> 0, getDbltr(steuerbetragLokal), "0")) + +If(steuerbetragFremd <> 0, getDbltr(steuerbetragFremd), "0")) & ";" 'betrag + steuer (brutto) + If fremdW <> "" Then + RgBetrWährungFremd = getDbltr(getDbl(row("SteuerpflichtigerBetragFremd")) + getDbl(row("SteuerfreierBetragFremd")) + If(steuerbetragFremd <> 0, getDbltr(steuerbetragFremd), "0")) + genBuchungsZeile &= IIf(RgBetrWährungFremd < 0, RgBetrWährungFremd * -1, RgBetrWährungFremd) & ";" + Else + RgBetrWährungLokal = getDbltr(getDbl(row("SteuerpflichtigerBetragLokal")) + getDbl(row("SteuerfreierBetragLokal")) + If(steuerbetragLokal <> 0, getDbltr(steuerbetragLokal), "0")) + genBuchungsZeile &= IIf(RgBetrWährungLokal < 0, RgBetrWährungLokal * -1, RgBetrWährungLokal) & ";" + End If + + 'Soll oder Haben - genBuchungsZeile &= IIf(row("BelegartenNr") = "70", FormatStringDVO(Chr(72)), FormatStringDVO(Chr(83))) & ";" - 'Fremdwährungen -> nicht benötigt - genBuchungsZeile &= emptyFormatedValue() - genBuchungsZeile &= emptyFormatedValueWithoutCommas(2) - genBuchungsZeile &= emptyFormatedValue() + genBuchungsZeile &= FormatStringDVO(SollHabenKz) & ";" + + 'Fremdwährungen + If fremdW <> "" Then + genBuchungsZeile &= fremdW & ";" + genBuchungsZeile &= RgBetrWährungLokal / RgBetrWährungFremd + RgBetrWährungLokal Mod RgBetrWährungFremd + genBuchungsZeile &= emptyFormatedValue() + genBuchungsZeile &= FormatStringDVO(row("WährungLokal")) & ";" + + Else + genBuchungsZeile &= emptyFormatedValue() + genBuchungsZeile &= emptyFormatedValueWithoutCommas(2) + genBuchungsZeile &= emptyFormatedValue() + End If + + 'Erlöskonto genBuchungsZeile &= fill0Stellen(row("Sachkonto"), 4) & ";" + 'Debitorenkonto genBuchungsZeile &= (initKDNr2(row("KundenNrZentrale"), FIRMA.Firma_ID)) & ";" 'BU-Schlüssel -> nicht benötigt - genBuchungsZeile &= emptyFormatedValue() - 'genBuchungsZeile &= getSteuercode(row, FIRMA) & ";" 'If CBool(row("Steuerpflichtig")) Then ' genBuchungsZeile &= (getDbl2(row("Steuersatz")) * 100) & ";" 'buchcode === 1 oder 2?? @@ -378,29 +425,34 @@ 'Belegdatum genBuchungsZeile &= "" & CDate(row("Rechnungsdatum")).ToString("ddMM") & ";" + 'Belegfeld1 -> Rechnungsnummer - genBuchungsZeile &= FormatStringDVO(row("Rechnungsnummer")).Substring(0, 2) & "-" & FormatStringDVO(row("Rechnungsnummer")).Substring(2) & ";" - 'Belegfeld 2 -> nicht benötigt + genBuchungsZeile &= FormatStringDVO(row("Rechnungsnummer")) & ";" + + 'Belegfeld 2 -> nicht benötigt (abweichendes Fälligkeitsdatum!) genBuchungsZeile &= emptyFormatedValue() - ' Skontoangabe -> Kontrollieren + + ' Skontoangabe -> nicht in Verwendung genBuchungsZeile &= emptyFormatedValue() + 'Buchungstext 'genBuchungsZeile &= FormatStringDVO(row("Buchungstext"),, Chr(34) & Chr(34)) & ";" genBuchungsZeile &= FormatStringDVO(SQL.DLookup("[Ordnungsbegriff]", "Adressen", " AdressenNr= " & row("KundenNrZentrale"), "FMZOLL", "")) & ";" 'Leerzeilen genBuchungsZeile &= emptyFormatedValue(25) + 'UID-Nr - genBuchungsZeile &= FormatStringDVO(row("RechnungsUstIdKz")).Substring(0, 3) & FormatStringDVO(row("RechnungsUstIdNr")).Substring(1) & ";" + 'genBuchungsZeile &= IIf(FormatStringDVO(row("RechnungsUstIdKz")) <> "", FormatStringDVO(row("RechnungsUstIdKz").Substring(0, 3)), "") + 'genBuchungsZeile &= IIf(FormatStringDVO(row("RechnungsUstIdNr")) <> "", FormatStringDVO(row("RechnungsUstIdNr").Substring(1)), "") & ";" + genBuchungsZeile &= emptyFormatedValue(1) 'Leerzeilen genBuchungsZeile &= emptyFormatedValue(7) 'Zusatzinformation Art1 - genBuchungsZeile &= FormatStringDVO("D-Rechnung.") & ";" + genBuchungsZeile &= FormatStringDVO(BelegBez) & ";" 'Zusatzinformation Inhalt1 - genBuchungsZeile &= FormatStringDVO("Datum " & CDate(row("Rechnungsdatum")).ToString("ddMMyyyy")) - genBuchungsZeile &= FormatStringDVO("Art RE" & " Re.Nr.") - genBuchungsZeile &= FormatStringDVO(row("Rechnungsnummer")).Substring(0, 2) & "-" & FormatStringDVO(row("Rechnungsnummer")).Substring(2) & ";" + genBuchungsZeile &= FormatStringDVO("Datum " & CDate(row("Rechnungsdatum")).ToString("ddMMyyyy") & " Art " & BelegKz & row("Rechnungsnummer")) & ";" 'Zusatzinformation Art2 - genBuchungsZeile &= FormatStringDVO("D-RechPositionen.") & ";" + genBuchungsZeile &= FormatStringDVO(BelegBez & "positionen") & ";" 'Zusatzinformation Inhalt2 genBuchungsZeile &= FormatStringDVO(row("Leistungsbezeichnung"), 20) & ";" 'Leerzeilen