Verwendung
Immer zuerst die Vorschau
Datevz → Export, Zeitraum wählen, Vorschau klicken. Es wird nichts geschrieben.
Sie erhalten jede Buchung, die der Stapel enthalten würde — Konto, Gegenkonto, Soll/Haben, Brutto, BU-Schlüssel, Satz, Belegnummer —, gruppiert nach Bestellung, mit der steuerlichen Behandlung an jeder einzelnen. Unter jeder Bestellung stehen die Probleme, die Datevz dort gefunden hat.
Vorschau und Export laufen über denselben Code. Es gibt keine zweite Implementierung, die auseinanderlaufen könnte, also enthält die Datei genau das, was Sie gelesen haben.
Wie eine Buchung aussieht
Eine Bestellung, 100 € Ware zu 19 %, exportiert:
119,00;"S";"EUR";;;;1400;8400;;1503;"RE-1042";"8556";;"Shop RE-1042";…
Brutto gegen den Debitor im Soll, Erlöse im Gegenkonto, Belegdatum als TTMM, die
Belegnummer in Belegfeld 1.
Die Richtung steckt nie im Betrag. Umsatz ist immer positiv und vorzeichenlos; eine Gutschrift
ist eine Buchung mit H in der Spalte Soll/Haben. Ein negativer Umsatz ist keine Erstattung,
sondern ein abgelehnter Import.
Weil bei einer Rechnungsbuchung immer der Debitor im Konto steht, geht der Stapel durch bloße
Addition auf den Bestellwert auf — und genau das prüft Datevz, bevor es irgendetwas schreibt.
Den Stapel erzeugen
Ist die Vorschau sauber, klicken Sie Stapel erzeugen. Ist sie es nicht, steht die Schaltfläche trotzdem da, aber Sie müssen Trotzdem exportieren ankreuzen — und diese Entscheidung wird mit den übergangenen Problemen ins Protokoll geschrieben.
Jeder Stapel wird vollständig gespeichert, mit einem sha256 der ausgelieferten Datei. Noch Monate später können Sie belegen, dass die Kopie der Kanzlei die Kopie ist, die Datevz erzeugt hat.
Eine exportierte Bestellung bleibt im nächsten Stapel unberücksichtigt. Löschen Sie einen Stapel, sind seine Bestellungen wieder frei — das Archiv ist der Nachweis darüber, was hinausgegangen ist, und es zu löschen ist die einzig ehrliche Art zu sagen: „Das ist nie passiert.“
Debitorenstammdaten
Wenn Sie je Kunde ein Personenkonto vergeben, listet Datevz → Debitoren jede vergebene Nummer und exportiert sie als Debitoren/Kreditoren-Datei, die die Kanzlei importieren kann.
Nummern werden einmal vergeben und nie wiederverwendet, auch wenn der Kunde gelöscht wird. Ein Personenkonto, das unter einem anderen Namen wiederkehrt, macht ein Jahr Buchhaltung zum Rätsel.
Auf der Kommandozeile
php craft datevz/export/run --from=2026-01-01 --to=2026-01-31
php craft datevz/export/run --from=2026-01-01 --to=2026-01-31 --dryRun
php craft datevz/export/run --from=2026-01-01 --to=2026-01-31 --path=/tmp/januar.csv
php craft datevz/export/list
php craft datevz/debtors/export --path=/tmp/debitoren.csv
php craft datevz/debtors/list
php craft datevz/log/prune
Ein Probelauf endet mit einem Exit-Code ungleich null, sobald er Fehler findet — ein monatlicher Cron-Job scheitert also hörbar, statt der Kanzlei eine kaputte Datei zu mailen:
0 6 1 * * cd /var/www/site && php craft datevz/export/run \
--from="$(date -d 'last month' +%Y-%m-01)" \
--to="$(date -d 'last month' +%Y-%m-%d -d "$(date +%Y-%m-01) -1 day")" \
--path=/var/backups/datev/$(date +%Y-%m).csv
Konsolenbefehle eines Plugins erscheinen nicht bei craft help datevz — sie stehen unter
craft help.
Auf der Bestellseite
Commerce' eigene Bestellansicht erhält einen Bereich DATEV: die steuerliche Behandlung, das Debitorenkonto, die Buchungen, die diese Bestellung erzeugt, und ob sie exportiert wurde — mit einem Link auf den Stapel und einem Hinweis, falls sie mehr als einmal hinausgegangen ist.
Er wird live aufgebaut, zeigt also Ihre aktuellen Einstellungen und nicht den Stand zum Zeitpunkt der Bestellung.
Twig
{% set state = craft.datevz.orderState(order) %}
{% if craft.datevz.isExported(order) %}
Gebucht am {{ state.dateExported|date('d.m.Y') }} in Stapel {{ state.batchId }}
{% endif %}
{% set set = craft.datevz.postings(order) %}
{{ craft.datevz.treatmentLabel(set.treatment) }}
{% for posting in set.postings %}
{{ posting.account }} / {{ posting.contraAccount }}
{{ posting.debitCredit }} {{ posting.amount }}
{% endfor %}
Nichts an der Twig-Schnittstelle schreibt. Ein Template-Rendering ist kein Ort, um eine Debitorennummer zu vergeben oder eine Bestellung als exportiert zu markieren.