Running an HVAC business with Odoo

How do I quote replacement equipment and optional upgrades in Odoo?

Workflow overview: How do I quote replacement equipment and optional upgrades in Odoo?
Workflow overview. Instructional screenshots show the actual demo interface.

Quote HVAC equipment in Odoo and let the customer add or remove a clearly priced optional follow-up visit.

Alex is preparing a replacement-equipment quotation. The base price includes the selected equipment, a service-call assessment and a quoted labor allowance. A separate follow-up visit is optional. This guide shows how to create that choice and verify its price in the customer view.

Alex Rivera and Demo Air HVAC are fictional training examples. Prices, dates, quantities and business situations in this guide are illustrative.

Before you begin

Tested in stock Odoo 20.0-20260926 Community as the demo owner administrator, with official modules and standard configuration. Use the official Sales and Inventory apps, the customer and addresses from H08, the equipment from H12/H13, and the template from H24. Check your own product prices, taxes and scope before using this workflow. These training prices do not establish equipment sizing, compatibility or installation requirements.

Step-by-step workflow

Step 1. Create the optional service

Open Inventory → Products → Products → New. Name the product Demo Follow-up Visit H25, choose Service, leave Sales checked and clear Purchase. Set Create on Order to Nothing and Invoicing Policy to Prepaid/Fixed Price. Change the service's default Hours unit to Units, enter a Sales Price of $50, and use internal reference H25-FOLLOWUP. Save and reopen. The example is one priced visit; choosing it will not create a task or book an appointment.

Action 1: Create a separate follow-up Service; Sales on, Purchase off. The actual target is highlighted in gold.
Create a separate follow-up Service; Sales on, Purchase off.
Action 2: Keep Create on Order: Nothing and Prepaid/Fixed Price. The actual target is highlighted in gold.
Keep Create on Order: Nothing and Prepaid/Fixed Price.
Action 3: Price one follow-up visit at $50 per Unit. The actual target is highlighted in gold.
Price one follow-up visit at $50 per Unit.
Action 4: Save the new follow-up service once. The actual target is highlighted in gold.
Save the new follow-up service once.
Action 5: Reopen the same saved Demo Follow-up Visit H25. The actual target is highlighted in gold.
Reopen the same saved Demo Follow-up Visit H25.

Step 2. Suggest the service with the equipment

Open Demo Capacity Equipment H13 and its Sales tab. In Optional Products, select Demo Follow-up Visit H25, then save. This makes the service available in the product configurator when you add the equipment. The quotation still needs the optional section configured below.

Action 6: Suggest the saved follow-up in Optional Products. The actual target is highlighted in gold.
Suggest the saved follow-up in Optional Products.
Action 7: Save the equipment suggestion once and reopen. The actual target is highlighted in gold.
Save the equipment suggestion once and reopen.
Action 8: The same equipment retains its one follow-up suggestion. The actual target is highlighted in gold.
The same equipment retains its one follow-up suggestion.

Step 3. Start a quotation from the existing template

Open Sales → Orders → Quotations. Use the arrow beside New and choose Demo Service Visit H24. Select Demo Property H08. Check Default (USD) and Demo Net 30 H06. Check the copied billing and service addresses in Preview before customer acceptance. The template contributes one service call at $100 and two Hours of labor at $80 per Hour. Review the inherited terms before adding equipment.

Action 9: Check customer, Default (USD), and Demo Net 30 H06. The actual target is highlighted in gold.
Check customer, Default (USD), and Demo Net 30 H06.
Action 10: The template adds one $100 call and two $80 labor Hours. The actual target is highlighted in gold.
The template adds one $100 call and two $80 labor Hours.
Action 34: Check the separate Billing Office and Service Site addresses. The actual target is highlighted in gold.
Check the separate Billing Office and Service Site addresses.

Step 4. Choose the equipment variant and inspect the suggestion

Click Add Line and use its Description product picker to select Demo Capacity Equipment H13. In Configure your product, explicitly choose 3-ton (training); the initial choice was 2-ton in this test. The $200 variant extra makes the equipment $1,200. Under Add optional products, click Add for the $50 follow-up service, then Confirm. Check the two inserted lines. At this point the service is an ordinary priced line, so it contributes to the total.

