Anleitung: Jahresabschluss und was aussieht wie ein Konto

Zwei Fragen aus der Praxis, die die Anleitung nicht beantwortete.

## Der Jahresabschluss

Sie beschrieb, was in jedem Bericht steht, aber nicht die Reihenfolge und
nicht, was man vorher besorgen muss. Der neue Abschnitt beginnt deshalb
sechs Wochen vor dem Stichtag: Rueckkaufswerte und Bescheinigungen
brauchen Wochen, und wer erst am Stichtag daran denkt, geraet in Verzug.
Danach die Staende mit Quellenangabe, dann die Berichte in der
Reihenfolge, in der sie aufeinander aufbauen.

## Genossenschaftsanteile

Das Gericht fragt einen "Kontoauszug" an, den es nicht gibt: Ein
Geschaeftsguthaben ist kein Zahlungskonto, sondern eine Forderung gegen
die Genossenschaft. Es laufen keine Buchungen darueber, und ausgezahlt
wird erst nach Kuendigung der Mitgliedschaft.

Der Fall fuehrt zu einem stillen Fehler: Wer die Anteile als Konto
anlegt, kann die Bescheinigung nicht am Wert hinterlegen - genau das
Blatt, das das Gericht sehen will. Ein Saldostand traegt eine
Quellenangabe, aber kein Dokument; ein Wertstand am Vermoegensposten
schon. Deshalb steht im Text nicht nur, was zu tun ist, sondern warum -
sonst legt der naechste Leser es wieder als Konto an.

Dazu der Hinweis, dass "der Wert bleibt doch gleich" nicht traegt: Wird
eine Dividende dem Geschaeftsguthaben gutgeschrieben statt ausgezahlt,
waechst es. Genau deshalb fragt man jaehrlich nach, statt den
Vorjahreswert fortzuschreiben.

Eine Uebersicht behandelt die verwandten Faelle mit - Bausparvertrag,
Depot, Verbindlichkeit. Das Depot ist die Ausnahme: Dort laufen Umsaetze,
es gibt einen Auszug, es ist ein Konto. Versicherungen gehoeren an den
Vertrag, nicht ins Vermoegen.

Zehn Pruefungen in tests/anleitung.test.ts, gegen vier Mutationen
geprueft: als Konto geraten, Dividendenhinweis entfernt, Vorlauf
entfernt, Abschnitt entfernt - jede wird rot.

Refs #55
This commit is contained in:
Florian Wilde
2026-09-02 22:52:41 +02:00
parent c5db3baac0
commit cba2e49211
2 changed files with 212 additions and 0 deletions
+82
View File
@@ -108,3 +108,85 @@ describe('Installationsanleitung', () => {
expect(anleitung).not.toMatch(/Was das Backup nicht enthält:.*Dateien im Objektspeicher/s)
})
})
/**
* Die Bedienungsanleitung muss die Fragen beantworten, die tatsächlich
* gestellt werden.
*
* Zwei davon kamen aus der Praxis:
*
* 1. „Wie mache ich den Jahresabschluss?" — die Anleitung beschrieb, was
* in jedem Bericht steht, aber nicht die Reihenfolge und nicht, was man
* vorher besorgen muss. Rückkaufswerte brauchen Wochen.
* 2. „Das Gericht will einen Kontoauszug für die Genossenschaftsanteile —
* den kann ich nicht am Automaten holen." Richtig: Es ist kein
* Zahlungskonto, sondern eine Forderung, und der Nachweis ist eine
* Bescheinigung, die man anfordert.
*
* Der zweite Fall ist der wichtigere, weil er zu einem stillen Fehler
* führt: Wer die Anteile als Konto anlegt, kann die Bescheinigung nicht am
* Wert hinterlegen — genau das Dokument, das das Gericht sehen will.
*/
describe('Bedienungsanleitung', () => {
const bedienung = readFileSync('docs/ANLEITUNG.md', 'utf8')
it('erklärt den Jahresabschluss mit Reihenfolge', () => {
expect(bedienung).toMatch(/## Der Jahresabschluss, Schritt für Schritt/)
})
it('sagt, was vor dem Stichtag zu besorgen ist', () => {
// Wer erst am Stichtag daran denkt, wartet Wochen auf die Auskunft.
const abschnitt = bedienung.slice(bedienung.indexOf('## Der Jahresabschluss'))
expect(abschnitt).toMatch(/Sechs Wochen vorher/)
expect(abschnitt).toMatch(/Rückkaufswerte/)
expect(abschnitt).toMatch(/Wiedervorlage/)
})
it('besteht auf der Quellenangabe beim Kontostand', () => {
// Ein Betrag ohne Herkunft ist gegenueber dem Gericht wenig wert.
const abschnitt = bedienung.slice(bedienung.indexOf('## Der Jahresabschluss'))
expect(abschnitt).toMatch(/Quelle/)
expect(abschnitt).toMatch(/Kontoauszug 11\/2026|Online-Banking/)
})
describe('Was aussieht wie ein Konto', () => {
const abschnitt = bedienung.slice(bedienung.indexOf('## Was aussieht wie ein Konto'))
it('gibt es überhaupt', () => {
expect(abschnitt.length).toBeGreaterThan(500)
})
it('führt Genossenschaftsanteile als Forderung, nicht als Konto', () => {
expect(abschnitt).toMatch(/Genossenschaftsanteile/)
expect(abschnitt).toMatch(/Art \*\*Forderung\*\*/)
})
it('nennt den Grund, statt ihn vorauszusetzen', () => {
// Ohne Begruendung legt der naechste Leser es wieder als Konto an.
expect(abschnitt).toMatch(/Nachweis anhängen|Nachweis anhaengen/)
expect(abschnitt).toMatch(/kein Dokument/)
})
it('warnt davor, den Vorjahreswert einfach fortzuschreiben', () => {
// "Der Wert bleibt doch gleich" stimmt meistens - aber eine
// gutgeschriebene Dividende erhoeht das Geschaeftsguthaben.
expect(abschnitt).toMatch(/Dividende/)
})
it('sagt, wie man den Nachweis bekommt', () => {
expect(abschnitt).toMatch(/Bescheinigung über das\s+Geschäftsguthaben/)
expect(abschnitt).toMatch(/Auskunftsersuchen/)
})
it('behandelt die verwandten Fälle mit', () => {
for (const fall of ['Bausparvertrag', 'Depot', 'Verbindlichkeit']) {
expect(abschnitt, `${fall} fehlt in der Übersicht`).toContain(fall)
}
})
it('schickt Versicherungen zum Vertrag, nicht ins Vermögen', () => {
// Der Rueckkaufswert gehoert an den Vertrag, samt Historie.
expect(abschnitt).toMatch(/nicht\*\* den Vermögensbereich|Vertrag selbst/)
})
})
})