Finanzen & Controlling · Global

Finanzen: wann das Modul im Produktalltag Sinn ergibt.

GuV-Übersicht, Finanzplanung, USt-Auswertung und Managementsicht auf den tenantweiten Bestand. Das Modul hat einen eigenen Einstiegspfad innerhalb des Produkts: /guv.

  • Finanzen erklärt kompakt, wofür der Bereich gedacht ist und wann er im Arbeitsalltag relevant wird.
  • Der Bereich spielt in der Praxis besonders mit Transaktionen und Finmap Einstellungen zusammen.
  • Bei finanznahen Modulen sollten Sichtbarkeit und Freigaben bewusster gesetzt werden als bei reinen Lesebereichen.
Modulzweck

Wofür das Modul gedacht ist

Finanzen ist Teil des aktiven Modul-Katalogs und deckt einen klaren Ausschnitt des Produktalltags ab.

GuV-Übersicht, Finanzplanung, USt-Auswertung und Managementsicht auf den tenantweiten Bestand. Im tenantweiten Kontext sorgt der Bereich dafür, dass wiederkehrende Entscheidungen, Stammdaten oder Übersichten nicht in Nebensysteme ausweichen müssen.

Finanzen ist als eigenständiger Produktbaustein gedacht. Gerade deshalb lohnt sich ein Blick darauf, wie der Bereich mit Rollen, Datenkontext und angrenzenden Modulen zusammenspielt.

Das Modul hat einen eigenen Einstiegspfad innerhalb des Produkts: /guv.
Praxisbezug

Typische Einsatzfälle

Diese Situationen zeigen, wann der Bereich in einem sauberen Rollout oder im laufenden Betrieb konkret Mehrwert liefert.

Finanzentwicklung verdichten

Die GuV führt Managementsicht, Forecast und zentrale Finanzkennzahlen in einer gemeinsamen Oberfläche zusammen.

Umsatzsteuer pro Zeitraum verfolgen

Die integrierte USt-Auswertung zeigt vereinnahmte Umsatzsteuer, bezahlte Vorsteuer und den Saldo nach Woche, Monat, Quartal oder Jahr inklusive kumulierter Zahllast für die interne Einordnung.

Mit Buchungen sauber abgleichen

Steuerwerte lassen sich mit Steuersatz-Aufschlüsselung und einem Filter für nur gemappte Buchungen fachlich kontrollieren, bevor Rückfragen oder Meldungen anstehen.

Modulverbindungen

Wie das Modul mit anderen Bereichen zusammenspielt

struct-i-vio ist als zusammenhängende Plattform gedacht. Diese Module liegen fachlich am nächsten bei diesem Bereich.

Sichtbarkeit

Berechtigungen und Sichtbarkeit

Die öffentliche Dokumentation beschreibt die Logik auf Produktniveau - nicht als technische Policy-Liste, sondern als Rollout-Leitfaden.

Die Sichtbarkeit wird tenantweit bzw. organisationsweit freigeschaltet und sollte zu Rolle und Verantwortungsbereich passen.
GuV und USt-Auswertung eignen sich für Management-, Finanz- oder klar delegierte Controlling-Rollen; die laufende Buchungspflege kann weiterhin enger über den Transaktionsbereich freigegeben werden.
Die USt-Auswertung unterstützt die interne Orientierung, ersetzt aber keine steuerliche Beratung und keine verbindliche fachliche Prüfung für Meldungen oder Abschlüsse.
Finanznahe, freigaberelevante oder buchungsnahe Aktionen sollten nur Rollen mit Management-, Finanz- oder klar delegierter Projektverantwortung erhalten.
Empfohlener Einsatz

Best Practices

So bleibt der Bereich bei Einführung und Nutzung anschlussfähig an den restlichen Produktfluss.

GuV-Dashboard, Forecast und USt-Auswertung gemeinsam lesen, damit Entwicklung, Zahllast und finanzielle Risiken nicht getrennt bewertet werden.
Periodenwechsel zwischen Woche, Monat, Quartal und Jahr bewusst nutzen, um Steuerbewegungen früh einzuordnen und nicht erst zum Abschluss zu reagieren.
Auffällige Steuerwerte regelmäßig mit gemappten Transaktionen und den genutzten Steuersätzen abgleichen und für verbindliche steuerliche Würdigungen die eigene Buchhaltung oder Steuerberatung einbeziehen.
Tiefer einsteigen

