# TVöD-SuE Current Implementation Documentation

**Last Updated:** 2026-01-07  
**Status:** Current State Analysis - Pre-May 2026 Implementation

## Overview

This document provides a complete analysis of the current TVöD-SuE calculator implementation, documenting all values, file locations, calculation formulas, and hardcoded HTML table values. This serves as a baseline for the May 2026 implementation.

## File Structure

### Primary File

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Type:** PHP file with embedded JavaScript data and HTML
- **Lines:** ~3,666 total lines
- **Purpose:** Complete calculator implementation including data, calculations, and UI

## JavaScript Data Object Structure

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Lines:** 883-1038
- **Variable Name:** `TVOED_SUE_DATA`
- **Version:** "2026-01-01" (current, will change to "2026-05-01" in May)

### Data Object Structure

```javascript
const TVOED_SUE_DATA = {
  version: "2026-01-01",
  tarifbereiche: ["VKA", "Bund"],
  defaultTarifbereich: "VKA",
  arbeitszeit_std_woche: { VKA: 39.0, Bund: 39.0 },
  s_groups: [
    "S2",
    "S3",
    "S4",
    "S7",
    "S8a",
    "S8b",
    "S9",
    "S11a",
    "S11b",
    "S12",
    "S13",
    "S14",
    "S15",
    "S16",
    "S17",
    "S18",
  ],
  stufen: [1, 2, 3, 4, 5, 6],
  tabelle: {
    VKA: {
      /* 96 values */
    },
    Bund: {
      /* 96 values (S15-S18 are placeholders) */
    },
  },
  stufenlaufzeiten: {
    /* 6 values */
  },
  sue_zulage: {
    VKA: {
      /* 16 values */
    },
    Bund: {
      /* 16 values */
    },
  },
  funktionszulagen: {
    /* 6 values */
  },
  zeitzuschlaege: {
    /* 7 values */
  },
  jahressonderzahlung: {
    VKA: {
      /* 4 percentages */
    },
    Bund: {
      /* 4 percentages */
    },
  },
  eg_mapping: {
    /* 16 mappings */
  },
  payroll_params: {
    /* 12 parameters */
  },
};
```

## Current Entgelttabelle Values

### VKA (Kommunen) - Lines 891-907

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

- **S2:** [2829.14, 2948.41, 3036.64, 3132.45, 3240.19, 3347.95]
- **S3:** [3034.89, 3229.62, 3410.78, 3577.12, 3653.23, 3744.14]
- **S4:** [3201.81, 3408.76, 3597.33, 3725.30, 3848.61, 4043.12]
- **S7:** [3333.59, 3550.19, 3765.70, 3987.31, 4153.80, 4404.69]
- **S8a:** [3413.85, 3636.31, 3868.50, 4092.49, 4311.44, 4541.67]
- **S8b:** [3481.39, 3708.79, 3980.49, 4380.82, 4759.33, 5049.51]
- **S9:** [3549.30, 3781.54, 4053.20, 4455.27, 4835.59, 5128.99]
- **S11a:** [3741.49, 3994.28, 4174.59, 4636.51, 4998.73, 5216.07]
- **S11b:** [3808.48, 4067.31, 4249.15, 4712.82, 5075.04, 5292.38]
- **S12:** [3859.50, 4122.07, 4465.71, 4769.97, 5146.70, 5306.08]
- **S13:** [3869.68, 4132.98, 4491.62, 4781.38, 5143.62, 5324.74]
- **S14:** [3962.44, 4232.66, 4554.71, 4882.30, 5244.56, 5498.11]
- **S15:** [4000.66, 4274.25, 4564.08, 4897.32, 5433.43, 5665.23]
- **S16:** [4147.17, 4433.68, 4752.42, 5143.62, 5578.29, 5839.11]
- **S17:** [4233.84, 4527.84, 4998.73, 5288.55, 5868.09, 6208.58]
- **S18:** [4591.95, 4708.94, 5288.55, 5723.21, 6375.22, 6773.65]

**Total:** 96 values (16 S-Gruppen × 6 Stufen)

### Bund (Bundesverwaltung) - Lines 909-925

**Current Values:**

- **S2-S14:** Identical to VKA values (lines 910-921)
- **S15:** [5100.00, 5250.00, 5400.00, 5550.00, 5700.00, 5850.00] - **PLACEHOLDER VALUES**
- **S16:** [5250.00, 5400.00, 5550.00, 5700.00, 5850.00, 6000.00] - **PLACEHOLDER VALUES**
- **S17:** [5400.00, 5550.00, 5700.00, 5850.00, 6000.00, 6150.00] - **PLACEHOLDER VALUES**
- **S18:** [5550.00, 5700.00, 5850.00, 6000.00, 6150.00, null] - **PLACEHOLDER VALUES**

