Pricelist Template
by Odoo DevHouse https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse$ 99.00
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Sales (sale_management)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 183 |
| Technical Name |
pricelist_template |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Sales (sale_management)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 183 |
| Technical Name |
pricelist_template |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Versions | 18.0 19.0 |
Pricelist Template
Define a pricing structure once as a template - then stamp it onto any contact in seconds. Every customer gets their own dedicated pricelist, cloned from the master, assigned automatically. Zero repetition. Zero inconsistency.
Odoo's pricelist system is powerful - but when you have dozens or hundreds of customers, each needing a slightly customised pricing structure, the standard workflow breaks down fast. Sales teams copy pricelists manually, forget to update them when rules change, and apply the wrong pricelist to the wrong customer.
- Creating a per-customer pricelist means manually duplicating an existing one every time
- No central "master" - pricing rules drift apart across copies over time
- Assigning the new pricelist to the contact requires navigating to a separate screen
- There is no way to see which partners a pricelist actually applies to without manual checking
- Salespeople apply shared pricelists to individual customers, causing unintended price leaks
- When base pricing changes, all copies must be updated manually - or are silently left stale
Mark any pricelist as a Pricelist Template. Configure its rules once - discounts, margins, time-based tiers, currencies. Then open any customer record, click Actions -> Create Pricelist, choose the template, confirm - and the module creates a fresh dedicated copy and sets it as that contact's default pricelist instantly. No navigation, no duplication, no missed steps. A built-in domain filter tab on each non-template pricelist lets you define exactly which partners the pricelist is meant for and see the live matching count - so your pricing strategy and your customer segments stay aligned.
- Pricelist Template Flag - mark any pricelist as a template with a single checkbox; templates are managed separately from active customer pricelists
- Dedicated Template Menu - Sales -> Products -> Pricelist Template gives a clean filtered list; new records have is_template pre-checked
- Create Pricelist Button - one button on any template form instantly duplicates all price rules into a new non-template pricelist linked back to the source
- Pricelist Domain Tab - a full Odoo domain widget on every non-template pricelist lets you define which res.partner records this pricelist is meant for
- Live Matching Count - the domain is evaluated in real time and shows the number of partners currently matching - verify scope instantly
- Contact Action Wizard - Actions -> Create Pricelist on any partner form opens a lightweight wizard with a clear description and guidance
- Auto-assign to Contact - the wizard sets the newly created pricelist as the contact's default pricelist automatically - no extra navigation required
- Pre-filled Name - the wizard pre-populates the pricelist name as "Pricelist for {Contact Name}" - edit freely before confirming
- Template Traceability - each generated pricelist carries a Many2one back-link to its source template for full lineage tracking
- Odoo 18 & 19 Ready - separate version-matched packages; depends only on the standard
salemodule with no third-party dependencies - Role-Based Access - wizard accessible to Sales Users and Managers; template menu gated by the standard Pricelist user group
- Standard Domain Widget - uses the built-in Odoo domain field widget, fully supported in Odoo 18 and 19 with visual rule builder and code toggle
Step 1 - Pricelist Template List
Go to Sales -> Products -> Pricelist Template. This dedicated menu shows only pricelists marked as templates - B2B Wholesale, VIP Premium, Retail Standard, and more. Any new record created from this view has Pricelist Template checked by default. The menu is only visible to users with the Pricelists feature enabled.
Step 2 - Configure the Pricelist Template
Open any template record. The Pricelist Template checkbox is checked (green highlight). A Create Pricelist button appears in the header - visible only on template pricelists. Set up price rules in the Price Rules tab exactly as you would for any standard pricelist. This configuration becomes the master blueprint for every pricelist generated from this template.
Step 3 - Create Pricelist from Template
Click Create Pricelist on the template. The module instantly duplicates all price rules into a new pricelist, sets Pricelist Template to unchecked (red), stores a breadcrumb back-link to the source template, and opens the new record for you. The Pricelist Domain tab now appears - hidden on templates, shown on copies.
Step 4 - Pricelist Domain Filter
Click the Pricelist Domain tab. Use the visual rule builder to define which contacts this pricelist applies to - filter by country, tags, industry, or any partner field. The matching partner count (e.g. "64 record(s)") updates live as you add rules, so you always know exactly how many contacts fall in scope.
Step 5 - Open the Contact Form
Navigate to any customer or company contact record. No need to leave the contact page to set up a dedicated pricelist - the entire flow happens from within the contact form via the Actions menu.
Step 6 - Actions -> Create Pricelist
Click the Actions (gear â) button on the contact form and select Create Pricelist from the dropdown. This server action is bound to the contact form view and is available to all Sales Users and Managers.
Step 7 - Pricelist for Contact Wizard
A wizard dialog opens with a clear description: "Select a pricelist template to create a pricelist for the contact. The pricelist will be set as the default pricelist for the contact." The Name field is pre-filled as "Pricelist for {Contact Name}". Select a template from the dropdown to proceed.
Step 8 - Select Template and Confirm
Select the Pricelist Template - e.g. B2B Wholesale Template. The name field already shows "Pricelist for Acme Corporation". Edit the name if needed, then click Create Pricelist. The module clones all price rules from the template, names the copy, and assigns it as this contact's default pricelist - all in a single operation.
Step 9 - Pricelist Set as Default for the Contact
The wizard closes and the contact's Sales & Purchase tab now shows Pricelist for Acme Corporation set as the default pricelist (green highlight). Every future quotation or sales order for this contact will automatically use this dedicated pricelist - no manual selection required, ever again.
B2B Customer Onboarding
When a new B2B customer is created, the sales rep opens the contact, clicks Create Pricelist, selects the B2B Wholesale template - and the customer's personal pricelist is set up and linked in under 10 seconds.
Customer Tier Pricing
Maintain templates for each tier - VIP Premium, B2B Wholesale, Retail Standard. Each customer's pricelist is a clean copy of the right tier template, linked for traceability, independent for customisation.
Regional Pricing Strategies
Create one template per region or currency. Use the domain filter to scope each pricelist to the right country set. The matching partner count confirms your coverage before deploying.
VIP & Contract Customers
Give VIP accounts a dedicated pricelist cloned from the VIP Premium template - fully isolated so adjustments for one customer never affect others. Track which template each pricelist came from at any time.
Seasonal & Promotional Pricing
Create a seasonal template, generate copies for relevant customers in bulk, then archive the template when the period ends - without touching any individual customer's pricelist.
Distributor & Reseller Networks
Maintain distinct distributor and reseller templates. Each partner in the network gets their own copy. The template back-link documents every pricing decision for audits and pricing reviews.
Faster Customer Setup
What used to take multiple navigation steps - copy pricelist, rename, open contact, set pricelist - now happens in one wizard dialog on the contact form. Onboarding is faster and no step is ever missed.
Consistent Pricing Structure
All pricelists in a tier start from the same template. Structure is guaranteed consistent at creation time. Customer-specific adjustments happen on the copy - the template stays clean for future use.
Full Pricing Traceability
Every generated pricelist carries a back-link to its template. At any point you can see which master pricing strategy a customer's pricelist was derived from - essential for audits, pricing reviews, and dispute resolution.
No Extra Dependencies
Built entirely on the standard Odoo sale module.
No external libraries, no custom JS, no risk of conflict with other modules.
Installs cleanly on any Odoo 18 or 19 instance in under a minute.
Pre-requisite - Enable Pricelists
Sales -> Configuration -> Settings -> enable Pricelists -> Save. The Pricelist Template menu and the Actions wizard are only visible to users in the Pricelists group.
1 - Create a Pricelist Template
Sales -> Products -> Pricelist Template -> New -> the Pricelist Template checkbox is pre-checked. Configure currency, company, and all price rules -> Save.
2 - Create a Pricelist for a Contact
Open any contact -> click the Actions (â) button -> select Create Pricelist -> select a pricelist template -> confirm the name -> click Create Pricelist. The pricelist is created, cloned from the template, and set as the contact's default - done.
3 - Set a Partner Domain on a Pricelist
Open any non-template pricelist -> click the Pricelist Domain tab -> use the visual rule builder to define partner filters -> the matching partner count updates instantly -> Save.
- The Pricelist Domain tab is hidden on template pricelists - appears only on non-template pricelists
- The Create Pricelist button is hidden on non-template pricelists - appears only on templates
- Create at least one template before using the contact wizard
- The partner domain is informational - documents which partners the pricelist is for; does not auto-assign
- Pricelist duplication inherits all price rules, currency, and company from the template
Need Help or a Custom Feature?
Contact SupportOdoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module