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@…
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.

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