Erstellt vor 21 Monaten

Geschlossen vor 7 Monaten

#2295 closed Verbesserung/Featurewunsch (fixed)

Neue Steuersätze

Erstellt von: Niclas Verantwortlicher: Niclas
Priorität: normal Meilenstein:
Komponente: kivitendo ERP Version: 3.0.0 unstable
Schweregrad: normal Stichworte:
Beobachter:

Beschreibung

Es gibt in kivitendo nur 4 vorgeschriebene Steuersätze, nämlich Inland, EU mit USt-ID Nummer, EU ohne USt-ID Nummer und Außerhalb EU. Diese reichen jedoch nicht immer aus und es ist wünschenswert, diese in eine Tabelle in der Datenbank auszulagern. Weiterhin müsste es eine neue Oberfläche zum bearbeiten dieser Steuersätze geben, ähnlich wie bei Warengruppen.

Wie würde man so etwas am besten implementieren?

Änderungshistorie (4)

comment:1 Geändert vor 21 Monaten durch m.bunkus@…

Warnung: das ist eine rieseige Aufgabe. Die momentane Implementation setzt voraus, dass es in der Tabelle buchungsgruppen exakt diese Spalten gibt: income_accno_id_0 bis income_accno_id_3 sowie expense_accno_id_0 bis expense_accno_id_3. Sprich: hier sind die vier Steuerzonen hart horizontal in den Spaltennamen codiert. Das ist deswegen unglücklich gewählt, weil es bedeutet, dass man die aktuelle Steuerzone bereits in den Spaltennamen des SQL-Queries einbauen muss und nicht mit Platzhaltern arbeiten kann.

Daher steckt der gesamte Programmcode voll von sochen Konstrukten:

SELECT ...
FROM ...
LEFT JOIN buchungsgruppen bg ...
WHERE (bg.income_accno_id_${taxzone} = ?)

Extrem unschön. Hinzu kommt, dass die vier Steuerzonen auf die Nummern 0 bis 3 hartcodiert sind.

Was nun zu tun ist, ist diese horizontale Speicherung in eine vertikale Speicherung umzuwandeln. Dazu benötigt man natürlich eine neue Tabelle, und buchungsgruppen müssen geändert werden.

Grobe Idee wäre:

  1. Tabelle taxzones anlegen. Sie enthält eine ID und einen Namen. Sie wird initial mit den vier üblichen Steuerzonen befüllt, die auch die IDs 0..3 bekommen sollten.
  2. Tabelle buchungsgruppen in zwei Tabellen aufteilen. Dabei wird buchungsgruppen um taxzone_id erweitert, und sie behalten die Beschreibung und die inventory_accno_id, die ja von Steuerzonen unabhängig ist. Die Spalten income_accno_id_0 bis ..._3 wandern in eine neue Tabelle, z.B. taxzones_charts oder so. Die hat dann als Spalten eine ID, taxzone_id, buchungsgruppen_id, inventory_accno_id und expense_accno_id. Eine Zeile aus der alten buchungsgruppen würde in eine neue Zeile in buchungsgruppen und vier neue Zeilen in taxzones_charts aufgeteilt.
  3. Alle Tabellen, die bisher eine Spalte taxzone_id hatten, so umstellen, dass taxzone_id nun ein Fremdschlüssel auf taxzones ist. Das sollte relativ einfach gehen, sofern die Daten konsistent sind und die neuen Zeilen in taxzones in Schritt 1 die IDs 0..3 bekommen haben.
  4. Alle Queries fixen, die bisher die alte Variante genutzt haben.
  5. Alle Controls auf der Oberfläche fixen, die die bisher vier hardgecodeten Steuerzonen anzeigen, sodass sie alle Steuerzonen aus taxzones anzeigen.

comment:2 Geändert vor 21 Monaten durch Niclas

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

In a27cd427a2689b49a7642884edd2d24555305a4b/erp:

Recht für Anzeige der Produktivität

Um die Produktivität einzusehen, ist jetzt ein Recht erforderlich.
Standardmäßig wird dieses Recht gegeben, um den gleichen Zustand
wie vor dem Commit zu garantieren.

Weiterhin gibt es nun auch das Recht für Anzeige des Administrationslinks
im Menü-Punkt Programme.

Das Upgrade-Script sorgt dafür, dass die Rechte weiterhin gelten,
weil sie vorher ja jeder User hatte.

Der Commit enthält auch den Changelog-Eintrag für diese Änderung.

Implementiert #2295.

comment:3 Geändert vor 21 Monaten durch Niclas

  • Lösung fixed gelöscht
  • Status von closed nach reopened geändert

"Implementiert #2295." aus obigem Commit war ein Schreibfehler. Der Commit wurde revertet und die Änderungen nochmal mit korrekter Ticket-Nummer commitet.

comment:4 Geändert vor 7 Monaten durch grichardson@…

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

In der aktuellen Unstable ist dieses Feature nun implementiert.

Die grobe Idee von Mosu wurde dann auch ziemlich genau so umgesetzt.

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