Free module · Odoo 17 · Purchase
LGPL-3 · no subscription Installs itselfProduct configurator for Odoo purchase orders
Why can your sales team configure a product on the order line, but your buyers can't? Pick a product, tick the accessories, see the supplier price — on a purchase order, not just a quotation.
That’s the whole module — free, open source, and running on the product data you already have in Odoo.
What changes on the order line
Before you install anything
See it running on your own Odoo
Show us one purchase order you dread doing by hand and we will walk it through the configurator, on your data, on a call. Or just ask us whether your products are set up for it.
Message us on WhatsApp
Reach the team directly on +62 821-3120-5030.
hub.doodex.netScan a code with your phone, or click it — both open the same page. The addresses are printed above in case the store strips the links.
Odoo already knows how to configure a product. It just never offers on a purchase order.
Everything the configurator needs is already in your database. Your products have attributes. Some of them have optional products attached. Odoo shows all of it on a quotation and none of it on a purchase order — so buyers retype what sales gets handed.
Ordering a configurable machine today
Standard Odoo 17 purchase order
Ordering it with this module
Same Odoo, one free module added
The mechanism
Four steps, one dialog
Everything happens on the purchase order line you are already filling in. Pick a product, answer the questions the product itself defines, and the order lines write themselves.
Type the product name on the line as usual. Templates with variant attributes or optional products are the ones with something to configure.
Choose the attribute values, type any free-text spec, and tick the accessories the product carries. Surcharges show beside the values that add cost.
Prices come from the supplier lines on the product, converted into the order’s own currency.
Every product you selected becomes its own order line, priced and described. A combination with no variant yet gets one created at that moment.
What it puts on the purchase order line
Eight things, all of them read from product data you already maintain. One dialog produces as many order lines as you tick.
Opens on the order line for any template that has variant attributes or optional products attached.
The accessories on the template, listed with quantities, and attribute exclusion rules applied so an unbuildable combination is never offered.
Read from the supplier lines on the product, for the main product and every optional one alike.
Supplier prices are converted using the exchange rates already configured in your Odoo. No external rate service.
Values that add cost display the surcharge next to them inside the dialog, so nobody has to work out why a total moved.
Cut length, tolerance, finish — typed into the dialog and kept on the order line, so the supplier reads the words you agreed.
A combination that has no product variant yet gets one created when you confirm, instead of you pre-building records nobody has ordered.
The attribute values, the free text and the no-variant extra prices stay on the line and come back exactly as you left them.
Every attribute, accessory and supplier price on one order line
This is where the detail lives — exclusion rules that hide combinations nobody can build, free-text specs that reach your supplier word for word, currency conversion on every figure, and product variants created only when someone actually orders one. Six features, no filler.
Configure on the order line, not in your head
Pick a product template on the purchase order and the configurator is one click away, every variant attribute ready to answer. Products with a single variant and nothing optional stay the fast, plain pick they always were.
Every accessory offered, before you forget it
Optional products attached to the template are listed underneath, ready to tick into their own order lines. Exclusion rules hide combinations nobody can build, and dropping a parent drops the extras that only hung off it.
Priced from your supplier lines, not your sales catalogue
Every figure in the dialog — main product and accessories alike — is read from the supplier lines already on your products, then converted into the order’s currency. Several supplier lines resolve to the first one on the product; none at all falls back to the product’s cost.
Buy in euros from a dollar price list
Supplier prices convert into the purchase order's own currency using the exchange rates already configured in your Odoo. The figure you approve in the dialog is the figure that lands on the order.
Variants born when someone actually orders them
Attributes set to create variants on demand stay uncreated until a buyer needs one. Confirm a never-ordered combination and the product variant appears on the line at that moment — no thousands of records built on spec.
Reopen a saved configuration, exactly as you left it
Attribute values, free-text specs and no-variant surcharges all stay on the purchase order line. Reopen the configurator and nothing is empty; swap the product and values that no longer apply clear themselves out.
Also in the download
| What | Detail |
|---|---|
| Extra-price badges | Attribute values that add cost show that cost inside the dialog, so nobody has to work out why the total moved. |
| Purchase warnings | A vendor or product warning of type warning or block is surfaced before the configurator opens, exactly as Odoo intends. |
| Order line list tuned for configuration | The Product Template column is always visible; the raw variant column is hidden by default and relabelled Product Variant, so buyers pick templates and see variants only when they want them. |
| Grid mode preserved | Templates set to matrix entry still open the variant grid. The module chooses the right dialog per product instead of forcing one. |
| Installs itself | Marked auto_install: once Purchase and the two dependency modules are present, it installs without you hunting for it in Apps. |
| Translations | 42 translation files ship in the module's i18n folder, plus the extraction template. |
| Tests | 5 Python test modules, 2 QUnit component test files and 1 browser tour, all inside the download — run them on your own instance before you trust it. |
| Source you can read | LGPL-3. Around 1,500 lines of Python and JavaScript, no obfuscation, no licence server, no phone-home. |
Who this is for
Odoo 17 teams whose buyers configure products, not just pick them
If your purchase orders carry attribute choices, accessory lists or supplier prices that live somewhere else in your Odoo, this module was written for you.
Purchasing teams working from configurable catalogues
You buy machines, IT hardware, furniture or made-to-spec parts where every RFQ carries three or four attribute decisions. Today those land as free text in the description or as separate lines nobody links back to the parent — this module puts them on the order line where they belong.
Operations leads tired of the accessory that was forgotten
The die set the press needs. The mounting kit the desk needs. The warranty the laptop needs. Attach them once as optional products on the template and the configurator lists them the moment a buyer picks the parent — no more memory drills at the counter.
Odoo administrators keeping the product catalogue lean
Templates with dynamic-variant attributes stay uncreated until somebody actually orders one. Your product.product table stays as small as your business needs, not as large as every possible combination of every attribute you ship.
Odoo shops whose sales side already uses the configurator
Your sales team configures products on the order line every day. Your buyers see a plain dropdown. This is the same interface on the other side of the transaction — attributes, optional products and supplier-line pricing, on the purchase order.
Not sure whether it fits? Describe one purchase order on a call — hub.doodex.net/r/meeting — and we will tell you straight whether the module helps or whether you need something built.
Nothing on this page is an estimate
Every number here is countable inside the download. We have no purchase counter and no reviews to show yet, so we are showing you what we can prove instead.
Requirements
Fifteen answers before you install
Odoo 17.0, Community or Enterprise. This listing is the 17.0 build; nothing here claims support for another version.
Purchase, plus two standard Odoo modules: purchase_product_matrix and sale_product_configurator. Odoo installs both for you.
Drop the folder in your addons path, update the apps list, and it installs itself — it is marked auto-install.
Anywhere you are allowed to add a module: your own server, or Odoo.sh. Odoo Online does not accept custom modules on standard plans.
None in the module. What matters is your product data: a template needs attributes or optional products before a configurator has anything to configure.
Untouched. It adds two fields to the purchase order line and one to the order. No existing purchase order is rewritten on install.
Comes from the supplier lines already on your products. Fill those in and the configurator prices from them.
Uses the exchange rates already configured in your Odoo. Nothing new to set up, no external rate service.
Works with the variants you already have, and can create a dynamic variant at confirm time when the combination has none.
Nothing leaves your database. Every route the module adds is a local one in your own Odoo. No telemetry, no licence check.
42 translation files ship in the i18n folder, and the strings follow Odoo's own so they read naturally in whatever language your users have.
Included, not hidden: 5 Python test modules, 2 QUnit files and a browser tour. Run them on a staging database first.
LGPL-3. Free to use, free to read, free to adapt. The full licence text is in the download.
The configurator is part of the Odoo back office, so it follows the web client. We build and test it on desktop, where purchase orders are made.
Uninstall from Apps and purchase orders go back to standard behaviour. Because it is auto-install, take the folder out of your addons path so an apps-list update does not bring it back.
Pricing, stated plainly
Free means free. Here is where the money is, so you are not guessing.
LGPL-3 · one download · unlimited databases, users and purchase orders
What is included at no cost
What we charge for, and only if you ask
Services are quoted per project after a call — we will not put an invented figure on this page. Ask and you get a number for your case.
Support
What happens after you install
Support here means defects, not a subscription. If the module does something this page says it should not, tell us and we fix it. There is no plan to buy first, and nothing on this page is held back behind one.
Bug reports go straight to the team that builds the module. There is no ticket portal to register with, and no support plan to buy before you can report one.
The module behaving differently from what this page describes: the configurator not opening on a line, a supplier price that does not resolve, a configured line that does not write back to the order.
Setting up your product templates, attributes and optional products, or changing how your Odoo is configured, is work we quote separately. Ask and you get a number for your case.
Questions, answered without hedging
In one sentence, what does this module add?
It puts Odoo’s product configurator — attributes plus optional products — on purchase order lines, and prices what you configure from the supplier lines already on your products, in the order’s own currency.
Do I need Odoo Enterprise?
No. It depends on Purchase, purchase_product_matrix and sale_product_configurator, all of which come with standard Odoo. Community is enough.
Which Odoo versions does it support?
Odoo 17.0. That is what this build is and that is all we claim. A port to Odoo 18 is in development; when it is released it gets its own listing and its own version number, not a quiet edit to this page.
Is it really free, or free until version 2?
Free, under LGPL-3, with the source in the download. There is no paid edition of this module and no feature on this page is held back for one. We earn from Odoo services, and only if you ask for them.
Will it change my existing purchase orders?
No. Installing adds two fields to the purchase order line and one to the order, and adjusts which columns the line list shows by default. Orders you already have keep their products, prices and totals. There is no data migration to run.
Nothing happened after I installed it. Is it broken?
Almost certainly not. The configurator only opens when the product template you chose has variant attributes or optional products. A template with a single variant and no options behaves exactly as before, on purpose — nobody wants a dialog to click through for a box of screws. Add one attribute line or one optional product to a template and try that template on a new line.
Which price does the configurator show?
A price from the product’s supplier lines, converted into the order’s currency. Where a product carries more than one supplier line the configurator resolves to the first one on the product; where it carries none, it uses the product’s cost. The order is always that: first supplier line, then cost.
What happens if I change the vendor after configuring a
line?
Lines already written keep the price they were created with, the same as any other purchase order line in Odoo. The configurator does not re-resolve a configured line against a different vendor, so where a vendor change should change your cost, set the line price yourself or rebuild the line.
Does it work with the variant grid we already use?
Yes, side by side. Templates you have set to matrix entry still open the grid. Everything else opens the configurator. The module chooses per product instead of forcing one behaviour on all of them.
Does anything leave my database?
No. The routes the module adds are local calls inside your own Odoo, serving the dialog with your own product data. There is no external service, no licence server, no analytics and no telemetry. You can confirm that yourself: it is LGPL-3 and the controller file is 342 lines.
Can we adapt it to our process?
Yes, and LGPL-3 gives you the right to. Your own developer can extend it the normal Odoo way. If you would rather we made the change, or need it ported to another Odoo version, ask and we will quote it.
How do I uninstall it, and does it come back?
Uninstall from Apps like any module; purchase orders return to standard behaviour. One thing to know: it is marked auto-install, which means Odoo installs it automatically whenever its dependencies are present — so an apps-list update can bring it back. To keep it off for good, remove the folder from your addons path as well.
Where do I report a problem, and who answers?
Write to odoo@doodex.net and a person at Doodex answers — we are an Odoo official partner, not a mailbox. Tell us your Odoo version, what you did and what happened. A screenshot of the configurator saves a round trip. If it is faster for you, message us on WhatsApp at +62 821-3120-5030.
Release history
Every published version is listed here with what it contains. If a version is not on this list, it does not exist.
Next up, honestly labelled: an Odoo 18 port is in development, and we are reviewing how the order's currency is passed to the price conversion so that two people editing two purchase orders at the same time can never influence each other's displayed prices. Both will appear here as versions when they ship, not as promises before.
Works great with
Other Doodex modules, built the same way
Different problems, same approach: narrow scope, a one-time price and the limits stated up front. Each one installs on its own.
Doodex Growth Suite
Five CRM and marketing modules that do share one another’s data: BizScan AI, Campaign Manager, Smart Dashboards, User Roles and Email Sync+. Sold as one suite.
Open on the Apps Store →Flow Survey Reader
Publish conditional surveys and forms straight from Odoo and keep every answer in your own database.
Open on the Apps Store →Flow Survey Builder
The drag-and-drop editor for those surveys: 25 question types, slide branching and full theming.
Open on the Apps Store →It costs nothing to find out
Install it, or let us show you first
The module is free, so the only thing worth spending is thirty minutes to see whether your product data is ready for it. Bring one purchase order you dread doing by hand.
Message us on WhatsApp
Reach the team directly on +62 821-3120-5030.
hub.doodex.netScan a code with your phone, or click it — both open the same page. Addresses are printed as text so they survive even if the links do not.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Invoicing (account) • Discuss (mail) |
| Lines of code | 1377 |
| Technical Name |
purchase_product_optional |
| License | LGPL-3 |
| Website | https://www.doodex.net/ |


Please log in to comment on this module