mirror of
http://100.103.83.12:3003/fegger/odoo-at-payroll.git
synced 2026-09-17 08:52:45 +00:00
c474a39466
ELDA-Fixsatz-Framework (models/elda.py) nach DM-ORG 42.7.0 Kapitel C.1/C.2+E.1-E.3: Fixlängen-Sätze ohne Feldtrennzeichen (a/a-n linksbündig, Grundstellung blank; n rechtsbündig, Grundstellung 0, führende Nullen, KEINE Interpunktion — Beträge EURO-Cent kaufmännisch gerundet, Prozentsätze x1000 mit 3 Nachkommastellen), Encoding ISO-8859-15 (Standard-Encoding für Fixlängen), optionaler Dateiheader (DHKZ 2x blank + DHVN 01 + ENCD), Vorlaufsatz SART 00 (BEST/VSTR/VERS) + Schlusssatz SART 99 mit SANZ; SANR lückenlos ab 1 je Datenbestand; CRLF als Satztrenner (Praxis-Annahme, DM-ORG normiert keines — Parallellauf verifizieren). Lohnzettel Finanz L16 (models/lohnzettel_l16.py): Informationssatz I1 (SART I1, Länge 1.100, Strukturversion 03) + Mitteilungssatz L1 (SART L1, Länge 3.500, Lohnzettelversion 28 — zwingend ab 01.03.2026) mit vollständiger, PDF-verifizierter Feldtabelle (~210 Felder inkl. Kinderblock 15x123 ab Pos. 1501; DM-ORG 42.7.0 E.13/E.14). KZ-245-Formel: KZ 210 = Bruttobezüge gem. § 25 GESAMT (DM-ORG-Feldbeschreibung) — die Formel 210-215-220-230-243 ergibt die laufende Steuerbemessung, per Konstruktion konsistent mit der GP3-§-66-Kette (Ableitung aus l10n_at_bemessung/steuerbefreiung_68/s67_abs und Regelcodes; bewusst KEIN paralleles KZ-Klassifikationsfeld). Arbeitsstättenmeldung § 34 Abs 6 ASVG: SART 45 (Länge 300, Version 02, BEST AD/VSTR ST Statistik Austria) je AN am 31.12. aus dem Dienstort-Partner (GKZ manuell, Warnung wenn fehlt) — im selben Jahreslauf (Nutzer-Entscheidung 5.1). Kind-Datenmodell (models/kind.py — l10n.at.payroll.kind): Stammdaten-Wartung des Familienbonus Plus (Nutzer-Entscheidung 5.3: FB+ rechnet NICHT im Lohnsteuerkern — bei Unterschreiten der Steuer auf 0 erfolgt die Geltendmachung über die Arbeitnehmerveranlagung); Felder für den L16-Kinderblock (Familienname/Vorname/Geburtsdatum/VSNR/Staatsangehörigkeit/FB+-Monate voll/halb, Alterstaffel 166,68/58,34). Stammdaten (models/meldewesen.py): Beitragskontonummer BKNR + Lohnsteuernummer (res.company), Gemeindekennziffer GKZ (res.partner), VSNR-Formatprüfung LLLPTTMMJJ auf hr.version.ssnid (Prüfzifferalgorithmus = dokumentierter Rest, SVS-Quelle beschaffen), eSV-Abmeldegrund AGRD-Mapping auf hr.departure.reason (Standard 00); fallweise-Beschäftigungs-Flag auf hr.version (§ 33 Abs 1a Z 1 ASVG). Belege (AP6): Lohnzettel AT (ir.actions.report auf hr.payslip, AT-Layout mit Bezügen/DN-Abzügen/DG-Anteilen/Netto), Monatsdienstliste (mBGM-Kontrollschicht je AN) + Monatsjournal (je Lohnart Summen je Lauf) auf hr.payslip.run als QWeb (models/monatsreports.py + report/belege_reports.xml; account.report wird in keinem HR-Modul genutzt). Tests: test_elda_l16 (4 — Feldformatierung/Cent-Beträge/skala, Bestands-Assembly SANR/SANZ/CRLF/ISO-8859-15/Dateiheader, L16-Lauf mit positionsexakten Assertions aus der November-Fixture, Arbeitsstätten-Satz). 19.0.4.0.0.
127 lines
5.9 KiB
XML
127 lines
5.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<!-- ============================================================ -->
|
|
<!-- GP7 Meldewesen: L16-/Arbeitsstätten-Deklaration + Kind-Stamm -->
|
|
<!-- (FB+-Wartung am Mitarbeiter). -->
|
|
<!-- ============================================================ -->
|
|
|
|
<record id="l16_list_view" model="ir.ui.view">
|
|
<field name="name">l10n.at.payroll.l16.list</field>
|
|
<field name="model">l10n.at.payroll.l16</field>
|
|
<field name="arch" type="xml">
|
|
<list string="Lohnzettel Finanz (L16)">
|
|
<field name="jahr"/>
|
|
<field name="art"/>
|
|
<field name="company_id" groups="base.group_multi_company"/>
|
|
<field name="state" widget="badge"
|
|
decoration-success="state == 'done'"
|
|
decoration-info="state == 'draft'"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="l16_form_view" model="ir.ui.view">
|
|
<field name="name">l10n.at.payroll.l16.form</field>
|
|
<field name="model">l10n.at.payroll.l16</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Lohnzettel Finanz (L16) & Arbeitsstättenmeldung">
|
|
<header>
|
|
<button name="action_erzeugen" type="object"
|
|
string="Lauf erzeugen (Dateien)"
|
|
class="btn-primary"
|
|
invisible="state == 'done'"/>
|
|
<field name="state" widget="statusbar"
|
|
statusbar_visible="draft,done"/>
|
|
</header>
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="jahr"/>
|
|
<field name="art"/>
|
|
</group>
|
|
<group>
|
|
<field name="company_id"
|
|
groups="base.group_multi_company"/>
|
|
</group>
|
|
</group>
|
|
<notebook>
|
|
<page string="Mitteilungssätze" name="linien">
|
|
<field name="line_ids">
|
|
<list editable="bottom">
|
|
<field name="employee_name"/>
|
|
<field name="versicherungsnummer"/>
|
|
<field name="soziale_stellung"/>
|
|
<field name="kz210" optional="show"/>
|
|
<field name="kz215" optional="hide"/>
|
|
<field name="kz220" optional="show"/>
|
|
<field name="kz230" optional="hide"/>
|
|
<field name="kz245" optional="show"/>
|
|
<field name="lohnsteuer"/>
|
|
<field name="fab_betrag"
|
|
string="FB+"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
<page string="Dateien" name="dateien">
|
|
<group>
|
|
<field name="datei_l16"
|
|
filename="datei_l16_name"/>
|
|
<field name="datei_l16_name" invisible="1"/>
|
|
<field name="datei_arbeitsstaette"
|
|
filename="datei_arbeitsstaette_name"/>
|
|
<field name="datei_arbeitsstaette_name"
|
|
invisible="1"/>
|
|
</group>
|
|
</page>
|
|
<page string="Prüfprotokoll" name="protokoll">
|
|
<field name="protokoll"/>
|
|
</page>
|
|
</notebook>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_l16" model="ir.actions.act_window">
|
|
<field name="name">Lohnzettel Finanz (L16)</field>
|
|
<field name="res_model">l10n.at.payroll.l16</field>
|
|
<field name="view_mode">list,form</field>
|
|
</record>
|
|
|
|
<menuitem id="menu_l10n_at_payroll_meldewesen"
|
|
name="Meldewesen (ELDA/FinOnl)"
|
|
parent="hr_work_entry_enterprise.menu_hr_payroll_root"
|
|
sequence="97"/>
|
|
|
|
<menuitem id="menu_l10n_at_payroll_l16"
|
|
name="Lohnzettel Finanz (L16)"
|
|
parent="menu_l10n_at_payroll_meldewesen"
|
|
action="action_l16" sequence="10"/>
|
|
|
|
<!-- Kind-Stammdaten (FB+-Wartung) als Seite am Mitarbeiterformular -->
|
|
<record id="hr_employee_view_form_kind" model="ir.ui.view">
|
|
<field name="name">hr.employee.form.l10n_at_payroll_kind</field>
|
|
<field name="model">hr.employee</field>
|
|
<field name="inherit_id" ref="hr.view_employee_form"/>
|
|
<field name="arch" type="xml">
|
|
<notebook position="inside">
|
|
<page string="Kinder (FB+)" name="l10n_at_payroll_kinder"
|
|
groups="hr_payroll.group_hr_payroll_user">
|
|
<field name="l10n_at_payroll_kind_ids">
|
|
<list editable="bottom">
|
|
<field name="familienname"/>
|
|
<field name="vorname"/>
|
|
<field name="geburtstag"/>
|
|
<field name="versicherungsnummer"/>
|
|
<field name="fab_plus" widget="boolean_toggle"/>
|
|
<field name="fab_monat_von"/>
|
|
<field name="fab_monat_bis"/>
|
|
<field name="fab_halb_monat_von"/>
|
|
<field name="fab_halb_monat_bis"/>
|
|
</list>
|
|
</field>
|
|
</page>
|
|
</notebook>
|
|
</field>
|
|
</record>
|
|
</odoo> |