| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Sales (sale_management)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 53 |
| Technical Name |
nexterp_sale_update_price_auto |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Sales (sale_management)
• Discuss (mail) • Invoicing (account) |
| Lines of code | 53 |
| Technical Name |
nexterp_sale_update_price_auto |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 19.0 |
NextERP - Sale Update Prices Auto
NextERP - Sale Update Prices Auto
Overview
nexterp_sale_update_price_auto removes one manual step from the
quotation flow: when the pricelist on a sale order changes, prices on
the existing order lines are recomputed automatically instead of
waiting for the salesperson to click the Update Prices banner.
The module hooks into the standard
_onchange_pricelist_id_show_update_prices on sale.order. When the
sale order already has lines, the new pricelist differs from the
previous one, and the company has Auto Update Sales Prices enabled,
the override calls _recompute_prices() with the
force_price_recomputation=True context. If the order is already
saved (_origin.id is set), an audit message is posted in the
chatter recording which pricelist was applied.
The feature is gated by a company-level setting on res.company, so
it can be activated only on the companies that actually want this
behaviour, while other companies in the database keep the manual
"Update Prices" workflow.
Built & supported by NextERP Romania
Romanian Odoo specialists, here for the long run — from implementation to localization and day-to-day production support.
What we do
Odoo Solutions
From quick-start rollouts to multi-company deployments and custom modules built for your processes.
Romanian Localization
SAF-T (D406), e-Factura, e-Transport, D300 / D390 / D394, ANAF integration, full chart of accounts and fiscal positions.
Our Services
Implementation, customization, migration, integration, support and consultancy — Romanian-speaking, SLA-backed.
Features
- Overrides
sale.order._onchange_pricelist_id_show_update_pricesso the pricelist change behaves as an apply action rather than just showing the Update Prices banner. - Triggers
_recompute_prices()with the context flagforce_price_recomputation=Trueso prices are refreshed even for lines that would normally be skipped by the standard guard. - Recomputation only runs when all of the following are true:
- the sale order already has at least one line (
self.order_line), - a pricelist is set on the order (
self.pricelist_id), - the pricelist has actually changed
(
self._origin.pricelist_id != self.pricelist_id), - the company has Auto Update Sales Prices enabled.
- the sale order already has at least one line (
- When the order is already saved, a chatter message is posted on the original record stating which pricelist drove the recomputation, giving an audit trail of automatic price changes.
- Driven by a single boolean field,
sale_auto_update_price, defined onres.companyand exposed viares.config.settings. - The setting is added to the Sales configuration form right after the
standard
pricelist_configurationblock, so it stays grouped with the other pricelist-related options. - Depends only on
sale_management; no UI on the sale order itself.
Configuration
The behaviour is opt-in per company through a single setting in the Sales configuration form.
1. Enable the automatic recomputation
- Go to Sales -> Configuration -> Settings.
- Find the Pricelists block.
- Tick Auto Update Sales Prices (added by the module immediately
after the standard
pricelist_configurationsetting). - Click Save.
The option is stored on res.company.sale_auto_update_price and the
field on res.config.settings is related (so the value is read
from / written to the current company directly).
2. Multi-company
In a multi-company database, repeat the procedure for every company that should benefit from the automatic recomputation. Companies where the setting is left off keep the standard Odoo behaviour — changing the pricelist still shows the Update Prices banner that has to be clicked by the salesperson.
3. Prerequisites
- The module requires only
sale_managementand works with both the product pricelist engine and the discount / formula rules already in Odoo. - For the automatic recomputation to make sense, make sure the relevant pricelists are properly configured under Sales -> Products -> Pricelists (or Sales -> Configuration -> Pricelists) and that they cover the customers' products and currencies.
No menu, action or scheduled job is added by this module.
To install this module, you need to:
- clone the branch 16.0 of the repository https://github.com/NextERP-Romania/odoo-community
- add the path to this repository in your configuration (addons-path)
- update the module list
- search for "NextERP - Sale Update Prices Auto" in your addons
- install the module
How it works
The module works in the background on every sale order / quotation form. There is no new menu, no extra button and no wizard.
Changing the pricelist on a quotation
- Open a quotation from Sales -> Orders -> Quotations (or a confirmed order from Sales -> Orders -> Orders).
- Make sure the order already has at least one line — the recomputation is skipped when the order is still empty.
- Change the Pricelist field on the Other Info tab.
- As soon as the field loses focus, the
onchangeruns:- line Unit Prices are refreshed against the new pricelist,
- discounts attached to pricelist rules are reapplied,
- if the order is already saved, a message appears in the chatter:
"Product prices have been recomputed according to pricelist
<pricelist name>".
- Save the order to persist the new prices.
How it works
The override of _onchange_pricelist_id_show_update_prices checks the
following conditions before calling _recompute_prices():
| Condition | Why |
|---|---|
self.order_line truthy |
Nothing to recompute on an empty order |
self.pricelist_id set |
No target pricelist, nothing to apply |
_origin.pricelist_id != self.pricelist_id |
The pricelist actually changed |
company.sale_auto_update_price |
Feature is enabled on the company |
The recomputation is called as self.with_context(force_price_recomputation=True)._recompute_prices(),
which forces the standard pricing engine to update lines even when
manual price overrides would normally block it.
Reverting
To go back to the standard manual workflow, untick Auto Update Sales Prices under Sales -> Configuration -> Settings. The next pricelist change on a sale order will again show the Update Prices banner instead of recomputing automatically.
Versions
19.0.1.0.1 (2026-05-25)
- Changelog tracking starts at this release.
Discover the NextERP suite
Other modules from the same publisher, built to work together.
NextERP Romania
Odoo implementation, customization, Romanian localization and long-term support since 2018.
Odoo 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