odoo-report-design · git:20260925.1a7f303 · 2026-09-25 · sha256 fa9c493632131b35
odoo-report-design git:20260925.1a7f303A
Immutable. This exact content never changes and is served at /api/v1/blob/fa9c493632131b35.
--- name: odoo-report-design description: Designs and reviews Odoo QWeb HTML and PDF reports with stable layout, print-safe assets, paper formats, localization, and maintainable templates. Use when creating, redesigning, reviewing, or debugging Odoo reports, QWeb report templates, report CSS, headers, footers, tables, page breaks, or PDF rendering. --- # Odoo Report Design Use this skill for report presentation and rendering work. Compose it with the target version skill, `odoo-website` for shared QWeb/website concerns, `odoo-web-testing` for browser and asset verification, and `odoo-migration` for major-version ports. ## First Move Identify the target Odoo version, report action, model, template chain, paper format, external layout, report asset bundle, and any custom report value provider. Inspect the target version's parent templates and assets before choosing XPath anchors or CSS classes. ## Workflow 1. Define the output contract: paper size, orientation, margins, header/footer, page numbering, languages, RTL requirements, expected page breaks, and whether HTML and PDF must match. 2. Separate data preparation from presentation. Keep business calculations in Python and use QWeb for composition, formatting, conditions, and iteration. 3. Build the smallest stable structure around the target version's supported report wrappers, external layout, and `.page` boundary. 4. Put report-only CSS and fonts in the target version's report asset bundle. Do not assume backend or website assets are available to PDF rendering. 5. Prefer semantic anchors and small inherited changes. Avoid copying core templates when an extension is sufficient. 6. Render representative records as HTML and PDF before calling the report complete. ## Design Guardrails - Use escaped output by default: `t-out` for text and `t-field` for formatted model values. Treat rich HTML as an explicit, documented trust boundary. - Keep tables resilient to long names, translated labels, missing values, and multi-record output. - Prefer local, bundled assets and explicit print CSS over remote resources or browser-only behavior. - Treat paper dimensions, margins, DPI, fonts, and renderer availability as part of the design, not deployment details. - Preserve report access rules and data visibility while changing presentation. ## References - [REPORT-DESIGN.md](REPORT-DESIGN.md) - layout, QWeb, CSS, assets, and print constraints. - [REPORT-REVIEW-CHECKLIST.md](REPORT-REVIEW-CHECKLIST.md) - implementation and review checklist.