Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Artificial Intelligence
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries ⟶
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    • Affiliate Program
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Extra Tools
  3. Purchase Product Optional v 17.0
  4. Sales Conditions FAQ

Purchase Product Optional

by Doodex https://www.doodex.net/
Odoo
v 17.0 Third Party 45
Download for v 17.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0 20.0
You bought this module and need support? Click here!
Versions 16.0 17.0 18.0 19.0 20.0
  • Description
  • Manifest
Purchase Product OptionalPurchase Product Optional
The gapHow it worksFeaturesWho this is forSetupSupportFAQReleases
Free · install it

Free module · Odoo 17 · Purchase

LGPL-3 · no subscription Installs itself

Product 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.

Purchase / Purchase Orders / P00042  —  Odoo 17.0
Configuring a Conference Chair on an Odoo 17 purchase order: the product configurator opens on the order line showing the supplier price of 35.94 € and offering a matching floor protection accessory at 9.63 €

That’s the whole module — free, open source, and running on the product data you already have in Odoo.

Free · LGPL-3 source Odoo 17.0 · Community or Enterprise 42 translation files Odoo official partner

What changes on the order line

Attribute configurator dialog
BeforeSales orders only AfterNow on purchase orders
Optional products suggested
BeforeSales orders only AfterListed, ready to tick
Priced from your supplier lines
BeforeProduct cost only AfterSupplier price, order currency
Variant grid entry
BeforeAlready in Purchase AfterKept, untouched

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.

30 minutes

Book a demo

A live walkthrough on your own purchase orders.

QR code for https://hub.doodex.net/r/meeting hub.doodex.net/r/meeting
Written reply

Send us a question

Ask in writing, we answer by e-mail.

QR code for https://doodex.net/contactus odoo@doodex.net
Fastest reply

Message us on WhatsApp

Reach the team directly on +62 821-3120-5030.

QR code for https://hub.doodex.net/r/whatsapp hub.doodex.net/r/whatsapp

Scan 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.

The gapWhat Odoo 17 does and does not give Purchase

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

NoPick the exact variant from a dropdown — if the right one exists yet.
NoNothing tells you the machine has three matching accessories.
NoAdd each accessory as its own line, found by typing its name.
NoAttribute surcharges are invisible — nothing shows why one variant costs more.
NoNo record on the line of the choices behind the variant.

Ordering it with this module

Same Odoo, one free module added

YesChoose the product template; the configurator opens on its own.
YesThe accessories are listed for you, ready to tick.
YesConfirm once and every chosen line lands on the order.
YesPrices come from the product's supplier lines, in the order's currency.
YesThe attribute choices stay on the line, and you can reopen them.
How it worksFrom product template to priced order line

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.

1
Pick the product template

Type the product name on the line as usual. Templates with variant attributes or optional products are the ones with something to configure.

2
Configure it

Choose the attribute values, type any free-text spec, and tick the accessories the product carries. Surcharges show beside the values that add cost.

3
See the supplier price

Prices come from the supplier lines on the product, converted into the order’s own currency.

4
Confirm, and the lines land

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.

◆
The configurator dialog

Opens on the order line for any template that has variant attributes or optional products attached.

◆
Optional products

The accessories on the template, listed with quantities, and attribute exclusion rules applied so an unbuildable combination is never offered.

◆
Supplier-line pricing

Read from the supplier lines on the product, for the main product and every optional one alike.

◆
The order's currency

Supplier prices are converted using the exchange rates already configured in your Odoo. No external rate service.

◆
Attribute surcharges

Values that add cost display the surcharge next to them inside the dialog, so nobody has to work out why a total moved.

◆
Free-text attribute values

Cut length, tolerance, finish — typed into the dialog and kept on the order line, so the supplier reads the words you agreed.

◆
Dynamic variants

A combination that has no product variant yet gets one created when you confirm, instead of you pre-building records nobody has ordered.

◆
A reopenable configuration

The attribute values, the free text and the no-variant extra prices stay on the line and come back exactly as you left them.

FeaturesSix things it does, and everything else it ships

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.

01

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.

purchase.order.line → product_template_id
Purchase / Requests for Quotation / New  —  Odoo 17.0
The Odoo 17 product configurator open on a purchase order line for Conference Chair, with the Legs attribute offering Steel or Aluminium at plus 6.40 euros and the supplier price of 35.94 euros
The configurator on a purchase order line. Every variant attribute is ready to answer — here Legs, with the Aluminium surcharge priced inline — and the supplier price of 35.94 € already resolved and converted into the order’s currency.
02

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.

product.template → optional_product_ids
Configure your product  —  Add optional products
The Add optional products section of the configurator listing Chair floor protection at 9.63 euros with an Add button beside it
Accessories attached to the template are listed under the product, each with its own price — 9.63 € here — and an + Add control that drops it onto its own order line.
03

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.

product.supplierinfo → price, fallback standard_price
Product / Conference Chair / Purchase  —  Odoo 17.0
The Purchase tab of the Conference Chair product showing two vendors, Wood Corner at 28.00 USD and Azure Interior at 24.90 USD
The supplier lines the configurator reads: every vendor with their own price and currency on the product’s Purchase tab.
04

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.

