Side rail · Forest & sand · EB Garamond + Inter
Odoo
A quotation shaped like Odoo's sale.order: order_line, validity_date, payment_term_id and the acceptance block, named so the Odoo module writes the whole mapping itself and the quote prints from the Sales app's own Print menu.
2 designs, each a separate take on the same document rather than a recolour of one layout: Side rail and Minimal, type-led. Every preview below is the actual compiled output, not a mock-up.
Open one in the editor and render it from your own JSON over the API — 1 page of A4 portrait, the same engine either way.
Printing from Odoo? These designs map to Odoo's own fields with no expression to write
Side rail · Forest & sand · EB Garamond + Inter
Minimal, type-led · Ink & magenta · Merriweather + Open Sans
Same document, same data model, 2 different arguments about how it should look on paper. Pick on layout and typography — the content behaves identically.
Each design is authored against an explicit reflow contract, so it is defined up front which blocks are emitted once per record and which fields absorb longer content. That is what stops the layout falling apart at a hundred rows.
| Design | Repeats per record | Grows with your data |
|---|---|---|
| Gilt Edge | order lines (table rows; header repeats on page break); one equation cell per tax group in the totals band; one meta cell per filled field | customer and delivery address blocks; each order-line description; the terms and conditions note |
| Midline | order lines (table rows; header repeats on page break); one fact cell per filled field; one ladder row per tax group; the three signature fields | the sender lines; the customer and delivery address blocks; each order-line description; the terms and conditions note |
Open a design in the editor and the agent reshapes it around your schema — then render it from your own data over the API, or let your users edit it in the embedded editor.