Merge remote-tracking branch 'gitea/main'
Some checks failed
Build pitch-deck / build-push-deploy (push) Failing after 1m13s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-consent (push) Successful in 49s
CI / test-python-voice (push) Successful in 38s
CI / test-bqas (push) Successful in 31s

# Conflicts:
#	pitch-deck/components/slides/MilestonesSlide.tsx
#	pitch-deck/lib/finanzplan/engine.ts
This commit is contained in:
Benjamin Admin
2026-04-27 13:14:54 +02:00
21 changed files with 624 additions and 354 deletions

View File

@@ -1,8 +1,8 @@
/**
* GuV (Gewinn- und Verlustrechnung) — annual P&L computation
*
* Computes annual sums, EBIT, taxes (Gewerbesteuer, Körperschaftsteuer)
* with Verlustvortrag, and writes tax amounts back to Liquidität.
* Computes annual sums, EBIT, taxes (Gewerbesteuer, Koerperschaftsteuer)
* with Verlustvortrag, and writes tax amounts back to Liquiditaet.
*/
import { Pool } from 'pg'
@@ -23,7 +23,7 @@ export interface GuvContext {
}
/**
* Compute GuV annual values, taxes, and write tax values to Liquidität.
* Compute GuV annual values, taxes, and write tax values to Liquiditaet.
* Returns EBIT annual values.
*/
export async function computeGuV(
@@ -85,7 +85,7 @@ export async function computeGuV(
await pool.query('UPDATE fp_guv SET values = $1 WHERE scenario_id = $2 AND row_label = $3', [JSON.stringify(ergebnisNachSteuern), scenarioId, 'Ergebnis nach Steuern'])
await pool.query('UPDATE fp_guv SET values = $1 WHERE scenario_id = $2 AND row_label = $3', [JSON.stringify(ergebnisNachSteuern), scenarioId, 'Jahresüberschuss'])
// Write taxes to Liquidität (monthly = 1/12 of annual amount)
// Write taxes to Liquiditaet (monthly = 1/12 of annual amount)
await writeTaxToLiquiditaet(pool, findLiq('Gewerbesteuer'), gewerbesteuer)
await writeTaxToLiquiditaet(pool, findLiq('Körperschaftsteuer'), koerperschaftsteuer)
@@ -95,8 +95,8 @@ export async function computeGuV(
// --- Tax helpers ---
// Stockach 78333: Hebesatz 350%
// Gewerbesteuer = 3,5% × 3,5 = 12,25%
// Körperschaftsteuer = 15% + 5,5% Soli = 15,825%
// Gewerbesteuer = 3,5% x 3,5 = 12,25%
// Koerperschaftsteuer = 15% + 5,5% Soli = 15,825%
const GEWERBESTEUER_RATE = 0.035 * 3.5 // 12,25%
const KOERPERSCHAFTSTEUER_RATE = 0.15 * 1.055 // 15,825% (inkl. Soli)
@@ -112,14 +112,16 @@ function computeTaxes(ebit: AnnualValues) {
const gewinn = ebit[k] || 0
if (gewinn <= 0) {
// Verlust: keine Steuern, Verlustvortrag aufbauen
verlustvortrag += Math.abs(gewinn)
gewerbesteuer[k] = 0
koerperschaftsteuer[k] = 0
steuernGesamt[k] = 0
ergebnisNachSteuern[k] = Math.round(gewinn)
} else {
// Gewinn: Verlustvortrag verrechnen
// Bis 1 Mio EUR: 100% verrechenbar
// Über 1 Mio EUR: nur 60% verrechenbar (Mindestbesteuerung)
// Ueber 1 Mio EUR: nur 60% verrechenbar (Mindestbesteuerung)
let verrechenbar = 0
if (verlustvortrag > 0) {
if (gewinn <= 1000000) {