Files
SDL/VERAG_PROG_ALLGEMEIN/Schnittstellen/cDatev_Interface.vb

593 lines
36 KiB
VB.net

Public Class cDatev_Interface
Shared datevVersion As Integer = 700
Shared Datenkategorie As Integer = 16
Shared StapelbuchungsNr As Integer = 21
Shared BeraterNr As Integer = 3050
Shared MandantenNr As Integer = 12533
Shared Kontenlänge As Integer = 6
Shared Formatversion As Integer = 4
Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL
'STAMMDATEN
Shared Function getStammdaten(filialNr As Integer) As DataTable
Dim sqlStr = "Select TOP (1000) KundenNrZentrale As [Kontonummer], isnull([Ordnungsbegriff],'') as Ordnungsbegriff, isnull([Name 1],'') as Name, isnull([Name 2],'') as Name2, LTRIM([Ort]) as Ort,KundenNr As [Kundennummer],isnull(UstIdKz,'') As [EU-Land] ,isnull(UstIdNr,'') As [EU-UstID], isnull(Anrede,'') as Anrede,isnull(KTO,'') as Bankkonto, isnull(BLZ,'') as [BLZ], '' as [Bankname], '' as [Länderkennzeichen Bank], '' as [IBAN], '' as [BIC], '' as [Anrede], '' as [Adresszusatz], ISNULL([Strasse],'') as Strasse, ISNULL(PLZ,'') as PLZ, isnull(UstIdNr,'') as [Steuernummer], isnull(Ansprechpartner,'') as [Ansprechpartner], isnull(Telefon,'') as [Telefonnummer], isnull([E-Mail],'') as [E-Mail], isnull([Telefax],'') as [Faxnummer], '' as [Internetadresse], isnull(Adressen.landkz,'') as [Länderkennzeichen]"
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 Auswahl='A' AND FilialenNr='" & filialNr & "'" 'AND FiBuSchnittstelle=1
sqlStr &= " Order by [Kontonummer] "
Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
End Function
Shared Function updateFibu() 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' "
Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
End Function
Public Shared Function genStammdatenBeginn() As String
Return "Konto;Name (Adressattyp Unternehmen);Unternehmensgegenstand;Name (Adressattyp natürl. Person);Vorname (Adressattyp natürl. Person);Name (Adressattyp keine Angabe);Adressattyp;Kurzbezeichnung;EU-Land;EU-UStID;Anrede;Titel/Akad. Grad;Adelstitel;Namensvorsatz;Adressart;Straße;Postfach;Postleitzahl;Ort;Land;Versandzusatz;Adresszusatz;Abweichende Anrede;Abw. Zustellbezeichnung 1;Abw. Zustellbezeichnung 2;Kennz. Korrespondenzadresse;Adresse Gültig von;Adresse Gültig bis;Telefon;Bemerkung (Telefon);Telefon GL;Bemerkung (Telefon GL);E-Mail;Bemerkung (E-Mail);Internet;Bemerkung (Internet);Fax;Bemerkung (Fax);Sonstige;Bemerkung (Sonstige);Bankleitzahl 1;Bankbezeichnung 1;Bank-Kontonummer 1;Länderkennzeichen 1;IBAN-Nr. 1;Leerfeld;SWIFT-Code 1;Abw. Kontoinhaber 1;Kennz. Hauptbankverb. 1;Bankverb 1 Gültig von;Bankverb 1 Gültig bis;Bankleitzahl 2;Bankbezeichnung 2;Bank-Kontonummer 2;Länderkennzeichen 2;IBAN-Nr. 2;Leerfeld;SWIFT-Code 2;Abw. Kontoinhaber 2;Kennz. Hauptbankverb. 2;Bankverb 2 Gültig von;Bankverb 2 Gültig bis;Bankleitzahl 3;Bankbezeichnung 3;Bank-Kontonummer 3;Länderkennzeichen 3;IBAN-Nr. 3;Leerfeld;SWIFT-Code 3;Abw. Kontoinhaber 3;Kennz. Hauptbankverb. 3;Bankverb 3 Gültig von;Bankverb 3 Gültig bis;Bankleitzahl 4;Bankbezeichnung 4;Bank-Kontonummer 4;Länderkennzeichen 4;IBAN-Nr. 4;Leerfeld;SWIFT-Code 4;Abw. Kontoinhaber 4;Kennz. Hauptbankverb. 4;Bankverb 4 Gültig von;Bankverb 4 Gültig bis;Bankleitzahl 5;Bankbezeichnung 5;Bank-Kontonummer 5;Länderkennzeichen 5;IBAN-Nr. 5;Leerfeld;SWIFT-Code 5;Abw. Kontoinhaber 5;Kennz. Hauptbankverb. 5;Bankverb 5 Gültig von;Bankverb 5 Gültig bis;Leerfeld;Briefanrede;Grußformel;Kunden-/Lief.-Nr.;Steuernummer;Sprache;Ansprechpartner;Vertreter;Sachbearbeiter;Diverse-Konto;Ausgabeziel;Währungssteuerung;Kreditlimit (Debitor);Zahlungsbedingung;Fälligkeit in Tagen (Debitor);Skonto in Prozent (Debitor);Kreditoren-Ziel 1 Tg.;Kreditoren-Skonto 1 %;Kreditoren-Ziel 2 Tg.;Kreditoren-Skonto 2 %;Kreditoren-Ziel 3 Brutto Tg.;Kreditoren-Ziel 4 Tg.;Kreditoren-Skonto 4 %;Kreditoren-Ziel 5 Tg.;Kreditoren-Skonto 5 %;Mahnung;Kontoauszug;Mahntext 1;Mahntext 2;Mahntext 3;Kontoauszugstext;Mahnlimit Betrag;Mahnlimit %;Zinsberechnung;Mahnzinssatz 1;Mahnzinssatz 2;Mahnzinssatz 3;Lastschrift;Leerfeld;Mandantenbank;Zahlungsträger;Indiv. Feld 1;Indiv. Feld 2;Indiv. Feld 3;Indiv. Feld 4;Indiv. Feld 5;Indiv. Feld 6;Indiv. Feld 7;Indiv. Feld 8;Indiv. Feld 9;Indiv. Feld 10;Indiv. Feld 11;Indiv. Feld 12;Indiv. Feld 13;Indiv. Feld 14;Indiv. Feld 15;Abweichende Anrede (Rechnungsadresse);Adressart (Rechnungsadresse);Straße (Rechnungsadresse);Postfach (Rechnungsadresse);Postleitzahl (Rechnungsadresse);Ort (Rechnungsadresse);Land (Rechnungsadresse);Versandzusatz (Rechnungsadresse);Adresszusatz (Rechnungsadresse);Abw. Zustellbezeichnung 1 (Rechnungsadresse);Abw. Zustellbezeichnung 2 (Rechnungsadresse);Adresse Gültig von (Rechnungsadresse);Adresse Gültig bis (Rechnungsadresse);Bankleitzahl 6;Bankbezeichnung 6;Bank-Kontonummer 6;Länderkennzeichen 6;IBAN-Nr. 6;Leerfeld;SWIFT-Code 6;Abw. Kontoinhaber 6;Kennz. Hauptbankverb. 6;Bankverb 6 Gültig von;Bankverb 6 Gültig bis;Bankleitzahl 7;Bankbezeichnung 7;Bank-Kontonummer 7;Länderkennzeichen 7;IBAN-Nr. 7;Leerfeld;SWIFT-Code 7;Abw. Kontoinhaber 7;Kennz. Hauptbankverb. 7;Bankverb 7 Gültig von;Bankverb 7 Gültig bis;Bankleitzahl 8;Bankbezeichnung 8;Bank-Kontonummer 8;Länderkennzeichen 8;IBAN-Nr. 8;Leerfeld;SWIFT-Code 8;Abw. Kontoinhaber 8;Kennz. Hauptbankverb. 8;Bankverb 8 Gültig von;Bankverb 8 Gültig bis;Bankleitzahl 9;Bankbezeichnung 9;Bank-Kontonummer 9;Länderkennzeichen 9;IBAN-Nr. 9;Leerfeld;SWIFT-Code 9;Abw. Kontoinhaber 9;Kennz. Hauptbankverb. 9;Bankverb 9 Gültig von;Bankverb 9 Gültig bis;Bankleitzahl 10;Bankbezeichnung 10;Bank-Kontonummer 10;Länderkennzeichen 10;IBAN-Nr. 10;Leerfeld;SWIFT-Code 10;Abw. Kontoinhaber 10;Kennz. Hauptbankverb. 10;Bankverb 10 Gültig von;Bankverb 10 Gültig bis;Nummer Fremdsystem;Insolvent;SEPA-Mandatsreferenz 1;SEPA-Mandatsreferenz 2;SEPA-Mandatsreferenz 3;SEPA-Mandatsreferenz 4;SEPA-Mandatsreferenz 5;SEPA-Mandatsreferenz 6;SEPA-Mandatsreferenz 7;SEPA-Mandatsreferenz 8;SEPA-Mandatsreferenz 9;SEPA-Mandatsreferenz 10;Verknüpftes OPOS-Konto;Mahnsperre bis;Lastschriftsperre bis;Zahlungssperre bis;Gebührenberechnung;Mahngebühr 1;Mahngebühr 2;Mahngebühr 3;Pauschalenberechnung;Verzugspauschale 1;Verzugspauschale 2;Verzugspauschale 3;Alternativer Suchname;Status;Anschrift manuell geändert (Korrespondenzadresse);Anschrift individuell (Korrespondenzadresse);Anschrift manuell geändert (Rechnungsadresse);Anschrift individuell (Rechnungsadresse);Fristberechnung bei Debitor;Mahnfrist 1;Mahnfrist 2;Mahnfrist 3;Letzte Frist"
End Function
Public Shared Function getPersonenKto(row As DataRow) As String
Dim personenRow As String = ""
personenRow &= row("Kontonummer") & ";" 'Mapping für KOntonummern einbauen weil bei AMBAR Kundennummer <> DebitorenNr Datev
personenRow &= FormatStringDVO(row("Name"), 50) & ";"
personenRow &= FormatStringDVO(row("Name2"), 50) & ";"
personenRow &= emptyFormatedValue(4)
'personenRow &= FormatStringDVO(2) & ";" 'Typ Unternehmen
personenRow &= FormatStringDVO(row("Ordnungsbegriff"), 15) & ";"
personenRow &= FormatStringDVO(row("EU-Land")) & ";"
personenRow &= FormatStringDVO(row("EU-UstID")) & ";"
personenRow &= FormatStringDVO(row("Anrede")) & ";"
personenRow &= emptyFormatedValue(4)
personenRow &= FormatStringDVO(row("Strasse"), 36) & ";"
personenRow &= emptyFormatedValue()
personenRow &= FormatStringDVO(row("PLZ")) & ";"
personenRow &= FormatStringDVO(row("Ort"), 30) & ";"
personenRow &= IIf(row("Länderkennzeichen") <> "", Chr(34) & cProgramFunctions.getISO2Land(row("Länderkennzeichen")) & Chr(34) & ";", emptyFormatedValue())
personenRow &= emptyFormatedValue()
personenRow &= FormatStringDVO(row("Adresszusatz")) & ";"
personenRow &= emptyFormatedValue(6)
personenRow &= FormatStringDVO(row("Telefonnummer")) & ";"
personenRow &= emptyFormatedValue(3)
personenRow &= FormatStringDVO(row("E-Mail")) & ";"
personenRow &= emptyFormatedValue()
personenRow &= FormatStringDVO(row("Internetadresse")) & ";"
personenRow &= emptyFormatedValue()
personenRow &= FormatStringDVO(row("Faxnummer")) & ";"
personenRow &= emptyFormatedValue(3)
personenRow &= FormatStringDVO(row("BLZ")) & ";"
personenRow &= emptyFormatedValue()
personenRow &= FormatStringDVO(row("Bankkonto")) & ";"
personenRow &= emptyFormatedValue()
personenRow &= FormatStringDVO(row("IBAN")) & ";"
personenRow &= emptyFormatedValue(197)
Return personenRow
End Function
Public Shared Function genDatensatzCSV_Stammdaten(ByRef Firma_ID As Integer, Optional OpenFile As Boolean = False, Optional Geschaeftsjahr As Integer = -1) 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 filialNr As Integer
Select Case FIRMA.Firma_ID
Case 24 : filialNr = 5701
Case Else : filialNr = -1
End Select
Dim bool_DatenVorhanden As Boolean = False
If Geschaeftsjahr <= 0 Then Geschaeftsjahr = Now.Year 'If(Now.Month = 1, Now.Year - 1, Now.Year) --> Bei IMEX ist das GJ=Wirtschaftsjahr
'DATEIPFAD für Stammdaten
'-------------------------------------------------------------------------------------------
Dim pathArchivKD = "\\datenarchiv.verag.ost.dmn\DATENARCHIV\DATENARCHIV_TESTSYSTEM\INTERFACE\DATEV\ARCHIV\STAMMDATEN\"
Dim pathKD = "\\datenarchiv.verag.ost.dmn\DATENARCHIV\DATENARCHIV_TESTSYSTEM\INTERFACE\DATEV\STAMMDATEN\" & Geschaeftsjahr & "\"
'pathKD = pathArchivKD 'TEST
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
'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(filialNr)
If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then
Dim fileKD As System.IO.StreamWriter
Dim DateinameKD = "DTVF_KD_" & Now.ToString("ddMMyyyy_HHmm") & ".csv"
fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15"))
fileKD.WriteLine(genStammdatenHeader(Geschaeftsjahr))
fileKD.WriteLine(genStammdatenBeginn())
initKDNr(dt_Stamm, FIRMA.Firma_ID)
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
'updateFibu() ' 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 genDatensatzCSV_ALL(Optional OpenFile As Boolean = False, Optional boolKunden As Boolean = True, Optional boolBuchungen As Boolean = True, Optional Geschaeftsjahr As Integer = -1) As Boolean
genDatensatzCSV_ALL = True
If boolKunden Then
If Not genDatensatzCSV_Stammdaten(24, OpenFile, Geschaeftsjahr) Then genDatensatzCSV_ALL = False
End If
If boolBuchungen Then
If Not genDatensatzCSV_Buchungen(24, OpenFile, Geschaeftsjahr) Then genDatensatzCSV_ALL = False
End If
End Function
Public Shared Function genDatensatzCSV_Buchungen(ByRef Firma_ID As Integer, Optional OpenFile As Boolean = False, Optional Geschaeftsjahr As Integer = -1) 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
If Geschaeftsjahr <= 0 Then Geschaeftsjahr = Now.Year 'If(Now.Month = 1, Now.Year - 1, Now.Year) --> Bei IMEX ist das GJ=Wirtschaftsjahr
'nur UNISPED!!
'DATEIPFAD für Buchungsdaten
'-------------------------------------------------------------------------------------------
Dim pathArchiv = "\\datenarchiv.verag.ost.dmn\DATENARCHIV\DATENARCHIV_TESTSYSTEM\INTERFACE\DATEV\ARCHIV\AR-DATEN\"
Dim path = "\\datenarchiv.verag.ost.dmn\DATENARCHIV\DATENARCHIV_TESTSYSTEM\INTERFACE\DATEV\AR-DATEN\" & Geschaeftsjahr & "\"
' path = pathArchiv 'TEST
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
'path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getRootDir
'pathArchiv = ""
End If
If Not IO.Directory.Exists(path) Then IO.Directory.CreateDirectory(path)
If Not IO.Directory.Exists(pathArchiv) Then IO.Directory.CreateDirectory(pathArchiv)
'-------------------------------------------------------------------------------------------
Dim NameZusatz = ""
Dim Buchungsjahr = -1
Select Case FIRMA.Firma_ID
Case 21 : NameZusatz = "UNISPED_AT_" : Buchungsjahr = Geschaeftsjahr
Case 22 : NameZusatz = "UNISPED_DE_" : Buchungsjahr = Geschaeftsjahr
Case 23 : NameZusatz = "UNISPED_ZS_" : Buchungsjahr = Geschaeftsjahr
Case 24 : NameZusatz = "AMBAR_DE_" : Buchungsjahr = Geschaeftsjahr
End Select
'----------------- 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)
If dt_Buchungen IsNot Nothing AndAlso dt_Buchungen.Rows.Count > 0 Then
Try
Dim file As System.IO.StreamWriter
Dim Dateiname = "DTVF_STB_" & NameZusatz & Now.ToString("ddMMyyyy_HHmm") & ".csv"
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(genStapelbuchungsHeader(Geschaeftsjahr))
file.WriteLine(genBuchungenBeginn())
For Each r In dt_Buchungen.Rows
file.WriteLine(genBuchungsZeile(r, SummeBuchungen, Geschaeftsjahr, FIRMA))
Next
' file.WriteLine(genBuchungenEnd(SummeBuchungen))
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")
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 FormatStringDVO(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
FormatStringDVO = s.ToString.Replace(";", ",")
FormatStringDVO = s.ToString.Replace(Chr(34), " ")
'FormatStringDVO = s.ToString.Replace(",", "")
'FormatStringDVO = s.ToString.Replace("""", "\22")
If length > 0 Then
If FormatStringDVO.Length > length Then FormatStringDVO = FormatStringDVO.Substring(0, length)
End If
FormatStringDVO = Chr(34) & FormatStringDVO & Chr(34)
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
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 IVO.Rechnungsnummer,IVO.rechnungsdatum,Leistungsnummer,Leistungsbezeichnung,Steuerpflichtig
ORDER BY Rechnungsdatum, Rechnungsnummer "
' --and IVO.Rechnungsnummer='21400139'
Return SQL.loadDgvBySql(sqlStr, "FMZOLL", 9800)
'WHERE Firma_ID ='" & Firma_ID & "' AND TrdinDateiname Is Null
End Function
Public Shared Function genBuchungenBeginn() As String
Return "Umsatz (ohne Soll/Haben-Kz);Soll/Haben-Kennzeichen;WKZ Umsatz;Kurs;Basis-Umsatz;WKZ Basis-Umsatz;Konto;Gegenkonto (ohne BU-Schlüssel);BU-Schlüssel;Belegdatum;Belegfeld 1;Belegfeld 2;Skonto;Buchungstext;Postensperre;Diverse Adressnummer;Geschäftspartnerbank;Sachverhalt;Zinssperre;Beleglink;Beleginfo - Art 1;Beleginfo - Inhalt 1;Beleginfo - Art 2;Beleginfo - Inhalt 2;Beleginfo - Art 3;Beleginfo - Inhalt 3;Beleginfo - Art 4;Beleginfo - Inhalt 4;Beleginfo - Art 5;Beleginfo - Inhalt 5;Beleginfo - Art 6;Beleginfo - Inhalt 6;Beleginfo - Art 7;Beleginfo - Inhalt 7;Beleginfo - Art 8;Beleginfo - Inhalt 8;KOST1 - Kostenstelle;KOST2 - Kostenstelle;Kost-Menge;EU-Land u. UStID;EU-Steuersatz;Abw. Versteuerungsart;Sachverhalt L+L;Funktionsergänzung L+L;BU 49 Hauptfunktionstyp;BU 49 Hauptfunktionsnummer;BU 49 Funktionsergänzung;Zusatzinformation - Art 1;Zusatzinformation- Inhalt 1;Zusatzinformation - Art 2;Zusatzinformation- Inhalt 2;Zusatzinformation - Art 3;Zusatzinformation- Inhalt 3;Zusatzinformation - Art 4;Zusatzinformation- Inhalt 4;Zusatzinformation - Art 5;Zusatzinformation- Inhalt 5;Zusatzinformation - Art 6;Zusatzinformation- Inhalt 6;Zusatzinformation - Art 7;Zusatzinformation- Inhalt 7;Zusatzinformation - Art 8;Zusatzinformation- Inhalt 8;Zusatzinformation - Art 9;Zusatzinformation- Inhalt 9;Zusatzinformation - Art 10;Zusatzinformation- Inhalt 10;Zusatzinformation - Art 11;Zusatzinformation- Inhalt 11;Zusatzinformation - Art 12;Zusatzinformation- Inhalt 12;Zusatzinformation - Art 13;Zusatzinformation- Inhalt 13;Zusatzinformation - Art 14;Zusatzinformation- Inhalt 14;Zusatzinformation - Art 15;Zusatzinformation- Inhalt 15;Zusatzinformation - Art 16;Zusatzinformation- Inhalt 16;Zusatzinformation - Art 17;Zusatzinformation- Inhalt 17;Zusatzinformation - Art 18;Zusatzinformation- Inhalt 18;Zusatzinformation - Art 19;Zusatzinformation- Inhalt 19;Zusatzinformation - Art 20;Zusatzinformation- Inhalt 20;Stück;Gewicht;Zahlweise;Forderungsart;Veranlagungsjahr;Zugeordnete Fälligkeit;Skontotyp;Auftragsnummer;Buchungstyp (Anzahlungen);USt-Schlüssel (Anzahlungen);EU-Land (Anzahlungen);Sachverhalt L+L (Anzahlungen);EU-Steuersatz (Anzahlungen);Erlöskonto (Anzahlungen);Herkunft-Kz;Buchungs GUID;KOST-Datum;SEPA-Mandatsreferenz;Skontosperre;Gesellschaftername;Beteiligtennummer;Identifikationsnummer;Zeichnernummer;Postensperre bis;Bezeichnung SoBil-Sachverhalt;Kennzeichen SoBil-Buchung;Festschreibung;Leistungsdatum;Datum Zuord. Steuerperiode;Fälligkeit;Generalumkehr (GU);Steuersatz;Land;Abrechnungsreferenz;BVV-Position"
End Function
Public Shared Function genBuchungenEnd() As String
Return ""
End Function
Public Shared Function genStammdatenHeader(Geschäftsjahr As Integer) As String
Dim headerString = Chr(34) & "EXTF" & Chr(34) & ";" 'Export aus 3rd Party App
headerString &= datevVersion.ToString & ";"
headerString &= Datenkategorie.ToString & ";"
headerString &= Chr(34) & "Debitoren/Kreditoren" & Chr(34) & ";" 'Debitoren\Kreditoren
headerString &= Formatversion.ToString & ";"
headerString &= emptyFormatedValueWithoutCommas(5)
headerString &= BeraterNr.ToString & ";" 'Beraternummer
headerString &= MandantenNr.ToString & ";" 'Mandantennummer
headerString &= Geschäftsjahr.ToString & "0101" & ";" 'WJ-Beginn
headerString &= Kontenlänge.ToString & ";"
headerString &= Geschäftsjahr.ToString & "0101" & ";" 'DatumVon
headerString &= Geschäftsjahr.ToString & "1231" & ";" 'DatumBis
headerString &= "IMPORT AUS AVISO;" 'Bezeichnung
headerString &= Chr(34) & Chr(34) & ";"
headerString &= emptyFormatedValueWithoutCommas(12)
Return headerString
End Function
Public Shared Function genStapelbuchungsHeader(Geschäftsjahr As Integer) As String
Dim headerString = Chr(34) & "EXTF" & Chr(34) & ";" 'Export aus 3rd Party App
headerString &= datevVersion.ToString & ";" 'Versionnummer Datev
headerString &= StapelbuchungsNr.ToString & ";" 'Stapelbuchungen
headerString &= Chr(34) & "Buchungsstapel" & Chr(34) & ";" 'Buchungsstapel
headerString &= "11;" 'Buchungsstapel -> 12 nicht möglich, steht aber in Schnittsetllenbeschreibung, 11 laut Testdaten???
headerString &= emptyFormatedValueWithoutCommas(5)
headerString &= BeraterNr.ToString & ";"
headerString &= MandantenNr.ToString & ";"
headerString &= Geschäftsjahr.ToString & "0101" & ";" 'WJ-Beginn
headerString &= Kontenlänge.ToString & ";"
headerString &= Geschäftsjahr.ToString & "0101" & ";" 'DatumVon
headerString &= Geschäftsjahr.ToString & "1231" & ";" 'DatumBis
headerString &= "IMPORT AUS AVISO;" 'Bezeichnung
headerString &= Chr(34) & Chr(34) & ";"
headerString &= emptyFormatedValueWithoutCommas(12)
Return headerString
End Function
Public Shared Function genStammdatenEnd() As String
Return ""
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) As String
genBuchungsZeile = ""
Dim steuerbetragLokal As Double = 0
Dim GJ_short = Geschäftsjahr.ToString.Substring(2, 2)
Dim RgNrOld = FormatStringDVO(row("Rechnungsnummer")).Substring(2)
'Umsatz
If CBool(row("Steuerpflichtig")) Then
steuerbetragLokal = CDbl((getDbl2(row("SteuerpflichtigerBetragLokal")) * getDbl2(row("Steuersatz"))))
steuerbetragLokal += 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)
'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()
'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??
'Else
' genBuchungsZeile &= "0;" 'buchcode === 1 oder 2??
'End If
'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 &= emptyFormatedValue()
' Skontoangabe -> Kontrollieren
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) & ";"
'Leerzeilen
genBuchungsZeile &= emptyFormatedValue(7)
'Zusatzinformation Art1
genBuchungsZeile &= FormatStringDVO("D-Rechnung.") & ";"
'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) & ";"
'Zusatzinformation Art2
genBuchungsZeile &= FormatStringDVO("D-RechPositionen.") & ";"
'Zusatzinformation Inhalt2
genBuchungsZeile &= FormatStringDVO(row("Leistungsbezeichnung"), 20) & ";"
'Leerzeilen
genBuchungsZeile &= emptyFormatedValue(45)
'USt-Schlüssel (Anzahlungen)
genBuchungsZeile &= FormatStringDVO("0") & ";"
'Leerzeilen
genBuchungsZeile &= emptyFormatedValue(8)
'keine Skontosperre - 0
genBuchungsZeile &= FormatStringDVO("0") & ";"
'Leerzeilen
genBuchungsZeile &= emptyFormatedValue(7)
'keine Festschreibung - 0
genBuchungsZeile &= FormatStringDVO("0") & ";"
'Leistungsdatum
genBuchungsZeile &= CDate(row("Abfertigungsdatum")).ToString("ddMMyyyy") & ";"
'Leerzeilen
genBuchungsZeile &= emptyFormatedValue(2)
'keine Generallumkehr - 0
genBuchungsZeile &= FormatStringDVO("0") & ";"
'Leerzeilen
genBuchungsZeile &= emptyFormatedValue(3)
'genBuchungsZeile &= FormatStringDVO(SQL.DLookup("[Ordnungsbegriff]", "Adressen", " AdressenNr= " & row("KundenNrZentrale"), "FMZOLL", "")) & ";"
'Dim KdAtrNr = SQL.DLookup("KdAuftragsNr", "Rechnungsausgang", "rechnungsnr='" & RgNrOld & "' And Buchungsjahr='" & Geschäftsjahr & "' and Firma_ID='" & FIRMA.Firma_ID & "'", "FMZOLL", "")
'KdAtrNr = KdAtrNr.ToString.Replace(vbNewLine, "").Replace(vbCr, "").Replace(vbLf, "").Replace(vbCrLf, "").Replace(System.Environment.NewLine, " ")
' genBuchungsZeile &= KdAtrNr & ";".Replace(Environment.NewLine, "") 'extbelegnr
' genBuchungsZeile &= If(row("BelegartenNr") = "70", "AR", "AG") & ";" ' Rg/GS 70=Rechnung 'AG ????????
' genBuchungsZeile &= If(row("BelegartenNr") = "70", "1", "2") & ";" ' Rg/GS 70=Rechnung 'AG ????????
'genBuchungsZeile &= getSteuercode(row, FIRMA) & ";"
' If CBool(row("Steuerpflichtig")) Then
' genBuchungsZeile &= (getDbl2(row("Steuersatz")) * 100) & ";" 'buchcode === 1 oder 2??
' Else
' genBuchungsZeile &= "0;" 'buchcode === 1 oder 2??
' End If
'genBuchungsZeile &= "" & If(steuerbetragLokal <> 0, getDbltr(steuerbetragLokal), "0") & ";" 'steuer
'genBuchungsZeile &= FormatStringDVO(row("Nettozahlungsziel")) & ";" ' Text
''... aus ...
'SummeBuchungen += getDbl(getDbl(row("SteuerpflichtigerBetragLokal")) + getDbl(row("SteuerfreierBetragLokal")))
End Function
Shared Sub initKDNr(ByRef dt As DataTable, ByVal firmaID As Integer)
Select Case firmaID
Case 24
For Each r In dt.Rows
If IsNumeric(r("Kontonummer")) AndAlso CInt(r("Kontonummer")) > 3000000 AndAlso r("Kontonummer").ToString.Length = 7 Then r("Kontonummer") = (CInt(r("Kontonummer")) - 3000000)
Next
Case Else
For Each r In dt.Rows
If IsNumeric(r("Kontonummer")) AndAlso CInt(r("Kontonummer")) > 2000000 Then r("Kontonummer") = (CInt(r("Kontonummer")) - 2000000)
' MsgBox((CInt(r("Konto-Nr")) - 1000000) + 200000)
Next
End Select
End Sub
Shared Function initKDNr2(ktoNr As String, ByVal firmaID As Integer) As String
Select Case firmaID
Case 24
If IsNumeric(ktoNr) AndAlso CInt(ktoNr) > 3000000 AndAlso ktoNr.Length = 7 Then ktoNr = (CInt(ktoNr) - 3000000) '- 300000
Case Else
If IsNumeric(ktoNr) AndAlso CInt(ktoNr) > 2000000 Then ktoNr = (CInt(ktoNr) - 2000000) '+ 200000
End Select
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("F2").Replace(".", "").Replace(" ", "") '.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
Shared Function emptyFormatedValue(Optional count As Integer = 1) As String
Dim retturnText As String = ""
For i = 1 To count
retturnText &= Chr(34) & Chr(34) & ";"
Next
Return retturnText
End Function
Shared Function emptyFormatedValueWithoutCommas(Optional count As Integer = 1) As String
Dim retturnText As String = ""
For i = 1 To count
retturnText &= ";"
Next
Return retturnText
End Function
End Class