mirror of
http://100.103.83.12:3003/fegger/odoo-at-payroll.git
synced 2026-09-17 08:52:45 +00:00
[FIX] l10n_at_gemeinde_payroll: Modul erstmals installierbar — 9 Odoo-19-Latenzfehler; BDA-Vordienstzeiten-Vorschlag (AP10+AP9)
AP10 — Latenzfehler des nie installierten Vorlaufs: - regular_pay auf hr.payroll.structure entfernt (Feld existiert nicht) - is_paid/round_days/round_days_type von WET-Records entfernt - Falscher XML-ID-Praefix payroll_structure_bgld. -> Modul-Referenzen - amount_select 'python' -> 'code' (Selection) - import in Regelcode entfernt (safe_eval verbietet IMPORT_NAME) - rules['ME'].total -> result_rules['ME']['total'] (Odoo 19 befuellt rules nie; SZQ-Sonderzahlung rechnete gegen Null) - categories.X -> categories['X'] (NETTO-Regel) - work_time_rate /100 entfernt (Odoo 19 speichert Bruchteil 0..1) - nie gelaufene Tests: Payslip-name-Pflichtfeld, Stichtag vor Katalog-Gueltigkeit (Wizard-Skip korrekt), date_start ist Compute aus contract_date_start AP9 — BDA-Vordienstzeiten (GemBG S 67 Abs 1-3, RIS LrB GesNr 20001002 verifiziert): Feld vordienstzeiten_monate (Help dokumentiert Anrechnungskatalog inkl. Obergrenzen), Compute bda_vorschlag (Vertragsbeginn - Monate), Uebernahme-Button als Verwaltungsakt, View-Erweiterung
This commit is contained in:
@@ -44,6 +44,7 @@ class EntgeltTest(TransactionCase):
|
||||
|
||||
slip_month = month or 7
|
||||
slip = self.env['hr.payslip'].create({
|
||||
'name': 'GemBG-Test %d/2026' % slip_month,
|
||||
'employee_id': employee.id,
|
||||
'struct_id': self.structure.id,
|
||||
'date_from': date(2026, slip_month, 1),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# Part of the gem360 onboarding. See LICENSE / project docs for details.
|
||||
from datetime import date
|
||||
|
||||
from freezegun import freeze_time
|
||||
|
||||
from odoo.tests import TransactionCase, tagged
|
||||
|
||||
|
||||
@@ -53,9 +55,14 @@ class KatalogTest(TransactionCase):
|
||||
if not version:
|
||||
version = self.env['hr.version'].create({
|
||||
'employee_id': employee.id,
|
||||
'date_start': date(2020, 1, 1),
|
||||
'contract_date_start': date(2020, 1, 1),
|
||||
})
|
||||
version.write({
|
||||
# contract_date_start ins Suchfenster des Vorrückungs-
|
||||
# Wizards rücken — hr.version.date_start ist ein nicht-
|
||||
# gespeicherter Compute daraus (nie gelaufener Test,
|
||||
# Odoo-19-Latenzkorrektur).
|
||||
'contract_date_start': date(2014, 1, 1),
|
||||
'entlohnungsgruppe_id':
|
||||
self.env.ref('l10n_at_gemeinde_payroll.bgld_grp_av_av1').id,
|
||||
'entlohnungsstufe': stufe,
|
||||
@@ -76,10 +83,13 @@ class KatalogTest(TransactionCase):
|
||||
"""Wizard erhöht die Stufe fälliger Versionen und überspringt
|
||||
die Höchststufe."""
|
||||
version = self._version_mit_katalog(date(2014, 3, 15), stufe=3)
|
||||
version.vorrueckungstermin = date(2024, 4, 1)
|
||||
max_stufe = version.entlohnungsgruppe_id._max_stufe(date(2024, 4, 1))
|
||||
# Stichtag ab Katalog-Gültigkeit (Seed 2026-07-01) — vor dem
|
||||
# 1. 7. 2026 gibt es keine Katalogwerte, der Wizard überspringt
|
||||
# korrekt (nie gelaufener Test, Odoo-19-Latenzkorrektur).
|
||||
version.vorrueckungstermin = date(2028, 4, 1)
|
||||
max_stufe = version.entlohnungsgruppe_id._max_stufe(date(2028, 4, 1))
|
||||
wizard = self.env['gemeinde.payroll.vorrueckung.wizard'].create({
|
||||
'stichtag': date(2024, 4, 1),
|
||||
'stichtag': date(2028, 4, 1),
|
||||
})
|
||||
self.assertIn(version, wizard.version_ids)
|
||||
wizard.action_apply()
|
||||
@@ -87,9 +97,29 @@ class KatalogTest(TransactionCase):
|
||||
|
||||
version_top = self._version_mit_katalog(date(2014, 3, 15),
|
||||
stufe=max_stufe)
|
||||
version_top.vorrueckungstermin = date(2024, 4, 1)
|
||||
version_top.vorrueckungstermin = date(2028, 4, 1)
|
||||
wizard2 = self.env['gemeinde.payroll.vorrueckung.wizard'].create({
|
||||
'stichtag': date(2024, 4, 1),
|
||||
'stichtag': date(2028, 4, 1),
|
||||
})
|
||||
wizard2.action_apply()
|
||||
self.assertEqual(version_top.entlohnungsstufe, max_stufe)
|
||||
self.assertEqual(version_top.entlohnungsstufe, max_stufe)
|
||||
|
||||
def test_06_bda_vorschlag_aus_vordienstzeiten(self):
|
||||
"""AP9 — § 67 Abs 1 GemBG: BDA-Vorschlag = Vertragsbeginn
|
||||
zurückverlegt um die anerkannten Vordienstzeiten; Übernahme
|
||||
setzt das BDA und den Vorrückungstermin neu (§ 66 Abs 2)."""
|
||||
version = self._version_mit_katalog(date(2014, 3, 15))
|
||||
version.write({'contract_date_start': date(2026, 7, 1)})
|
||||
self.assertFalse(version.bda_vorschlag)
|
||||
version.vordienstzeiten_monate = 48
|
||||
self.assertEqual(version.bda_vorschlag, date(2022, 7, 1))
|
||||
# Ohne Übernahme bleibt das gepflegte BDA (Setup) unangetastet.
|
||||
self.assertEqual(version.besoldungsdienstalter, date(2014, 3, 15))
|
||||
with freeze_time('2026-09-12'):
|
||||
version.action_bda_uebernehmen()
|
||||
self.assertEqual(version.besoldungsdienstalter, date(2022, 7, 1))
|
||||
# Vorrückungstermin nach § 66 Abs 2: Die 4-Jahres-Vollendung
|
||||
# (1. 7. 2026) ist am 12. 9. 2026 bereits verstrichen → der
|
||||
# Termin der NÄCHSTFÄLLIGEN Vorrückung: BDA + 8 Jahre =
|
||||
# 1. 7. 2030 → 1. 8. 2030.
|
||||
self.assertEqual(version.vorrueckungstermin, date(2030, 8, 1))
|
||||
Reference in New Issue
Block a user