Action 11: Add the replacement equipment line. The actual target is highlighted in gold.
Add the replacement equipment line.
Action 12: Find the existing capacity equipment. The actual target is highlighted in gold.
Find the existing capacity equipment.
Action 13: Select the actual equipment product. The actual target is highlighted in gold.
Select the actual equipment product.
Action 14: Choose 3-ton (training), with its $200 extra. The actual target is highlighted in gold.
Choose 3-ton (training), with its $200 extra.
Action 15: Add the $50 follow-up suggestion in the configurator. The actual target is highlighted in gold.
Add the $50 follow-up suggestion in the configurator.
Action 16: Confirm the configured equipment and follow-up. The actual target is highlighted in gold.
Confirm the configured equipment and follow-up.
Action 17: Configurator Add created an ordinary priced follow-up line. The actual target is highlighted in gold.
Configurator Add created an ordinary priced follow-up line.

Step 5. Put the follow-up in an optional section

Use Delete row on that ordinary follow-up line. Keep the equipment and template's service/labor lines. Click Add Section and name it Optional follow-up visit H25. Open the section's three-dot menu, more_vert, and choose Set Optional. Open that same section menu again, choose Add a line, and select Demo Follow-up Visit H25 in the product picker. The line starts at 0 Units, with its $50 unit price retained and a zero subtotal. Keep it inside this section.

Action 18: Delete only that ordinary follow-up row. The actual target is highlighted in gold.
Delete only that ordinary follow-up row.
Action 19: Add a separate optional scope section. The actual target is highlighted in gold.
Add a separate optional scope section.
Action 20: Name it Optional follow-up visit H25. The actual target is highlighted in gold.
Name it Optional follow-up visit H25.
Action 21: Open this section’s three-dot menu. The actual target is highlighted in gold.
Open this section’s three-dot menu.
Action 22: Set the section Optional. The actual target is highlighted in gold.
Set the section Optional.
Action 23: Open the same optional section menu again. The actual target is highlighted in gold.
Open the same optional section menu again.
Action 24: Add a line inside this optional section. The actual target is highlighted in gold.
Add a line inside this optional section.
Action 25: Find the saved follow-up service. The actual target is highlighted in gold.
Find the saved follow-up service.
Action 26: Select the existing $50 follow-up. The actual target is highlighted in gold.
Select the existing $50 follow-up.
Action 27: Optional follow-up starts at zero Units, retaining $50 price. The actual target is highlighted in gold.
Optional follow-up starts at zero Units, retaining $50 price.

Step 6. Explain the scope and save the base quotation

Append a short explanation beneath the quotation lines. State what the base equipment/service/labor price covers, what the $50 follow-up covers, and that technical sizing, compatibility, final scope and service access need separate review. Say that choosing the follow-up does not schedule a visit or accept the quotation. Click Save manually and reopen. The saved example is S00006: $1,460 untaxed plus $87.60 fictional 6% tax, totaling $1,547.60, with the follow-up quantity still zero.

Action 28: Explain base scope, optional visit and separate technical review. The actual target is highlighted in gold.
Explain base scope, optional visit and separate technical review.
Action 29: Save the base quotation once and wait for its exact result. The actual target is highlighted in gold.
Save the base quotation once and wait for its exact result.
Action 30: Saved base total: $1,460 plus $87.60 tax = $1,547.60. The actual target is highlighted in gold.
Saved base total: $1,460 plus $87.60 tax = $1,547.60.

Step 7. Check the actual customer view

Click Preview. Check the exact equipment variant, billing/service addresses, scope notes, base total and optional row. For a training check, open the same private preview link in a separate browser without signing in; the tested page displayed Sign in and the quotation. The follow-up row has Remove one, a quantity box and Add one, alongside the $50 unit price. Treat the preview link as access to that quotation. No customer email was sent in this check.

Action 31: Open the genuine Preview in a fresh signed-out browser. The actual target is highlighted in gold.
Open the genuine Preview in a fresh signed-out browser.
Action 32: The separate customer browser shows Sign in. The actual target is highlighted in gold.
The separate customer browser shows Sign in.
Action 33: Check the exact 3-ton equipment and $1,200 price. The actual target is highlighted in gold.
Check the exact 3-ton equipment and $1,200 price.
Action 34: Check the separate Billing Office and Service Site addresses. The actual target is highlighted in gold.
Check the separate Billing Office and Service Site addresses.
Action 35: Review the copied terms and explicit base/optional scope. The actual target is highlighted in gold.
Review the copied terms and explicit base/optional scope.
Action 36: The follow-up is zero Units at $50 before selection. The actual target is highlighted in gold.
The follow-up is zero Units at $50 before selection.

