| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Invoicing (account) • Discuss (mail) |
| Lines of code | 635 |
| Technical Name |
scopysoft_svl_fixer |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules?author=ScopySoft |
SVL Fixer
Your stock valuation layers have wrong quantities or costs. Odoo won't fix them automatically. This module does - with dry run preview, full backup, date filtering, and one-click restore.
Administrator Tool. This module directly modifies stock valuation layer records. Always use Dry Run first. Always take a full database backup before applying changes on production. Recommended for Odoo administrators and inventory managers only.
The Problem
When do SVL quantities go wrong?
Several common Odoo scenarios leave stock valuation layers with incorrect quantities or unit costs - and Odoo provides no built-in tool to correct them in bulk.
Cost Changed After Moves
You updated standard_price on a product, but historical SVLs still reflect the old cost. Your inventory valuation is now wrong for past periods.
Data Migration Errors
After migrating from another system or Odoo version, SVL quantities don't match the actual stock moves they're linked to.
Manual Corrections Gone Wrong
A previous fix attempt or manual database change left SVLs in an inconsistent state that's hard to untangle one by one.
Valuation Report Doesn't Match Reality
Your inventory valuation report shows numbers that don't match what's physically in stock, with no clear audit trail of what went wrong.
What You Get
Every safety feature built in
This isn't just a script - it's a proper Odoo tool with UI, backup records, filters, and a CSV trail for every run.
Dry Run Mode
Preview exactly what will change before touching a single record - product by product, with value delta and final value.
Proper Backup Model
Every run creates a named backup record with the full before-state of every SVL line. Browse backups in the UI - no database access needed.
One-Click Restore
Made a mistake? Open any backup record and click "Restore This Backup" to revert exactly those SVL lines. Real undo, not just a table.
Date Range Filter
Limit the fix to SVLs created within a specific date window. Fix last month's problem without touching older records.
Cost Source Choice
Apply the product's current standard_price uniformly, or enter a custom cost manually for cases where the product price isn't what you want to backfill.
CSV Export
Every run generates a downloadable CSV with SVL ID, product, old/new quantity, old/new value, and value delta.
Min Unit Cost Threshold
Skip SVLs where the unit cost difference is below your set threshold - useful on large catalogs to ignore rounding noise.
Batch Processing
Configurable batch size with mid-run commits. Process thousands of SVLs safely without timeouts.
How It Works
Recommended workflow
Follow these steps to fix SVLs safely on any database.
01
Update the Product Cost
Set the product's cost field to the correct value you want applied to historical SVLs.
02
Open the Fixer Wizard
Go to Inventory → Operations → Fix SVL Quantities. Select your products, set a date range if needed.
03
Run Dry Run First
Tick "Dry Run" and click Run Fixer. Review the summary table before anything is written.
04
Apply the Fix
Untick Dry Run and run again. A backup is created, changes apply in batches, and errors trigger automatic rollback.
05
Download CSV & Verify
Download the CSV report for your records, then confirm your valuation report now matches expectations.
06
Restore If Needed
If anything looks wrong, open the backup from your run under SVL Fixer Backups and click Restore.
Cost Source
Two modes for different situations
Choose the right cost source for your specific problem.
| Mode | When to Use | How It Works |
|---|---|---|
| Use Current Product Cost | Your SVLs are out of sync with the product's current standard_price. You want to realign all historical SVLs to match today's cost. | Reads standard_price from the product form and applies it to all matching SVLs in the selected date range. |
| Enter a Custom Cost Manually | You know the specific correct historical cost, but the current product price is different or unrelated to the mistake you're fixing. | You type in the cost value directly. That exact value is applied to all matching SVLs - ignoring whatever is on the product form. |
See It In Action
Real screenshots from a live database
No mockups. No demo data fabricated for this listing.
01 · Wizard - product selection, cost source, date range, dry run toggle
02 · Dry Run result - full summary before any changes are made
03 · Live run - per-product table with value deltas and confirmation
04 · Backup list - every run tracked with reference, date, products affected
05 · Restore - one-click revert with full before-state per SVL line
06 · CSV export - downloadable report for every run
FAQ
Common questions
Does this work with AVCO (average cost) products?
Designed primarily for Standard Cost products. For AVCO, the correct cost at any point depends on the sequence of receipts - applying one uniform cost to all historical SVLs will produce incorrect average cost calculations. Use with caution and always run Dry Run first.
Will this affect my accounting journal entries?
The module modifies SVL records directly and does not automatically create matching journal entries. If your SVLs are linked to posted accounting moves, your inventory valuation and GL may diverge - review the accounting impact after any fix.
What does "Dry Run" actually do?
Reads all the SVLs, calculates what changes would be made, and shows the full summary - without writing a single record. No backup is created in Dry Run mode; it's purely read-only.
What happens if the run fails partway through?
Transaction rollback applies on errors - if an exception occurs, that batch's changes roll back. The backup record from before the run stays intact so you can restore the pre-run state.
Can I fix only SVLs from a specific period?
Yes - use the From Date and To Date fields to filter by SVL creation date. Only SVLs created within that window are processed; older or newer records are untouched.
What is the Min Unit Cost Change to Report field?
Skips SVLs where the difference between the current unit cost and the correct cost is below your set amount - useful on large catalogs to ignore rounding differences.
Does it track historical cost at the time of each move?
No - the module applies one cost uniformly to all selected SVLs, either the current standard_price or a manually entered value. It does not reconstruct what the cost was at the time of each individual move.
Built by ScopySoft · Odoo 16
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Invoicing (account) • Discuss (mail) |
| Lines of code | 635 |
| Technical Name |
scopysoft_svl_fixer |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules?author=ScopySoft |
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