Entwickler Info

Empirisch erhobene Befunde aus Stage-2-Isolations-Probe inkl. 4-Schichten-Enforcement-Scan. Alle vier Actions sind RLS-only enforced — die API-Endpoints (forecast.ts, positions.ts, dashboard.ts, tax-analysis.ts) gaten ausschließlich auf Modul-Visibility (hasModulePermission). Aktionsspezifische Differenzierung lebt vollständig in der Datenbank.

Entwickler-Info aufklappen (5)

⚡ MERKWÜRDIGAlle 4 Actions sind RLS-only — kein API-Pre-Check pro Action

Der API-Layer prüft nur "kann der User das guv-Modul sehen?" (hasModulePermission). Verweigerung dieser Modul-Visibility liefert HTTP 403. Aber wer das Modul sieht, kommt durch zur DB — und nur dort entscheidet die jeweilige Action-Permission via RLS. Eine Verweigerung auf Action-Ebene führt nicht zu 403, sondern zu RLS-Violation (HTTP 500) bei Mutationen oder leeren Listen bei SELECT.

  • pages/api/guv-transactions/forecast.ts:22 (Modul-Visibility-Gate)
  • pages/api/guv-transactions/positions.ts:25 (Modul-Visibility-Gate)

view_forecast: RLS auf fact_budget_forecast SELECT — kein Backdoor

Einzige SELECT-Policy verweist exakt auf view_forecast. Keine alternativen OR-Klauseln, kein Cross-Module-Bypass. Saubere 1:1-Verdrahtung.

  • RLS: public.fact_budget_forecast :: fact_budget_forecast_select

⚡ MERKWÜRDIGimport_forecast ist ein abgeschwächtes edit_forecast (zwei INSERT-Policies, OR-Logik)

Auf fact_budget_forecast existieren ZWEI INSERT-Policies — fact_budget_forecast_insert (mit edit_forecast) und fact_budget_forecast_insert_import (mit import_forecast). PostgreSQL evaluiert sie mit OR: jede der beiden Permissions ALLEIN reicht für ein INSERT. import_forecast deckt aber nur INSERT ab, nicht UPDATE/DELETE — die liegen ausschließlich auf edit_forecast. Praktisch heisst das: wer import_forecast hat, kann Forecast-Zeilen anlegen, aber nicht ändern oder löschen. Der gleiche POST-Endpoint /api/guv-transactions/forecast bedient beide Permissions — kein gesonderter Import-Endpoint. Wer import_forecast als "nur Bulk-Import"-Permission ansieht, irrt: das Frontend kann einzelne Zeilen genauso anlegen, solange das WITH_CHECK eine der beiden Policies passt.

  • RLS: fact_budget_forecast_insert (edit_forecast)
  • RLS: fact_budget_forecast_insert_import (import_forecast)
  • pages/api/guv-transactions/forecast.ts (POST handler bedient beide)

⚡ MERKWÜRDIGmanage_positions deckt INSERT/UPDATE/DELETE auf dim_guv_positions

Lesen der Positionen erfordert dagegen NUR die Modul-Visibility (can_view_module_ui). Es gibt keine separate view_positions-Permission. Wer also das guv-Modul sehen kann, sieht alle Positionen — Verfeinern auf "darf nur ausgewählte sehen" ist mit dem aktuellen Schema nicht möglich.

  • RLS: public.dim_guv_positions :: guv_positions_select (uses can_view_module_ui)
  • RLS: guv_positions_insert / _update / _delete (manage_positions)

edit_forecast: drei RLS-Policies (INSERT/UPDATE/DELETE) — keine Cross-Module-Coupling

Die Policies stehen rein auf fact_budget_forecast, kein Verweis auf andere Module/Tables. Standalone-Permission. Mutations am Endpoint enden bei RLS-Violation in einem 500 mit der generischen Message "Fehler beim Speichern der Prognosen" — kein 403-Signal.

  • pages/api/guv-transactions/forecast.ts:96 (upsertForecasts)