Erstellt vor 10 Jahren

Geschlossen vor 8 Jahren

#113 closed Fehler (fixed)

Gebuchte Rechnungen können gelöscht werden

Erstellt von: mawe@… Verantwortlicher: p.reetz@…
Priorität: hoch Meilenstein:
Komponente: kivitendo ERP Version: 2.1.0beta
Schweregrad: kritisch Stichworte: Finanzbuchhaltung
Beobachter: frank@…

Beschreibung

Gebuchte Rechnungen können auch ein paar Tage später noch gelöscht werden.
Das geht auch wenn die Rechnung schon komplett bezahlt und verbucht ist.

Marco

Änderungshistorie (7)

comment:1 Geändert vor 10 Jahren durch h.goebel@…

Gebuchte Rechnungen können auch noch verändert werden.

comment:2 Geändert vor 10 Jahren durch hegner@…

Das ist besonders fatal, wenn man man eine Alte Rechnung als Vorlage
verwenden will und "buchen" statt "neu buchen" klickt (und sei es nur aus
versehen).

comment:3 Geändert vor 9 Jahren durch udono@…

  • Priorität von Normal nach Hoch geändert

Problem besteht immer noch und sollte gelöst werden.

Es wäre eine Möglichkeit, jede Art von Buchung in gewissem Sinne löschbar zu
machen in dem man sie als 'ungültig' markiert. Das geschieht fast rein auf
Postgresebene, mit dem Vorteil, dass man mit psql nicht einfach die Daten
verändern kann.

Datenbank
Auf Datenbankebene könnte man die Spalte ungueltig in allen Tabellen anlegen
DEFAULT=FALSE NOT NULL. (Eine zusätzliche Tabelle nimmt den audittrail aus
*gelöscht am..., von..., bemerkungen...* auf soweit ich weiss gibt es so etwas
ähnliches schon...)

Dann erzeugt man für alle Tabellen RULEs auf DELETE:
(beispielhaft für die Tabelle gl)

CREATE RULE gl_del AS ON DELETE TO gl
DO INSTEAD
UPDATE gl SET ungueltig = TRUE
WHERE id = old.id;

Damit würde nichts tatsächlich gelöscht werden.

Berichte:
In den Berichten sollte 'Gelöscht' als checkbox neben 'Offen' und 'Geschlossen'
stehen, aber nie vorausgewählt sein. Mittels VIEWS könnte man alle Tabellen
derart anpassen:

ALTER TABLE gl RENAME TO buchungsjournal;
CREATE VIEW gl AS SELECT * FROM buchungsjournal WHERE ungueltig = FALSE;
CREATE VIEW gl.all AS SELECT * FROM buchungsjournal;

Es würde sich erstmal nichts ändern, an der Anzeige die man kennt (alle abfragen
greifen ja auf die gl zu). Erst wenn checkboxen für 'Gelöschte' in den
Reporteinstellungen eingebaut werden und auf gl.all gelinkt wird, dann lassen
sich gelöschte Buchungen auch anzeigen und Bearbeiten.

Bearbeiten:
Alles was man bearbeiten kann sollte man 'löschen' bzw. ungültig markieren
können. Bearbeiten ist hier im weitesten Sinne auf das eintragen, verändern oder
entfernen von Datenbankbeständen gemeint - buchen.

Buchung bearbeiten:
'Löschen' und 'Neubuchen' für alles wo man sich etwas bereits gebuchtes
anschaut, bsw. aus den Berichten. Eine bearbeiten Maske sollte keine gesperrten
Felder haben!

Neue Buchung:
Als Buchmöglichkeiten sollte nur 'Buchen' für alle Masken, wo man etwas neues
anlegt dargestellt werden.

Löschen:
Jeder Wechsel von ungueltig [true|false] wird beschrieben. Entweder gibt es
automatische Meldungen wie 'Neu angelegt', 'Gelöscht', 'Wiederhergestellt'.

Gelöschte Buchungen bearbeiten:
Jede gelöschte Buchung lässt sich 'Wiederherstellen' und zwar zu dem Zeitpunkt
wo sie gelöscht wurde, oder 'neubuchen', alles mit Protokolleinträgen zum
Zeitpunkt des Vorgangs. 'Neu buchen' kann man gelöschte Buchungen auch.

Storno:
Storno kann doch eigentlich entfallen, oder? Weil es wird doch nichts anderes
gemacht als eine Buchung invertiert, damit sie verschwindet. Wenn ich Buchungen
dadurch invertiere, dass sie einfach nicht 'normal' abfragbar sind, und über
jede Statusänderung Protokoll führe, dann habe ich doch dasselbe erreicht oder?

Alternativ mit Stono kann die Buchung auch durch eine automatische Stornobuchung
entfernt werden. (alle Beträge aller Buchungen zu einer trans_id werden *-1
genommen, und die gesamte (Storno-) Buchung wird unter derselben trans_id gebucht.)

comment:4 Geändert vor 9 Jahren durch udono@…

  • blocked auf 162 gesetzt

comment:5 Geändert vor 9 Jahren durch s.koehler@…

  • Beobachter frank@… hinzugefügt

* #254 has been marked as a duplicate of this bug. *

comment:6 Geändert vor 9 Jahren durch udono@…

  • blocked auf 320 gesetzt

comment:7 Geändert vor 8 Jahren durch m.bunkus@…

  • Lösung auf fixed gesetzt
  • Status von new nach closed geändert

Ist in 2.4.0 behoben. Rechnungen können nur noch am gleichen Tag geändert
werden.

Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.