- Home
- Apps
- SaaS Tools
- Sale Order Line Images
Illustrative previewA build-to-order Odoo module that renders each product's image directly on the sale order line and inside the
printed sale quotation, so reps and customers recognize what is being sold at a glance.
ECOSIRE scopes, builds, installs, and supports it for your database.
What is Sale Order Line Images?
A build-to-order Odoo module that renders each product's image directly on the sale order line and inside the printed sale quotation, so reps and customers recognize what is being sold at a glance. ECOSIRE scopes, builds, installs, and supports it for your database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Sales reps and customers read quotations by product name and internal reference, but text alone is a weak signal. On configurable products, variant-heavy catalogs, or long multi-line orders, a wrong line is easy to miss until goods are picked or the customer disputes the PDF. Odoo core already stores a product image (image_1920 plus its resized image_128/image_256 companions on product.product and product.template), yet the standard sale.order.line editable list view shows none of it, and the out-of-the-box QWeb sale report (sale.report_saleorder_document) prints a text-only table. Teams end up cross-referencing a separate catalog or spreadsheet just to confirm a line is right — exactly the manual step Odoo is supposed to remove.
We build a focused module that surfaces the product thumbnail where the work happens. On the model side we add an image field to sale.order.line — either a stored related='product_id.image_128' or a compute method with @api.depends('product_id'), chosen during scoping for the best list-render performance on your order sizes — and expose it as an image/binary widget column in the order-line tree/list view. On the document side we inherit sale.report_saleorder_document via QWeb and emit a correctly sized <img> per line so the same picture appears on the quotation and confirmed order PDF. All view and report changes ship as XML inheritance (xpath with position) layered over core rather than patched into it, so the module installs cleanly on Community or Enterprise and survives upgrades.
Because images are heavier than text, we engineer for scale rather than just correctness. We render the small resized variant (image_128) not the full image_1920, keep the column optional/toggleable so power users can hide it on hundred-line orders, and make sure the report image is constrained by CSS so wkhtmltopdf/QWeb-to-PDF rendering stays fast and the file size stays sane. Access is respected end to end: the line inherits its record rules and ir.model.access.csv from sale.order, so nobody sees an image on an order they could not already open, and the field is read-only where the line is read-only. Where you want the image to also flow to the portal quotation view or the backend order form header, we scope that as an explicit view extension too.
Delivery is build-to-order. After a short scoping call we confirm exactly which surfaces need the image (order-line list, order form, PDF quotation, portal, optionally delivery or invoice reports), agree the field strategy and Odoo series (17.0, 18.0, or 19.0), and give you a fixed quote. We build on a staging copy of your database, run UAT with your own products and templates, then install on production with a documented rollback. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); extending the image to additional reports (delivery slip, invoice, portal), multi-company report layouts, or bespoke image sizing/branding requirements increases the quoted scope.
What you get
- Installable module source code for your Odoo series, packaged with a correct `__manifest__.py` and dependency declarations
- Installation and configuration on your staging environment, then production, by an ECOSIRE Odoo engineer
- Technical documentation covering the model field, view inheritance, and QWeb report extension
- End-user guide plus a live training session for your sales team on the new order-line and PDF behavior
- Post-go-live support window for defect fixes and questions
- UAT sign-off on a staging copy of your database with a documented rollback plan
- Handover of the full git repository with commit history and a tagged release
- Odoo series upgrade notes so the module can be re-validated when you move between 17.0 / 18.0 / 19.0
Who this is for
Sales Operations Manager
Owns quotation accuracy and wants reps and customers to visually confirm each line before an order is confirmed, cutting wrong-item disputes on long or variant-heavy orders.
B2B Wholesale / Distribution Team
Sells catalogs of visually similar SKUs where product images on the line and the PDF prevent the picking and billing errors that plain text references miss.
Odoo Administrator / Internal IT
Needs the capability delivered as clean XML/QWeb inheritance that installs on Community or Enterprise, respects existing access rules, and survives version upgrades — not a core hack.
Customer-Facing Account Executive
Wants the sales quotation PDF to look richer and clearer, so customers recognize exactly what they are buying and approve faster.
How Sale Order Line Images Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Delivery model | Build-to-order, scoped and installed for you | You build and maintain it in-house | Instant download, generic behavior | Not available in core |
| Order-line thumbnail | Optional image widget column tuned for performance | Depends on your team's implementation | Usually a fixed column, limited toggling | Text-only order line, no image |
| Sale report (PDF) image | Inherited QWeb template, CSS-constrained per line | Requires your own QWeb work | Often list-only; PDF support varies | Text-only `report_saleorder_document` |
| Community vs Enterprise fit | XML/QWeb inheritance, works on both, upgrade-safe | Whatever you engineer and test | Varies; may assume one edition | N/A |
| Access rules respected | Inherits `sale.order` record rules and ACLs | Your responsibility to wire correctly | Generally inherited but rarely documented | N/A |
| Performance engineering | Uses `image_128`, optional column, sized report images | Depends on your care with `image_1920` | Not always optimized for long orders | N/A |
| Support and handover | Support window, docs, training, git repo handover | You own all support | Vendor forum/ticket, no source insight | Community forums only |
| Fit to your surfaces | Scoped to your list/form/PDF/portal/reports | Fully bespoke but slower to deliver | Fixed feature set, take it as-is | None |
Frequently Asked Questions about Sale Order Line Images
Is this an existing app I can download and install today?
No. This is a build-to-order module. ECOSIRE builds it to your confirmed scope and target Odoo series, then installs and supports it on your database. There is no instant download — you receive tested source code and a proper installation.
How long does delivery take?
Typical delivery is one working week from confirmed scope. After the scoping call we agree exactly which surfaces need the image and which Odoo series you run, build on staging, run UAT, then deploy to production with a rollback plan.
How does pricing and scoping work?
Pricing starts from $999 as an indicative single-company base scope. We give you a fixed quote after a short scoping call. Extending the image to extra reports, multi-company layouts, portal views, or bespoke sizing increases the quoted scope and price.
Which Odoo versions and editions are supported?
We build for Odoo 17.0, 18.0, or 19.0, on Community or Enterprise. Because the changes are delivered as XML view and QWeb report inheritance rather than core patches, they layer cleanly on either edition.
Will this slow down large sale orders or the PDF?
We render the resized `image_128` variant instead of the full-resolution image, keep the list column optional, and constrain the report image with CSS. This keeps order-line scrolling and PDF generation fast even on long orders.
Do you offer support and updates after go-live?
Yes. Every build includes a post-go-live support window for defect fixes and questions, plus the full git repository so your team can maintain it. We can also re-validate the module when you upgrade between Odoo series under a separate scope.
Does it respect our access rights and record rules?
Yes. The image field lives on `sale.order.line`, which inherits the `ir.model.access.csv` permissions and record rules of `sale.order`. Nobody sees an image on an order they could not already open, and the field is read-only wherever the line is.
Related Modules

