Sven Rautenberg: Dump

Beitrag lesen

Moin!

Tach!

Und die entsprechende Query:

Wenn man bei der die SELECT-Klausel-Felder durch ein * austauscht, sieht man als Belegart was?

CASE
WHEN r.Belegart = 'RE' THEN 1
WHEN r.Belegart = 'GU' THEN (-1)
WHEN r.Belegart = 'ST' THEN (-1)
END

Und passt das auf einen dieser Werte?

Was einen dann dazu veranlassen sollte, solche Rechenspielchen doch lieber in der Datenbanktabelle selbst zu speichern, und nicht im Query. Dann kann man den Berechnungsfaktor (1, -1) für Rechnungen, Gutschriften und Stornos dort behandeln. Oder man schreibt das Vorzeichen tatsächlich in die gebuchte Zahlung mit hinein und addiert nur.

Oder man macht es richtig und nutzt die Regeln der doppelten Buchführung. Dann würde der bereits bestehenden Buchung in "zahlungen" noch hinzuzufügen sein, von wem und an wen gebucht wird, also im Prinzip die beiden beteiligten Konten des Zahlungsflusses. Und dann braucht man auch keine für die Berechnung relevante Klassifikation der eigentlichen Zahlung, weil a) nur positive Geldbeträge in genau eine Richtung verschoben werden, und allein daran kann man sehen, ob der Kunde eine Rechnung bezahlt hat (Buchung von Bank auf Konto Kunde X), ob eine Bestellung getätigt wurde (Buchung von Konto Kunde X auf Lieferkonto), ob eine Bestellung und damit Rechnung storniert wurde (Buchung von Lieferkonto auf Konto Kunde X), oder ob der Kunde eine Gutschrift erhalten hat (Buchung von Gutschrift auf Konto Kunde X).

Diese Buchhaltung mit Geldfluß ist für den Einsteiger vielleicht verwirrend, aber letztendlich logisch.

- Sven Rautenberg