converted into purchase.order.currency_id
Product / Conference Chair / Purchase  →  a EUR purchase order
Conference Chair priced at 28.00 USD on the product's Purchase tab, and the same product on a EUR purchase order where the configurator shows 35.94 euros
The supplier line stays in USD. On a purchase order whose currency is EUR the configurator converts it and shows 35.94 € — no second price list to maintain.
05

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.

create_variant = “dynamic”, created on confirm
Diagram: a product with four finishes, three frames and five widths has sixty possible combinations and zero product variants stored; when a buyer confirms one combination, one variant is created and the other fifty-nine still do not exist
How dynamic variant creation behaves: the combinations stay arithmetic until somebody orders one, and only the ordered combination becomes a product.product record.
06

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.

product_custom_attribute_value_ids · product_no_variant_attribute_value_ids
Purchase / Requests for Quotation / P00014  —  Odoo 17.0
A saved purchase order line for Conference Chair Steel at 35.94 euros with a configure icon beside the product
A saved line keeps the variant it was configured as — [E‑COM12] Conference Chair (Steel) — with the configure control beside it to open the configuration again.

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 forFour kinds of Odoo 17 team we built this around

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.

42
translation files in i18n
8
test files: 5 Python, 2 QUnit, 1 tour
3
dependencies, all standard Odoo
$0
LGPL-3, source included
SetupWhat it needs, what it does not

Requirements

Fifteen answers before you install

Odoo version

Odoo 17.0, Community or Enterprise. This listing is the 17.0 build; nothing here claims support for another version.

Other apps needed

Purchase, plus two standard Odoo modules: purchase_product_matrix and sale_product_configurator. Odoo installs both for you.

Installing

Drop the folder in your addons path, update the apps list, and it installs itself — it is marked auto-install.

Where it runs

Anywhere you are allowed to add a module: your own server, or Odoo.sh. Odoo Online does not accept custom modules on standard plans.

Setup after installing

None in the module. What matters is your product data: a template needs attributes or optional products before a configurator has anything to configure.

Your existing data

Untouched. It adds two fields to the purchase order line and one to the order. No existing purchase order is rewritten on install.

Vendor prices

Comes from the supplier lines already on your products. Fill those in and the configurator prices from them.

Currencies

Uses the exchange rates already configured in your Odoo. Nothing new to set up, no external rate service.

Product variants

Works with the variants you already have, and can create a dynamic variant at confirm time when the combination has none.

Your data

Nothing leaves your database. Every route the module adds is a local one in your own Odoo. No telemetry, no licence check.

Languages

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.

Tests

Included, not hidden: 5 Python test modules, 2 QUnit files and a browser tour. Run them on a staging database first.

Licence

LGPL-3. Free to use, free to read, free to adapt. The full licence text is in the download.

On phones

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.

If you ever remove it

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.

This module
Free

LGPL-3 · one download · unlimited databases, users and purchase orders

•
No subscription and nothing to renew
•
No per-user or per-order fee
•
No licence key and no activation
•
Full source code, yours to modify

What is included at no cost

The complete module — every feature on this page, none held back for a paid edition
42 translation files
The full test suite, so you can verify it yourself
Answers to questions about the module, by e-mail

What we charge for, and only if you ask

Installing and configuring it on your instance
Setting up your product templates, attributes and optional products
Changes to how it behaves, or a port to another Odoo version
Wider Odoo work: implementation, migration, custom development

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.

SupportWhat you get when something breaks

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.

Write to odoo@doodex.net

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.

What counts as a defect

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.

What is consulting, not support

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.

FAQThirteen questions buyers actually ask

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.

ReleasesPublic history, and what is next

Release history

Every published version is listed here with what it contains. If a version is not on this list, it does not exist.

17.0.1.0.0
Current release · Odoo 17.0 · LGPL-3
NEWProduct configurator dialog on purchase order lines, for templates with variant attributes or optional products.
NEWOptional products listed and selectable inside the dialog, with attribute exclusion rules and cascade removal.
NEWPricing from product.supplierinfo, falling back to the first supplier line and then to the product cost.
NEWPrices converted into the purchase order's currency.
NEWDynamic variants created on confirm when the chosen combination has none.
NEWCustom attribute values and no-variant extra prices stored on the order line, and reopenable.
IMPPurchase order line list: Product Template column always visible, variant column hidden by default and relabelled.
IMPTest suite shipped with the module: 5 Python test modules, 2 QUnit files, 1 browser tour.
IMP42 translation files included.

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.

Narrow scopeOne-time priceLimits stated up front
Doodex Growth Suite
$349 once

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
Free

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
$199 once

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.

30 minutes

Book a demo

On your own Odoo, with your own products.

QR code for https://hub.doodex.net/r/meeting hub.doodex.net/r/meeting
Written reply

Send us a question

Ask in writing, we answer by e-mail.

QR code for https://doodex.net/contactus odoo@doodex.net
Fastest reply

Message us on WhatsApp

Reach the team directly on +62 821-3120-5030.

QR code for https://hub.doodex.net/r/whatsapp hub.doodex.net/r/whatsapp

Scan 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
LicenseLGPL-3
Websitehttps://www.doodex.net/

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with