# TVöD-SuE Gehaltsrechner - Comprehensive Documentation

**Last Updated:** 2026-01-07

## Upcoming Changes - May 2026

**Effective Date:** May 1, 2026 (Entgelttabelle), January 1, 2026 (Jahressonderzahlung)

### Planned Entgelttabelle Changes

All Entgelttabelle values will increase by 2.8% effective May 1, 2026. This is a linear increase across all Entgeltgruppen (S2-S18) and Stufen (1-6).

**Example Changes:**

- S2 Stufe 1: 2.829,14 € → 2.908,36 € (+79,22 €)
- S18 Stufe 6: 6.773,65 € → 6.963,31 € (+189,66 €)

**Impact:** All calculations based on Tabellenentgelt will increase by 2.8%, including:

- Grund-Stundenlohn
- Zeitzuschläge
- Überstunden
- Monatsbrutto
- Jahressonderzahlung (combined with percentage change)

### Planned Jahressonderzahlung Changes

Jahressonderzahlung percentages will change significantly effective calendar year 2026 (January 1, 2026):

**Current Values (Effective January 1, 2026):**

**VKA:**
- EG 1-8 (S2-S8b): 90%
- EG 9-11 (S9-S11b): 85%
- EG 12-13 (S12-S13): 85%
- EG 14-15 (S14-S18): 85%

**Bund:**
- EG 1-8 (S2-S8b): 95%
- EG 9-11 (S9-S11b): 90%
- EG 12-13 (S12-S13): 90%
- EG 14-15 (S14-S18): 75%

**Previous Values (Before January 1, 2026):**

- EG 1-8 (S2-S8b): 25%
- EG 9-11 (S9-S11b): 30%
- EG 12-13 (S12-S13): 35%
- EG 14-15 (S14-S18): 40%

**Impact:** This change dramatically increases annual gross salaries for all employees. Combined with the Entgelttabelle increase, employees will see 6.5-8.3% increases in annual gross salary.

**Calculation Method:** Jahressonderzahlung = Tabellenentgelt × JSZ_Prozentsatz × (Beschäftigungsumfang / 100)

### Bund S15-S18 Placeholder Correction

Bund S15-S18 currently has placeholder values in the code that don't match VKA values. Research indicates Bund values should match VKA for all S-Gruppen. This will be corrected in the May 2026 implementation.

### Implementation Documentation

For detailed implementation information, see:

- `TVOED_SUE_MAY_2026_CHANGES.md` - Complete change log
- `TVOED_SUE_MAY_2026_IMPLEMENTATION_GUIDE.md` - Step-by-step implementation guide
- `TVOED_SUE_2026_VERIFICATION.md` - Verification spreadsheet with all values
- `TVOED_SUE_MAY_2026_UPDATE_CHECKLIST.md` - Comprehensive update checklist

**Note:** These changes are documented but NOT yet implemented. The calculator currently uses values effective January 1, 2026 (pre-May increase). Implementation will occur in late April 2026.

## Tool Overview

### Basic Information

- **Tool Name:** TVöD-SuE Gehaltsrechner (TVöD-SuE Salary Calculator)
- **Slug:** `tvoed-sue-gehaltsrechner`
- **URL:** `https://www.ordio.com/tools/tvoed-sue-gehaltsrechner`
- **Status:** Available
- **Last Updated:** 2026-01-07

### Purpose

Comprehensive salary calculator for TVöD-SuE (Tarifvertrag für den öffentlichen Dienst - Sozial- und Erziehungsdienst) employees. Calculates gross and net salary including SuE-Zulage, time surcharges (Nacht/Sonntag/Feiertag), functional allowances, overtime, annual bonus (Jahressonderzahlung), and optional net estimation with German tax calculation.

### Use Cases

- **Erzieher (Educators):** Calculate salary with SuE-Zulage
- **Sozialpädagogen:** Calculate salary with all components
- **HR Professionals:** Calculate salaries for public sector employees
- **Job Seekers:** Understand salary structure in public sector
- **Employees:** Track Stufenlaufzeit (experience level progression)

### Real-World Scenarios

**Scenario 1: Erzieher Calculating Salary with SuE-Zulage**

- **User:** Educator (Erzieher) calculating monthly salary
- **Situation:** Works in VKA, Entgeltgruppe S8b, Stufe 3, 100% employment, wants to know total salary
- **Goal:** Calculate gross salary including SuE-Zulage and all components
- **Steps:**
  1. Select Tarifbereich: VKA
  2. Select Entgeltgruppe: S8b
  3. Select Stufe: 3
  4. Enter Beschäftigungsumfang: 100%
  5. Enable SuE-Zulage
  6. Review calculated gross salary
- **Result:** Sees €3,800/month gross (base + SuE-Zulage), can plan finances
- **Related Tools:** [Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md) (for net calculation), [Zuschlagsrechner](zuschlagsrechner-documentation.md) (for surcharges)

**Scenario 2: HR Professional Processing Payroll**

- **User:** HR professional calculating salaries for multiple employees
- **Situation:** Need to calculate salaries for 5 Erzieher with different Stufen and employment levels
- **Goal:** Process accurate payroll calculations
- **Steps:**
  1. Enter employee details (Entgeltgruppe, Stufe, Beschäftigungsumfang)
  2. Enable SuE-Zulage for each
  3. Add time surcharges if applicable
  4. Review calculated salaries
  5. Export for payroll processing
- **Result:** Sees accurate salary calculations for all employees, can process payroll
- **Related Tools:** [Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md) (for net calculation), [Zuschlagsrechner](zuschlagsrechner-documentation.md) (for surcharges)

**Scenario 3: Job Seeker Evaluating Offer**

- **User:** Job seeker evaluating public sector job offer
- **Situation:** Offered position as Sozialpädagoge, S12 Stufe 1, 80% employment, want to know salary
- **Goal:** Understand total compensation including annual bonus
- **Steps:**
  1. Enter position details
  2. Enter employment level: 80%
  3. Enable Jahressonderzahlung calculation
  4. Review monthly and annual gross salary
  5. Compare with other offers
- **Result:** Sees €3,200/month gross, €38,400 annual gross (including bonus), can evaluate offer
- **Related Tools:** [Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md) (for net comparison), [Stundenlohnrechner](stundenlohnrechner-documentation.md) (for hourly rate)

**Scenario 4: Employee Tracking Career Progression**

- **User:** Employee tracking salary progression
- **Situation:** Currently S8b Stufe 2, will advance to Stufe 3 next year, want to calculate increase
- **Goal:** Understand salary increase from Stufen progression
- **Steps:**
  1. Calculate current salary (S8b Stufe 2)
  2. Calculate future salary (S8b Stufe 3)
  3. Compare salaries
  4. Review increase amount and percentage
