[IMP] l10n_at_hr_payroll: GP3 Lohnsteuer-Kern (tariff, cumulative monthly tax, 67 sechstel engine, 68 buckets) + TASY runtime fixes

This commit is contained in:
2026-09-11 22:24:03 +02:00
parent 51ff857414
commit 547c48e456
8 changed files with 833 additions and 11 deletions
+13 -2
View File
@@ -1,6 +1,8 @@
# Part of the odoo-at-payroll project. License: LGPL-3.
from lxml import etree
import base64
from odoo import _, api, fields, models
from odoo.exceptions import UserError
@@ -101,7 +103,14 @@ class L10nAtPayrollTasyImportWizard(models.TransientModel):
def _tasy_root(self):
self.ensure_one()
parser = etree.XMLParser(resolve_entities=False, no_network=True)
return etree.fromstring(self.file, parser)
data = self.file or b''
if isinstance(data, str):
data = data.encode()
# Binary kann XML-Bytes ODER base64 (str/Bytes) liefern:
# dekodieren, wenn kein '<' am Anfang steht.
if not data.lstrip().startswith(b'<'):
data = base64.b64decode(data)
return etree.fromstring(data, parser)
@staticmethod
def _tasy_text(node, tag):
@@ -233,7 +242,9 @@ class L10nAtPayrollTasyImportWizard(models.TransientModel):
self.ensure_one()
old = parameter_obj._get_parameter_from_code(code, date_from,
raise_if_not_found=False)
old_value = old.parameter_value if old else ''
# _get_parameter_from_code liefert den geparsten Wert (float/dict)
# oder None — nicht den Parameter-Record.
old_value = repr(old) if old is not None else ''
old_float = None
try:
old_float = float(old_value)