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_hr_payroll_private: Lohnpfändung — Existenzminimum § 291a EO, DN-Abzug, Kostenersatz, DSE (AP11)
Pfändungs-/Exekutionsmaschinerie nach EO §§ 291/291a/292/301/302/ 292h für den Privatwirtschafts-DN (Plan: personalverrechnung/PLAN-Restluecken-AP11.md §AP11, MVP + Kostenersatz): - Neues Modell l10n.at.payroll.pfaendung (models/pfaendung.py): Gläubiger, Vollstreckungsträger, Pfändungsart, Zustellungsdatum, Forderungshöhe, Status aktiv/gesetzt/geloest, Verwalter (§ 301 Abs 1 Z 6), 4-Wochen-Zahlungssperre (§ 304), Kostenersatz-Variante (§ 292h), DSE-/Auszahlungsfristen (computed), Rang nach Einlangedatum, Constraint Löse-/Zustellungsdatum; hr.version: l10n_at_unterhaltspflichten (0–5) und l10n_at_sz_anspruch (§ 291a Abs 2 Z 1/Z 2); hr.salary.rule: Flags l10n_at_pfandung_unpfandbar (AP12-Schnittstelle) und l10n_at_pfandung_beendigung (AP14/15-Schnittstelle) - Engine (hr.payslip): Existenzminimum-Maschine § 291a EO je Topf (laufend/sz13/sz14/beendigung), Pfändungsberechnungsgrundlage § 291 EO (laufend = Bezüge − unpfändbar − SV-DN − LSt), Masse, Kostenersatz § 292h (2 %/max 8 € + 1 %/max 4 €, nie vom Existenzminimum), Regeln PFAENDUNG (seq 75) / PFAENDUNG_SZ (seq 76); result_rules enthält ungerundete Rule-Summen — Lesezugänge runden auf Cents (Zeilenbeträge), sonst 1-Cent-Drift - Parameter at_eo_azr (2025: 1.273,99 / 2026: 1.308,39 €) und at_eo_kostenersatz; DSE-Report (qweb-pdf auf hr.employee), Views/Menu unter Payroll-Wurzel, Security (payroll-Groups + Company-ir.rule) - Rechenfälle docs/rechenfaelle/pfaendung.md (RF-PFA-1…7): lb-pfa-03 exakt verifiziert (33.840 € → EX 16.684 € / pfändbar 17.156 €); 103/103 Tests grün - Offene Reste dokumentiert: Unterhaltsexekution 75 %/Koinzidenz, Vorschüsse § 290c, Sachbezüge (AP12), Beendigungs-Regeln (AP14/15), 2027-AZR-Werte Version 19.0.9.5.0
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- ============================================================ -->
|
||||
<!-- AP11: Lohnpfändung — AZR-Werte (ASVG § 293 Abs 1 lit a -->
|
||||
<!-- sublit bb) versioniert je Gültigkeitsjahr. Die EO-§-291a- -->
|
||||
<!-- Grundbeträge (allg./erhöht/Unterhalt) und die HöBG werden -->
|
||||
<!-- in der Engine aus dem AZR abgeleitet (KB-KONFLIKTE A9: -->
|
||||
<!-- 2025 1.273,99 € BGBl II 417/2024; 2026 1.308,39 € BGBl II -->
|
||||
<!-- 263/2025). Jährliche Anpassung über die Anm.-Reihe nach- -->
|
||||
<!-- führen (Wartung, s. RUNBOOK). -->
|
||||
<!-- ============================================================ -->
|
||||
<record id="hr_rule_parameter_at_eo_azr" model="hr.rule.parameter">
|
||||
<field name="name">EO Pfändung — Ausgleichszulagenrichtsatz (AZR)</field>
|
||||
<field name="code">at_eo_azr</field>
|
||||
<field name="country_id" ref="base.at"/>
|
||||
</record>
|
||||
<record id="hr_rule_parameter_value_at_eo_azr_2025"
|
||||
model="hr.rule.parameter.value">
|
||||
<field name="rule_parameter_id" ref="hr_rule_parameter_at_eo_azr"/>
|
||||
<field name="date_from">2025-01-01</field>
|
||||
<field name="parameter_value">{'azr': 1273.99}</field>
|
||||
</record>
|
||||
<record id="hr_rule_parameter_value_at_eo_azr_2026"
|
||||
model="hr.rule.parameter.value">
|
||||
<field name="rule_parameter_id" ref="hr_rule_parameter_at_eo_azr"/>
|
||||
<field name="date_from">2026-01-01</field>
|
||||
<field name="parameter_value">{'azr': 1308.39}</field>
|
||||
</record>
|
||||
|
||||
<!-- Kostenersatz für Pfändungsdurchführung (§ 292h EO) und
|
||||
Drittschuldnererklärung (§ 302 EO) — pauschaliert, lb-pfa-09.
|
||||
USt auf den §-302-Kostenersatz: keine (VwGH 2011/15/0181). -->
|
||||
<record id="hr_rule_parameter_at_eo_kostenersatz"
|
||||
model="hr.rule.parameter">
|
||||
<field name="name">EO Pfändung — Kostenersatz (§ 292h/§ 302)</field>
|
||||
<field name="code">at_eo_kostenersatz</field>
|
||||
<field name="country_id" ref="base.at"/>
|
||||
</record>
|
||||
<record id="hr_rule_parameter_value_at_eo_kostenersatz"
|
||||
model="hr.rule.parameter.value">
|
||||
<field name="rule_parameter_id"
|
||||
ref="hr_rule_parameter_at_eo_kostenersatz"/>
|
||||
<field name="date_from">2017-01-01</field>
|
||||
<field name="parameter_value">{'erste_rate': 2.0, 'erste_max': 8.0, 'weitere_rate': 1.0, 'weitere_max': 4.0, 'dse_normal': 35.0, 'dse_ausnahme': 25.0}</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- ============================================================ -->
|
||||
<!-- AP11: Lohnpfändung — DN-Abzug (Einbehalt) in ATP_ABZUG. -->
|
||||
<!-- Reihenfolge: nach SV-DN (seq 60–65) und LSt (seq 70–71), -->
|
||||
<!-- vor NET (seq 100) — die Pfändungsberechnungsgrundlage -->
|
||||
<!-- (§ 291 EO) ist das Netto nach SV-DN/LSt (Bemessung 'neutral' -->
|
||||
<!-- → kein SV-/LSt-Effekt). PFAENDUNG = laufender Topf; -->
|
||||
<!-- PFAENDUNG_SZ = 13./14.-Bezug (eigener Berechnungskreis, -->
|
||||
<!-- lb-pfa-05). Kostenersatz (§ 292h/§ 302) ist Teil des -->
|
||||
<!-- pfändbaren Betrags (Verteilposition, keine extra Abzugs- -->
|
||||
<!-- zeile — sonst Doppelabzug; s. _at_pfaendung_kostenersatz). -->
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<record id="rule_pfaendung" model="hr.salary.rule">
|
||||
<field name="name">Lohnpfändung — Einbehalt (laufender Bezug, § 291a EO)</field>
|
||||
<field name="code">PFAENDUNG</field>
|
||||
<field name="sequence" eval="75"/>
|
||||
<field name="category_id" ref="l10n_at_hr_payroll_private.category_atp_abzug"/>
|
||||
<field name="struct_id" ref="l10n_at_hr_payroll_private.structure_at_privat"/>
|
||||
<field name="condition_select">python</field>
|
||||
<field name="condition_python"><![CDATA[
|
||||
# Einbehalt nur bei aktiver Pfändung und pfändbarem laufendem Bezug.
|
||||
result = bool(payslip.employee_id._at_pfaendungen_aktiv(payslip.date_to)) \
|
||||
and payslip._at_pfaendung_masse(result_rules, 'laufend') > 0
|
||||
]]></field>
|
||||
<field name="amount_select">code</field>
|
||||
<field name="l10n_at_bemessung">neutral</field>
|
||||
<field name="amount_python_compute"><![CDATA[
|
||||
# Laufender Topf: Berechnungsgrundlage (Netto nach SV-DN/LSt, ohne
|
||||
# unpfändbare Bezugsarten) minus Existenzminimum (§ 291a EO).
|
||||
result = payslip._at_pfaendung_masse(result_rules, 'laufend')
|
||||
]]></field>
|
||||
</record>
|
||||
|
||||
<record id="rule_pfaendung_sz" model="hr.salary.rule">
|
||||
<field name="name">Lohnpfändung — 13./14. Bezug (eigener Topf, § 291a EO)</field>
|
||||
<field name="code">PFAENDUNG_SZ</field>
|
||||
<field name="sequence" eval="76"/>
|
||||
<field name="category_id" ref="l10n_at_hr_payroll_private.category_atp_abzug"/>
|
||||
<field name="struct_id" ref="l10n_at_hr_payroll_private.structure_at_privat"/>
|
||||
<field name="condition_select">python</field>
|
||||
<field name="condition_python"><![CDATA[
|
||||
# 13./14.-Bezug als eigener Pfändungsberechnungskreis (lb-pfa-05).
|
||||
masse = (payslip._at_pfaendung_masse(result_rules, 'sz13')
|
||||
+ payslip._at_pfaendung_masse(result_rules, 'sz14'))
|
||||
result = bool(payslip.employee_id._at_pfaendungen_aktiv(payslip.date_to)) \
|
||||
and masse > 0
|
||||
]]></field>
|
||||
<field name="amount_select">code</field>
|
||||
<field name="l10n_at_bemessung">neutral</field>
|
||||
<field name="amount_python_compute"><![CDATA[
|
||||
# 13. und 14. Bezug je eigener Existenzminimum (allg. Grundbetrag,
|
||||
# SZ = § 290b → nicht erhöht).
|
||||
result = (payslip._at_pfaendung_masse(result_rules, 'sz13')
|
||||
+ payslip._at_pfaendung_masse(result_rules, 'sz14'))
|
||||
]]></field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user