**Note:** Bund S15-S18 placeholder values need to be replaced with VKA values in May 2026 implementation.

## Current Jahressonderzahlung Percentages

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Lines:** 991-1003

### Current Values (Effective January 1, 2026)

**VKA:**

- **EG_1_8:** 0.25 (25%)
- **EG_9_11:** 0.30 (30%)
- **EG_12_13:** 0.35 (35%)
- **EG_14_15:** 0.40 (40%)

**Bund:**

- **EG_1_8:** 0.25 (25%)
- **EG_9_11:** 0.30 (30%)
- **EG_12_13:** 0.35 (35%)
- **EG_14_15:** 0.40 (40%)

**Note:** These values are effective January 1, 2026, but will change to 90%/85% for calendar year 2026. The calculator currently uses these old values.

## Current SuE-Zulage Values

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Lines:** 936-972

### Current Values

**VKA & Bund (identical):**

- **S2-S4:** 150.00 €
- **S7:** 150.00 €
- **S8a-S8b:** 200.00 €
- **S9-S11b:** 250.00 €
- **S12-S13:** 300.00 €
- **S14-S18:** 350.00 €

**Status:** No changes planned for May 2026

## Calculation Formulas

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Function:** `calculateSalary()`
- **Lines:** 1168-1455

### Key Calculation Steps

**1. Tabellenentgelt (Line 1203):**

```javascript
const tabellenentgelt =
  this.tvoedData.tabelle[this.tarifbereich][this.sGruppe][
    this.stufe.toString()
  ];
```

**2. SuE-Zulage (Line 1217):**

```javascript
let sueZulage = this.tvoedData.sue_zulage[this.tarifbereich][this.sGruppe];
```

**3. Jahressonderzahlung (Lines 1296-1310):**

```javascript
const egCluster = this.tvoedData.eg_mapping[this.sGruppe];
jszProzentsatz =
  this.tvoedData.jahressonderzahlung[this.tarifbereich][egCluster];
jahressonderzahlung = tabellenentgelt * jszProzentsatz;
if (this.beschaeftigungsanteil < 100) {
  jahressonderzahlung =
    jahressonderzahlung * (this.beschaeftigungsanteil / 100);
}
```

**4. Monatsbrutto (Line 1289):**

```javascript
let monatsbrutto =
  tabellenentgelt +
  sueZulage +
  funktionszulagenSumme +
  zuschlageSumme +
  ueberstundenBetrag;
if (this.beschaeftigungsanteil < 100) {
  monatsbrutto = monatsbrutto * (this.beschaeftigungsanteil / 100);
}
```

**5. Jahresbrutto (Lines 1313-1314):**

```javascript
const jahresbruttoOhneJSZ = monatsbrutto * 12;
const jahresbruttoMitJSZ = jahresbruttoOhneJSZ + jahressonderzahlung;
```

## Hardcoded HTML Table Values

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Section:** Entgelttabelle display tables
- **Lines:** 2900-3122

### Erzieher Table (S2-S4) - Lines 2923-2949

**18 hardcoded values:**

- Line 2925: S2 Stufe 1: `2.829,14 €`
- Line 2926: S2 Stufe 2: `2.948,41 €`
- Line 2927: S2 Stufe 3: `3.036,64 €`
- Line 2928: S2 Stufe 4: `3.132,45 €`
- Line 2929: S2 Stufe 5: `3.240,19 €`
- Line 2930: S2 Stufe 6: `3.347,95 €`
- Line 2934: S3 Stufe 1: `3.034,89 €`
- Line 2935: S3 Stufe 2: `3.229,62 €`
- Line 2936: S3 Stufe 3: `3.410,78 €`
- Line 2937: S3 Stufe 4: `3.577,12 €`
- Line 2938: S3 Stufe 5: `3.653,23 €`
- Line 2939: S3 Stufe 6: `3.744,14 €`
- Line 2943: S4 Stufe 1: `3.201,81 €`
- Line 2944: S4 Stufe 2: `3.408,76 €`
- Line 2945: S4 Stufe 3: `3.597,33 €`
- Line 2946: S4 Stufe 4: `3.725,30 €`
- Line 2947: S4 Stufe 5: `3.848,61 €`
- Line 2948: S4 Stufe 6: `4.043,12 €`

### Sozialpädagogen Table (S7-S8b) - Lines 2976-3002

**18 hardcoded values:**

