- Thema
- VB.NET
- SDK-Mitglieder
- AddMonetarySummation() FillZUGFeRD_Structure() GetMonetarySummation() ReadTotalsCSV() ReadTradeAllowanceChargesCSV() WriteTotals()
- Business Terms
- BG-22 Gesamtsummen auf Dokumentenebene BT-106 Summe der Nettobeträge aller Rechnungspositionen BT-107 Summe der Abschläge auf Dokumentenebene BT-108 Summe der Zuschläge auf Dokumentenebene BT-109 Rechnungsgesamtbetrag ohne Umsatzsteuer BT-110 1..1 1..1 1..1 1..1 BT-112 Rechnungsgesamtbetrag einschließlich Umsatzsteuer BT-113 Vorauszahlungsbetrag
- Codebeispiele
- VB.NET
- Veröffentlicht
Die Gruppe Gesamtsummen auf Dokumentenebene (BG-22) enthält die Beträge, die jede E-Rechnung am Ende ausweist: Summe der Positionen, Zu- und Abschläge, Steuerbasis, Umsatzsteuer, Bruttobetrag, Vorauszahlung, Rundung und Zahlbetrag. Üblicherweise schreiben Sie alle Summen auf einmal mit WriteTotals. Mit AddMonetarySummation setzen Sie einen einzelnen Betrag, und mit ReadTotalsCSV und ReadTradeAllowanceChargesCSV exportieren Sie Summen sowie Zu- und Abschläge (BG-20, BG-21) einer Rechnung als CSV-Text.
Felder
| Feld | Bedeutung | SummationType | Parameter von WriteTotals |
|---|---|---|---|
| BT-106 | Summe der Nettobeträge aller Positionen | LineTotalAmount | NettoTotal |
| BT-107 | Summe der Abschläge auf Dokumentenebene | AllowanceTotalAmount | DiscountTotal |
| BT-108 | Summe der Zuschläge auf Dokumentenebene | ChargeTotalAmount | ChargeTotal |
| BT-109 | Rechnungsgesamtbetrag ohne Umsatzsteuer | TaxBasisTotalAmount | TaxableTotal |
| BT-110 | Gesamtbetrag der Umsatzsteuer | TaxTotalAmount | TaxTotal |
| BT-112 | Rechnungsgesamtbetrag einschließlich Umsatzsteuer | GrandTotalAmount | Total |
| BT-113 | Vorauszahlungsbetrag | TotalPrepaidAmount | Prepaid |
| BT-114 | Rundungsbetrag | RoundingAmount | RoundingAmount |
| BT-115 | Fälliger Zahlungsbetrag | DuePayableAmount | DuePayable |
Einzelne Summe schreiben
AddMonetarySummation(Amount, SummationType, CurrencyID) setzt genau einen Betrag. Ein Komma im Betrag wird als Dezimaltrennzeichen gelesen, der Wert auf zwei Nachkommastellen gebracht. Bleibt CurrencyID leer, gilt die Rechnungswährung (BT-5); ist noch keine Rechnungswährung gesetzt, übernimmt die SDK die hier angegebene.
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
' ... Rechnungskopf, Parteien, Positionen, Umsatzsteuer (AddTradeTax)
' alle Summen auf einmal: Netto 100,00 – Abschlag 10,00 + 19 % USt = 107,10
alo.WriteTotals("100.00", "107.10", "107.10", "90.00", "17.10", "10.00")
' danach eine einzelne Summe ergänzen: 50,00 € wurden bereits angezahlt
alo.AddMonetarySummation("50.00", Aloaha_ZUGFeRD.iXML.SummationType.TotalPrepaidAmount, "EUR")
alo.AddMonetarySummation("57.10", Aloaha_ZUGFeRD.iXML.SummationType.DuePayableAmount, "EUR")
VBA / VB6 (COM) – statt der Aufzählung übergeben Sie deren Zahlenwert (7 = TotalPrepaidAmount, 8 = DuePayableAmount):
alo.AddMonetarySummation "50.00", 7, "EUR"
alo.AddMonetarySummation "57.10", 8, "EUR"
Zusammenspiel mit WriteTotals
WriteTotals ruft intern für alle neun Beträge AddMonetarySummation auf. Daraus folgt:
- Ein späterer Aufruf von
WriteTotalsüberschreibt alle Summen – auch solche, die Sie vorher einzeln gesetzt haben; nicht übergebene Werte werden zu0.00. Setzen Sie Einzelbeträge daher immer nachWriteTotals. - Nur
WriteTotalsrechnet: Übergeben Sie dortTotaloderDuePayableals 0, ermittelt die SDK BT-112 = BT-106 − BT-107 + BT-108 + BT-110 bzw. BT-115 = BT-112 − BT-113 + BT-114.AddMonetarySummationübernimmt den Betrag dagegen unverändert; passen Sie abhängige Summen (wie im Beispiel BT-115) selbst an.
Einen einzelnen Betrag lesen Sie mit GetMonetarySummation, alle auf einmal mit getTotals:
Dim zahlbetrag As String = alo.GetMonetarySummation(Aloaha_ZUGFeRD.iXML.SummationType.DuePayableAmount) ' "0.00", wenn nicht gesetzt
Summen als CSV exportieren
ReadTotalsCSV liefert den Rechnungskopf mit allen Summen als CSV-Text: eine Kopfzeile und eine Datenzeile, getrennt durch einen Zeilenumbruch (CRLF). Der Parameter bestimmt das Trennzeichen (Standard: Komma).
If alo.FillZUGFeRD_Structure("C:\Rechnungen\eingang.xml", "IHR-LIZENZSCHLUESSEL") Then
Dim csv As String = alo.ReadTotalsCSV(vbTab)
Dim zeilen() As String = csv.Split(New String() {vbCrLf}, StringSplitOptions.None)
Dim kopf() As String = zeilen(0).Split(CChar(vbTab))
Dim werte() As String = zeilen(1).Split(CChar(vbTab))
For i As Integer = 0 To kopf.Length - 1
Console.WriteLine(kopf(i) & " = " & werte(i))
Next
End If
Die ersten Spalten sind currency, type (BT-3), leitwegid, invoiceid, invoicedate und dann die Summen in der Reihenfolge LineTotalAmount, ChargeTotalAmount, AllowanceTotalAmount, TaxBasisTotalAmount, TaxTotalAmount, RoundingAmount, GrandTotalAmount, TotalPrepaidAmount, DuePayableAmount. Es folgen u. a. Zahlungsbedingungen, Verwendungszweck, Rechnungsnotizen, Liefer- und Abrechnungszeitraum, je Steuersatz ein Spaltenblock der Umsatzsteueraufschlüsselung (BG-23) sowie Projekt-, Vertrags- und Bestellreferenzen. Wiederholte Gruppen erhalten ab dem zweiten Eintrag eine Nummer (InvoiceNote1, TAXTypeCode1 …). Leere Summen erscheinen als 0.00. Die Spalten entsprechen der Datei totals.csv des CSV-Imports.
Zu- und Abschläge als CSV (BG-20, BG-21)
ReadTradeAllowanceChargesCSV exportiert die Abschläge (BG-20) und Zuschläge (BG-21) auf Dokumentenebene: eine Kopfzeile und eine Zeile je Eintrag. Gibt es keine, ist das Ergebnis eine leere Zeichenkette.
Dim zuab As String = alo.ReadTradeAllowanceChargesCSV(";")
If zuab <> "" Then Console.WriteLine(zuab)
' chargeindicator;basisamount;calculationpercent;actualamount;reason;taxpercent;taxtypecode;taxcategorycode;reasoncode;currency
' 0;100.00;10.00;10.00;Treuerabatt;19.00;VAT;S;95;EUR
chargeindicator ist 1 für einen Zuschlag und 0 für einen Abschlag. Je Eintrag wird nur die erste Steuerangabe exportiert. Am Ende jeder Zeile stehen der Begründungscode (BT-98 bzw. BT-105, Spalte reasoncode) und die Währung (currency); da sie angehängt sind, bleiben die Positionen der übrigen Spalten unverändert. In älteren Versionen der SDK fehlten diese beiden Spalten. Das Format entspricht der Datei allowances.csv. Alle fünf Datensätze einer Rechnung auf einmal erzeugt CreateCSV – siehe Konvertierung nach CSV.
Hinweise
- Keine Anführungszeichen: Beide Funktionen setzen Werte nicht in Anführungszeichen. Wählen Sie ein Trennzeichen, das in Texten wie Notizen oder Begründungen nicht vorkommt, z. B. den Tabulator. In
ReadTotalsCSVwerden Zeilenumbrüche in Freitexten ersetzt. - Keine Nebenwirkungen:
ReadTotalsCSVverändert die Rechnung nicht; Summen und Rechnungswährung (BT-5) bleiben so, wie Sie sie gesetzt oder eingelesen haben. In älteren Versionen der SDK setzte die Funktion bei fehlendem Zahlbetrag BT-115 auf BT-112 und übernahm eine leere Rechnungswährung aus den Summen. - COM:
ReadTotalsCSVist Teil der SchnittstelleiXML(als letztes Mitglied angehängt) und damit auch aus VBA/VB6 frühgebunden aufrufbar. Registrieren Sie nach einem Update die Typbibliothek neu. - Profile: BG-22 ist in allen Profilen Pflicht. BT-106 sowie die Zu- und Abschläge gibt es ab BASIC WL, den Rundungsbetrag BT-114 erst ab EN 16931 (COMFORT).
Business Terms in diesem Artikel: BG-22 BT-106 BT-107 BT-108 BT-109 BT-110 BT-112 BT-113 BT-114 BT-115 BG-20 BG-21 BT-1 BT-3 BT-5 BG-23