A build-to-order Odoo eCommerce module that lets your online shoppers view, compare and select packaging options (single unit, retail case, pallet, gift-wrap, bulk) directly on the product page, with the chosen packaging flowing through cart, quotation, delivery and invoice. Scoped, built, installed and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
App manifest
Built around your workflow
A build-to-order Odoo eCommerce module that lets your online shoppers view, compare and select packaging options (single unit, retail case, pallet, gift-wrap, bulk) directly on the product page, with the chosen packaging flowing through cart, quotation, delivery and invoice. Scoped, built, installed and supported by ECOSIRE.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your Odoo.
You go live in about 2–4 weeks, with a post-launch support window.
Most Odoo-run eCommerce teams hit the same wall the moment a product ships in more than one way. Odoo's product.packaging model captures a qty per pack for inventory and purchasing, but the website product page has no native mechanism to surface those packaging choices to a shopper, let them pick one, and price accordingly. So customers who want a single unit, a retail case, a full pallet, or a gift-wrapped presentation all land on the same "Add to Cart" button — and your team fields the "which pack size is this?" emails, corrects orders by hand, and eats the margin on mis-picked packaging. Odoo core out of the box simply does not expose packaging as a customer-facing selection on the storefront, and the standard website_sale variant/attribute flow was never designed to model packaging economics (price-per-pack, minimum order quantity, step rounding).
ECOSIRE builds a made-to-order module that turns packaging into a first-class option on your website. On the product page we render a QWeb/OWL selector — radio cards, a dropdown, or image swatches to your design — driven by the packaging records you already maintain, extended with the website-facing fields your catalog needs: display label, description, image, minimum/step quantity, lead-time note, and a per-packaging price rule. When the shopper selects an option, the choice is carried through the website_sale add-to-cart controller and written onto the sale.order.line, so the selected packaging appears in the cart summary, the quotation, the delivery order, and the invoice PDF. Quantities are validated and rounded to the packaging qty (a "sold in cases of 12" rule enforced client-side in OWL and re-checked server-side), and the unit price is derived through a compute method that respects your pricelists, taxes and currency.
Technically this is a clean, upgrade-safe extension rather than a core patch. We add fields to product.packaging (or a dedicated website.packaging.option link model where a product needs website-only packaging that shouldn't affect purchasing), guard everything with ir.model.access.csv plus record rules for multi-website/multi-company isolation, and expose the selector through inherited website templates so a theme upgrade won't wipe it. Pricing logic lives in @api.depends compute methods with stored fields where performance matters; the add-to-cart path is a controller extension of WebsiteSale so it degrades gracefully if JavaScript is disabled. The same packaging selection is exposed on the JSON-RPC/XML-RPC API, so headless frontends, marketplace connectors, or a mobile app can read and set it exactly as the website does. We target Odoo 17.0, 18.0 and 19.0, and note Community vs Enterprise differences during scoping (for example, whether you rely on Enterprise-only delivery or subscription flows that the packaging choice must feed).
Because this is build-to-order, delivery follows a short, predictable path: a scoping call to lock the packaging data model, selector UX, and pricing rules; a fixed written quote; then a build on a staging copy of your database with UAT before we touch production. Typical delivery is 2–4 weeks from confirmed scope, depending on how many products carry packaging, your pricing complexity, and integration touchpoints. Pricing starts from $249 (indicative, single-company base scope); multi-company or multi-website isolation, heavy pricelist/tax logic, marketplace or ERP integration of the packaging field, and large catalog data migration increase the quoted scope.
Runs the storefront and needs shoppers to self-select case, pallet, or gift-wrap packaging without back-and-forth emails or manual order corrections, with the choice visible end-to-end from cart to invoice.
Wants every web order to arrive with packaging already resolved and quantities rounded to real pack sizes, so pick-pack teams stop guessing and mis-picks drop.
Responsible for an upgrade-safe implementation — inherited templates, proper access rules, and API exposure — that won't break on the next Odoo minor version or theme update.
Needs per-packaging pricing to flow correctly through pricelists, taxes, and currency onto quotations and invoices so margins on each pack format are accurate and auditable.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Customer-facing packaging selection | Built to your UX (cards/dropdown/swatches) on the product page | Possible but you design and build it from scratch | Fixed selector UI, limited layout control | |
| Per-packaging pricing | Price rules that respect pricelists, taxes, currency | Whatever you implement and test yourself | Basic price-per-pack, pricelist edge cases often unhandled | |
| Flows to quotation / delivery / invoice | Written to `sale.order.line`, printed via report inheritance | Requires wiring every document yourself | Usually cart-only; documents may not reflect it | |
| Fit to your catalog & rules | Data model and rounding rules scoped to your products | Full control, full effort and maintenance burden | Generic model; you adapt your data to it | |
| Upgrade safety | Inherited templates + added fields, version-pinned | Depends on your team's discipline | Varies by vendor; theme upgrades can break it | |
| API / headless access | Packaging exposed over JSON-RPC/XML-RPC | Only if you build and document it | Rarely exposed for external systems | |
| Support & handover | Docs, training, support window, git repo handover | Internal knowledge only | Ticket-based support, no bespoke changes | |
| Cost & timeline | From $249 indicative; fixed quote, 2–4 weeks | Higher build cost, open-ended timeline | Low licence fee, but gaps become your project |
Because this is a build-to-order module, we build it after you confirm scope. Typical delivery is 2–4 weeks from confirmed scope, depending on how many products carry packaging, your pricing complexity, and any integration or migration work. The scoping call gives you a concrete date in your fixed quote.
No. This is a productized service, not an off-the-shelf download. ECOSIRE designs the packaging data model, selector UX, and pricing rules to your catalog, then builds, installs, and supports the module on your Odoo. You receive the installable source and git repository at handover.
Pricing starts from $249 as an indicative from-price for a single-company base scope. After a short scoping call we send a fixed written quote. Drivers that increase scope include multi-company/multi-website isolation, complex pricelist and tax logic, marketplace or ERP integration of the packaging field, and large catalog data migration.
Every build includes a post-go-live support window for defect fixes and configuration questions. Because we extend Odoo through inherited templates and added fields rather than patching core, the module is upgrade-safe within its target version. Moving to a new major Odoo version (e.g. 18.0 to 19.0) is a separate, quotable migration.
Yes. The chosen packaging is written onto the `sale.order.line` and carried through the whole document chain via QWeb report inheritance, so it appears in the cart, quotation, delivery slip, and invoice PDF — not just as a visual choice on the product page.
Yes. Per-packaging prices are computed through methods that respect your active pricelists, tax configuration, and the visitor's currency, so each pack format prices correctly for every customer group. We confirm your exact pricing rules during scoping.
We build for Odoo 17.0, 18.0, and 19.0. The module works on Community and Enterprise; we flag any edition-specific differences (such as Enterprise-only delivery or subscription flows the packaging choice must feed) during the scoping call so the quote reflects your exact stack.
A build-to-order Odoo eCommerce module that lets your online shoppers view, compare and select packaging options (single unit, retail case, pallet, gift-wrap, bulk) directly on the product page, with the chosen packaging flowing through cart, quotation, delivery and invoice. Scoped, built, installed and supported by ECOSIRE.