- **Result:** Sees €150/month increase, can plan career progression
- **Related Tools:** [Prozentrechner](prozentrechner-documentation.md) (for percentage increase), [Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md) (for net increase)

### Target Audience

- TVöD-SuE employees (Erzieher, Sozialpädagogen)
- HR professionals in public sector
- Job seekers in education/social work
- Employees tracking career progression

### Visual Description

**Hero Section:**

- Layout: Centered hero section with badge, headline, and description
- Badge: "TVöD-SuE Rechner" badge
- Headline: Large bold headline "Berechne dein TVöD-SuE Gehalt für 2026" with blue accent
- Description: Paragraph explaining calculator features
- Background: Subtle dot pattern background

**Visual Examples (To Be Added):**

**Hero Section Screenshot:**

- Location: `docs/guides/tools-pages/screenshots/tvoed-sue-gehaltsrechner-hero.png`
- Description: Full hero section showing badge, headline, description
- Dimensions: 1920x1080 (desktop), 375x667 (mobile)
- Shows: Complete above-fold content with visual styling

**Calculator Form Screenshot:**

- Location: `docs/guides/tools-pages/screenshots/tvoed-sue-gehaltsrechner-form.png`
- Description: Calculator form showing Entgeltgruppe, Stufe, Beschäftigungsumfang inputs
- Dimensions: 1920x1080 (desktop)
- Shows: Collapsible sections, input fields, SuE-Zulage toggle, calculate button

**Results Display Screenshot:**

- Location: `docs/guides/tools-pages/screenshots/tvoed-sue-gehaltsrechner-results.png`
- Description: Results section showing gross salary, breakdown, annual bonus
- Dimensions: 1920x1080 (desktop)
- Shows: Monthly gross, SuE-Zulage breakdown, Jahressonderzahlung, net estimation

**Salary Structure Diagram:**

- Location: `docs/guides/tools-pages/diagrams/tvoed-sue-gehaltsrechner-structure.svg`
- Description: Visual diagram showing TVöD-SuE salary structure
- Format: SVG (vector) for scalability
- Shows: Entgeltgruppen, Stufen, SuE-Zulage, Jahressonderzahlung structure

**Calculator Form:**

- Layout: Centered single-column layout with collapsible sections
- Basic Information Section (Always Visible):
  - Tarifbereich (Tariff Area): Radio buttons (VKA/Bund)
  - Wochenarbeitszeit (Weekly Hours): Number input with "Std/Woche" addon
  - Beschäftigungsumfang (Employment Percentage): Number input with "%" addon (auto-synced with weekly hours)
  - S-Gruppe (Pay Grade): Dropdown (S2-S18)
  - Stufe (Experience Level): Dropdown (1-6, filtered by S-Gruppe)
- Additional Options Section (Collapsible):
  - Stufen-Tracking: Toggle + date input for tracking progression
  - SuE-Zulage Anpassung: Toggle + custom amount input
- Funktionszulagen Section (Collapsible):
  - Checkboxes for: Leitung klein/mittel/groß, Stellv. Leitung, Heilpädagogik, Sonderpädagogik
- Zeitzuschläge Section (Collapsible):
  - Input fields for: Nachtstunden (20%), Sonntagsstunden (25%), Feiertagsstunden (135%), Samstagsstunden (0%)
- Advanced Calculations Section (Collapsible):
  - Überstunden: Hours + factor input
  - Jahressonderzahlung: Toggle
  - Netto-Berechnung: Toggle + tax settings (Steuerklasse, Bundesland, Kinderfreibetrag, Kirchensteuer, Krankenversicherung, Pflegeversicherung)
