Files
odoo-at-payroll/addons/l10n_at_gemeinde_payroll/views/tasy_views.xml
T
fegger 42bb759fd1 [IMP] l10n_at_gemeinde_payroll: implement SV value layer (AP4) from OEGK TASY
SV-Werte-Implementierung nach dem freigegebenen TASY-Plan (PLAN-TASY-SV-Import):

- hr.rule.parameter-Seed 2026 (20 Parameter, generator-erzeugt aus dem
  ÖGK TASY-LSWH-Export, Stichtag 2026-07-01): Geringfügigkeit 551,10 EUR
  (GFGBTG, ab 2025 — Aufwertungsaussetzung korrekt abgebildet), HBG
  monatlich 6.930 EUR (HBGALLG tgl. x 30), HBG SZ 13.860 EUR, KV
  3,87/3,78, PV 10,25/12,55, AV 2,95/2,95, UV 0/1,10, IESG 0/0,10,
  BV 1,53, AK/WF geführt, § 2a AMPFG-Staffel aus dem SV-Werte-Report.
  Generator mit Herkunftsnachweis + Erwartungswert-Ankern
  (personalverrechnung/tools/gen_sv_parameters_2026.py, Exit 1 bei
  Abweichung von den offiziellen Ankern).
- TASY-Quelldatei committet (personalverrechnung/quellen/, 5 MB —
  öffentliches Tarifdatenmaterial ohne Personendaten) für Seed- und
  Testreproduzierbarkeit.
- Deklarative TASY-Mapping-Tabelle (gemeinde.payroll.tasy.mapping,
  data XML): bbb-Codes (Cent, Faktor z. B. x 30) und Tarifzweige
  (_dn/_dg-Suffix-Konvention) — keine festen Werte im Code.
- Import-Wizard (TransientModel, lxml safe parsing):
  Beschaeftigtengruppe B002 ("Angestellte") -> Tarifgruppe ->
  tarifgruppeSetZuord -> Tarifset -> Tarif; bei Varianten gewinnt die
  Split-Variante (DN>0 und DG>0), dann die einseitige DG-Variante (UV/BV);
  freie-DN-Varianten verlieren. Preview mit Delta, Sprungwarnung > 10 %,
  Warnzeilen werden nie automatisch übernommen; Schreiben versionierter
  hr.rule.parameter.value-Sätze erst nach expliziter Bestätigung.
- Tests (4 Suiten): Seed-Werte am Stichtag, Fixture-Parser
  (Split-Präferenz, Cent-Rechnung), Versionsverhalten (Update statt
  Duplikat), Echtdaten-Test gegen den 5-MB-Export (Auflösung == Seed,
  keine Warnzeilen).
- Security/Views/Menüs für Mapping + Wizard; Modul-Version 19.0.1.2.0.

Statische Validierung grün (py_compile, XML, Manifest); Runtime-Testlauf
auf dem Dev-Host ausständig.
2026-09-09 12:47:10 +02:00

106 lines
4.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="tasy_mapping_list_view" model="ir.ui.view">
<field name="name">gemeinde.payroll.tasy.mapping.list</field>
<field name="model">gemeinde.payroll.tasy.mapping</field>
<field name="arch" type="xml">
<list string="TASY-Mappings">
<field name="tasy_art"/>
<field name="tasy_code"/>
<field name="parameter_code"/>
<field name="cent_werte"/>
<field name="faktor"/>
<field name="active" widget="boolean_toggle"/>
</list>
</field>
</record>
<record id="tasy_mapping_form_view" model="ir.ui.view">
<field name="name">gemeinde.payroll.tasy.mapping.form</field>
<field name="model">gemeinde.payroll.tasy.mapping</field>
<field name="arch" type="xml">
<form string="TASY-Mapping">
<sheet>
<group>
<group>
<field name="tasy_art"/>
<field name="tasy_code"/>
<field name="parameter_code"/>
</group>
<group>
<field name="cent_werte" invisible="tasy_art != 'bbb'"/>
<field name="faktor" invisible="tasy_art != 'bbb'"/>
<field name="active" widget="boolean_toggle"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_tasy_mapping" model="ir.actions.act_window">
<field name="name">TASY-Mappings (SV-Werte)</field>
<field name="res_model">gemeinde.payroll.tasy.mapping</field>
<field name="view_mode">list,form</field>
</record>
<record id="tasy_import_wizard_form_view" model="ir.ui.view">
<field name="name">gemeinde.payroll.tasy.import.wizard.form</field>
<field name="model">gemeinde.payroll.tasy.import.wizard</field>
<field name="arch" type="xml">
<form string="SV-Werte aus TASY-LSWH-Export importieren">
<group>
<field name="file" filename="filename"/>
<field name="filename" invisible="1"/>
<field name="beschaeftigtengruppe_code"/>
<field name="stichtag" readonly="1"/>
</group>
<notebook>
<page string="Vorschau" name="vorschau">
<field name="line_ids">
<list editable="bottom" create="0" delete="0">
<field name="uebernehmen" widget="boolean_toggle"/>
<field name="parameter_code"/>
<field name="name"/>
<field name="alter_wert"/>
<field name="neuer_wert"/>
<field name="date_from"/>
<field name="warnung"
decoration-danger="warnung"/>
</list>
</field>
</page>
<page string="Protokoll" name="protokoll">
<field name="protocol"/>
</page>
</notebook>
<footer>
<button string="1) Datei analysieren" name="action_parse"
type="object" class="btn-secondary"/>
<button string="2) Ausgewählte Werte übernehmen"
name="action_apply" type="object"
class="btn-primary" invisible="not line_ids"/>
<button string="Abbrechen" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_tasy_import_wizard" model="ir.actions.act_window">
<field name="name">SV-Werte importieren (TASY)</field>
<field name="res_model">gemeinde.payroll.tasy.import.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem id="menu_gemeinde_payroll_tasy_mapping"
name="TASY-Mappings (SV-Werte)"
parent="menu_gemeinde_payroll_root"
action="action_tasy_mapping" sequence="40"/>
<menuitem id="menu_gemeinde_payroll_tasy_import"
name="SV-Werte importieren (TASY)"
parent="menu_gemeinde_payroll_root"
action="action_tasy_import_wizard" sequence="50"/>
</odoo>