| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Sales (sale_management) • Invoicing (account) • Discuss (mail) |
| Lines of code | 456 |
| Technical Name |
sale_price_update_wizard |
| License | OPL-1 |
| Website | https://www.blueorange.com.ar |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Purchase (purchase)
• Sales (sale_management) • Invoicing (account) • Discuss (mail) |
| Lines of code | 456 |
| Technical Name |
sale_price_update_wizard |
| License | OPL-1 |
| Website | https://www.blueorange.com.ar |
BLUEORANGE GROUP S.R.L.
Bulk Sale Price Update
Refresh prices on many sale orders in one click — from a product, a variant, a purchase order, or a pricelist.
Built for Odoo 19.0 · Production-ready · Supported
Key Features
Built for production use
01
Launch from anywhere
Action menu entry on products, variants, purchase orders and pricelists. One wizard, four entry points.
02
Filter, preview, deselect
Tune by state, expired-only, salesperson, sales team, company scope. Preview the matches and drop any you don't want updated.
03
Full audit trail
Every updated sale order receives a chatter entry recording the source model and filters used.
FEATURE 01
Source-aware search
The wizard chooses how to find related sale orders based on where it was launched from:
- From a Product: finds orders that contain any variant of that product.
- From a Variant: finds orders containing that exact variant.
- From a Purchase Order: finds orders containing any product on the purchase order lines.
- From a Pricelist: finds orders attached to that pricelist.
FEATURE 02
Preview before applying
Touching prices on existing quotations is risky — the wizard always shows the matching orders before applying:
- Inline list view with partner, salesperson, state, total.
- Per-row remove via the trash icon — exclude any order you don't want touched.
- Back to filters button to refine and re-search without losing the wizard state.
FEATURE 03
Chatter audit trail
Every sale order touched by the wizard gets a message in its chatter detailing the operation:
- Source model the wizard was launched from (product, variant, purchase, pricelist) and the specific record.
- Filters applied — states, salesperson, team, company scope, expired-only.
- Traceable per order — open any updated order and the chatter shows exactly what changed it.
Getting Started
STEP 01
Install
Install the module from Apps. No further configuration required.
STEP 02
Open a record
Navigate to a product, variant, purchase order or pricelist. Open the Action menu.
STEP 03
Update Sale Prices
Click Update Sale Prices, tune filters, preview, apply.
WHY BLUEORANGE
Built by an Odoo-focused team
BLUEORANGE GROUP S.R.L. is an Argentine software company specialised in Odoo customisations and integrations. Every module on our shelf is built from production needs, not from theoretical use cases.
✓ Production-ready — designed for real Odoo deployments, not demo databases.
✓ Properly documented — every module ships with a doc and inline help.
✓ Native ES / EN — full Spanish translation alongside English source.
✓ Active support — paid apps receive timely fixes and answers.
Need help?
Questions, bug reports, and feature requests are handled directly by our team. We answer every ticket.
odoo-apps-support@blueorange.com.ar
Paid apps receive priority support per Odoo's customer refund policy.
BLUEORANGE GROUP S.R.L.
Copyright © 2026 - Present
Bulk Sale Price Update
Overview
Wizard that refreshes prices on many sale orders at once, without leaving the records that drive the update. Launch it from any of the following entry points:
- a Product (product.template) — finds sale orders that contain any variant of that product.
- a Variant (product.product) — finds sale orders that contain that exact variant.
- a Purchase Order (purchase.order) — finds sale orders that contain any product appearing in the purchase order lines.
- a Pricelist (product.pricelist) — finds sale orders attached to that pricelist.
- Standalone menu: Sales → Orders → Update Sale Prices. Launches the wizard with no source preselected; the user picks the source model and record inside the wizard.
Configuration
No configuration is required after installation. Users with the standard Sales / User permission (sales_team.group_sale_salesman) automatically see the Update Sale Prices entry in the Action menu of each supported model and in the Sales > Orders main menu.
Usage
- Open a record on one of the four supported models (or just open the menu entry under Sales > Orders for the standalone flow).
- Open the Action menu and click Update Sale Prices (or click the menu item directly).
- Adjust the wizard filters:
- Source — pre-filled when launched from a record's Action menu, or selectable when launched from the standalone menu. Pick the model and the specific record.
- Sale Order State — by default only Quotation (draft) and Quotation Sent are included; tick Sales Order (confirmed) or Cancelled to extend the scope.
- Only expired quotations — limit to sale orders whose validity date has passed.
- Preview new prices — when on (the default), the search step also simulates the price recompute for each matching order so the preview can show the projected total alongside the current total. Disable on very large volumes if the simulate phase is too slow; the actual price update still runs when you confirm.
- Salesperson / Sales Team — both optional; leaving them empty applies no filter on those fields.
- Company Scope — defaults to the current company; tick Include child companies to also include subsidiaries.
- Click Search. The wizard switches to a preview list showing the matching sale orders. With Preview new prices enabled, each row shows both the Current Total and the Projected Total — the latter coloured green when prices would go up, red when prices would go down, and the default colour when there is no change.
- Review the list. Use the trash icon on any row to exclude that order from the operation. Click Back to filters to refine and search again.
- Click Update Prices. The wizard calls action_update_prices() on each remaining sale order — the same method as the per-order Update Prices button — and posts a message in each order's chatter recording the source model and the filters used. The wizard then navigates to a sale orders list filtered to exactly the updated records so you can spot-check.
Projected total simulation
When Preview new prices is enabled, each candidate sale order goes through a non-destructive simulation:
- A database savepoint is taken.
- action_update_prices() runs on the order, updating pricelist items, unit prices, discounts and taxes in-memory.
- The resulting amount_total is captured.
- The savepoint is rolled back and the ORM cache is invalidated — the database row stays exactly as it was before the search.
The captured total is stored on the wizard line as Projected Total. The simulation is per-order so the cost scales linearly with the number of matches; on very large hit lists, disable the preview to skip the simulation.
Audit trail
Every updated sale order receives a chatter entry of the form:
Sale order prices recomputed via the Bulk Sale Price Update wizard. Triggered from: <source label> Filters applied: States: ...; Salesperson: ...; Sales Team: ...; Companies: ...
This makes the bulk operation traceable from each affected order, even months later.
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