- Line 2978: S7 Stufe 1: `3.333,59 €`
- Line 2979: S7 Stufe 2: `3.550,19 €`
- Line 2980: S7 Stufe 3: `3.765,70 €`
- Line 2981: S7 Stufe 4: `3.987,31 €`
- Line 2982: S7 Stufe 5: `4.153,80 €`
- Line 2983: S7 Stufe 6: `4.404,69 €`
- Line 2987: S8a Stufe 1: `3.413,85 €`
- Line 2988: S8a Stufe 2: `3.636,31 €`
- Line 2989: S8a Stufe 3: `3.868,50 €`
- Line 2990: S8a Stufe 4: `4.092,49 €`
- Line 2991: S8a Stufe 5: `4.311,44 €`
- Line 2992: S8a Stufe 6: `4.541,67 €`
- Line 2996: S8b Stufe 1: `3.481,39 €`
- Line 2997: S8b Stufe 2: `3.708,79 €`
- Line 2998: S8b Stufe 3: `3.980,49 €`
- Line 2999: S8b Stufe 4: `4.380,82 €`
- Line 3000: S8b Stufe 5: `4.759,33 €`
- Line 3001: S8b Stufe 6: `5.049,51 €`

### Leitungen Table (S9-S18) - Lines 3029-3118

**60 hardcoded values:**

- Lines 3031-3036: S9 (6 values)
- Lines 3040-3045: S11a (6 values)
- Lines 3049-3054: S11b (6 values)
- Lines 3058-3063: S12 (6 values)
- Lines 3067-3072: S13 (6 values)
- Lines 3076-3081: S14 (6 values)
- Lines 3085-3090: S15 (6 values)
- Lines 3094-3099: S16 (6 values)
- Lines 3103-3108: S17 (6 values)
- Lines 3112-3117: S18 (6 values)

**Total:** 96 hardcoded values in HTML tables

## FAQ Content References

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Section:** FAQ section
- **Lines:** 3330-3478

### Jahressonderzahlung FAQ - Lines 3338-3355

**Current Content (Line 3348-3351):**

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

## Schema Markup References

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Section:** JSON-LD schema markup
- **Lines:** 768-879

### FAQPage Schema - Line 824

**Current Content:**

- Mentions "25-40%" (needs update to "85-90%")

## Content Section References

### Location

- **File:** `v2/pages/tools_tvoed_sue.php`
- **Section:** Informational content cards
- **Lines:** 3127-3319

### Jahressonderzahlung Card - Lines 3148-3150

**Current Content:**

- Mentions "25-40%" (needs update to "85-90%")

### Jahressonderzahlung Description - Line 2146

**Current Content:**

- Mentions "25-40%" (needs update to "85-90%")

## Summary of File Locations

### JavaScript Data Object

- **Lines:** 883-1038
- **Values to Update:** 192 Entgelttabelle values, 8 Jahressonderzahlung percentages

### HTML Tables

- **Lines:** 2900-3122
- **Values to Update:** 96 hardcoded values

### FAQ Content

- **Lines:** 3338-3355 (Jahressonderzahlung FAQ)
- **Content to Update:** Percentages mentioned in FAQ answer

### Schema Markup

- **Lines:** 821-824 (FAQPage schema)
- **Content to Update:** Jahressonderzahlung percentages in schema answer

### Content Sections

- **Lines:** 2146, 3148-3150
- **Content to Update:** Jahressonderzahlung percentage references

## Dependencies

### Calculation Logic

- **Function:** `calculateSalary()` (lines 1168-1455)
- **Dependencies:**
  - `tabelle` object for Tabellenentgelt
  - `jahressonderzahlung` object for JSZ percentages
  - `eg_mapping` for Entgeltgruppe cluster mapping
- **Impact:** No logic changes needed, only value updates

### UI Updates

- **Tables:** HTML tables need value updates
- **FAQ:** FAQ content needs percentage updates
- **Schema:** Schema markup needs percentage updates
- **Content:** Informational content needs percentage updates

## Notes

1. **Bund S15-S18:** Currently has placeholder values that don't match VKA. Research indicates Bund should match VKA for all S-Gruppen.

2. **Version Number:** Currently "2026-01-01", needs update to "2026-05-01" in May.

3. **Effective Dates:**

   - Entgelttabelle: May 1, 2026
   - Jahressonderzahlung: January 1, 2026 (calendar year)

4. **Calculation Logic:** No changes needed to calculation formulas, only value updates required.

5. **HTML Tables:** All values are hardcoded and need manual updates (no dynamic generation from JavaScript data object).
