# odoo-go TODO — Weg zur 1:1 Paritaet mit Python Odoo Stand: 2026-04-02 | Go: 19.925 LOC | Python Referenz: 92.733 LOC (core) + Addons --- ## Legende - [ ] Offen - [x] Erledigt - ~70% = UI/Demo funktioniert, ~25% = Code-Tiefe vs Python --- ## 1. ORM-Kern (aktuell ~75%) ### Erledigt - [x] CRUD (create/read/write/unlink) - [x] Domain-Compiler (AND/OR/NOT, child_of, parent_of, any, dot-notation JOINs) - [x] read_group mit Aggregation (sum/avg/min/max/count, Date-Granularitaet) - [x] Computed Fields mit Dependency-Tracking - [x] _inherits (Delegation: res.users→res.partner, product.product→product.template) - [x] Related Fields (Read + Write-back) - [x] Record Rules (domain_force parsing, global AND + group OR) - [x] Copy/Duplicate mit IsCopyable - [x] Constraints in Create + Write - [x] Readonly-Skip in Write - [x] active_test Auto-Filter in Search - [x] Onchange mit Compute-Triggering - [x] sanitizeFieldValue (false→nil fuer non-boolean) - [x] name_search / name_create ### Offen - [ ] _inherit (Model-Extension/Mixin) — aktuell nur neue Models, kein Erweitern bestehender - [ ] Inverse Fields (Compute write-back via benannte Methode) - [ ] Multi-hop Related Fields (aktuell nur single-hop "fk.field") - [ ] Batch-Create (Liste von Values statt einzeln) - [ ] Prefetch/Lazy Loading (aktuell alles auf einmal) - [x] SQL Constraints (UNIQUE, CHECK) - [ ] Field-Level Groups (Feld-Sichtbarkeit nach Gruppen) - [x] Translatable Fields (translate=True → ir.translation Lookup) - [ ] Properties Field (JSONB key-value) - [ ] parent_path (Hierarchie-Optimierung) - [ ] Flush/Recompute Ordering (Python hat _recompute_todo Queue) - [x] Environment.ref() vollstaendig - [ ] Recordset Arithmetic (+ - & | Operatoren vollstaendig) --- ## 2. Web/RPC Server (aktuell ~80%) ### Erledigt - [x] JSON-RPC Dispatch (/web/dataset/call_kw, call_button) - [x] web_search_read / web_read / web_save - [x] web_read_group / read_group - [x] O2M Child Records in web_read Response - [x] get_views mit Comodel-Metadaten - [x] Onchange RPC - [x] Action Loading (/web/action/load) - [x] Menu Loading (/web/webclient/load_menus) - [x] Session Management (PostgreSQL-persistent) - [x] File Upload/Download (ir.attachment) - [x] CSV Export (/web/export/csv) - [x] HTML Reports (/report/html/) - [x] Translations Endpoint - [x] call_button mit Action-Return - [x] get_formview_action / name_create / ir.http stub ### Offen - [ ] PDF Reports (wkhtmltopdf oder Go-PDF-Library) - [ ] QWeb Template Engine (Report-Templates wie Python) - [ ] /web/dataset/export (XLSX Export) - [ ] /web/action/run (Server Actions ausfuehren) - [ ] /web/view/edit_custom (Custom View Saves) - [ ] /web/model/get_definitions - [ ] Kanban auto_unfold (Gruppen standardmaessig offen mit Records) - [ ] Binary Field Serving (Bilder in Form-Views) - [ ] Websocket/Longpoll (Bus fuer Live-Updates) - [ ] Mail-Integration (SMTP senden) --- ## 3. Views/UI (aktuell ~70%) ### Erledigt - [x] List View (auto-generiert + stored) - [x] Form View (auto-generiert + stored, mit Header-Buttons) - [x] Kanban View (auto-generiert + stored) - [x] Search View (auto-generiert mit Filters/Group-By) - [x] Stored Views aus DB (14 Views) - [x] Auto-generierte Views als Fallback - [x] O2M Inline-Listen in Form-Views (editable) - [x] Statusbar Widget mit clickable States ### Offen - [ ] View Inheritance (XPath-basiert, inherit_id) - [ ] Pivot View - [ ] Graph View - [ ] Calendar View - [ ] Gantt View - [ ] Activity View - [ ] Map View - [ ] View Customization (ir.ui.view.custom) - [ ] Dynamic Visibility (invisible/readonly Conditions in XML) - [ ] Widget-System (many2one_avatar, priority, statusbar etc.) - [ ] Chatter/Mail-Thread in Form-Views --- ## 4. Business-Module (aktuell ~25% Code-Tiefe) ### Account (1.072 / 40.910 LOC = 2.6%) - [x] account.move (Invoice CRUD, action_post, button_cancel) - [x] account.move.line (Buchungszeilen) - [x] account.journal, account.account, account.tax - [x] account.payment + payment.register Wizard - [ ] Reconciliation (Payment↔Invoice Matching) — **KRITISCH** - [ ] Bank Statements (Import, Matching) - [ ] Tax Reports (Umsatzsteuervoranmeldung) - [ ] Asset Management - [ ] Aged Receivable/Payable Reports - [ ] Fiscal Year / Period Management - [ ] Payment Provider Integration - [ ] Chart of Accounts Import (volle l10n_de) ### Sale (641 / 8.009 LOC = 8%) - [x] sale.order + sale.order.line (CRUD, Confirm, Create Invoice) - [x] Computed Amounts (untaxed, tax, total, line subtotal) - [ ] Sale Order Line Tax-Berechnung (tax_id → tax lines) - [ ] Pricelist-Support (Rabatte, Staffelpreise) - [ ] Quotation Templates - [ ] Sale Order Cancellation + Refund - [ ] Delivery Integration (Lieferschein-Erstellung korrekt) - [ ] Margin-Berechnung - [ ] Sale Reports (Revenue, Pipeline) ### Stock (588 / 17.672 LOC = 3.3%) - [x] stock.picking, stock.move, stock.location, stock.warehouse - [x] stock.quant (Basic) - [ ] Quant-Management (Reservation, Unreserve) — **KRITISCH** - [ ] Stock Valuation (FIFO, Average Cost) - [ ] Reorder Rules (stock.warehouse.orderpoint) - [ ] Barcode/Lot Tracking - [ ] Inventory Adjustments - [ ] Stock Reports (Valuation, Moves) - [ ] Multi-Warehouse Routing - [ ] Package Management ### Purchase (350 / 3.977 LOC = 8.8%) - [x] purchase.order + purchase.order.line (CRUD, Confirm) - [ ] 3-Way Matching (PO → Receipt → Bill) - [ ] Purchase Agreements - [ ] Vendor Bills aus PO erstellen - [ ] Purchase Reports ### CRM (300 / 5.019 LOC = 6%) - [x] crm.lead + crm.stage + crm.lost.reason - [x] Pipeline Kanban mit Stages - [x] Won/Lost Actions - [ ] Lead Scoring / Probability - [ ] Email Integration (Lead aus Email) - [ ] Activities / Planned Actions - [ ] Lead Assignment Rules - [ ] CRM Reports (Pipeline, Revenue) ### HR (200 / 4.609 LOC = 4.3%) - [x] hr.employee, hr.department, hr.job - [ ] Contracts (hr.contract) - [ ] Leave Management (hr.leave) - [ ] Attendance Tracking - [ ] Payroll Integration - [ ] Employee Documents ### Project (200 / 6.730 LOC = 3%) - [x] project.project, project.task - [ ] Task Stages / Kanban - [ ] Timesheet Integration - [ ] Project Updates / Milestones - [ ] Burndown Charts --- ## 5. System/Admin (aktuell ~68%) ### Erledigt - [x] Settings-Seite (res.config.settings mit Firmen-Fields) - [x] Users/Companies/Groups Verwaltung - [x] Technical Menu (Views, Actions, Parameters, Security, Logging) - [x] Session-Persistenz (PostgreSQL) - [x] ir.config_parameter (get_param/set_param) - [x] ir.cron Model (registriert) - [x] ir.logging Model - [x] res.lang + ir.translation Models - [x] Password Hashing (bcrypt) - [x] change_password Methode ### Offen - [ ] ir.cron Runner (Goroutine Scheduler der Jobs ausfuehrt) - [ ] Mail Server (ir.mail_server, SMTP Config) - [ ] Authentik SSO / OAuth2 (geplant, siehe memory) - [ ] API Key Auth (Token-basierter Zugriff) - [ ] Module Install/Upgrade Lifecycle - [ ] XML Data Loading (aus Addon data/ Ordnern) - [ ] User Audit Log (wer hat was geaendert) - [ ] Database Backup/Restore - [ ] Multi-Database Support --- ## 6. Infrastruktur ### Erledigt - [x] Docker Compose (Go Server + PostgreSQL) - [x] OWL 19.0 Frontend eingebettet - [x] JS Transpiler (ES6→odoo.define) - [x] XML Template Compiler - [x] CSS Bundling - [x] Database Manager (/web/database/manager) ### Offen - [ ] Tests (aktuell 0 Go-Tests fuer ORM) - [ ] CI/CD Pipeline - [ ] Migrations (Schema-Upgrades bei Model-Aenderungen) - [ ] Performance-Benchmarks - [ ] Logging Framework (strukturiert, nicht nur log.Printf) - [ ] Configuration File (statt nur Env-Vars) - [x] Odoo.com URLs entfernt (alle 5 Stellen) - [ ] Health-Check erweitern (DB + Dependencies) --- ## Priorisierung fuer naechste Sessions ### Prio 1 — Blockiert echte Nutzung 1. Account Reconciliation (Payment↔Invoice) 2. Stock Quant Management (Reservation) 3. View Inheritance (XPath) 4. PDF Reports (wkhtmltopdf) ### Prio 2 — Verbessert UX stark 5. Kanban auto_unfold 6. Binary Field Serving (Bilder) 7. Pivot/Graph Views 8. Dynamic Visibility in Views ### Prio 3 — Vervollstaendigung 9. ir.cron Runner 10. Mail Server Integration 11. Authentik SSO 12. Tests schreiben 13. Weitere Module vertiefen