A build-to-order Odoo module that lets you sell multiple products together as bundles or kits — with correct component-level stock, margin, and invoicing. ECOSIRE scopes, builds, installs, and supports it for your exact catalog and workflow. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
Manifiesto de la app
Diseñado en torno a tu flujo de trabajo
A build-to-order Odoo module that lets you sell multiple products together as bundles or kits — with correct component-level stock, margin, and invoicing. ECOSIRE scopes, builds, installs, and supports it for your exact catalog and workflow.
Sin configuración por tu cuenta: una app funcional creada, instalada y con soporte de ECOSIRE.
Empieza con un precio único de desarrollo. Definimos el alcance contigo en el arranque.
ECOSIRE la crea, la configura y la instala en tu Odoo.
Sales en vivo en unas 2–4 semanas, con un periodo de soporte posterior al lanzamiento.
Most teams that run Odoo eventually want to sell things in combinations: a starter pack, a seasonal gift set, a "buy the machine plus consumables" combo, or a service-plus-hardware kit. Out of the box, Odoo gives you two partial answers — a Bill of Materials with a phantom (kit) BoM that explodes into components on delivery, and optional-product suggestions on quotations. Neither is a real bundling engine. Kit BoMs don't carry their own sale price independent of the sum of components, they don't let you flip a bundle between "ship as one pack" and "explode into components" per order, and they give sales reps no clean way to pick a bundle on a quote line and have pricing, discounts, and stock availability resolve automatically. Teams end up hand-adding component lines, mispricing combos, and losing per-component margin visibility.
We build a dedicated Product Bundle Pack module that turns bundling into a first-class object in Odoo. A new product.bundle model (extending or relating to product.template) defines a bundle header plus product.bundle.line children that reference component products, quantities, and an optional per-line unit or discount. The bundle carries its own configurable sale price with three pricing modes — fixed bundle price, sum-of-components, or sum-minus-percentage — computed through @api.depends so the price recalculates whenever a component or its cost changes. On the sales side we extend sale.order.line so a rep picks one bundle and the module either keeps it as a single priced line with an expandable component breakdown, or explodes it into individually tracked component lines, controlled by a per-bundle "delivery style" flag. Stock availability is aggregated from the components (respecting each component's on-hand and reserved quantity via stock.quant), so a bundle shows as unavailable the moment any one component runs short.
Technically the module ships as a clean addon: a versioned __manifest__.py declaring dependencies on sale_management, stock, and account; ORM models with proper @api.depends/@api.constrains guards (no negative quantities, no self-referencing bundles, no infinite nesting); ir.model.access.csv plus record rules so bundle definitions respect multi-company boundaries and are editable only by inventory/sales managers; backend form/list/kanban views (XML, with OWL where the bundle configurator benefits from a richer widget); a QWeb extension so quotations and invoices print the bundle with its component breakdown; and optional automated actions to keep bundle prices in sync on cost changes. Everything is reachable over the standard XML-RPC/JSON-RPC API, so your webshop, POS, or external order source can create bundle-backed sale lines programmatically. We build against your target — Odoo 17.0, 18.0, or 19.0 — and confirm Community vs Enterprise behavior up front, since kit/MRP and some invoicing options differ between editions.
Delivery is build-to-order: nothing is downloaded from an app marketplace. We start with a short scoping call, agree the exact pricing modes, delivery styles, and reporting you need, then build on a staging copy of your database, run UAT with you, and deploy with a rollback plan. Typical delivery is 2–4 weeks from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company bundle rules, POS/eCommerce integration, deeper margin reporting, and data migration of existing kit records increase the quoted scope. You get a fixed quote after the scoping call — never a surprise invoice.
Wants reps to pick a bundle on a quote and have price, discount and stock resolve automatically, instead of hand-adding component lines and mispricing combos.
Needs bundle availability tied to real component on-hand and reserved stock, and control over whether a pack ships as one unit or as exploded component picks.
Requires per-component cost and margin visibility on bundled sales so combined offers do not hide profitability, and correct invoicing per component or per pack.
Sells kits and combos across webshop and POS and needs bundles that behave consistently via the JSON-RPC/XML-RPC API and printed component breakdowns.
| Criterio | ECOSIRE | Construcción personalizada | Competidor | Odoo Nativo |
|---|---|---|---|---|
| Bundle sale price | Fixed, sum, or sum-minus-% modes, recomputed on component change | Whatever you build, at full cost | Usually one fixed pricing behavior | |
| Ship as pack vs explode | Per-bundle delivery style flag | Buildable but must be specified | Often fixed to one behavior | |
| Stock availability | Aggregated from component `stock.quant` | Must be coded from scratch | Varies; sometimes component-aware | |
| Margin visibility | Per-component cost/margin retained | Depends on your implementation | Often bundle-level only | |
| Fit to your catalog | Built to your exact products and rules | Fully bespoke | Generic, one-size-fits-all | |
| Reports & API | QWeb breakdown + full XML-RPC/JSON-RPC | You build and document it | Limited or fixed report format | |
| Support & handover | Support window + git repo + training | Only if you staff for it | Vendor-dependent, often forum-only | |
| Cost & timeline | From $249 indicative, 2–4 weeks, fixed quote | High effort, unpredictable timeline | Low upfront, gaps you fill later |
This is build-to-order, not an instant download. Typical delivery is 2–4 weeks from confirmed scope. We build on a staging copy of your database, run UAT with you, and deploy with a rollback plan. Larger scopes (multi-company, POS/eCommerce, data migration) extend the timeline, which we confirm in your quote.
Pricing starts from $249 as an indicative single-company base figure. After a short scoping call we give you a fixed written quote covering your exact pricing modes, delivery styles, integrations and reporting. Drivers like multi-company rules, POS/eCommerce integration, deeper margin reporting, and migrating existing kit records increase the quoted scope.
Every build includes a post-go-live support window for defect fixes and configuration questions. We hand over the git repository with a tagged release so your team or ours can maintain it. Version upgrades to a newer Odoo release, or new features beyond the original scope, are handled as a separate quoted engagement.
A phantom/kit BoM explodes into components on delivery but has no independent bundle sale price, no per-order choice between shipping as a pack or exploding into lines, and limited pricing logic. Our module makes the bundle a first-class object with configurable pricing modes, delivery styles, aggregated stock availability, and clean sales-line selection.
We build for both. Core bundling — models, pricing, sales-line integration, stock aggregation, QWeb reports and API access — works on Community. Some kit/MRP and invoicing options differ between editions, so we confirm your edition and target version (17.0/18.0/19.0) during scoping and build accordingly.
Yes. The module exposes bundle selection through the standard XML-RPC/JSON-RPC API, so your webshop, POS, or an external order source can create bundle-backed `sale.order.line` records programmatically with correct pricing and component resolution.
No. We build additively on a staging clone first, guard the models with `@api.constrains`, respect `ir.model.access.csv` and record rules, and run UAT before touching production. Stock availability reads real component `stock.quant` data, and invoicing can be configured per pack or per component to match your accounting.
A build-to-order Odoo localization that loads Algeria's full wilaya and commune hierarchy with bilingual French and Arabic names, wired into partner addresses and reporting. ECOSIRE builds, installs, and supports it after your quotation.
A build-to-order Odoo module that lets you sell multiple products together as bundles or kits — with correct component-level stock, margin, and invoicing. ECOSIRE scopes, builds, installs, and supports it for your exact catalog and workflow.