Step 8. Add and remove the option before acceptance

In the customer view, click Add one. One Unit adds $50 plus $3 demo tax, so the total becomes $1,600.60. Reload to check that the choice persists. A second Add one increases the same line to two Units and $1,653.60. Click Remove one twice and reload: quantity returns to zero and the base total returns to $1,547.60. Reopen the quotation in Sales to check the same result. Leave Accept & Sign for the acceptance lesson.

Action 37: Add one follow-up: $50 plus $3 demo tax. The actual target is highlighted in gold.
Add one follow-up: $50 plus $3 demo tax.
Action 38: After reload, one Unit keeps the total at $1,600.60. The actual target is highlighted in gold.
After reload, one Unit keeps the total at $1,600.60.
Action 39: Add one again to test quantity two on the same line. The actual target is highlighted in gold.
Add one again to test quantity two on the same line.
Action 40: Two follow-up Units bring the total to $1,653.60. The actual target is highlighted in gold.
Two follow-up Units bring the total to $1,653.60.
Action 41: Remove one of the two optional Units. The actual target is highlighted in gold.
Remove one of the two optional Units.
Action 42: Remove the remaining optional Unit. The actual target is highlighted in gold.
Remove the remaining optional Unit.
Action 43: After reload, removing both Units restores $1,547.60. The actual target is highlighted in gold.
After reload, removing both Units restores $1,547.60.
Action 44: The same S00006 remains a draft quotation. The actual target is highlighted in gold.
The same S00006 remains a draft quotation.
Action 45: Reopened order retains the same five lines and zero optional Units. The actual target is highlighted in gold.
Reopened order retains the same five lines and zero optional Units.
Action 46: The saved draft base total is again $1,547.60. The actual target is highlighted in gold.
The saved draft base total is again $1,547.60.

Check the result

S00006 remains a draft quotation with three base product lines, one optional section and one follow-up line. The customer changed the same follow-up line from zero to one to two Units and back to zero; the five line identities stayed the same. One-Unit selection survived reload, and removal restored the saved $1,547.60 base total. No invoice or delivery was created, and earlier quotations and stock balances were preserved.

If your screen differs

Use the section's Set Optional control in this tested Odoo 20 form. Configurator Add produced an ordinary priced line; it did not make the line optional. A product line's own optional flag remained false while its parent section was optional, so check the section and customer view together. Optional quantities can exceed one, as the two-Unit check showed; review the selected quantity before acceptance. Only this draft, single-section, fixed-price case was tested. Signed orders, every permission/tax/pricelist combination and full equipment alternatives remain unverified. Keep technical selection and scheduling outside this quotation exercise.

Frequently asked questions

How do I add optional products to an Odoo 20 quotation?

In this tested form, add a section, open its three-dot menu and choose Set Optional. Use that section's Add a line control to add the optional product. Its initial zero quantity keeps it outside the base total. Setting Optional Products on the equipment suggests a product in the configurator, but clicking the configurator's Add inserted an ordinary priced line in this test.

Do optional products increase the total of an Odoo quotation?

They did when the customer increased the optional line's quantity. The zero-quantity follow-up left S00006 at $1,547.60. One $50 Unit with the fictional 6% tax changed it to $1,600.60; removing it restored the base total. Reload preserved the choice. This verified draft selection, while acceptance and invoicing remain separate workflows.

Can I quote HVAC replacement equipment and optional upgrades in Odoo? The tested quotation combined a specific equipment variant with base service/labor lines and a separately priced optional follow-up visit. Scope notes explain the choice, and the customer view lets the customer change its quantity before acceptance. This does not verify mutually exclusive equipment alternatives, technical sizing, compatibility or appointment booking. Review those decisions and the selected quantities separately.

Continue building the business

Next in the series: H26: How do I let a customer accept a quotation online in Odoo?. Quotation acceptance is covered in that separate workflow.

Talk to an Odoo partner

Bring your current process and the result you need to Onward to plan your Odoo workflow. Talk to an Odoo partner.