[IMP] l10n_at_hr_payroll: TASY-Tarifsystem-Katalog, AGRD-Auswahl, DG-Kosten-/Lohnkonten-Reports, Wr.-DAG-Grundlagen (AP0-AP3)

AP0 Variante b — TASY-Tarifsystem-Katalog:
- Neue Katalogmodelle (BSGR/ERGB/Dienstgebergruppen/Tarifgruppen/
  Tarifsets/Tarife/Zuordnungen/Zu-Abschläge inkl. Steuerung),
  models/tasy_katalog.py — Auflösung Tarifgruppe (BSGR+ERGB+DGG)
  -> Sätze je Verrechnungsbasis
- Import-Wizard l10n.at.payroll.tasy.katalog.wizard (alle Träger,
  sektionsscharf, idempotent), Views/Menüs, Security
- Realexport-Test gegen TASY-LSWH-Export (B001/B002 = 39,05/37,55 %)

AP1 — eSV-Abmeldegründe (DM-ORG D.22):
- l10n_at_agrd Char -> vollständige Selection (33 Codes),
  Seed der Standard-Abgangsursachen (noupdate, hr-Defaults vorverbunden),
  Form-/Listen-Erbe

AP2a-c — Auswertungen:
- Monatsjournal: eigener Dienstgeberanteile-Block (ATP_DG vorher
  still ausgefiltert); Fix: models/monatsreports.py war nie in
  models/__init__.py importiert (GP7-Reports waren toter Code)
- Neuer Report Dienstgeber-Gesamtkosten (Brutto + LNK aufgeschlüsselt/
  kumuliert je AN + Laufsummen, Spalten FLAF/KommSt/DZ/BV/Wr. DAG)
- Jahreslohnkonto je DN + Betriebsjahreslohnkonto (Jahresbericht-
  Wizard, Monatsmatrix je Lohnart), report/jahresreports.xml

AP3 — Wr. Dienstgeberabgabe (RIS LrW GesNr 20000133 verifiziert):
- Company-Flag l10n_at_wien_dag (Kern), Fristenarten wien_dag/
  wien_dag_jahres (cron-geflaggt, 15./31. 3.), Company-View-Feld,
  Wr.-DAG-Spalte im DG-Kosten-Report
This commit is contained in:
2026-09-12 23:17:00 +02:00
parent 3c5cc3aded
commit 3c85cc6790
16 changed files with 1999 additions and 35 deletions
@@ -105,6 +105,32 @@ FRISTART_DEFINITIONEN = {
'ab 40 M / 35 F (⚠ blockiert — ASchV-Daten-'
'modell fehlt im Modul).',
},
'wien_dag': {
'name': 'Wr. Dienstgeberabgabe entrichten (Stadtkasse)',
'monatlich': True,
'tag': 15,
'action': None,
'wien_dag': True,
'hilfetext': 'Wr. DAG („U-Bahn-Steuer“, GesNr 20000133): '
'Selbstberechnungsabgabe — die im Vormonat '
'entstandene Abgabenschuld bis zum 15. des '
'Folgemonats an die Stadtkasse (Magistrat) '
'entrichten (§ 6 Abs 1). Nur Firmen mit Flag '
'l10n_at_wien_dag (Beschäftigungsort Wien).',
},
'wien_dag_jahres': {
'name': 'Wr. DAG-Jahreserklärung (Magistrat)',
'monatlich': False,
'monat': 3,
'tag_im_monat': 31,
'action': None,
'wien_dag': True,
'hilfetext': 'Bis 31. März die im Vorjahr entstandene '
'Abgabenschuld beim Magistrat schriftlich '
'erklären; darin auch die befreiten '
'Dienstverhältnisse angeben (§ 6 Abs 2 Wr. '
'DAG). Nur Firmen mit Flag l10n_at_wien_dag.',
},
}
@@ -188,7 +214,10 @@ class L10nAtPayrollFrist(models.Model):
deadline_monat = date(
folgemonat.year, folgemonat.month,
FRISTART_DEFINITIONEN['sv_mbgm']['tag'])
for art in ('sv_mbgm', 'db_dz_kommst'):
monatliche_arten = ['sv_mbgm', 'db_dz_kommst']
if company.l10n_at_wien_dag:
monatliche_arten.append('wien_dag')
for art in monatliche_arten:
self._sicherstellen(
company, art, vormonat.year, vormonat.month,
deadline_monat)
@@ -209,6 +238,11 @@ class L10nAtPayrollFrist(models.Model):
self._sicherstellen(
company, 'kommst_jahres', heute.year - 1, None,
date(heute.year, 3, 31))
# Wr. DAG-Jahreserklärung (31. 3., § 6 Abs 2).
if company.l10n_at_wien_dag:
self._sicherstellen(
company, 'wien_dag_jahres', heute.year - 1,
None, date(heute.year, 3, 31))
@api.model
def _sicherstellen(self, company, art, jahr, monat, deadline):