T1 — Buchhaltung — aktueller Stand¶
1:1-Spiegel aus dem Repo
Quelle: comms/T1_AKTUELL.md · Stand der Quelldatei: 10.08.2026 10:42 · erzeugt: 14.08.2026 00:33
Diese Seite ist eine wortgetreue Kopie. Geaendert wird immer die Quelldatei, nie diese Seite.
Sprint: Strang 2 (Accounting) · Auftrag B3 — P0-Pruefung + Spez-Fassung 1.1 · UEBERNOMMEN 2026-08-10 09:50 · ZURUECKGEGEBEN 2026-08-10 10:05
MELDUNG T1 · T1-03 Buchhaltung · Runde B3-P0 · 2026-08-10 ~10:05 · STOPP
Vorab: Fenster-FEHLPASS gemeldet, dann korrekt gesetzt¶
Das Fenster startete im Haupt-Checkout (.lane = GIT) mit getippter Kennung T1 → nach D-067/§0c FEHLPASS, ich habe nichts ausgefuehrt und gemeldet. M hat auf T1-Arbeit entschieden; ich arbeite seitdem im T1-Worktree ~/W6_LANES/T1 (Branch lane/t1, .lane = T1), SYNC per fetch + rebase origin/main auf 5002fc6. Die Identitaets-Regel hat hier genau das getan, wofuer sie gebaut wurde.
Lage¶
Der FREIGABEN-Kopfblock ist unveraendert (B3-Spez — von mir am 09.08. geliefert), ROLLING_PLAN Strang 2 sagt „Vollzug liegt bei G, kein Blocker". Formal habe ich also keinen neuen Auftrag. Statt Leerlauf habe ich die Werkbank-Rolle aus B1 fortgesetzt (T1 prueft Gs Zulieferung), weil G inzwischen P0 gefahren hat. Alles read-only, ausschliesslich in T1-Zonen, kein Odoo-Zugriff. Sieht G das anders: bitte im Kopfblock korrigieren.
Erledigt¶
1. P0-Zulieferung geprueft — sie haelt. Eigene Nachrechnung gegen die Roh-JSON statt Uebernahme der Wertung: 259/114/64/17 Felder, alle 15 Zielfelder vorhanden (0 Fehlstellen), alle Auswahlwerte bestaetigt, auf denen meine Domains stehen (display_type enthaelt product · payment_state enthaelt not_paid/partial · repartition_type base/tax · document_type invoice/refund). Rohform ist echt. Keine Rueckfallvariante wird gebraucht.
2. Spez auf Fassung 1.1 gehoben — kickoffs/B3_LESEPAKETE_SPEZ.md: Nachtragsblock im Kopf + die betroffenen Pakete direkt gepatcht, damit G weiter aus einer Datei fahren kann. Das musste vor Lauf B rein, weil P6 als naechstes laeuft.
| Neu/geaendert | Was |
|---|---|
| P0b (neu, 2 Aufrufe) | fields_get mit Attribut store auf account.move + account.move.line — entscheidet vorher, welche P6-Stufe greift |
| P6 63/64 (neu) | direkte Landgruppierung ueber tax_country_id bzw. commercial_partner_country |
| P6 65 (neu) | Kanal-Gruppierung ueber account.move.integration_id |
| P6 66 | der alte gepunktete Pfad — nur noch Rueckfall-Probe |
| P7 75–77 (neu) | exakte XML-Deckung ueber ubl_cii_xml_id + Peppol-Versandstatus |
| P7 78 (neu, A3) | l10n_de_datev_code je Steuersatz, mit is_used und integration_id in einer Abfrage |
| P1 18 (neu) | account.tax.is_used als Gegenprobe |
| P5 | Rueckfallvariante gestrichen (sie waere falsch gewesen) |
Uebergaben an G¶
- Lauf B = P0b + P6 in einem Lauf. P0b sind zwei
fields_get;read_groupkann nur nach gespeicherten Feldern gruppieren, undstorewar in Lauf A nicht angefordert. Ein Read entscheidet, statt eine Reihe von 500ern zu produzieren. - 61/62 bleiben Pflicht, auch wenn der kurze Weg funktioniert — sie tragen den Quersummen-Beweis gegen 671.346,45. Eine bequeme Gruppierung ersetzt keinen Abgleich.
- Die Kreuzprobe ist der wertvollste Teil von P6: Weichen die Landsummen aus 63/64 von der Steuer→Land-Zuordnung aus 61 ab, fallen „Land des Kunden" und „Land der Steuerschuld" auseinander — bei OSS der klassische Fehler. Dann beziffern, nicht aufloesen (gehoert nach U2/B4).
- Bitte die P0-Wertung nachziehen (Befund unten).
Offen / Naechster Schritt¶
STOPP. Naechster Zug liegt bei G (Lauf B). Ich bin einsatzbereit fuer die Vollstaendigkeits- und Quersummenpruefung, sobald P6-Evidence liegt.
Befunde¶
- BEFUND an der P0-Zulieferung (gering, kein Zahlenfehler): Die Wertung in
evidence/B3/_QUERIES.mdlistetdisplay_typemit 8 von 13 Werten, ohne die Kuerzung zu kennzeichnen. Es fehlenline_note,epd(Skonto),non_deductible_product,non_deductible_product_total,non_deductible_tax. Fuer meine U1-Domain (= 'product') folgenlos — fuer die dort genannte Rueckfallvariante waere sie falsch gewesen: die haette Skonto-, Rundungs- und COGS-Zeilen als Produktzeilen mitgezaehlt. Dieselbe Klasse wie meine B1-Nachforderung N2: eine Auswahl ist bereits ein Urteil. Die Rohdatei ist korrekt und vollstaendig, nur die Wertung ist zu kuerzungsfreudig. Ich habe die Rueckfallvariante daraufhin gestrichen, nicht bloss als unnoetig markiert. - Der groesste Gewinn aus P0 ist Z1 (PRIO):
account.move.tax_country_idist das Land der Steuerschuld — genau die Sicht, die eine USt-VA braucht, und nicht dasselbe wie das Kundenland. Vorher war Land nur mittelbar ueber die Steuer erreichbar. Falls beide Wege gruppierbar sind, ist Z1 nicht nur machbar, sondern doppelt belegt. - Kanal ist keine Kuer, sondern Scope: D-055 setzt den Scope auf alle Kanaele.
account.move.integration_id(E-Commerce Store) macht ihn erstmals am Beleg messbar. Zeigt 65 eine grosse Gruppe ohne Kanal, ist eine VA je Land nicht gegen Shopify-/Amazon-Abrechnungen abstimmbar — das trifft Z1 direkt. - A4 wird beantwortbar:
ubl_cii_xml_idist ein many2one aufir.attachment— das XML haengt nachweisbar am einzelnen Beleg. Statt meiner Naeherung („create_dateist Anlage-, nicht Belegdatum") gibt es jetzt die exakte Zahl „x von y Rechnungen 2026 ohne XML". Verbot verschaerft:ubl_cii_xml_fileist ein Binaerfeld und wird nie gelesen — der Nachweis, dass ein XML existiert, braucht seinen Inhalt nicht. - A3 war zur Haelfte spezifiziert: Die DATEV-Kontierung haengt nicht nur an der Gesellschaft, sondern ueber
l10n_de_datev_codeam Steuersatz. 78 beantwortet „wie viele eingesetzte Steuern haben keinen DATEV-Code" — die Frage, die beim StB tatsaechlich auf den Tisch kommt. - Beobachtung ohne eigenen Read:
epd(Skonto) existiert als eigener Zeilentyp. Tauchen solche Zeilen 2026 auf, wirken sie auf die Steuerbasis und gehoeren in die U1/U2-Wertung.
Abholung: zentral durch G ueber Cowork. Weiter erst nach FREIGABEN-Eintrag; auf »weiter« im Terminal zuerst FREIGABEN.md und comms/G_AKTUELL.md neu lesen.