mirror of
http://100.103.83.12:3003/fegger/odoo-at-payroll.git
synced 2026-09-17 08:52:45 +00:00
[IMP] l10n_at_gemeinde_payroll: implement AP2 pay computation engine (GemBG Bgld.)
Entgelt-Engine nach Implementierungsplan AP2 (freigegeben 2026-09-09):
- Structure Type "Bgld. GemBG 2014" + Structure "Gemeindebedienstete"
mit 4 Kategorien (GEMBG_BRUTTO, GEMBG_ABZUG, GEMBG_NETTO, GEMBG_DG).
- Work-Entry-Types: Überstunden Tag/Nacht (§ 76), Mehrdienstleistung,
Journaldienst (§ 79), Bereitschaft (§ 80), Sonn-/Feiertag (§ 78).
- Input-Types: Erschwerniszulage (§ 83), Fahrtkostenzuschuss (§ 88),
Jubiläumszuwendung (§ 89).
- Entgelt-Regeln (13 Rules):
* ME — Monatsentgelt: Katalog-Lookup (Gruppe+Stufe+Stichtag),
Ausbildungsphase 5 % Abzug (§ 133h), Teilzeit via work_time_rate.
* KIZU — Kinderzulage: kinder_anzahl × 15,60 EUR (§ 61 GemBG),
bei Teilzeit UNGEKÜRZT (§ 59 Abs 2).
* FUZU — Funktionszulage: hr.version-Feld × work_time_rate (§ 62).
* UEZ_TAG/UEZ_NACHT — Überstundenvergütung (§ 76):
Grund = ME / (4,33 × Wochenstunden); Zuschlag 50 % Tag / 100 % Nacht.
* JZU — Journaldienstzulage (§ 79): Work-Entry × Parametersatz.
* SFZU — Sonn-/Feiertagszulage (§ 78): Stunden × Grundvergütung × %.
* BERB — Bereitschaftsentschädigung (§ 80): Stunden × Parametersatz.
* ERZU/FKZ/JUB — Input-basierte Bezüge (§§ 83/88/89).
* SZQ — Sonderzahlung QUARTALSWEISE (§ 133n): in Quartalsendmonaten
(März, Juni, September, Dezember) 50 % × (ME + KIZU).
* NETTO — Kategoriensumme (wird mit AP3/AP4 erweitert).
- hr.version-Felder: kinder_anzahl, funktionszulage, ausbildungsphase
(§ 61/§ 62/§ 133h) mit Employee-Spiegel nach Engine-Muster.
- Rule-Parameter: Kinderzulage 15,60 EUR, Journaldienstzulage,
Sonn-/Feiertags-%, Bereitschaftsstunde (letzte 3 als AP0-Platzhalter
mit 0.0 — Werte aus der Bezügeanpassung nach Beschaffung).
- Tests (8 Rechenfälle): Vollzeit av1 Stufe 1, Kinderzulage 2 Kinder
= 31,20 EUR, Funktionszulage, Ausbildungsphase 5 % Abzug,
SZ Quartalsende + Nicht-Quartalsende, Netto=Brutto (AP3/AP4 offen),
Stufe 12 Max.
- Employee-Form um Zulagen-Gruppe erweitert.
Modul-Version 19.0.1.3.0. Statische Validierung grün; Runtime-Testlauf
auf dem Dev-Host ausständig.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# Part of the gem360 onboarding. See LICENSE / project docs for details.
|
||||
from . import entlohnung
|
||||
from . import hr_version_bgld
|
||||
from . import hr_version_entgelt
|
||||
from . import tasy
|
||||
@@ -0,0 +1,48 @@
|
||||
# Part of the gem360 onboarding. See LICENSE / project docs for details.
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class HrVersion(models.Model):
|
||||
"""GemBG AP2: Zulagen-Felder auf der Payroll-Version.
|
||||
|
||||
Funktionszulage § 62 GemBG (Sätze aus der Bezügeanpassung, am
|
||||
Dienstvertrag anwendbar); Kinderzahl § 61 GemBG für die Kinderzulage
|
||||
(15,60 EUR je Kind monatlich, bei Teilzeit ungekürzt).
|
||||
"""
|
||||
_inherit = 'hr.version'
|
||||
|
||||
funktionszulage = fields.Monetary(
|
||||
string='Funktionszulage (§ 62 GemBG)',
|
||||
currency_field='currency_id',
|
||||
groups="hr_payroll.group_hr_payroll_user", tracking=True,
|
||||
help="Monatliche Funktionszulage gemäß § 62 Abs 1 Bgld. GemBG "
|
||||
"(Wert aus der aktuellen Bezügeanpassung).")
|
||||
kinder_anzahl = fields.Integer(
|
||||
string='Anzahl Kinder (Kinderzulage § 61)',
|
||||
default=0,
|
||||
groups="hr_payroll.group_hr_payroll_user",
|
||||
help="Anzahl der Kinder, für die Familienbeihilfe bezogen wird "
|
||||
"und Kinderzulage gebührt (§ 61 GemBG).")
|
||||
ausbildungsphase = fields.Boolean(
|
||||
string='In Ausbildungsphase (§ 133h)',
|
||||
default=False,
|
||||
groups="hr_payroll.group_hr_payroll_user",
|
||||
help="Während der Ausbildungsphase wird das Monatsentgelt um "
|
||||
"5 % vermindert (§ 133h GemBG).")
|
||||
|
||||
currency_id = fields.Many2one(
|
||||
related='employee_id.company_id.currency_id', store=True)
|
||||
|
||||
|
||||
class HrEmployee(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
funktionszulage = fields.Monetary(
|
||||
related="version_id.funktionszulage", inherited=True,
|
||||
readonly=False, groups="hr_payroll.group_hr_payroll_user")
|
||||
kinder_anzahl = fields.Integer(
|
||||
related="version_id.kinder_anzahl", inherited=True,
|
||||
readonly=False, groups="hr_payroll.group_hr_payroll_user")
|
||||
ausbildungsphase = fields.Boolean(
|
||||
related="version_id.ausbildungsphase", inherited=True,
|
||||
readonly=False, groups="hr_payroll.group_hr_payroll_user")
|
||||
Reference in New Issue
Block a user