Sale Invoice – Exclude Salesperson
A build-to-order Odoo module that prevents the salesperson linked to a sales order or customer from being automatically subscribed as a follower on the resulting invoice. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17.0, 18.0, or 19.0 instance.

Sale Report Templates
Premium, brand-controlled QWeb report templates for Odoo quotations, sale orders and pro-forma documents — custom colors, dynamic watermarks and full branding. Made to order by ECOSIRE, then installed and supported on your Odoo 17, 18 or 19.

Sales Contract and Recurring Invoices
A build-to-order Odoo module that turns signed sales contracts into automatically generated recurring invoices on the billing cadence and terms each agreement defines. ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 instance.
Sale Order Line Images
A build-to-order Odoo module that renders each product's image directly on the sale order line and inside the printed sale quotation, so reps and customers recognize what is being sold at a glance. ECOSIRE scopes, builds, installs, and supports it for your database.
- Stored `related='product_id.image_128'` (or `@api.depends('product_id')` compute) image field added to `sale.order.line`, strategy chosen for list-render performance
- Binary `image` widget column added to the sale order-line `tree`/`list` view via XML `xpath`/`position` inheritance — no core patching
- Inherited `sale.report_saleorder_document` QWeb template emits a per-line `<img>` on the quotation and confirmed order PDF
- Renders the resized `image_128` variant rather than the full `image_1920` to keep list scrolling and PDF generation fast
