[IMP] odoo-at-payroll: GP6-Bau, KFS/BW-6-Abgleich und Odoo-19-Mechanik-Funde dokumentiert
CHANGELOG-GP6-Eintrag; Plan-Abschnitt-10-Update (Buchungsmatrix nach KFS/BW 6, Nutzer-Klaerungen 5.1-5.3 inkl. aufgeklaerter Vertauschung Loehne/Gehaelter, Option-A-minimal-Split, NET-Umbenennung mit Default-Regel-Kopie-Fund); MEMORY-Handoff (88/88 auf Wegwerf-DB, GP7 als naechster Bauabschnitt, offene Referenzbuchhaltungs-Reste, Odoo-19-Mechanik-Funde: function-Record-ID-Semantik, Journal-Default-Constraint, Scaffold-Konto-Falle).
This commit is contained in:
+115
-9
@@ -2,9 +2,47 @@
|
||||
|
||||
## Current focus
|
||||
|
||||
**GP5 Abfertigung Neu (BMSVG) umgesetzt und grün (84/84 Tests) —
|
||||
nächster Bauabschnitt GP6 FI-Buchung UGB bzw. GP7 Meldewesen
|
||||
(Priorität mit Nutzer klären)** (2026-09-11): Kern 19.0.3.1.0
|
||||
**GP6 FI-Buchung UGB umgesetzt und grün (88/88 Tests) — nächster
|
||||
Bauabschnitt GP7 Meldewesen/Belege (Kern-Bau AP5/AP6)** (2026-09-12):
|
||||
privat 19.0.6.0.0 — Buchungsmatrix nach **KFS/BW 6** (Nutzer-
|
||||
Referenz-Exemplar `.additional_docs/KFSBW6_13072017_RF.pdf`, extrah.
|
||||
`/tmp/kfsbw6/` ad hoc): Hook `_configure_payroll_account_at`
|
||||
(`models/account_chart_private.py`; BE-Muster; Chart-Load-Pfad
|
||||
`_post_load_data` + `<function>`-Datendatei für Bestands-Companies —
|
||||
der ERSTE `<value>` einer function ist die Record-ID-Liste,
|
||||
convert.py!) ordnet Regelkonten (Matrix als Python-Dict), Journal
|
||||
SLR (Default 6200, BE-Muster — Odoo-Constraint verbietet
|
||||
Receivable/Payable als Journal-Default!) und NET-Konto **3850**
|
||||
(Nutzer 5.1; Anlage+reconcile, l10n_at-Chart hat es nicht).
|
||||
**EKR-Debit-Split:** `l10n_at_personalgruppe` am Vertrag +
|
||||
`l10n_at_account_debit_arbeiter` je Regel, Option A minimal (Nutzer
|
||||
5.2: 6000/6500/6600/6601/6602; Rest Fallback auf Angestellten-
|
||||
Konten bis Referenzbuchhaltungs-Fixierung); `_prepare_slip_lines`-
|
||||
Gesamtüberschreibung `models/account_posting_private.py` (Odoo hat
|
||||
keinen Override-Punkt; Upstream-Kopie Odoo-Pin mit 1 Substitution,
|
||||
testgepinnt). Nutzer-Vertauschung aufgeklärt: „6000 Gehälter/6200
|
||||
Löhne“ → KFS/BW 6 sagt 600–619 Löhne, 620–639 Gehälten. **NET-
|
||||
Umbenennung NETTO→NET** (Odoo filtert code 'NET' für Payment/
|
||||
net_wage/Negativ-Netto) + **Odoo-19-Fund:** Structure-Anlegen kopiert
|
||||
die default_structure-Regeln (BASIC/GROSS/NET/…) via Feld-Default
|
||||
in rule_ids — kopierte NET-Regel kollidiert im result_rules-Dict
|
||||
(Netto=0); Fix: `<function>` archiviert die Kopie (active=False;
|
||||
KEIN Unlink — struct_id NOT NULL + historische Linien behalten
|
||||
Regel-Ref; One2many blendet Archivierte aus). Konto-Suche exakt
|
||||
vor Präfix-Fallback (Präfix max. +1 Stelle) — sonst matcht
|
||||
'6000%' Odoo-Scaffold 600000 „Expenses“ chartloser Firmen!
|
||||
BVG 6440 (EKR 644) vor 6400 (Odoo-Chart), Credit 3600 (Nutzer 5.3);
|
||||
depends + l10n_at + hr_payroll_account_iso20022. Tests
|
||||
`test_account_private` (4, Kontenplan-Mock ohne Chart-Install;
|
||||
NET-Rundungscents = Odoo-„Adjustment Entry“ auf Journal-Default,
|
||||
delta=0.02) + NETTO→NET in 4 Suiten — **88/88 grün** (frischer
|
||||
`-i`-Lauf, Wegwerf-DB, aufgeräumt). Offen: Arbeiter-Sub-Konten-End-
|
||||
codes mit Referenzbuchhaltung (GP0-Rest), Payment-/SEPA-Registrierung
|
||||
nur strukturell getestet, `odoo_dev` Update nachholen (läuft auf
|
||||
GP4-Stand).
|
||||
|
||||
**GP5 Abfertigung Neu (BMSVG) umgesetzt und grün (84/84 Tests)**
|
||||
(2026-09-11): Kern 19.0.3.1.0
|
||||
(`at_sv_bv_dg` 1,53 % in `rule_parameters_sv_2026.xml`); privat
|
||||
19.0.5.0.0 — Regel `BVG` (ATP_DG, ohne Nettoeffekt) auf **EIGENER
|
||||
ungecappter BV-Grundlage** (§ 6 Abs 5 iVm § 49 ASVG: kein HBG-/
|
||||
@@ -154,6 +192,46 @@ B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“).
|
||||
|
||||
## Completed
|
||||
|
||||
- **GP6 FI-Buchung UGB umgesetzt (88/88 grün)** (2026-09-12):
|
||||
`l10n_at_hr_payroll_private` 19.0.6.0.0 — Buchungsmatrix KFS/BW 6:
|
||||
`models/account_chart_private.py` (Matrix-Dict + Hook
|
||||
`_configure_payroll_account_at`: exakte Konto-Suche mit
|
||||
Längen-gebundenem Präfix-Fallback gegen Odoo-Scaffold-Konten
|
||||
600000 „Expenses“; NET-Konto 3850 Anlage+reconcile; Journal SLR
|
||||
Default 6200 — Odoo-Constraint gegen Receivable/Payable als
|
||||
Journal-Default) + `data/hr_payroll_account_private.xml`
|
||||
(`<function>`-Trigger; erster value = Record-IDs) +
|
||||
`models/account_posting_private.py` (`_prepare_slip_lines`-
|
||||
Upstream-Kopie mit Arbeiter-Debit-Substitution) +
|
||||
`l10n_at_personalgruppe` (hr.version) /
|
||||
`l10n_at_account_debit_arbeiter` (hr.salary.rule). NETTO→NET
|
||||
(`action_register_payment`/net_wage/Negativ-Netto filtern
|
||||
code 'NET') + `<function>`-Archivierung der automatisch
|
||||
kopierten default_structure-NET-Regel (Kollision im
|
||||
result_rules-Dict; active=False statt Unlink — struct_id NOT
|
||||
NULL, historische Linien). Tests `test_account_private` (4:
|
||||
Matrix+Move-Balance, Arbeiter-Split 6000/6500/660x, Gering-
|
||||
führig, Fallback/Warnung) auf Kontenplan-Mock ohne Chart-
|
||||
Install; NET-Rundungscents toleriert (Odoo bucht „Adjustment
|
||||
Entry“ aufs Journal-Default). **88/88 grün** (frischer `-i`-
|
||||
Lauf, Wegwerf-DB aufgeräumt); README/CHANGELOG/PLAN-10/MEMORY
|
||||
nachgezogen; Rechenfälle `docs/rechenfaelle/buchhaltung.md`.
|
||||
KFS/BW-6-Extraktion via opendataloader-pdf (Skill-Disziplin;
|
||||
Output /tmp, unversioniert).
|
||||
|
||||
- **Zed-Threads Auto-Sync Workstation↔Laptop installiert** (2026-09-12):
|
||||
beide DBs jetzt 831/831 identisch; systemd-User-Timer `zed-threads-sync.timer`
|
||||
(10 min) + `~/.local/bin/zed-threads-sync.sh` via ssh-Alias `framework`
|
||||
(Seed-Push 117 WS-Threads, danach idempotente Delta-Zyklen, End-to-End-
|
||||
Test inkl. Timer-Pfad grün). Details siehe Entscheidung „Zed-Threads
|
||||
maschinenlokal“.
|
||||
|
||||
- **Zed-Threads-DBs Workstation↔Laptop konsolidiert** (2026-09-12): 714
|
||||
Laptop-Threads in die WS-`threads.db` gemerged (117→831, 0 ID-Kollisionen,
|
||||
Integrity ok; Laptop-Remote-Sessions schreiben clientseitig, WS-Zed war
|
||||
geschlossen; Backup `/tmp/threads.db.workstation-backup`). Verfahren +
|
||||
Finale-Sync siehe Entscheidung „Zed-Threads maschinenlokal“.
|
||||
|
||||
- **Skill `opendataloader-pdf` erstellt und in den Agent-Workflow integriert**
|
||||
(2026-09-12): Neues Skill `.agents/skills/opendataloader-pdf/` (SKILL.md +
|
||||
vendored `scripts/verify-json.py`, `scripts/hybrid-health.sh` aus dem
|
||||
@@ -1035,6 +1113,33 @@ B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“).
|
||||
XML-Well-formedness-Check.
|
||||
- `.firecrawl/` bleibt lokal unversioniert (Rechts-Rohquellen); bei Fehlen
|
||||
neu beschaffen — niemals aus Trainingswerten arbeiten.
|
||||
- **Zed-Threads maschinenlokal** (2026-09-12): Threads liegen je Maschine in
|
||||
`~/.local/share/zed/threads/threads.db` (SQLite, journal=delete,
|
||||
`data_type='zstd'`); Remote-Sessions (Laptop→WS) schreiben nur clientseitig
|
||||
(verifiziert: Remote-Server hält DB nicht offen, laufender Laptop-Thread
|
||||
fehlt in WS-DB); kein Zed-Sync, kein `threads_path`-Setting in Zed 1.20.
|
||||
Laptop-Schema hat zusätzlich `worktree_branch` — Merge nutzt Spalten-
|
||||
Schnittmenge, der Wert wird auf WS-Seite verworfen. Konsolidierung =
|
||||
Stich-Sync, driftet sofort wieder. Merge Laptop→WS: scp der Laptop-DB →
|
||||
`/tmp/laptop-threads.db`, Backup `cp -a` der WS-DB, dann
|
||||
`sqlite3 ~/.local/share/zed/threads/threads.db "ATTACH '/tmp/laptop-threads.db' AS lp;" "INSERT OR REPLACE INTO main.threads (id, summary, updated_at, data_type, data, parent_id, folder_paths, folder_paths_order, created_at) SELECT l.id, l.summary, l.updated_at, l.data_type, l.data, l.parent_id, l.folder_paths, l.folder_paths_order, l.created_at FROM lp.threads l WHERE NOT EXISTS (SELECT 1 FROM main.threads t WHERE t.id = l.id AND t.updated_at > l.updated_at);" "DETACH lp;"`
|
||||
— WS-Zeile bleibt, wenn strikt neuer. Rückübertrag zur Laptop-DB per scp
|
||||
nur bei geschlossenem Laptop-Zed und vorherigem Re-Merge des finalen
|
||||
Laptop-Stands (sonst Verlust der Session-Enden). Neue Threads erscheinen
|
||||
im Agent-Panel erst nach Zed-Restart.
|
||||
**Auto-Sync installiert** (2026-09-12, Workstation-koordiniert): systemd-
|
||||
User-Timer `zed-threads-sync.timer` (10 min) →
|
||||
`~/.local/bin/zed-threads-sync.sh` (ssh-Alias `framework`): Wasserzeichen-
|
||||
Deltas je Richtung (1-h-Sicherheitsfenster), Guard `>=` (Zeile ersetzt nur
|
||||
bei strikt neuerem `updated_at` — idempotent, schont Laptop-
|
||||
`worktree_branch`), `busy_timeout=5000`, Integritätscheck je Delta,
|
||||
State/Log `~/.local/state/zed-threads-sync/`. Wartungshinweis:
|
||||
`strftime('%s', updated_at)` liefert TEXT — CAST AS INTEGER nötig, sonst
|
||||
matcht der Delta-Filter alle Zeilen (in Zyklus 1 passiert, harmlos dank
|
||||
Guard, behoben). Grenzen: Löschungen propagieren nicht, fremde Threads
|
||||
erst nach Zed-Restart sichtbar, Sync läuft nur bei bestehender WS-User-
|
||||
Session (Linger optional), Laptop offline = harmloser Skip. Die manuelle
|
||||
Finale-Sync-Checkliste ist damit obsolet.
|
||||
|
||||
## Files that matter right now
|
||||
|
||||
@@ -1099,12 +1204,13 @@ B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“).
|
||||
unversioniert); Dev-DB `odoo_dev` (PostgreSQL lokal)
|
||||
- `addons/l10n_at_hr_payroll_private/` — General-AT (GP1 KV-Framework
|
||||
+ Seed D2; GP2 Entgelt-Engine; GP3 LSt-Anbindung; GP4 SV/DB;
|
||||
**GP5 Abfertigung Neu umgesetzt 2026-09-11** — `test_kv_katalog` 8 +
|
||||
`test_entgelt_private` 21 + `test_lst_private` 6 + `test_sv_private`
|
||||
8 + `test_bv_private` 10 grün auf Wegwerf-DB `gp5_test` (**84/84**,
|
||||
frischer `-i`-Lauf — `odoo_dev` noch auf GP4-Stand, Update
|
||||
nachholen); Rechenfall-Fixtures unter `docs/rechenfaelle/` inkl.
|
||||
abfertigung.md; GP6 FI-Buchung / GP7 Meldewesen als Nächstes)
|
||||
GP5 Abfertigung Neu; **GP6 FI-Buchung UGB umgesetzt 2026-09-12** —
|
||||
`test_kv_katalog` 8 + `test_entgelt_private` 21 + `test_lst_private`
|
||||
6 + `test_sv_private` 8 + `test_bv_private` 10 + `test_account_private`
|
||||
4 grün auf Wegwerf-DB (**88/88**, frischer `-i`-Lauf — `odoo_dev`
|
||||
noch auf GP4-Stand, Update nachholen); Rechenfall-Fixtures unter
|
||||
`docs/rechenfaelle/` inkl. buchhaltung.md (KFS/BW-6-Matrix);
|
||||
GP7 Meldewesen/Belege als Nächstes)
|
||||
- `addons/l10n_at_hr_payroll/` — Bundes-Kern (SV/TASY + GP3 Lohnsteuer
|
||||
`models/lohnsteuer.py` + **GP4 SV/DB `models/sozialversicherung.py`**
|
||||
(DG/Geringfügigkeit/§ 49/Altersstichtage/§ 2a-Staffel/WF-Vektor/
|
||||
|
||||
Reference in New Issue
Block a user