mirror of
http://100.103.83.12:3003/fegger/odoo-at-payroll.git
synced 2026-09-17 16:56:42 +00:00
3797e30b1c
Approved implementation plan for l10n_at_hr_payroll_private (M0, decisions D1-D4) and the GP0 legal-source inventory RECHTSQUELLEN-Privat.md, verified against primary sources (RIS, jusline): - FLAF-DB § 41 FLAG: 3.7% for 2026, 2.7% from 2028 (GesNr 10008220); KommStG 1993: 3% (GesNr 10004841) - 13th/14th salary taxation runs via § 67 EStG (Jahressechstel fixed rates, control sixth § 77 Abs 4a); § 68 covers allowances/surcharges only - plan citation corrected, also fixes the legal basis of the Bgld open point P9 - Urlaubsentgelt is § 6 UrlG (§ 9 repealed since 2001) - corrected - EOSB: no Monatsentgelt staffel; § 15 BMSVG pays out the Anwartschaft with § 14 Abs 2 Verfügungsausschluss matrix - GP5 design confirmed - 2026 overtime measure: first 15 hours, max 170 €/month (§ 124b Z 476 lit c BGBl I 43/2026) Plan section 8 items 3-6 and UrlG (8) marked verified; private module skeleton README, MEMORY, CHANGELOG and payroll skill updated (§ 67 citation fix, RECHTSQUELLEN-Privat.md as required source).
160 lines
8.2 KiB
Markdown
160 lines
8.2 KiB
Markdown
---
|
||
name: payroll
|
||
description: |
|
||
Guidance for implementing Austrian payroll on the Odoo 19 hr_payroll
|
||
engine: Bgld. GemBG 2014 besoldung (Entlohnungsgruppen/-stufen,
|
||
quarterly Sonderzahlung), Lohnsteuer, SV/Dienstgeberbeitrag, the
|
||
shared AT core module l10n_at_hr_payroll, VRV account posting via the
|
||
gem360 bridge module l10n_at_gemeinde_payroll_vrv, L16/eSV
|
||
melde-dateien, annual Bezügeanpassung updates, and multi-Bundesland
|
||
extension. Use for any work on addons/l10n_at_hr_payroll,
|
||
addons/l10n_at_gemeinde_payroll or the legal foundations in
|
||
personalverrechnung/.
|
||
disable-model-invocation: false
|
||
---
|
||
|
||
## Applicability
|
||
|
||
Use this skill whenever work touches the Austrian payroll localization or
|
||
its foundations: the core module `addons/l10n_at_hr_payroll` (SV values,
|
||
TASY import, upcoming Lohnsteuer/Meldewesen/Belege), the municipal module
|
||
`addons/l10n_at_gemeinde_payroll` (Bgld. GemBG besoldung, payslip
|
||
structures/salary rules), Lohnsteuer, SV/DB contributions, payroll
|
||
reports and melde-dateien (L16, eSV/ELDA), annual value updates
|
||
(Bezügeanpassung), or extending the payroll to another Bundesland or to
|
||
the general private economy (`l10n_at_hr_payroll_private`).
|
||
|
||
Skills do not replace the mandatory `AGENTS.md` workflow. For payroll
|
||
work, combine this skill with:
|
||
|
||
- `odoo19-development/SKILL.md` (always);
|
||
- for GL posting / VRV work on the bridge module
|
||
`l10n_at_gemeinde_payroll_vrv` (which lives in the gem360 repository),
|
||
additionally consult the gem360 repo's `odoo19-accounting`, `vrv2015`
|
||
and `accounting-review` skills.
|
||
|
||
## Required project sources (read before planning)
|
||
|
||
1. `personalverrechnung/PLAN-payroll-bgld.md` — project frame, scope
|
||
variants, estimates and their revisions.
|
||
2. `personalverrechnung/RECHTSQUELLEN-Bgld.md` — the verified legal
|
||
inventory (status marks: ✅ verified / ⚠ plausible / ❓ open).
|
||
Treat these marks as binding: never code a ❓ value without
|
||
resolving it against a primary source first.
|
||
3. `personalverrechnung/ANGEBOTS-KALKULATION-Bgld-Personalverrechnung.md`
|
||
— approved scope (APs), Prämissen P1–P10, options and exclusions.
|
||
Changes that violate a Prämisse or an exclusion need explicit user
|
||
approval first.
|
||
4. Raw legal material (local, not versioned): `.firecrawl/` contains
|
||
the consolidated Bgld. GemBG 2014, GemBÜG 2014, the 2026
|
||
Bezügeanpassung tables (RV 0715), official SV-Werte 2026, and
|
||
ASVG/FLAG extracts. If `.firecrawl/` is missing, re-fetch from RIS
|
||
(ris.bka.gv.at) and sozialversicherung.at before working from
|
||
memory.
|
||
5. `personalverrechnung/RECHTSQUELLEN-Privat.md` — the verified legal
|
||
inventory for the General-AT private-economy product
|
||
(`l10n_at_hr_payroll_private`), GP0 2026-09. Binding for any
|
||
private-economy work: § 67 EStG for begünstigte Bezüge, § 6 UrlG
|
||
for Urlaubsentgelt, BMSVG Anwartschaft model for EOSB, § 41 FLAG
|
||
and KommStG for the private Dienstgeberabgaben.
|
||
|
||
## Legal model (Burgenland — verified 2026-09)
|
||
|
||
- **One single legal source for the running payroll:** Bgld. GemBG 2014
|
||
(LGBl. Nr. 42/2014). All Gemeindebedienstete hold privatrechtliche
|
||
Dienstverhältnisse; no new öffentlich-rechtliche Dienstverhältnisse
|
||
(§ 1 Abs 3), no Kollektivvertrag, no AZG/UrlG/AngG/ATV references.
|
||
The GemBG itself governs Dienstzeit (40 h, § 33), Urlaub (28/33
|
||
Arbeitstage, §§ 92–94), Abfertigung (§ 130), Karenz (§§ 106 ff. with
|
||
Bgld. MVKG, LGBl. 16/2005).
|
||
- **Besoldung ab 1. 1. 2021** (IVa. Hauptstück, §§ 132 ff):
|
||
Entlohnungsgruppen, Entlohnungsstufen, Besoldungsdienstalter,
|
||
Vorrückungen; Zulagen incl. Kinderzulage (uncut for part-time),
|
||
Funktions-/Erschwernis-/Journaldienst-/Sonn-Feiertags-/Bereitschafts-
|
||
components (§§ 61–63, 74–87).
|
||
- **Sonderzahlung is quarterly:** 50 % of the Monatsentgelt (incl.
|
||
Kinderzulage) per Kalendervierteljahr — not a classic 13th/14th.
|
||
The lohnsteuerliche mapping to begünstigte Bezüge runs via **§ 67
|
||
EStG** (GP0 2026-09 verified: § 67 = sonstige Bezüge fixed rates;
|
||
§ 68 EStG only covers Zulagen/Zuschläge free limits); the detailed
|
||
LStR-2002 interpretation of the quarterly SZ remains an open point
|
||
(see below).
|
||
- **€ values come from annual Bgld. Bezügeanpassungs-Sammelgesetzen**
|
||
(tables in Anlagen/§-Ersetzungen; 2026: RV 0715/XXIII. GP / LGBl.
|
||
50/2026) — never from a KV catalog, never hard-coded from a prior
|
||
year.
|
||
- **Out of GemBG scope:** Lehrlinge (§ 1 Abs 2 Z 1), Gemeindeorgane
|
||
(Bürgermeisterbezüge per Gemeindegesetz/Bgm-PensionsG 1979), Freie
|
||
Städte Eisenstadt/Rust (Hauptstück VI Sonderregeln).
|
||
- **Federal law supplies:** EStG (§ 33 tariff, § 68 Pauschalbesteuerung,
|
||
§ 84 Lohnzettel/L16), LStR 2002 (findok), ASVG contributions and
|
||
limits (values: annual "Beitragsrechtliche Werte" PDF,
|
||
sozialversicherung.at), öffentlicher FLAF-Dienstgeberbeitrag
|
||
(§ 49a ASVG), KommStG exemption for the municipality's own employees,
|
||
Meldewesen (FinanzOnline, ELDA/eSV).
|
||
|
||
## Architecture rules
|
||
|
||
- Build strictly on the Odoo 19 `hr_payroll` engine: structures per
|
||
employee group, salary rules, rule parameters. No parallel engine,
|
||
no side tables for entitlements that the engine can express.
|
||
- **Shared federal core:** sector-neutral rules and values (Lohnsteuer,
|
||
SV/DB, Meldewesen, Belege, annual values) live in
|
||
`l10n_at_hr_payroll`; both the municipal module and the future
|
||
general product consume the core. Never fork core values.
|
||
- Annual and legal values (LSt tariff, SV rates, limits,
|
||
Bezügeanpassung tables) live in `hr.rule.parameter` data or
|
||
equivalent data files — never as literals inside rule code.
|
||
- Per-Bundesland separation from day one: katalog data, structures and
|
||
state-specific rules go into clearly separated data/models (Bgld.
|
||
first). A follow-up Bundesland must be expressible as data plus few
|
||
specific rules, not as a rewrite.
|
||
- GL posting via `hr_payroll_account` into VRV accounts (Anlage 3b
|
||
Klassen 4/5/6) with Ansatz/MVAG attribution happens **in the gem360
|
||
repository** via the bridge module `l10n_at_gemeinde_payroll_vrv`
|
||
(depends on this repo's `l10n_at_gemeinde_payroll` plus gem360's
|
||
`l10n_at_vrv2015`, EHH/FHH behaviour, provisions with
|
||
Rückstellungskonten and reconciliation anchors Anlage 1a/2a). This
|
||
repo stays free of any VRV dependency.
|
||
- Meldewesen is **file-based**: produce validated L16 (FinanzOnline)
|
||
and eSV/ELDA-XML export files plus Prüfprotokolle. Transmission,
|
||
certificates and Behördenkonten remain with the client or their tax
|
||
advisor (Prämisse P7) — do not build transmission infrastructure
|
||
without explicit approval.
|
||
|
||
## Verify before assuming (open points — resolve via RIS/findok)
|
||
|
||
- Öffentlicher FLAF-Dienstgeberbeitrag: exact current rate
|
||
§ 49a Abs 8/9 ASVG (historisch 4,5 %).
|
||
- KommStG 1993 § 6 (own employees exempt) — confirm the text.
|
||
- Bgld. MVKG full text (RIS-GesNr 20000326) for Karenz/MSchG details.
|
||
- Quartalsweise Sonderzahlung ↔ LSt begünstigte Bezüge (LStR 2002).
|
||
- Personalvertretungsumlage/AK-Umlage question for GemBG-Bedienstete;
|
||
Krankengeldumlage (§ 62 ASVG) for public employers; SV-Träger
|
||
confirmation (ÖGK Bgld.) from the client's payroll history.
|
||
|
||
Any further legal value must be taken from
|
||
`personalverrechnung/RECHTSQUELLEN-Bgld.md` or its named primary
|
||
sources (RIS, sozialversicherung.at, usp.gv.at, findok). If a value is
|
||
not verified there, stop and resolve it first — do not use training
|
||
knowledge for legal numbers.
|
||
|
||
## Annual change management (Wartung)
|
||
|
||
Each calendar year: fetch the new Bgld. Bezügeanpassung tables, the
|
||
SV-Werte PDF and LSt parameter changes; update rule-parameter data;
|
||
run the regression suite; document in `docs/CHANGELOG.md` and in
|
||
`personalverrechnung/` notes.
|
||
|
||
## Testing
|
||
|
||
- Rule-level unit tests for every GemBG, Lohnsteuer and SV component,
|
||
including Rechenfälle for Eckfälle: Ein-/Austritt im Monat,
|
||
Teilzeit/Herabsetzung, quartalsweise SZ, Geringfügigkeit, Karenz,
|
||
Jubiläumszuwendung, Über-/Mehrdienstleistung.
|
||
- Golden-Master against the client's reference runs as soon as they
|
||
exist (Angebotsphase: none available — see Prämissen P1/P10); the
|
||
contracted Parallellauf (2–3 months) is part of acceptance.
|
||
- Municipal GL posting tests live with the bridge in the gem360 repo
|
||
and must reconcile payroll postings against the Anlage-1a/2a engines
|
||
of `l10n_at_vrv2015` there. |