- Calculate Button: Triggers calculation and scrolls to results
- Styling: Blue accent color (#4D8EF3), gradient backgrounds for sections, rounded corners

**Result Display:**

- Layout: Below form, centered
- Results Cards: Multiple cards showing:
  - Tabellenentgelt (Base Salary)
  - SuE-Zulage (SuE Allowance)
  - Funktionszulagen (Functional Allowances)
  - Zeitzuschläge (Time Surcharges) with breakdown
  - Überstunden (Overtime)
  - Monatsbrutto (Monthly Gross)
  - Jahressonderzahlung (Annual Bonus)
  - Jahresbrutto (Annual Gross)
  - Netto (Net Salary, if calculated) with breakdown
  - Stufen-Info (Stufe progression info, if enabled)
- Email Gating: Results gated behind email collection (first time only)
- Styling: Green accent for positive values, responsive cards

### UI/UX Flow

**Initial Load:**

- Page loads with hero section visible
- Calculator form shows default values:
  - Tarifbereich: VKA
  - Wochenarbeitszeit: 39.0 hours/week
  - Beschäftigungsumfang: 100%
  - S-Gruppe: S8a
  - Stufe: 1
  - All toggles: Off
  - All surcharges: 0
- Additional sections collapsed
- No results displayed initially

**User Interaction Flow:**

1. User selects Tarifbereich (VKA/Bund)
2. User enters Wochenarbeitszeit (auto-updates Beschäftigungsumfang)
3. User selects S-Gruppe (filters available Stufen)
4. User selects Stufe
5. User optionally expands sections and fills additional data
6. User clicks "Berechnen" button
7. Calculation runs
8. If first calculation: Email modal appears
9. Email collected and stored in localStorage
10. Results display below form
11. User can modify inputs and recalculate
12. Subsequent calculations: No email prompt (email remembered)

**Email Gating Flow:**

1. User calculates salary
2. If email not collected: Email modal appears
3. User enters email
4. Email validated
5. Email sent to HubSpot API
6. Email stored in localStorage
7. Results unlocked
8. Subsequent calculations: No email prompt

**Stufen-Tracking Flow:**

1. User enables Stufen-Tracking toggle
2. User enters start date in current Stufe
3. User calculates salary
4. Results show: Remaining months until next Stufe, Next Stufe number

## Technical Documentation

### File Structure

- **PHP File:** `v2/pages/tools_tvoed_sue.php` (3,666 lines)
- **JavaScript:** Inline Alpine.js component (embedded in PHP file)
- **CSS:** Uses shared `v2/css/tools-pages.css` + extensive inline styles
- **Data:** Embedded JavaScript object `TVOED_SUE_DATA` (line 883)

### Code Organization

**Alpine.js Component Structure:**

- Main component: Inline Alpine.js component (line 1042 in PHP file)
- All logic inline in PHP file
- No external JS file

**State Management:**

- Alpine.js reactive state for all UI state
- localStorage for email collection
- Embedded data object for Entgelttabelle

**Code Patterns:**

- Alpine.js reactive data properties
- Real-time calculation on button click
- Auto-sync between Wochenarbeitszeit and Beschäftigungsumfang
- Filtered Stufen dropdown based on S-Gruppe
- Email gating for results

### Calculation Mode

**Single Mode: Comprehensive TVöD-SuE Calculator**

- **Visual Description:** Single comprehensive calculator form
- **Purpose:** Calculate complete TVöD-SuE salary with all components
- **Input Fields:**
  - `tarifbereich` (radio): VKA or Bund
  - `wochenarbeitszeit` (number input): Weekly hours (1-60, step 0.5)
  - `beschaeftigungsanteil` (number input): Employment percentage (10-200%, step 5%, auto-synced)
  - `sGruppe` (select): S-Gruppe (S2-S18)
  - `stufe` (select): Stufe (1-6, filtered by S-Gruppe)
  - `calculateStufenTime` (toggle): Enable Stufen-Tracking
  - `stufeStartDate` (date input): Start date in current Stufe (if tracking enabled)
  - `sueZulageCustom` (toggle): Custom SuE-Zulage override
  - `sueZulageOverride` (number input): Custom SuE-Zulage amount (if custom enabled)
  - `funktionszulagen` (checkboxes): Object with keys: leitung_klein, leitung_mittel, leitung_gross, stellv_leitung, heilpaedagogik, sonderpaedagogik
  - `zeitzuschlage` (number inputs): Object with keys: nacht, sonntag, feiertag, feiertag_ohne_arbeitstag, samstag (hours per month)
  - `ueberstunden` (number input): Overtime hours per month (0+, step 0.5)
  - `ueberstundenFaktor` (number input): Overtime multiplier (0.5-3, step 0.1, default 1.0)
  - `includeJSZ` (toggle): Include Jahressonderzahlung
  - `includeNetto` (toggle): Include net calculation
  - `steuerklasse` (select): Tax class (1-6)
  - `bundesland` (select): Federal state (16 German states)
  - `kinderfreibetrag` (number input): Number of children (0-10, step 0.5)
  - `kirchensteuerpflichtig` (toggle): Church tax obligation
  - `krankenversicherung` (radio): Gesetzlich or Privat
  - `kvZusatzbeitrag` (number input): Additional health insurance contribution (%, default 1.7)
  - `pkvBeitrag` (number input): Private health insurance premium (€, if privat)
  - `pflegeversicherungKinderlos` (toggle): Childless care insurance surcharge
- **Output Fields:**
  - `tabellenentgelt` (display): Base salary from Entgelttabelle
  - `sueZulage` (display): SuE-Zulage amount
  - `funktionszulagenSumme` (display): Sum of functional allowances
  - `zuschlageSumme` (display): Sum of time surcharges
  - `zuschlagDetails` (display): Breakdown of each time surcharge
  - `ueberstundenBetrag` (display): Overtime amount
  - `monatsbrutto` (display): Monthly gross salary
  - `jahressonderzahlung` (display): Annual bonus
  - `jszProzentsatz` (display): Annual bonus percentage
  - `jahresbruttoOhneJSZ` (display): Annual gross without bonus
  - `jahresbruttoMitJSZ` (display): Annual gross with bonus
  - `netto` (display): Net salary (if calculated)
  - `nettoDetails` (display): Net breakdown (social security, taxes)
  - `monatsstunden` (display): Monthly hours
  - `grundStundenlohn` (display): Base hourly wage
  - `stufenInfo` (display): Stufe progression info (if tracking enabled)
- **Formula:**

  ```
  // 1. Basismonate & Stunden
  Monatsstunden = Wochenarbeitszeit × 52 / 12

  // 2. Tabellenentgelt (from Entgelttabelle)
  Tabellenentgelt = Entgelttabelle[Tarifbereich][S-Gruppe][Stufe]

  // 3. Grund-Stundenlohn (always based on standard full-time hours)
  Standard Wochenarbeitszeit = 39.0 hours/week (VKA/Bund)
  Standard Monatsstunden = Standard Wochenarbeitszeit × 52 / 12
  Grund-Stundenlohn = Tabellenentgelt / Standard Monatsstunden

  // 4. SuE-Zulage
  If sueZulageCustom:
    SuE-Zulage = sueZulageOverride
  Else:
    SuE-Zulage = Entgelttabelle.sue_zulage[Tarifbereich][S-Gruppe]

  // 5. Funktionszulagen (monthly)
  Funktionszulagen Summe = sum of selected funktionszulagen amounts

  // 6. Zeitzuschläge (§8 TVöD) with stacking rules
  For each zeitzuschlage type:
    If type === 'percent':
      Zuschlag Betrag = Grund-Stundenlohn × (Prozentsatz / 100) × Stunden
    Else if type === 'fixed':
      Zuschlag Betrag = Fixbetrag × Stunden

  Apply stacking rules:
    - Feiertag replaces Sonntag and Nacht
    - Nacht and Sonntag stack with each other

  Zeitzuschläge Summe = sum of all valid surcharges (after stacking rules)

  // 7. Überstunden
  Überstunden Betrag = Grund-Stundenlohn × Überstunden Stunden × Überstunden Faktor

  // 8. Monatsbrutto (full-time)
  Monatsbrutto = Tabellenentgelt + SuE-Zulage + Funktionszulagen Summe + Zeitzuschläge Summe + Überstunden Betrag

  // Apply part-time reduction
  If beschaeftigungsanteil < 100:
    Monatsbrutto = Monatsbrutto × (beschaeftigungsanteil / 100)

  // 9. Jahressonderzahlung (projection)
  If includeJSZ:
    EG Cluster = Entgelttabelle.eg_mapping[S-Gruppe]
    JSZ Prozentsatz = Entgelttabelle.jahressonderzahlung[Tarifbereich][EG Cluster]
    Jahressonderzahlung = Tabellenentgelt × JSZ Prozentsatz

    // Apply part-time reduction
    If beschaeftigungsanteil < 100:
      Jahressonderzahlung = Jahressonderzahlung × (beschaeftigungsanteil / 100)
  Else:
    Jahressonderzahlung = 0

  // 10. Jahresbrutto
  Jahresbrutto ohne JSZ = Monatsbrutto × 12
  Jahresbrutto mit JSZ = Jahresbrutto ohne JSZ + Jahressonderzahlung

  // 11. Netto (optional, simplified German tax calculation)
  If includeNetto:
    // Social security contributions (AN-Anteil, BBG-begrenzt)
    BBG KV = 5512.50€
    BBG PV = 5512.50€
    BBG RV = 8050€

    // KV: min(monatsbrutto, BBG_KV) × (kv_satz_an + zusatzbeitrag) if gesetzlich
    If krankenversicherung === 'gesetzlich':
      KV Basis = min(monatsbrutto, BBG KV)
      KV Satz = 0.073 + (kvZusatzbeitrag / 100)
      KV Beitrag = KV Basis × KV Satz
    Else if krankenversicherung === 'privat':
      KV Beitrag = pkvBeitrag

    // PV: min(monatsbrutto, BBG_PV) × satz_pv (add + zuschlag_kinderlos if applicable)
    PV Basis = min(monatsbrutto, BBG PV)
    PV Satz = 0.017
    If pflegeversicherungKinderlos:
      PV Satz += 0.006
    PV Beitrag = PV Basis × PV Satz

    // RV: min(monatsbrutto, BBG_RV) × rv_satz_an
    RV Basis = min(monatsbrutto, BBG RV)
    RV Beitrag = RV Basis × 0.093

    // ALV: min(monatsbrutto, BBG_RV) × alv_satz_an
    ALV Beitrag = RV Basis × 0.013

    Sozialabgaben Summe = KV Beitrag + PV Beitrag + RV Beitrag + ALV Beitrag

    // Simplified tax calculation (approximation)
    Jahresbrutto = Monatsbrutto × 12
    Steuerfreibetrag = 12096€
    Kinderfreibetrag = kinderfreibetrag × 9600€

    Steuerbares Einkommen = max(0, Jahresbrutto - Steuerfreibetrag - Kinderfreibetrag)

    // Progressive tax brackets (simplified)
    If steuerbaresEinkommen <= 10908:
      Lohnsteuer = steuerbaresEinkommen × 0.14
    Else if steuerbaresEinkommen <= 17543:
      Lohnsteuer = 1527.12 + (steuerbaresEinkommen - 10908) × 0.24
    Else if steuerbaresEinkommen <= 66760:
      Lohnsteuer = 3119.52 + (steuerbaresEinkommen - 17543) × 0.32
    Else if steuerbaresEinkommen <= 277826:
      Lohnsteuer = 12389 + (steuerbaresEinkommen - 66760) × 0.42
    Else:
      Lohnsteuer = 100926 + (steuerbaresEinkommen - 277826) × 0.45

    // Apply tax class multipliers
    Tax Class Multipliers = {
      '1': 1.0, '2': 0.85, '3': 0.6, '4': 1.0, '5': 1.4, '6': 1.3
    }
    Lohnsteuer = Lohnsteuer × Tax Class Multipliers[steuerklasse]

    Lohnsteuer Monatlich = Lohnsteuer / 12

    // Soli: apply thresholds (only if Lohnsteuer > €16,956 annually)
    If Lohnsteuer > 16956:
      Soli Jährlich = (Lohnsteuer - 16956) × 0.055
    Else:
      Soli Jährlich = 0
    Soli Monatlich = Soli Jährlich / 12

    // Kirchensteuer: 8% (BW/BY) or 9% (others) on Lohnsteuer
    If bundesland === 'Bayern' or bundesland === 'Baden-Württemberg':
      Kirchensteuer Satz = 0.08
    Else:
      Kirchensteuer Satz = 0.09

    If kirchensteuerpflichtig:
      Kirchensteuer Monatlich = Lohnsteuer Monatlich × Kirchensteuer Satz
    Else:
      Kirchensteuer Monatlich = 0

    Netto = Monatsbrutto - Sozialabgaben Summe - Lohnsteuer Monatlich - Soli Monatlich - Kirchensteuer Monatlich
  Else:
    Netto = Monatsbrutto

  // 12. Stufen-Info (if tracking enabled)
  If calculateStufenTime and stufeStartDate:
    Start Date = stufeStartDate
    Current Date = today
    Months Diff = (Current Date Year - Start Date Year) × 12 + (Current Date Month - Start Date Month)
    Stufenlaufzeit = Entgelttabelle.stufenlaufzeiten[Stufe]
    Rest Monate = max(0, Stufenlaufzeit - Months Diff)
    Nächste Stufe = min(6, Stufe + 1)
  ```

- **Example Calculation:**

  ```
  Input: VKA, S8a, Stufe 3, 39h/week, 100%, SuE-Zulage enabled, 5 Nachtstunden, 2 Sonntagsstunden
  Calculation:
    Tabellenentgelt = 3868.50€ (from Entgelttabelle)
    Grund-Stundenlohn = 3868.50 / 169.0 = 22.89€/h
    SuE-Zulage = 200€
    Nachtzuschlag = 22.89 × 0.20 × 5 = 22.89€
    Sonntagszuschlag = 22.89 × 0.25 × 2 = 11.45€
    Monatsbrutto = 3868.50 + 200 + 22.89 + 11.45 = 4102.84€
  Result: Monatsbrutto 4102.84€
  ```

- **Validation:**
  - Tarifbereich: Required (VKA or Bund)
  - S-Gruppe: Required (must exist in Entgelttabelle)
  - Stufe: Required (must exist for selected S-Gruppe)
  - Wochenarbeitszeit: 1-60 hours, required
  - Beschäftigungsumfang: 10-200%, required
  - Error messages: Display in alert dialogs

### Entgelttabelle Structure

**Data Format:**

- Embedded JavaScript object `TVOED_SUE_DATA` (line 883)
- Version: "2026-01-20" (✅ Updated to "2026-01-01")
- Tarifbereiche: VKA, Bund
- S-Gruppen: S2, S3, S4, S7, S8a, S8b, S9, S11a, S11b, S12, S13, S14, S15, S16, S17, S18
- Stufen: 1, 2, 3, 4, 5, 6
- Structure: `tabelle[Tarifbereich][S-Gruppe][Stufe]` = monthly salary in €

**SuE-Zulage Structure:**

- Structure: `sue_zulage[Tarifbereich][S-Gruppe]` = monthly allowance in €
- Values:
  - S2-S7: 150€
  - S8a-S8b: 200€
  - S9-S11b: 250€
  - S12-S13: 300€
  - S14-S18: 350€

**Funktionszulagen Structure:**

- Structure: `funktionszulagen[key]` = monthly allowance in €
- Values:
  - leitung_klein: 150€
  - leitung_mittel: 300€
  - leitung_gross: 450€
  - stellv_leitung: 200€
  - heilpaedagogik: 250€
  - sonderpaedagogik: 300€

**Zeitzuschläge Structure:**

- Structure: `zeitzuschlaege[key]` = object with type, value, stacking_rules
- Types:
  - nacht: 20% (percent-based, stacks with sonntag)
  - sonntag: 25% (percent-based, stacks with nacht)
  - feiertag: 135% (percent-based, replaces sonntag and nacht)
  - feiertag_ohne_arbeitstag: 135% (percent-based, replaces sonntag and nacht)
  - samstag: 0% (no surcharge)
  - schichtzulage: 0€ (fixed, currently unused)
  - wechselschicht: 0€ (fixed, currently unused)

**Jahressonderzahlung Structure:**

- Structure: `jahressonderzahlung[Tarifbereich][EG_Cluster]` = percentage (decimal)
- EG Clusters (Effective January 1, 2026):
  - EG_1_8: 90% (S2-S8b)
  - EG_9_11: 85% (S9-S11b)
  - EG_12_13: 85% (S12-S13)
  - EG_14_15: 85% (S14-S18)

**Stufenlaufzeiten Structure:**

- Structure: `stufenlaufzeiten[Stufe]` = months required
- Values:
  - Stufe 1: 12 months
  - Stufe 2: 24 months
  - Stufe 3: 36 months
  - Stufe 4: 48 months
  - Stufe 5: 60 months
  - Stufe 6: null (final level)

### Constants and Thresholds

**2026 Values:**

- **Data Version:** "2026-01-01"
- **Standard Wochenarbeitszeit:** 39.0 hours/week (VKA/Bund)
- **SuE-Zulage:** Verify 2026 values from official TVöD-SuE sources
- **Entgelttabellen:** Update to 2026 pay tables (✅ CRITICAL UPDATE NEEDED)
- **Zeitzuschläge:** Verify 2026 rates (currently: Nacht 20%, Sonntag 25%, Feiertag 135%)
- **Jahressonderzahlung:** ✅ 90%/85% (2026, effective January 1, 2026)
- **Stufenlaufzeiten:** Verify 2026 durations (currently: 12-60 months)
- **BBG KV/PV:** ✅ 5,812.50€ (2026, verified 2026-01-07)
- **BBG RV:** ✅ 8,450€ (2026, verified 2026-01-07)
- **Steuerfreibetrag:** ✅ 12,348€ (2026, verified 2026-01-07)
- **Kinderfreibetrag:** ✅ 6,828€ (2026, verified 2026-01-07)
- **KV Satz AN:** ✅ 7.3% (unchanged for 2026)
- **PV Satz:** ✅ 1.8% (unchanged for 2026)
- **PV Zuschlag Kinderlos:** ✅ 0.6% (unchanged for 2026)
- **RV Satz AN:** ✅ 9.3% (unchanged for 2026)
- **ALV Satz AN:** ✅ 1.3% (unchanged for 2026)
- **Soli Grenze:** ✅ 20,350€ (2026, verified 2026-01-07)
- **Soli Satz:** ✅ 5.5% (unchanged for 2026)

**Previous Values (for reference):**

- All values currently show 2026 data - needs comprehensive 2026 update

### Validation Rules

- **Tarifbereich:** Required (VKA or Bund)
- **S-Gruppe:** Required (must exist in Entgelttabelle)
- **Stufe:** Required (must exist for selected S-Gruppe)
- **Wochenarbeitszeit:** min=1, max=60, step=0.5
- **Beschäftigungsumfang:** min=10%, max=200%, step=5%
- **Überstunden:** min=0, step=0.5
- **Überstunden Faktor:** min=0.5, max=3, step=0.1
- **Kinderfreibetrag:** min=0, max=10, step=0.5
- **KV Zusatzbeitrag:** Default 1.7%

### Edge Cases Handled

- Different Tarifbereiche (VKA/Bund)
- Different S-Gruppen (S2-S18)
- Different Stufen (1-6, filtered by S-Gruppe)
- Part-time employment (Beschäftigungsumfang < 100%)
- Custom SuE-Zulage override
- Multiple Funktionszulagen
- Zeitzuschläge stacking rules (Feiertag replaces Nacht/Sonntag)
- Overtime calculations
- Annual bonus proration for part-time
- Net calculation with different tax classes
- Net calculation with different insurance types
- Stufen-Tracking with date calculation

### Dependencies

- **External Libraries:** None
- **APIs:** HubSpot Forms API v3 (email collection via `/v2/api/collect-lead.php`)
- **Alpine.js:** Used for reactive UI (version from base includes)
- **localStorage:** Email collection
- **Inline JavaScript:** All logic embedded in PHP file (3,666 lines)

## Functions & Methods

### Main Component Function

**Function:** Inline Alpine.js component

- **Location:** `v2/pages/tools_tvoed_sue.php:1042`
- **Purpose:** Main Alpine.js component for TVöD-SuE calculator
- **Dependencies:** Alpine.js framework, embedded TVOED_SUE_DATA
- **Side Effects:** Manages DOM state, triggers calculations, manages email collection

### Calculation Functions

**Function:** `calculateSalary()`

- **Location:** `v2/pages/tools_tvoed_sue.php:1168`
- **Purpose:** Main salary calculation function
- **Parameters:** None (uses component state)
- **Returns:** void (sets component state)
- **Dependencies:** `TVOED_SUE_DATA`, validation functions
- **Side Effects:** Updates results, triggers email modal if needed

**Function:** `updateBeschaeftigungsanteil()`

- **Location:** `v2/pages/tools_tvoed_sue.php:1138`
- **Purpose:** Auto-update Beschäftigungsumfang based on Wochenarbeitszeit
- **Formula:** `Beschäftigungsumfang = (Wochenarbeitszeit / Standard Wochenarbeitszeit) × 100`

**Function:** `updateWochenarbeitszeit()`

- **Location:** `v2/pages/tools_tvoed_sue.php:1153`
- **Purpose:** Auto-update Wochenarbeitszeit based on Beschäftigungsumfang
- **Formula:** `Wochenarbeitszeit = (Beschäftigungsumfang / 100) × Standard Wochenarbeitszeit`

**Function:** `getAvailableStufen()`

- **Location:** `v2/pages/tools_tvoed_sue.php:1458`
- **Purpose:** Filter available Stufen based on selected S-Gruppe
- **Returns:** Array of available Stufen (1-6)

**Function:** `getStufeLabel(stufe)`

- **Location:** `v2/pages/tools_tvoed_sue.php:1472`
- **Purpose:** Get descriptive label for Stufe
- **Returns:** String (e.g., "Stufe 1 - Berufseinstieg")

**Function:** `getSgruppeLabel(gruppe)`

- **Location:** `v2/pages/tools_tvoed_sue.php:1485`
- **Purpose:** Get descriptive label for S-Gruppe
- **Returns:** String (e.g., "S8a - Erzieher/in")

**Function:** `formatCurrency(amount)`

- **Location:** `v2/pages/tools_tvoed_sue.php:1508`
- **Purpose:** Format amount as German currency
- **Returns:** String (e.g., "3.868,50")

**Function:** `secureValue(value, placeholder)`

- **Location:** `v2/pages/tools_tvoed_sue.php:1519`
- **Purpose:** Show placeholder if email not collected, actual value if collected
- **Returns:** String (value or placeholder)

**Function:** `secureCurrency(amount, placeholder)`

- **Location:** `v2/pages/tools_tvoed_sue.php:1527`
- **Purpose:** Show placeholder if email not collected, formatted currency if collected
- **Returns:** String (formatted currency or placeholder)

### Email Collection Functions

**Function:** `submitEmail()`

- **Location:** `v2/pages/tools_tvoed_sue.php:1535`
- **Purpose:** Submit email to HubSpot API
- **Dependencies:** HubSpot Forms API v3, UTM tracking
- **Side Effects:** Stores email in localStorage, unlocks results

**Function:** `checkEmailStatus()`

- **Location:** `v2/pages/tools_tvoed_sue.php:1645`
- **Purpose:** Check if email was already collected
- **Dependencies:** localStorage
- **Side Effects:** Sets emailCollected flag if email found

## Formulas & Calculations

### Primary Formulas

**Salary Calculation:**

```
Monatsstunden = Wochenarbeitszeit × 52 / 12
Tabellenentgelt = Entgelttabelle[Tarifbereich][S-Gruppe][Stufe]
Standard Monatsstunden = 39.0 × 52 / 12 = 169.0
Grund-Stundenlohn = Tabellenentgelt / Standard Monatsstunden

SuE-Zulage = sueZulageCustom ? sueZulageOverride : Entgelttabelle.sue_zulage[Tarifbereich][S-Gruppe]
Funktionszulagen Summe = sum of selected funktionszulagen amounts

// Zeitzuschläge with stacking rules
For each zeitzuschlage:
  If type === 'percent':
    Betrag = Grund-Stundenlohn × (value / 100) × stunden
  Else if type === 'fixed':
    Betrag = value × stunden

Apply stacking rules:
  - Feiertag replaces Sonntag and Nacht
  - Nacht and Sonntag stack

Zeitzuschläge Summe = sum of valid surcharges

Überstunden Betrag = Grund-Stundenlohn × Überstunden Stunden × Überstunden Faktor

Monatsbrutto = Tabellenentgelt + SuE-Zulage + Funktionszulagen Summe + Zeitzuschläge Summe + Überstunden Betrag

If beschaeftigungsanteil < 100:
  Monatsbrutto = Monatsbrutto × (beschaeftigungsanteil / 100)

Jahressonderzahlung = Tabellenentgelt × JSZ Prozentsatz × (beschaeftigungsanteil / 100)
Jahresbrutto = Monatsbrutto × 12 + Jahressonderzahlung
```

**Net Calculation (Simplified):**

```
KV Beitrag = krankenversicherung === 'gesetzlich' ? min(monatsbrutto, BBG KV) × (0.073 + kvZusatzbeitrag/100) : pkvBeitrag
PV Beitrag = min(monatsbrutto, BBG PV) × (0.017 + (pflegeversicherungKinderlos ? 0.006 : 0))
RV Beitrag = min(monatsbrutto, BBG RV) × 0.093
ALV Beitrag = min(monatsbrutto, BBG RV) × 0.013

Sozialabgaben Summe = KV Beitrag + PV Beitrag + RV Beitrag + ALV Beitrag

Steuerbares Einkommen = max(0, Jahresbrutto - 12096 - (kinderfreibetrag × 9600))

// Progressive tax brackets (simplified)
Lohnsteuer = calculate based on brackets × tax class multiplier

Soli = Lohnsteuer > 16956 ? (Lohnsteuer - 16956) × 0.055 : 0
Kirchensteuer = kirchensteuerpflichtig ? Lohnsteuer Monatlich × (bundesland === 'Bayern' || bundesland === 'Baden-Württemberg' ? 0.08 : 0.09) : 0

Netto = Monatsbrutto - Sozialabgaben Summe - Lohnsteuer Monatlich - Soli Monatlich - Kirchensteuer Monatlich
```

**Stufen-Tracking:**

```
Months Diff = (Current Date Year - Start Date Year) × 12 + (Current Date Month - Start Date Month)
Stufenlaufzeit = Entgelttabelle.stufenlaufzeiten[Stufe]
Rest Monate = max(0, Stufenlaufzeit - Months Diff)
Nächste Stufe = min(6, Stufe + 1)
```

### Legal Basis

- **TVöD-SuE:** Tarifvertrag für den öffentlichen Dienst - Sozial- und Erziehungsdienst
- **Entgelttabellen:** Published annually by TVöD-SuE
- **SuE-Zulage:** Official TVöD-SuE regulations
- **Zeitzuschläge:** §8 TVöD (Tarifvertrag)
- **Jahressonderzahlung:** TVöD-SuE annual bonus regulations
- **Stufenlaufzeiten:** TVöD-SuE experience level progression rules
- **German Tax Law:** Simplified progressive tax calculation
- **Social Security:** German social security contribution rates (KV, PV, RV, ALV)

### Step-by-Step Calculation Examples

**Example 1: Basic Calculation**

- Input: VKA, S8a, Stufe 3, 39h/week, 100%, SuE-Zulage enabled
- Step 1: Look up Tabellenentgelt: 3868.50€
- Step 2: Calculate Grund-Stundenlohn: 3868.50 / 169.0 = 22.89€/h
- Step 3: Add SuE-Zulage: 200€
- Step 4: Calculate Monatsbrutto: 3868.50 + 200 = 4068.50€
- Result: Monatsbrutto 4068.50€

**Example 2: With Zeitzuschläge**

- Input: Same as Example 1, plus 5 Nachtstunden, 2 Sonntagsstunden
- Step 1-3: Same as Example 1
- Step 4: Calculate Nachtzuschlag: 22.89 × 0.20 × 5 = 22.89€
- Step 5: Calculate Sonntagszuschlag: 22.89 × 0.25 × 2 = 11.45€
- Step 6: Calculate Monatsbrutto: 3868.50 + 200 + 22.89 + 11.45 = 4102.84€
- Result: Monatsbrutto 4102.84€

**Example 3: Part-Time**

- Input: Same as Example 1, but 19.5h/week (50%)
- Step 1-3: Same as Example 1
- Step 4: Apply part-time reduction: 4068.50 × 0.50 = 2034.25€
- Result: Monatsbrutto 2034.25€

## Export Functionality

### Export Types

**No Export Functionality:**

- This tool does not have export functionality (PDF, CSV, Excel)
- Results are displayed on-page only
- Email collection is for lead generation, not export gating

### Email Gating

- **First Calculation:** Email modal appears
- **Email Collection:** Email stored in localStorage
- **Subsequent Calculations:** No email prompt (email remembered)
- **Email Validation:** Basic email format validation
- **HubSpot Integration:** Email sent to HubSpot Forms API v3

## Results & Insights

### Result Display

**Primary Results Cards:**

- Tabellenentgelt (Base Salary): Large number display
- SuE-Zulage (SuE Allowance): Number display
- Funktionszulagen (Functional Allowances): Number display
- Zeitzuschläge (Time Surcharges): Number display with breakdown
- Überstunden (Overtime): Number display
- Monatsbrutto (Monthly Gross): Large number display
- Jahressonderzahlung (Annual Bonus): Number display with percentage
- Jahresbrutto (Annual Gross): Number display (with/without bonus)
- Netto (Net Salary): Number display with breakdown (if calculated)
- Stufen-Info (Stufe Progression): Text display (if tracking enabled)

**Email Gating:**

- Results gated behind email collection (first time only)
- Placeholder values shown until email collected
- Email modal appears on first calculation
- Email stored in localStorage for session persistence

**Smart Features:**

- Auto-sync between Wochenarbeitszeit and Beschäftigungsumfang
- Filtered Stufen dropdown based on S-Gruppe
- Zeitzuschläge stacking rules (Feiertag replaces Nacht/Sonntag)
- Part-time proration for all components
- Stufen-Tracking with date calculation
- Simplified net calculation (approximation)

## Browser Testing Results

### Desktop Browsers

**Chrome (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Firefox (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Safari (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Edge (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

### Mobile Testing

**iOS Safari:**

- Status: ✅ Functional
- Device: iPhone (tested)
- Issues: Minor UI adjustments on small screens
- Notes: Collapsible sections work well on mobile

**Android Chrome:**

- Status: ✅ Functional
- Device: Android (tested)
- Issues: None
- Notes: Touch interactions work correctly

**Mobile UI Differences:**

- Form becomes single column on mobile
- Collapsible sections stack vertically
- Radio buttons adapt to mobile width
- Input fields full-width on mobile

### Responsive Design

**Desktop (>1024px):**

- Layout: Centered single-column
- Form Grid: Multi-column grids for inputs
- Collapsible Sections: Side-by-side where possible

**Tablet (768px-1024px):**

- Layout: Centered single-column
- Form Grid: 2-column grids
- Collapsible Sections: Stacked

**Mobile (<768px):**

- Layout: Full-width single-column
- Form Grid: Single column
- Collapsible Sections: Stacked vertically

**Breakpoints:**

- Mobile: < 768px
- Tablet: 768px - 1024px
- Desktop: > 1024px

### Accessibility

**Keyboard Navigation:**

- Tab navigation works through all form fields
- Enter to submit form
- Focus indicators visible

**Screen Reader:**

- Form labels properly associated
- Results announced after calculation
- Collapsible sections have proper ARIA attributes

**ARIA Labels:**

- Input fields have labels
- Radio buttons have labels
- Select dropdowns have labels
- Buttons have descriptive text

## Code Analysis

### Key Functions Location

- Main component: `v2/pages/tools_tvoed_sue.php:1042`
- Salary calculation: `v2/pages/tools_tvoed_sue.php:1168`
- Auto-sync functions: `v2/pages/tools_tvoed_sue.php:1138, 1153`
- Email collection: `v2/pages/tools_tvoed_sue.php:1535`
- Utility functions: `v2/pages/tools_tvoed_sue.php:1458+`

### Constants Location

- Entgelttabelle data: Embedded JavaScript object `TVOED_SUE_DATA` (line 883)
- Version: "2026-01-20" (✅ Updated to "2026-01-01")
- Payroll parameters: Embedded in `TVOED_SUE_DATA.payroll_params` (line 1023)

### Calculation Logic Flow

1. **User Input:**

   - User fills form fields
   - Auto-sync between Wochenarbeitszeit and Beschäftigungsumfang
   - Stufen filtered based on S-Gruppe

2. **Validation:**

   - Inputs validated
   - Error messages displayed if invalid

3. **Calculation:**

   - Look up Tabellenentgelt from Entgelttabelle
   - Calculate Grund-Stundenlohn
   - Add SuE-Zulage
   - Add Funktionszulagen
   - Calculate Zeitzuschläge (with stacking rules)
   - Calculate Überstunden
   - Calculate Monatsbrutto
   - Apply part-time reduction if applicable
   - Calculate Jahressonderzahlung if enabled
   - Calculate Jahresbrutto
   - Calculate Netto if enabled
   - Calculate Stufen-Info if tracking enabled

4. **Display:**

   - Results updated in component state
   - UI updates automatically (Alpine.js reactivity)
   - Email modal appears if first calculation
   - Results displayed after email collection

5. **Email Collection:**
   - Email validated
   - Email sent to HubSpot API
   - Email stored in localStorage
   - Results unlocked

## Content Documentation

### Hero Section

- **H1:** "Berechne dein TVöD-SuE Gehalt für 2026"
- **Description:** "Unser kostenloser TVöD-SuE Gehaltsrechner berechnet dein Entgelt nach den aktuellen Tarifverträgen 2026. Inklusive SuE-Zulage, Zeitzuschläge, Jahressonderzahlung und optionaler Netto-Schätzung."

### Educational Content Sections

1. **TVöD-SuE Basics**

   - Entgelttabelle explained
   - S-Gruppen explained
   - Stufen explained

2. **Salary Components**

   - SuE-Zulage explained
   - Zeitzuschläge explained
   - Funktionszulagen explained
   - Jahressonderzahlung explained

3. **Calculation Details**

   - Part-time proration
   - Zeitzuschläge stacking rules
   - Net calculation approximation

### FAQ Section

- **Total FAQs:** ~10 FAQs
- **FAQ Topics:**
  - Calculation: 3 FAQs
  - Zulagen: 3 FAQs
  - Net Calculation: 2 FAQs
  - General: 2 FAQs

**Sample FAQs:**

1. "Wie wird die Jahressonderzahlung im TVöD-SuE 2026 berechnet?"
2. "Welche Zulagen gibt es im TVöD-SuE 2026?"
3. "Ist die Netto-Berechnung verbindlich?"

### Meta Tags

- **Title:** "TVöD-SuE Gehaltsrechner 2026 – Entgelt, Zulagen & Zuschläge - Ordio" (✅ Already "2026")
- **Description:** "TVöD-SuE Gehaltsrechner 2026: Berechne dein Gehalt mit Jahressonderzahlung, Regenerationstagen, Eingruppierung und Steuerklassen. Kostenloser Rechner für Erzieher & Sozialpädagogen." (✅ Already "2026")

### Schema Markup

- **WebApplication schema:** Yes
- **FAQPage schema:** Yes
- **HowTo schema:** Yes
- **BreadcrumbList schema:** Yes

### Internal Linking

- Links to: Related salary calculators
- Link count: 2-3 internal links

## 2026 Update Requirements

### Immediate Updates (Required for Jan 1, 2026)

**Constants/Values:**

- ✅ **Data Version:** Update "2026-01-20" to "2026-01-01" (line 884)
- ✅ **Entgelttabellen:** Update all pay tables to 2026 values (✅ CRITICAL - entire Entgelttabelle object)
- ✅ **SuE-Zulage:** Verify and update 2026 values
- ✅ **Zeitzuschläge:** Verify 2026 rates (currently: Nacht 20%, Sonntag 25%, Feiertag 135%)
- ✅ **Jahressonderzahlung:** Verify 2026 percentages
- ✅ **Stufenlaufzeiten:** Verify 2026 durations
- ✅ **Payroll Parameters:** Verify 2026 values (BBG KV/PV/RV, Steuerfreibetrag, Kinderfreibetrag, contribution rates, Soli Grenze)

**Content:**

- ✅ H1: Update "2025" to "2026" (line 1673)
- ✅ Description: Update "2025" to "2026" (line 1677)
- ✅ Net Calculation Comment: Update "Germany 2026" to "Germany 2026" (line 1316)
- ✅ Soli Comment: Update "2025 thresholds" to "2026 thresholds" (line 1386)
- ✅ FAQs: Review and update year references (~10 FAQs)

**Priority:** 🔴 HIGH (Entgelttabelle update is critical, H1 update needed)

### Throughout 2026 Updates

**Scheduled Updates:**

- **Entgelttabellen:** Update annually (typically January, published by TVöD-SuE)
- **SuE-Zulage:** Update when changed (typically annually)
- **Payroll Parameters:** Update when changed (typically annually)

### Monitoring Requirements

- **TVöD-SuE Official Sources:** Check for Entgelttabelle updates (annual)
- **Bundesfinanzministerium:** Check for tax/social security updates (annual)
- **Frequency:** Annually (January) or when tariff agreements change
- **Source:** Official TVöD-SuE publications, BMF announcements

## Testing

### Test Cases

**Normal Cases:**

- Test 1: VKA, S8a, Stufe 3, 39h/week, 100% → Expected: ~4068€ Monatsbrutto
- Test 2: With SuE-Zulage → Expected: +200€
- Test 3: With Zeitzuschläge → Expected: Correct surcharge calculation
- Test 4: Part-time 50% → Expected: 50% of full-time salary
- Test 5: With Jahressonderzahlung → Expected: Correct annual bonus
- Test 6: With Net calculation → Expected: Simplified net calculation
- Test 7: Stufen-Tracking → Expected: Correct months until next Stufe

**Edge Cases:**

- Edge case 1: Different Tarifbereiche → Expected: Different Entgelttabellen
- Edge case 2: Different S-Gruppen → Expected: Different base salaries
- Edge case 3: Zeitzuschläge stacking → Expected: Feiertag replaces Nacht/Sonntag
- Edge case 4: Part-time with surcharges → Expected: Surcharges prorated
- Edge case 5: Custom SuE-Zulage → Expected: Override applied

### Browser Testing

- Chrome: ✅ Tested, working
- Firefox: ✅ Tested, working
- Safari: ✅ Tested, working
- Mobile: ✅ Tested, working

### Export Testing

- Export: N/A (no export functionality)

## Maintenance Notes

### Known Issues

- Inline JavaScript makes updates more difficult (consider extraction)
- H1 updated to "2026"
- Data version updated to "2026-01-01"
- Entgelttabelle shows 2026 values (needs comprehensive update)
- Net calculation is simplified approximation (not legally binding)

### Future Improvements

- Extract JavaScript to separate file for easier maintenance
- Add export functionality (PDF, CSV)
- Improve net calculation accuracy (more detailed tax calculation)
- Add comparison mode (multiple scenarios)
- Add Entgelttabelle visualization

### Related Tools

**Complementary Tools:**

- **[Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md)** - Calculate gross-to-net salary

  - Use together when: Need net salary calculation after gross calculation
  - Example workflow: Calculate gross salary → Calculate net salary → Financial planning

- **[Stundenlohnrechner](stundenlohnrechner-documentation.md)** - Calculate hourly wage

  - Use together when: Need hourly rate from monthly salary
  - Example workflow: Calculate monthly salary → Calculate hourly rate → Compare offers

- **[Zuschlagsrechner](zuschlagsrechner-documentation.md)** - Calculate shift surcharges
  - Use together when: Need to calculate surcharges for night/weekend/holiday work
  - Example workflow: Calculate base salary → Calculate surcharges → Total compensation

**Sequential Tools:**

- **[Prozentrechner](prozentrechner-documentation.md)** - Calculate percentage increases

  - Use after: Calculating salary increases
  - Use before: Comparing salary changes

- **[Einkommensteuer-Rechner](einkommensteuer-rechner-documentation.md)** - Calculate income tax
  - Use after: Calculating gross salary
  - Use before: Tax planning

## References

### Official Sources

- **TVöD-SuE Official Publications:** Entgelttabellen, SuE-Zulage, Zeitzuschläge
- **Bundesfinanzministerium:** Tax rates, social security rates
- **Tarifvertrag TVöD-SuE:** Official tariff agreement

### Documentation Files

- `BROWSER_TESTING_FRAMEWORK.md`: Browser testing guidelines
- `CODE_ANALYSIS_FRAMEWORK.md`: Code analysis guidelines
- `TOOL_DOCUMENTATION_TEMPLATE.md`: Documentation template
